Spiel hängt bei Script

  • Ich habe ein Script geschrieben, welches den Spieler davon abhalten soll die Stadt zu verlassen und ihm gegebenenfalls ein Pokemon zu geben. Das Script hat funktioniert, bevor ich versucht habe Bewegungen mit einzubauen. Wenn es jetzt aktiviert wird hängt sich das Spiel auf. Habe mal versucht alles was ich neu dazu geschrieben habe zu markieren (neu -> = von; <- neu = bis). Schon mal danke im vorraus. :D

  • Mehrere Dinge, die mir so spontan einfallen:


    Spriteface tut in deinem Fall glaube ich ein paar ungewünschte Seiteneffekte erzeugen, gerade weil der Spieler ja ohnehin ein bisschen mehr ist als ein NPC, solltest du hier vllt lieber auch ein applymovement verwenden.


    Wenn du ohnehin auf alle movement executions warten willst, empfielt sich ein waitmovement 0, in Zeile 20 wartest du nicht auf das Ende des Spieler Movements.


    Textboxen haben Steuerbefehle, du brauchst also in den meisten Fällen nie zwei Textboxen hintereinander auszuführen. Mit \l erzeugst du einen fortlaufenden Text, und mit \p erzeugst du eine ganz neue Box.


    checkflag 200 prüft auf Flag 200, unten setzt du allerdings Flag 0x200 ("Hex zwei null null") was natürlich eine ganz andere Flag ist, vermutlich willst du auch auf Flag 0x200 prüfen. Oder aber, da das ganze ja vermute ich ein Scriptfeld ist, willst vermutlich überhaupt die Variable des Scripts so setzen, dass du ihn nachdem das gewünschte Ereignis eingetreten ist, einfach komplett deaktivieren kannst. Ansonsten hast du, glaube ich, den ungewünschten Seiteneffekt, dass das Spiel für einen Frame den "end" Befehl ausführen muss, und der Spieler dabei seine Laufanimation abbricht, auf alle Fälle ist es aber schöner, die Variable zu verwenden.


    Der Bug per se könnte den Grund haben, dass spriteface Dinge tut, die du nicht willst, vorallem auf den 0xFF PC angewandt, oder aber du hast die Variable des Scriptfeldes nicht richtig gesetzt, dann passiert sowas auch. Das ist recht einfach zu überprüfen, indem du einfach einen Script executen lässt. der nur eine debug message ausgibt.


    ~Sturmvogel


    Let the old ways live and prosper in the hearts of our young


  • Ich habe alles gemacht und den Teil mit den flags testweise entfernt. Das Script ist jetzt eigentlich so wie es vorher war, als es funktioniert hat, nur halt mit movements. Aus irgendeinem Grund hängt sich das Spiel aber immernoch auf, wenn das Script gestartet wird. Hat noch jemand eine Idee?

  • Movements müssten vielleicht noch angepasst werden. Je nachdem was die Person für eine Bewegung machen soll.
    Das Script müsste aber einem Scriptfeld hinzugefügt werden! Setvar 4070 nicht vergessen! Wenn du den Script auch der Person geben möchtest, dann müsste man den Script etwas abändern!


  • Erstmal danke für die Antwort :D.
    Ich bekomme beim Kompilieren die Fehlermeldung: "Zu wenig Parameter in Zeile 6. Die korrekte Zahl ist 2."


    Was bewirkt eigentlich "setvar 4070 0x1"? Habe erst vorgestern mit Scripting angefangen habe also nicht so viel Ahnung. :D

  • Die Fehlermeldung kommt deshalb, weil ich meine Scripte für die Version 1.0.0 von XSE schreibe.
    Also anstatt:
    "msgbox @text
    callstd 0x6"


    muss man folgendes schreiben


    "msgbox @text 0x6"
    Der untenstehende Script sollte nun funktionieren ;)


    Der Befehl "setvar 0xFLAGNUMMER 0x1" ist in etwa das gleiche wie Setflag, nur mit dem Unterschied dass beim erneuten betreten des Scriptfeldes das Script nicht angesprochen wird, da die Flag gesetzt wurde. Würdest du hier mit checkflag und setflag arbeiten, dann würde jedesmal wenn du über das Scriptfeld läufst das script abgefragt und bei bereits gesetzter Flag das Script abbrechen.
    Ich hoffe mal ich habe das etwas verständlich erklärt.. Ansonsten frag einfach ;)

  • Ich weiss nicht mehr weiter. :(
    Ich habe genau das was du geschrieben hast kopiert. Andere Scripts von mir funktionieren ja, was heißt das ich eigentlich weiss wie man das in die Rom einfügt usw. Aber aus irgend einem Grund funktioniert es immer noch nicht. Kann das auch an meiner Rom liegen? :D