Tutorial Manuelles Level-Script mit XSE und AM

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

    • Tutorial Manuelles Level-Script mit XSE und AM

      Tutorial: Manuelles Level-Script mit XSE und AM


      1. Vorwort
      2. Was wird benötigt (Programme und Vorkenntnisse)
      3. Aufbau des Scripts/wichtige Befehle
      4. Einbau des Scripts mit Advance Map
      5. Nachwort



      1. Vorwort

      Das hier ist mein erstes Tutorial überhaupt, also wenn ihr etwas nicht versteht dann schreibt es bitte hier rein.
      Ich werde aber versuchen es so leicht und ausführlich wie möglich zu erklären, aber im Prinzip ist es eigentlich nichts schweres.

      2. Was wird benötigt
      XSE (Extreme Script Editor von HackMew)
      AdvanceMap 1.92 oder 1.95 von LuHo Poke
      Ein paar Vorkenntnisse im Umgang mit XSE
      Ein Pokémon GBA ROM das ihr hacken wollt

      Da diese Programme sehr populär in der Romhacking Szene sind, findet man sie leicht bei GOOGLE. Deshalb werde ich hier keine Links reinschreiben.
      Es gibt hier sowieso schon tausende Verlinkungen also einfach mal die SuFu benutzen.

      3. Aufbau des Scripts/wichtige Befehle

      Kommen wir nun zum eigentlichen Tutorial.

      Ein Level-Script ist ein Script das an die Map gebunden ist und meistens ausgelöst wird wenn man die Map betreten will.
      Es prüft oder verändert Variabeln, verschiebt Maptiles oder löst ein Event aus.
      hierzu gibt es 6 bekannte Level-Script Typen. Ich habe sie hier mal aufgelistet:

      Spoiler anzeigen

      01 - "setmaptile" Script
      02 - prüft vorgegebene Werte nach denen ein Script ausgelöst wird oder nicht
      03 - wird beim betreten der Map ausgelöst, nicht beim Menü schließen "wird meist nur zum prüfen von Variablen und flags benutzt"
      04 - gleiche wie 02
      05 - wie 03 nur wird dieses Script auch beim Menü schließen ausgelöst
      07 - wie 05


      Das erkläre ich deshalb, weil diese Zahlen für unser Script und zur besseren Verständlichkeit sehr wichtig sind.
      Ich werde aber zunächst nur auf 02 und 04 eingehen

      Im eigentlichen Script
      brauchen wir im Prinzip nur folgende Befehle

      Spoiler anzeigen

      #raw xx -- xx= Zahl für Scriptart
      #raw pointer @xxxx -- xxxx für das Offset das von XSE generiert wird
      #raw word 0xyyyy -- Variable die überprüft wird (nur für Scripts vom Typ 2 und 4)
      #raw word 0xyy -- Wert der Variable der überprüft wird


      Das waren auch schon alle. Wie gesagt es ist wirklich nicht sehr schwer, man muss es eben nur wissen.

      Zum Aufbau:
      hierzu zunächst ein Beispiel:

      Spoiler anzeigen

      #dynamic 0x800000

      #org @main
      #raw 02
      #raw pointer @main2
      #raw 00

      #org @main2
      #raw word 0x4050
      #raw word 0x1
      #raw pointer 0x8805AA6
      #raw word 0x0


      Das ist schon ein fertiges Level-Script das ein Event am Offset 0x805AA6 auslöst, wenn die Variable (flag) 0x4050 vorher auf den Wert 0x1 gesetzt wurde.

      Zur Erklärung:

      das erste "@main" script ist eine Liste der im Level-Script befindlichen Script Typen also 00 01 02 03 04 05 07
      zuerst wird der Script Typ genannt und dann ein Pointer zum Script vom Typ xx (hier 02) per "@main2" am Ende muss immer ein "#raw 00"
      stehen um anzuzeigen das das Level-Script zu ende ist.

      das zweite" @main2" Script ist das Script vom Typ xx (hier 02) auf das wir vorher mit dem Befehl "#raw pointer" gepointent haben.
      jetzt wird mit "#raw word 0x4050" festgelegt das die Variable 0x4050 auf ihren Wert überprüft wird und mit "#raw word 0x1" wird
      überprüft ob der Wert dieser Variable 0x1 ist.
      Wenn der Wert 0x1 ist dann wird zum Event-Script 0x805AA6 gepointet durch den Befehl "#raw pointer 0x8805AA6"
      Am Ende muss hier ein #raw word 0x0 stehen um auch dieses Script zu beenden oder anders ausgedrückt das Ende zu markieren,
      ähnlich wie bei den Movements "#raw 0xFE"
      Und das wars auch eigentlich schon. Wer das verstanden hat der kann auf kompilieren drücken :D

      4. Einbau des Scripts mit Advance Map

      Jetzt brauchen wir nur noch im Map-Header den Pointer zum Level-Script zu ändern.

      dazu öffnen wir zunächst Advance Map (1.92 oder 1.95 ist egal) und öffnen dann die Map auf der wir ein Level-Script einfügen wollen.

      jetzt gehen wir auf den Reiter "Header" und drücken die Kombination "Strg + H" auf der Tastatur. Jetzt sollte sich die Ansicht des Map-Headers verändert haben.

      Er sollte jetzt so aus sehen (ist Advance Map 1.92 ist in 1.95 aber in etwa genauso)



      Hier tragen wir jetzt in "MapScript- Offset" das Offset rein das uns XSE nach dem kompilieren unter @main (oder welches Wort ihr gewählt habt) ausgespuckt hat.
      Jetzt drücken wir noch auf Speichern und Map neu laden und dann sind wir auch schon fertig :)

      5. Nachwort

      Ich hoffe mein Tutorial hat euch gefallen und ihr habt soweit alles Verstanden.
      Ich weiß das man es sicher noch besser machen könnte aber ich bin noch nicht so erfahren im schreiben von Tutorials und wenn euch etwas auffällt,
      schreibt es einfach hier rein und ich werde es überarbeiten.

      Dieses Tutorial darf kopiert werden aber gebt bitte meinen Namen an!

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