Gen3 Scripting Fragen (30.09.17)

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

    • Gen3 Scripting Fragen (30.09.17)

      Hallo,
      da ich privat mal wieder etwas rumhacke (kein aufwendiges Projekt, eher nach dem Motto: Einfach, durchspielbar, machbar) muss ich doch wieder etwas scripten. Leider stößt mein XSE Wissen auch etwas an seine Grenzen, so dass ich immer mal wieder einzelne Fragen habe, die ich gern beantwortet hätte. Ich fang mal mit dem ersten an, bei den anderen Problemen probier ich erst noch einmal selber rum. Hier habe ich aber keine Ahnung:

      1. Der wiederkehrende Eich.


      Zum Anfang des Spieles, wenn man sein Haus verlässt, steht Eich vor dem Spieler und erzählt ihm einiges bevor er geht. Ich habe hier mit einem Levelscript gearbeitet und Eich die Personen-ID der passenden Flag gegeben:


      Levelscript


      '---------------
      #org 0x804A93
      showsprite 0x8
      msgbox 0x8804ABF MSG_NORMAL '"Hallo [player]! Heute beginnt\ndei..."
      giveitem 0x4 0x10 MSG_OBTAIN
      applymovement 0x8 0x8804D7D
      waitmovement 0x0
      hidesprite 0x8
      setvar 0x4033 0x1
      release
      end



      '---------
      ' Strings
      '---------
      #org 0x804ABF
      = Hallo [player]! Heute beginnt\ndeine große Reise. Du und [rival]\lschaffen es hoffentlich, diesen\lKrieg zu beenden. Denk bei deiner\lReise bitte daran, die anderen\lKulturen zu respketieren. Wir\lhaben sehr viel Glück, dass man\lunser Dorf im ganzen Land\lrespektiert. Es befinden sich\lviele Trainer im Land, welche\lKämpfen, um dem Krieg zu\lentfliehen. Pass also gut auf dich\lauf! Ich gebe dir außerdem\leinen Pokedex, diese Karte und\ldiese Orden. Früher musste man\lsich Orden erkämpfen um an der\lPokemon-Liga teilzunehmen. Heute\lsind sie wertlos. Aber zumindest\lkannst du mit ihnen VMs\lverwenden. Achja. Hier noch \lPokebälle! Bitte komm in mein \lHaus. Es ist im Nordwesten der \lStadt. Dort habe ich Pokémon \lfür dich.



      '-----------
      ' Movements
      '-----------
      #org 0x804D7D
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0x1F 'Step Left (Fast)
      #raw 0xFE 'End of Movements



      Der Levelscript hat die Flag 4033 und den Wert Null. Der Sprite Eich hat die ID 4033. Wie man erkennt verschwindet Eich durch den Skript (ist ja auch logisch, er geht ja weg). Dies passiert auch wunderbar. Selbst wenn man die Map verlässt. Aber: Sobald man das Spiel speichert und neustartet, steht Eich wieder da. Wie schaffe ich es, dass Eich auch trotz Spielneustart weg bleibt? Der Levelscript startet aber nicht von vorne. Nur das Event Eich als Bild ist wieder da. Eich selber hat keinen eigenen Script.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Nachtion ()

    • Beware: Flag != Var.

      Eine Flag ist ein bool'sher Wert, sie ist gesetzt, oder nicht gesetzt. Ein Schalter sozusagen, und eine Variable ist halt eine Variable. Sie kann die Werte [0;2^16] annehmen. Um eine Person verschwinden zu lassen, braucht diese Person eine Flag. Diese Flags haben Indizes um ~ 0x200-0x500, danach kommen noch ein paar Trainerflags und andere, für das Spiel besondere, Flags wie z.b. Menüeinträge.

      Ein Levelscript prüft hingegen eine Variable, und wird dann ausgeführt, wenn der Wert der Variable, mit Value übereinstimmt. Um dein Problem zu lösen, musst du dem NPC also eine richtige Flag zuweisen, deine ist nämlich weit außerhalb der Range der Flags. Hidesprite setzt diese Flag dann übrigens auch automatisch, das musst du nicht selbst machen.

      ~Sturmvogel
      Wandering on Horizon Road
    • Spoiler anzeigen

      #dynamic 0x800000
      #org @main
      checkflag 0x201
      if 0x1 goto @done
      lock
      msgbox @text 0x6
      applymovement 0x255 @move
      waitmovement 0x0
      release
      end


      #org @done
      release
      end


      #org @text
      = Ich sollte Prof. Baum besuchen.


      #org @move
      #raw 0x10
      #raw 0x10
      #raw 0xFE


      Was der script machen soll: Wenn die Flag aus ist (man noch kein Pokemon hat), soll der Spieler zurückgehen. Wenn die Flag an ist, man also ein Pokemon hat, soll man normal durchgehen können.

      Wenn ich noch kein Pokemon habe bleibt das Spiel / freezed der Spieler, kann sich nicht mehr bewegen. Die Textbox aktiviert sich nicht. Wenn die Flag aktiviert wurde, kann man problemlos durchgehen.

      Warum geht der script ab lock nicht weiter`?
    • Wen versuchst du denn mit deinem Applymovement zu bewegen ?
      Wenn es den "Player" bewegen soll ist 0x255 Falsch.
      applymovement 0xFF @move - Damit Bewegst du den Player!
      applymovement 255 @move - Damit auch ^^
      Mit deinem 0x255 versuchst du die ID 597 zu Bewegen und dadurch führt es zum Crash!

      -SoulK3
      Nachtrag:
      #dynamic 0x720000
      #org @main
      checkflag 0x201
      if 0x0 goto @block
      end

      #org @block
      lock
      msgbox @txt01 0x4
      closeonkeypress
      applymovement 0xFF @move01
      waitmovement 0x0
      release
      end

      #org @txt01
      = Ich sollte Prof. Baum besuchen.

      #org @move01
      #raw 0x10
      #raw 0x10
      #raw 0xFE
      ------------------------------------------------------------------------------------
      ~ ~ ~ SoulK3 ~ ~ ~

      :thumbsup: Wer Rechtschreibfehler findet darf sie gerne Behalten :thumbsup:

      Drei Menschen können ein Geheimnis bewahren.
      Wenn Zwei von ihnen Tot sind.
      :evil:
      ------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SoulK3 ()

    • Hey,

      erstmal Danke für deine Antwort. Hab jetzt nach ein paar Tagen das ganze probiert und bin verwundert. Dein Vorschlag / deine Verbesserung macht natürlich sehr viel Sinn und meiner Meinung nach sollte der Script so auch funktionieren. Dennoch freezed der Charakter beim drauftreten auf das Feld wenn die flag noch nicht aktiviert wurde. Der Script läuft nicht weiter.

      Hat wer ne Idee woran das liegen kann? Habe testweise dann auch deinen Script 1:1 kopiert und einmal mit Suche ab 0x800000 (wie Guides es vorschlagen).

      Ich bin etwas überfragt. Muss ich dem Script in Advance Map einen Wert oder ähnliches zuordnen? Die Map hat nen Levelscript (den von oben), der aber nichts mit dem Script hier zu tun hat. Es scheint ja so als hätte er Probleme die Textmessage abzurufen..
    • XSE Script

      '---------------
      #org 0x720000
      checkflag 0x201
      if 0x0 goto 0x872000B
      end


      '---------------
      #org 0x72000B
      lock
      msgbox 0x8720022 MSG_KEEPOPEN '"Ich sollte Prof. Baum besuchen."
      closeonkeypress
      applymovement MOVE_PLAYER 0x8720044
      waitmovement 0x0
      release
      end



      '---------
      ' Strings
      '---------
      #org 0x720022
      = Ich sollte Prof. Baum besuchen.



      '-----------
      ' Movements
      '-----------
      #org 0x720044
      #raw 0x10 'Step Down (Normal)
      #raw 0x10 'Step Down (Normal)
      #raw 0xFE 'End of Movements


      images.romhackersworld.eu/image-list/?userID=13480

      Müssten alle relevanten Bilder sein.
    • Auf dem Foto ist zu erkennen das du dem Scriptfeld keine Variable zugeordnet hast. Nehm dir eine var und ordne sie zu.

      Im Script selbst kannst du dann das "checkflag" weglassen.
      Als Beispiel:
      Hat dein Scriptfeld die Variable(var-nummer) 0x4055 und den Wert(Var-Wert) 0x00 würde das Script immer ausgelöst wenn die Variable den wert 0x00 hat.
      Wenn du nun in einem anderen Script den Wert der Variable auf 0x01 setzt wird das Scriptfeld nicht mehr getriggert.

      -SoulK3
      ------------------------------------------------------------------------------------
      ~ ~ ~ SoulK3 ~ ~ ~

      :thumbsup: Wer Rechtschreibfehler findet darf sie gerne Behalten :thumbsup:

      Drei Menschen können ein Geheimnis bewahren.
      Wenn Zwei von ihnen Tot sind.
      :evil:
      ------------------------------------------------------------------------------------