Textbox, wie in einem RPG

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Textbox, wie in einem RPG

    Hallo,
    ich suche eine Anregung, wie ich per Befehl eine Textbox anzeigen lassen kann, der ich einen Inhalt zuweise.
    Also quasi ein Objekt erstellen, welches die Textbox selbst ist, dieses dann "erstellen", aber immer mit dem Inhalt, den ich gerade brauche.

    In einem RPG spricht man ja Charaktere an, dann erscheint unten ja ganz klassisch die Textbox. Eine Möglichkeit wäre, alle Texte zu schreiben und als Bilder einzufügen, aber das würde ja ganz schön viel Speicher in Anspruch nehmen.

    Weiterhin dürfte während der Anzeige der Charakter nicht mehr beweglich sein.

    Hat jemand einen Tipp oder eine Idee?

    Grüße
    Naibaf77
    True story!
  • Okay, also vom Grundprinzip her:

    - "Spiel anhalten"
    - Textbox zeichnen (Textbox-Sprite verwenden)
    - Stringtext ausgeben


    Zu 1)
    Ich denke die einzig sinnvolle Möglichkeit ist es, per Variable abzufragen, ob eine Textbox offen ist oder nicht und demnach dann verhindern, dass man seinen Charakter bewegen kann und eben verhindern, dass NPC's sich bewegen. Oder gibt es da evtl. eine bessere Möglichkeit?

    Zu 2)
    Das ist denke ich das allerkleinste Problem :)

    Zu 3)
    So, hier wirds denke ich etwas komplizierter. Denn, wenn ich einfach nur einen Text anzeigen lasse, dann gibt es ja keine Zeilenumbrüche.
    Wenn ich jetzt aber von vornerein weiß, ich möchte 4 Zeilen haben und in jede Zeile passen (beispielsweise) rund 40 Zeichen, wie kann ich das realisieren, ohne jedesmal, für jeden Text alles zu formatieren.

    Ich hatte in etwa an eine Funktion gedacht, dieser Funktion übergebe ich lediglich den Text, und die Funktion (einmal geschrieben) übernimmt für mich bei jedem Aufruf den Rest.

    Ich kenne mich nur mit Strings und Textanzeigen nicht wirklich aus, gibt es da überhaupt Möglichkeiten?


    Vielen Dank schonmal :)
    naibaf77
    True story!
  • Michaelp800 schrieb:

    Es gibt eine Funktion. String_length() oder so was (Hilfe nachgucken). Wenn der Wert wie du sagst 40 ist, soll ein Zeilenumbruch (#) entstehen.


    Aber mit String_length würde ich doch nur die Gesamtlänge abfragen und nicht, alle 40 Zeichen (beispielsweise) ein Zeilenumbruch abfragen können oder?
    True story!
  • der gesuchte begriff nennt sich draw_text_ext(x,y,string,sep,w)//sep ist der Zeilenabstand(bei -1 benutzt GM den standartwert der Font die du benutzt.)
    //w ist nach wie viel pixel ein zeilenumbruch gemacht wird.
    Für das Realisieren per 1ner Funktion würde mir nur einfallen das du ein Skript schreibst das ein objekt erstellt.
    Dieses Objekt müsste im step event folgendes haben um alles anzuhalten, außer sich selbst.

    GML-Quellcode

    1. instance_activate_all(true);
    2. screen_refresh();
    3. instance_deactivate_all();


    das sorgt dafür das kein Objekt mehr Reagier, alle aber noch Drawen.
    in diesem Objekt könntest du dann auch deine Textbox drawen lassen.

    Eine weitere möglichkeit wäre, von vornerein ein Objekt zu erstellen das dies tut(das ist auf jeden fall erst mal einfacher zu coden.)
    Dann per Variable textboxen anzeigen lassen oder ausblenden.

    Ich hoffe das klang jetzt alles nicht zu wirr.
    mfg gmr_08
  • Eine super Vorlage, die genau deinen Wünschen entsprechen dürfte gibts es von J-Factor von der englischen GMC:

    Textbox Engine

    Das Script ist zwar sehr lang, aber gut auskommentiert und dadurch recht verständlich (grundlegende Englischkentnisse erforderlich). Wenn man sich etwas mit der GML auskennt, kann man es auch als Grundlage benutzen und abändern, es ist aber auch so einsetzbar. Da das ganze Script in einem Step abgehandelt wird, treten hier Probleme, wie weiterlaufende NPCs oder ähnliches gar nicht erst auf.
  • Benutzer online 1

    1 Besucher