Ergebnis 1 bis 7 von 7

Thema: Neue Picturefunktion RM2k3 einige Fragen

  1. #1

    Neue Picturefunktion RM2k3 einige Fragen

    Ich habe den RM2k3 mit dem neuen Update das einem ermöglicht Sprites per Show Picture zu benutzen.

    1.Kann manim Kampf damit die Helden und Gegner per Picture anzeigen lassen bzw. Anhand von erstellten Sprites über den Picturebefehl

    2.Kann man mittels neuem Picturebefehl ein eigenes Textsystem erstellen anhand eines Sprites?

    3.Vereinfacht sich mit dem neuen Picturebefehl das erstellen eines Pixelmovements?


    Bin für jede Hilfe dankbar da mein Technisches Verständnis des Makers sich nur auf grundlegende Funktionen beschränkt

    Geändert von syhlpan (23.10.2017 um 13:30 Uhr)

  2. #2
    Zu 1 kann ich nichts sagen, zu 2 aber schon da ich genau das letztens ausprobiert habe:

    JA, das geht. Sogar technisch recht einfach, das Problem ist, dass du keine Möglichkeit hast, den Maker Buchstabe für Buchstabe Text auslesen zu lassen. Du müsstest also entweder den Text Buchstabe für Buchstabe eingeben, bspw. als Heldennamen, den du dann für jedes Zeichen abfragst, oder numerisch als Variable (01 für A, 02 für B, ... 27 für a, 28 für b, etc.). Das kann der Maker dann abfragen und entsprechend das Zeichen anzeigen.

    Der Nachteil ist hier, dass das dann von der Benutzung her sehr umständlich ist - du musst ja deinen Text auch später eingeben. Wenn du ein Textlastiges Spiel hast, ist das ziemlich lästig und viel Arbeit. Das kann man mit der RM Event Factory von Cherry etwas auffangen, indem man Text aus einer Tabelle ausliest, diesen Buchstabe für Buchstabe in ASCII-Codes konvertiert und dann passend an Variablen übergibt, aber du wirst damit nie den Komfort des Makereigenen Textboxsystems haben. Wenn dich das nicht abschreckt kann ich aber gerne mal posten, wie ich es umgesetzt habe.

    Bei 3 würde ich spontan sagen ja, wenn auch nicht sonderlich stark. Die Animation wird etwas einfacher, aber das Bewegen und Abfragen von Koordinaten und Hindernissen ist ja immer noch derselbe Aufwand.

  3. #3
    Zu meiner Frage zum Textsystem. Ich möchte gerne so etwas wie ein Sprechblasensystem implementieren aber ansich ist das ja relativ kompliziert jede Buchstaben einzeln anzuzeigen deswegen dachte ich mir da man jetzt Sprites auslesen kann das es besser ginge.

  4. #4
    Das geht auch besser, aber du brauchst halt jetzt nicht mehr 50+ Abfragen mit Show Picture-Befehlen (bzw. die Abfragen je nach Ansatz schon). Du musst aber nach wie vor auch dem Maker irgendwie sagen, welche Zeichen er anzeigen soll. Du kannst dem Maker Text nur durch die Heldennamen geben, aber kannst diese auch nur ganz oder gar nicht abfragen - bloß du musst ja dennoch die Zeichen irgendwie einzeln anzeigen und "Gib mir den 3. Buchstaben von Hero Name [3]" kann der Maker nicht. Da ist das Problem. Das Anzeigen ist alles kein Thema, auch per Sprechblase nicht (setzt aber voraus, dass du dich mit Koordinaten und Show Picture gut auskennst und deine Grafiken entsprechend erstellen kannst), der große Stolperstein ist die Eingabe des Texts. Das ist ja von der Anzeige erst einmal völlig losgelöst.

    Nehmen wir an, du willst "Abc" anzeigen.

    Möglichkeit A:
    <>Change Hero Name [1]: "A"
    <>Change Hero Name [2]: "b"
    <>Change Hero Name [3]: "c"

    Möglichkeit B:
    <>Set Var[0001]: 01
    <>Set Var[0002]: 27
    <>Set Var[0003]: 28

    Du bräuchtest also entweder für jedes Zeichen einen Helden/eine Variable, oder du verwendest eine und musst nach jedem Zeichen dieses sofort auslesen und anzeigen lassen. Vorteil: ökonomischer, Nachteil: der Arbeitsablauf wird noch holpriger als er es eh schon ist. Wenn du Variablen nimmst und deine Spritefont gut anordnest lannst du einen großen Teil der Abfrage wenigstens automatisieren (anstatt wie bei Hero Name "If hero [1] = "A", then show Picture [1], "Spritefont" Cell 1", etc.), aber du musst halt deine ganze Textbox auch als Zahlen irgendwie in den Maker bekommen.

    Wenn dich das nicht abschreckt kann ich es gerne heute Nachmittag mal ausführlicher erklären, aber wenn du dich nicht eh sehr gut mit Variablen und Pictures auskennst wird das sehr abenteuerlich. Nicht, weil ich dir das nicht zutraue, sondern weil es so oder so furchtbar zu bedienen ist.

    (EINZIGE Ausnahme, die sehr simpel aber noch furchtbarer zu bedienen wäre: Du erstellst jede Textbox mitsamt Text als eigenes Bild, aber ich nehme an, das meinst du nicht.)

    Geändert von BDraw (23.10.2017 um 13:17 Uhr)

  5. #5
    Ich würde es auf jedenfall mal probieren wollen um zu sehen ob es passt es zu implementieren oder ich doch auf eine andere Art lösen muss. Jede Textbox als Picture zu erstellen wäre eventuell simpler aber grafisch mehr Aufwand als über ein Sprite. Man müsste eben schauen das die Länge des Textes nicht ausartet um nicht ewig viele Variabel zu nützen

  6. #6
    Achtung, das ganze setzt voraus, dass du weißt wie Pointer im Maker funktionieren, sprich, wie du Variablen anhand ihrer ID über andere Variablen aufrufst.

    Vorüberlegungen
    • Wir wollen, dass unsere Textbox die Zeichen nach und nach einblendet und nicht schlagartig alle auf einmal anzeigt.
    • Unsere Textbox hat 4 Zeilen á 40 Zeichen
    • Wir arbeiten mit einer Spritefont, sprich, alle Zeichen sind auf einem Picture und jedes hat seine eigene Zelle
    • Um die Abfragen möglichst leicht zu machen und das alles möglichst transparent zu gestalten ordnen wir diese entsprechend ihrer ASCII-Codes an. Wir fangen bei 32 an, da alles davor für uns irrelevant ist. D.h. auch, dass das Leerzeichen die erste Zelle bekommt.
    • Wir gehen davon aus, dass ein Zeichen - Zeilen- und Zeichenabstand miteingeschlossen - 6px breit und 12px hoch ist.


    Der grobe Ablauf
    1. Der Spieler spricht ein Event an, welches den Inhalt der Textbox enthält (also den text, der angezeigt werden soll). Dieses Event ruft dann ein Common Event Show Textbox auf, dass alles weitere erledigt.

    2. Show Textbox bestimmt erst einmal die Default-Einstellungen, sprich die Variablen, die immer gleich sind - das ist sowas wie Zeichenabmessungen, Zeilenhöhe, maximale Zeichen pro Zeile, Onset-Koordinaten (also die Stelle, an dem der Text losgeht), Pic-ID des ersten Pictures, das mit der Textbox zu tun hat, etc. Auch legen wir hier fest, welche Variablen unseren Text später enthalten sollen - sagen wir mal ab 8001. Für unsere Testzwecke bestimmt es auch die Einstellungen, die der Spieler vornehmen soll, sprich die Textgeschwindigkeit. Das CE zeigt dann die leere Textbox an und ruft seinerseits ein CE Custom Text System auf, bevor es sämtliche Pictures, die mit der Textbox zu tun haben, löscht.

    3. Custom Text System kümmert sich jetzt um den eigentlichen Ablauf: Wir starten eine Schleife, in der das Script nach und nach alle Variablen ab 8001 durchgeht. Wenn die Variable > 0 ist enthält sie offenbar eine Zahl, die für ein Zeichen steht das angezeigt werden soll - in diesem Fall wird der Inhalt der Variable in einer zweiten Variable "Cel ID" gespeichert und ein CE Draw Text aufgerufen. Dabei zählen wir mit, wie oft wir Text angezeigt haben, sprich nach diesem CE setzen wir eine Variable +1 und fragen ab, wie groß diese ist: Ist sie 41, 81 oder 121 ist unsere Zeile voll und wir müssen X wieder auf den Ausgangswert setzen und Y + Zeichenhöhe rechnen. Ansonsten rechnen wir einfach X + Zeichenbreite.
    Ist die Variable, die wir für die Schleife abfragen, 0, ist der Text zuende und wir sind fertig. Dann machen wir ein "wait until Key is pressed", damit die Textbox auch bleibt, bis der Spieler sie wegdrückt und gut is'.

    4. Draw Text nimmt die Variable "Cel ID" und rechnet sie entsprechend unserer Spritefont um. Wenn wir uns an die ASCII-Codes halten und die erste Zelle ein Leerzeichen ist, entspräche der ASCII-Code 32 also der Zelle 1, 33 der Zelle 2, usw. Wir subtrahieren also 31. Dann zeigen wir anhand der Pic-ID, die wir vorher in 2. in einer Variable festgelegt haben, unsere Spritefont an, geben die Zelle mit der Variable "Cel ID" an und die Koordinaten ebenfalls über die in 2. angegebenen Variablen. Ans Ende kommt ein Wait von 0.0, damit nach jedem Zeichen eine kleine Pause kommt und nicht alles auf einmal gezeichnet wird.

    Das ist im Grunde alles. Man kann jetzt aber natürlich auch abfragen, welches Zeichen gerade gemalt wurde - bspw. indem man nach dem Draw Text-CE in 3. schaut, welchen Wert die Variable "Cel ID" hat. So kann man bspw. mit "if V[Cel ID] = 15" schauen, ob das gerade gezeigte Zeichen ein Punkt ist und, falls ja, ein "wait until key is pressed" setzen. So wird der Text dann Satz für Satz angezeigt und der Spieler muss wenn ein Satz mit einem Punkt beendet wurde erst eine Taste drücken, ehe es weiter geht. Ähnlich kann man so auch Ausrufezeichen, Fragezeichen, etc. abfragen, aber auch Werte wie 999, die offensichtlich kein Zeichen sind, die man aber bspw. für Farbeffekte oder Gott weiß was nutzen kann - quasi das Äquivalent zu dem \c[0] des Message-Systems des Makers.
    Auch kann man anstatt des Waits in 4. eine Abfrage machen, die sich eine Variable "Msg speed" anschaut und entsprechend lang wartet. So könnte man die Textgeschwindigkeit bspw. vom Spieler in den Optionen bestimmen lassen.

    Aber wie gebe ich jetzt eine Nachricht ein?
    Zwei Möglichkeiten: Von Hand oder automatisiert. Von Hand müsstest du jeden Buchstaben einzeln in ASCII-Code umwandeln und nach und nach in eine Variable einspeisen. Du kannst aber auch mit Cherrys RM Event factory eine Excel-Tabelle auslesen, den Text automatisch Zeichen für Zeichen konvertieren und das dann in ner Variable speichern. Das ist dann tatsächlich nicht viel Mehraufwand im Vergleich zu der normalen Textbox, bloß Text im Nachhinein ändern ist frickelig. Du kannst dir ja mal anschauen, wie ich das gelöst habe, allerdings setzt das voraus, dass du dich vorher ein wenig in RM Event Factory einarbeitest.

    Gibt es das auch als Maker-Code?
    Jep, aber ich hab jetzt bloß gescreenshotted, was ich gemacht habe. Da sind aber noch ein paar Zusatzfunktionen drin, nicht wundern.

    CE Voreinstellungen
    CE Call Textbox
    CE Custom Msg System
    CE Show text
    CE Msg Speed
    CE Skip Function (setzt Msg Speed bei drücken einer bestimmten Taste automatisch auf 0)
    CE Orthography (das mit der automatischen Bestimmung von Satzenden, etc.)
    CE Font color (prüft ob die Farbe geändert werden soll, tut momentan aber noch nichts)

    Geändert von BDraw (23.10.2017 um 15:05 Uhr)

  7. #7
    Hab es mir angeschaut Blicke leider nicht sonderlich durch. Werde wohl alles auf Picture auslegen trotzdem danke für die Hilfe

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •