XSE Tutorial

  • XSE Tutorial

    Fragen kommen in dieses Forum rein.

    Das mit dem Video war in Ordnung, aber so ist es doch viel besser! Deswegen mache ich jetzt ein besseres Tut:

    Neue Sachen sind rot markiert!

    Inhaltsverzeichnis:
    1. Einführung/ Funktionen
    2. Text - Script
    2.1 callstd Extras
    3. Giveitem/Pokemon/Egg - Script
    3.1 Flag
    3.2 Giveegg
    4. AdvanceMap Script einfügen
    5. Applymovement - Script
    5.1 Besondere Movements
    6. Trainer/ Kampf - Script
    6.1 Trainerbattle 0
    6.2 Trainerbattle 1
    6.3 AdvanceMap und A-Trainer
    6.4 Besondere Trainer - Scripts
    7. Sonstige
    7.1 Setmaptile
    7.2 Tür - Scripts/ Warp
    7.3 Wildbattle
    7.4 Wetter - Scripts
    7.5 Pokemart
    7.6 Hidesprite/ Showsprite
    7.7 Erdbeben
    7.8 Countpokemon
    7.9 Buffer - Scripts
    7.9.1 bufferpokemon
    7.9.2 bufferfirstpokemon
    7.9.3 bufferitem
    7.9.4 bufferattack
    7.9.5 buffernumber

    8. Extras/ Listen
    9. Nachwort
    10. Credits


    1. Einführung/ Funktionen

    Benötigte Programme:
    eXtreme Script Editor
    AdvanceMap (Ich glaube das haben alle :lol: )

    Anfangs öffnen wir XSE:


    Nun gibt es verschiedene Funktionen:
    Wir öffnen am besten mal eine Rom:
    Datei -> Öffnen:


    Dann können wir einen Script eingeben und wenn wir ihn in die Rom (brennen) wollen,
    drücken wir einfach auf diese Taste:


    Dann erscheint das und mit der Taste kopieren, kann man sogar das Offset in die Zwischenablage kopieren, toll oder?:


    Rechts kann man sogar Dezimalzahlen in Hexzahlen umwandeln und anders herum, weil auch bei givepokemon Befehlen nicht wie in Poke(t)script givepokemon 11 5 0 im Dezimalsystem steht, sondern in Hex -> givepokemon 0xB 0x5 0x0 0x0 0x0 0x0

    Hier kann man auch Scripts dekompilieren. Dazu muss man nur das Offset des Scriptes angeben oder man lädt sich den XSE.exe als Script-Editor in AdvanceMap und drückt dann entsprechend auf Script-Öffnen:

    AdvanceMap:



    Wer mehr Fragen zu den Funktionen hat, kann das gerne Posten! Oder per PN!



    2. Text - Script:

    So nun haben wir die einfachste Variante um einen Script zu schreiben. Einen ganz normalen Text - Script:
    Beginnen wir mit den ersten Befehlen, die erklärt werden

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. msgbox @textcallstd 0x6
    6. release
    7. end
    8. #org @text
    9. = Hallo, ich heiße Nils und mache \ndieses Tutorial...


    Source Code

    1. #dynamic 0x800000

    Der Befehl sucht ein Offset mit "FF"s ab dem Offset 800000, die genug Bytegröße haben, dass er auch ja nicht andere Offsets/ Bytes überschreibt, passiert gar nicht so selten!

    Source Code

    1. #org @main

    Das "main" muss nicht sein, man hätte auch start oder so nehmen können. Der Befehl leitet den Start des Scripts ein.

    Source Code

    1. lock

    lock bringt den Player zum Stehen und er kann sich nicht mehr bewegen.

    Source Code

    1. faceplayer

    faceplayer sorgt dafür, dass der andere, den man anspricht, sich zu dem Player umdreht.

    Source Code

    1. msgbox @text

    msgbox öffnet eine Textbox, wo etwas hinein geschrieben werden kann. Wird häufig beim Sprechen mit einer Person benutzt.

    Source Code

    1. msgbox @text 0x6

    Den Befehl benutzt man bei der neuen XSE-Version. 0x6 ist ein callstd-Befehl. Aber hier wird er nicht gebrauch, er ist im msgbox mit drin.

    Source Code

    1. callstd

    Nur bei der alten Version, des XSE.
    callstd öffnet verschiedene Arten von Textboxen. Hier eine Kleine Liste:
    [list]
    Display Spoiler
    1. callstd 0x6 Der häufigste, der eine normale Textbox anzeigt.
    2. callstd 0x5 Eine Ja/Nein Box, ist auch nicht selten
    3. callstd 0x4 Dieser Befehl sorgt dafür, dass erst nachdem eine Taste gedrückt wird, der Script weitergeführt wird.
    4. callstd 0x3 Ist für Signposts gedacht, das es einem Schild ähnelt
    5. callstd 0x2 kann man auch ohne lock und faceplayer nehmen, es ersetzt es quasi. Es ist im Prinzip dasgleiche wie 0x6
    [/list]

    Source Code

    1. release

    Lässt den Player wieder gehen.

    Source Code

    1. end

    Beendet den Script.

    Source Code

    1. #org @text
    2. =

    Damit ihr auch was schreiben könnt, müsst ihr auch einen Befehl nach dem end nehmen: #org @text (oder was ihr bei msgbox @? genommen habt) dann Absatz
    = Bla Bla Bla...

    Es gibt aber auch noch verschiedene Farben, womit man die Schrift schöner machen kann!
    Dazu seht euch am besten das Tut von driver an:
    Hier

    Auch wenn es mit Poke(t)script-Befehlen ergänzt wurde übertragt einfach nur das "\c\..." Also womit man die Farben ändert.

    Das war ein normales Beispiel zu einem callstd 0x6 Script, aber wie funktioniert er mit callstd 0x5, also Ja/Nein Box?

    2.1 callstd Extras:

    Das klären wir anhand dieses Beispieles:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. msgbox @text
    6. callstd 0x5
    7. Compare LASTRESULT 0x1
    8. if b_true goto @ja
    9. compare LASTRESULT 0x0
    10. if b_true goto @nein
    11. #org @ja
    12. lock
    13. faceplayer
    14. msgbox @text2
    15. callstd 0x6
    16. release
    17. end
    18. #org @nein
    19. lock
    20. faceplayer
    21. msgbox @text3
    22. callstd 0x6
    23. release
    24. end
    25. #org @text
    26. = Möchtest du mich begleiten?
    27. #org @text2
    28. = Das finde ich toll.
    29. #org @text3
    30. = Das ist schade
    Display All


    Source Code

    1. Compare LASTRESULT 0x1

    Dieser Befehl kontrolliert, was er eben gerade gedrückt hat, in diesem Fall kontrolliert er, ob man ja gedrückt hat, weil am Ende 0x1 steht.

    Source Code

    1. Compare LASTRESULT 0x0

    Der kontrolliert nein, weil da 0x0 steht.

    Source Code

    1. if b_true goto @ja

    Dieser befehl muss unter "compare LASTRESULT 0x1", weil er sagt, wenn ja gedrückt wurde, dann geh zu Script 1.

    Source Code

    1. if b_true goto @nein

    Dieser Befehl muss unter "Compare LASTRESULT 0x0", weil er sagt, wenn nein gedrückt wurde, dann geh zu Script 2.

    In diesem Fall spaltet sich der Script also. Das kennst man auch von Programmen oder vom Essen.
    Falls Spinat = Bäääääähhhhhh. Und kotz.
    Falls Pommes = Mmmmhhhhhhh. Und genieß.
    xD
    Wichtig ist nur, dass man bei #org @ja oder #org @nein einen neuen Script anfängt wie bei #org @main (start, ...)

    Ein kleines Erkenntnis habe ich auch gemacht, z. B., dass man nach 35 Buchstaben oder Zahlen oder so, besser ein \n setzt um in die nächste Zeile zu gelangen und wenn dann wieder 35 Buchstaben oder Zahlen kommen nicht wieder \n sondern \p kommen sollte! WICHTIG!
    Aber nach den 35 Buchstaben, Zahlen wieder \n dann wieder \p usw...
    Mein Erkenntnis war aber das mit den 35 Buchstaben oder Zahlen xD.


    Ich glaube das wars auch schon zu den Text - Scripts

    Für besondere Fragen, PN an mich...

    3. Giveitem/ Pokémon - Script

    Ich werde hier einfach wieder einen typischen Script hinzufügen, wo ich dann die Befehler erklaren werde:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. msgbox @text
    6. callstd 0x4
    7. giveitem 0xD 0x1 0x0 0x0 0x0 0x0
    8. release
    9. end
    10. #org @text
    11. = Hier nimm einen Trank.
    Display All


    Source Code

    1. giveitem 0xItem 0xAnzahl 0x0 0x0 0x0

    Ok, ich glaube, das klärt den neuen Befehl. Das einzige, was ich selber nicht weiß, ist, dass am Ende vier mal 0x0 steht, aber es muss sein, sonst geht es nicht...
    Im giveitem-Befehl ist die fanfare + Du erhältst... mit eingebaut.

    Hier eine List von mir:
    [list]
    Display Spoiler
    MEISTERBALL 0x1
    HYPERBALL 0x2
    SUPERBALL 0x3
    POKEBALL 0x4
    SAFARIBALL 0x5
    NETZBALL 0x6
    TAUCHBALL 0x7
    NESTBALL 0x8
    WIEDERBALL 0x9
    TIMERBALL 0xA
    LUXUSBALL 0xB
    PREMIERBALL 0xC
    TRANK 0xD
    GEGENGIFT 0xE
    FEUERHEILER 0xF
    EISHEILER 0x10
    AUFWECKER 0x11
    PARA-HEILER 0x12
    TOP-GENESUNG 0x13
    TOP-TRANK 0x14
    HYPERTRANK 0x15
    SUPERTRANK 0x16
    HYPERHEILER 0x17
    BELEBER 0x18
    TOP-BELEBER 0x19
    TAFELWASSER 0x1A
    SPRUDEL 0x1B
    LIMONADE 0x1C
    KUHMUH-MILCH 0x1D
    ENERGIESTAUB 0x1E
    KRAFTWURZEL 0x1F
    HEILPUDER 0x20
    VITALKRAUT 0x21
    ÄTHER 0x22
    TOP-ÄTHER 0x23
    ELIXIeR 0x24
    TOP-ELIXIER 0x25
    LAVAKEKS 0x26
    BLAUE FLÖTE 0x27
    GELBE FLÖTE 0x28
    ROTE FLÖTE 0x29
    SCHWARZE FLÖTE 0x2A
    WEISSE FLÖTE 0x2B
    BEERENSAFT 0x2C
    ZAUBERASCHE 0x2D
    KÜSTENSALZ 0x2E
    KÜSTENSCHALE 0x2F
    PURPURSTÜCK 0x30
    INDIGOSTÜCK 0x31
    GELBSTÜCK 0x32
    GRÜNSTÜCK 0x33
    ? en:HENTAIMAG 0x34
    ? en:NAMETAG 0x35
    KP-PLUS 0x3F
    PROTEIN 0x40
    EISEN 0x41
    CARBON 0x42
    KALZIUM 0x43
    SONDERBONBON 0x44
    AP-PLUS 0x45
    ZINK 0x46
    AP-TOP 0x47
    MEGABLOCK 0x49
    ANGRIFFPLUS 0x4A
    X-ANGRIFF 0x4B
    X-ABWEHR 0x4C
    X-TEMPO 0x4D
    X-TREFFER 0x4E
    X-SPEZIAL 0x4F
    POKEPUPPE 0x50
    ENECO-RUTE 0x51
    SUPERSCHUTZ 0x53
    TOP-SCHUTZ 0x54
    FLUCHTSEIL 0x55
    SCHUTZ 0x56
    SONNENSTEIN 0x5D
    MONDSTEIN 0x5E
    FEUERSTEIN 0x5F
    DONNERSTEIN 0x60
    WASSERSTEIN 0x61
    BLATTSTEIN 0x62
    MINIPILZ 0x67
    RIESENPILZ 0x68
    PERLE 0x6A
    RIESENPERLE 0x6B
    STERNENSTAUB 0x6C
    STERNENSTÜCK 0x6D
    NUGGET 0x6E
    HERZSCHUPPE 0x6F
    ZIGZAGBRIEF 0x79
    HAFENBRIEF 0x7A
    GLITZERBRIEF 0x7B
    EILBRIEF 0x7C
    WALDBRIEF 0x7D
    WELLENBRIEF 0x7E
    PERLENBRIEF 0x7F
    DUNKELBRIEF 0x80
    TROPENBRIEF 0x81
    TRAUMBRIEF 0x82
    EDELBRIEF 0x83
    RETROBRIEF 0x84
    ? en:CHERRY 0x85
    ? en:CHESTNUT 0x86
    ? en:PEACH 0x87
    FRAGIABEERE 0x88
    WILBIRBEERE 0x89
    JONAGOBEERE 0x8A
    ? en:ORANGE 0x8B
    PERSIMMON 0x8C
    PRUNUSBEERE 0x8D
    ? en:CITRUS 0x8E
    GIEFEBEERE 0x8F
    ? en:KIWI 0x90
    ? en:MANGO 0x91
    GAUVEBEERE 0x92
    ? en:PAPAYA 0x93
    HIMMIHBEERE 0x94
    MORBBEERE 0x95
    ? en:BANANA 0x96
    NIRBEBEERE 0x97
    ? en:PINEAPPLE 0x98
    POMEGRANIT 0x99
    SETANGBEERE 0x9A
    QUALOTBEERE 0x9B
    ? en:HONEYDEW 0x9C
    ? en:GRAPE 0x9D
    ? en:TOMATO 0x9E
    SAIMBEERE 0x9F
    MAGOSTBEERE 0xA0
    RABUTABEERE 0xA1
    ? en: LEMON 0xA2
    KIWANBEERE 0xA3
    PALLMBEERE 0xA4
    WATERMELON 0xA5
    DURINBEERE 0xA6
    MYRTILBEERE 0xA7
    LICHEE 0xA8
    LIGANBEERE 0xA9
    SALKABEERE 0xAA
    TAHAYBEERE 0xAB
    ? en: APRICOT 0xAC
    LANSATBEERE 0xAD
    KRAMBOBEERE 0xAE
    ENIGMABEERE 0xAF
    BLENDPUDER 0xB3
    SCHLOHKRAUT 0xB4
    MACHOBAND 0xB5
    EP-TEILER 0xB6
    FLINKKLAUE 0xB7
    SOOTHEBELL 0xB8
    MENTALKRAUT 0xB9
    WAHLBAND 0xBA
    KING-STEIN 0xBB
    SILBERSTAUB 0xBC
    MÜNZAMULETT 0xBD
    SCHUTZBAND 0xBE
    SEELENTAU 0xBF
    ABYSSZAHN 0xC0
    ABYSSPLATTE 0xC1
    RAUCHBALL 0xC2
    EWIGSTEIN 0xC3
    FOKUS-BAND 0xC4
    GLÜCKS-EI 0xC5
    SCOPE-LINSE 0xC6
    METALLMANTEL 0xC7
    ÜBERRESTE 0xC8
    DRACHENHAUT 0xC9
    KUGELBLITZ 0xCA
    PUDERSAND 0xCB
    GRANITSTEIN 0xCC
    WUNDERSAAT 0xCD
    SCHATTENGLAS 0xCE
    SCHWARZGUT 0xCF
    MAGNET 0xD0
    ZAUBERWASSER 0xD1
    HACKATTAKE 0xD2
    GIFTSTICH 0xD3
    EWIGES EIS 0xD4
    BANNSTICKER 0xD5
    KRÜMMLÖFFEL 0xD6
    HOLZKOHLE 0xD7
    DRACHENZAHN 0xD8
    SEIDENSCHAL 0xD9
    UPGRADE 0xDA
    SEEGESANG 0xDB
    SEERAUCH 0xDC
    LAXRAUCH 0xDD
    LUCKYPUNCH 0xDE
    METALLSTAUB 0xDF
    KAMPFKNOCHEN 0xE0
    LAUCHSTANGE 0xE1
    ROTER SCHAL 0xFE
    BLAUER SCHAL 0xFF
    ROSA SCHAL 0x100
    GRÜNER SCHAL 0x101
    GELBER SCHAL 0x102
    EILRAD 0x103
    MÜNZKORP 0x104
    DETEKTOR 0x105
    ANGEL 0x106
    PROFIANGEL 0x107
    SUPERANGEL 0x108
    BOOTSTICKET 0x109
    WETTBEWERB-KARTE 0x10A
    SHIGGYKANNE 0x10C
    AMULETT 0x10D
    ASCHETASCHE 0x10E
    KELLERÖFFNER 0x10F
    KUNSTRAD 0x110
    POKERIEGEL BOX 0x111
    BRIEF 0x112
    ÄON-TICKET 0x113
    ROTE KUGEL 0x114
    BLAUE KUGEL 0x115
    SCANNER 0x116
    WÜSTENGLAS 0x117
    METEORIT 0x118
    K1-SCHLÜSSEL 0x119
    K2-SCHLÜSSEL 0x11A
    K4-SCHLÜSSEL 0x11B
    K6-SCHLÜSSEL 0x11C
    L-SCHLÜSSEL 0x11D
    WURZELFOSSIL 0x11E
    KLAUENFOSSIL 0x11F
    DEVON-SCOPE 0x120
    TM01 0x121
    TM02 0x122
    TM03 0x123
    TM04 0x124
    TM05 0x125
    TM06 0x126
    TM07 0x127
    TM08 0x128
    TM09 0x129
    TM10 0x12A
    TM11 0x12B
    TM12 0x12C
    TM13 0x12D
    TM14 0x12E
    TM15 0x12F
    TM16 0x130
    TM17 0x131
    TM18 0x132
    TM19 0x133
    TM20 0x134
    TM21 0x135
    TM22 0x136
    TM23 0x137
    TM24 0x138
    TM25 0x139
    TM26 0x13A
    TM27 0x13B
    TM28 0x13C
    TM29 0x13D
    TM30 0x13E
    TM31 0x13F
    TM32 0x140
    TM33 0x141
    TM34 0x142
    TM35 0x143
    TM36 0x144
    TM37 0x145
    TM38 0x146
    TM39 0x147
    TM40 0x148
    TM41 0x149
    TM42 0x14A
    TM43 0x14B
    TM44 0x14C
    TM45 0x14D
    TM46 0x14E
    TM47 0x14F
    TM48 0x150
    TM49 0x151
    TM50 0x152
    VM01 0x153
    VM02 0x154
    VM03 0x155
    VM04 0x156
    VM05 0x157
    VM06 0x158
    VM07 0x159
    VM08 0x15A
    [/list]

    So schwer ist das doch gar nicht. Aber es gibt ein Problem, wenn wir die Person nochmal ansprechen, kriegen wir das Item nochmal, hmm...
    Hier kommen wir zum Unterthema
    3.1 Flag:

    Was soll das sein? Flag...
    Flag kann man sich wie eine Fahne vorstellen. Man hisst eine Fahne und der Script weiß, aha jetzt muss ich das machen.

    Es gibt 3 Befehle von Flag
    1. setflag
    2. clearflag
    3. checkflag

    Beginnen wir mit 1. setflag und 3. checkflag
    Dazu nehmen wir unser Item Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. checkflag 0x200
    6. if b_true goto @done
    7. msgbox @text
    8. callstd 0x4
    9. giveitem 0xD 0x1 0x0 0x0 0x0 0x0
    10. setflag 0x200
    11. release
    12. end
    13. #org @text
    14. = Hier nimm einen Trank.
    15. #org @done
    16. lock
    17. faceplayer
    18. msgbox @text2
    19. callstd 0x6
    20. release
    21. end
    22. #org @text2
    23. = Hey, du hast schon einen Trank!
    Display All


    Gehen wir das wieder gemeinsam durch:

    Source Code

    1. checkflag

    Dieser Befehl prüft, ob die Fahne 200 gehisst ist.

    Source Code

    1. if b_true goto @done

    Dieser Befehl ist uns schon mal begegnet. Er leitet uns zu einem neuen Script, wenn 200 schon gehisst wurde, nämlich zu #org @done.

    Source Code

    1. setflag

    Dieser Befehl hisst eine Fahne, sodass er, wenn man ihn ein zweites oder ein drittes oder ein noch öfteres mal anklickt, sagen wird, dass man schonmal was bekommen hat.

    Ich glaube zu

    Source Code

    1. clearflag
    kann ich auch so etwas sagen:
    Dieser Befehl macht die Fahne wieder start bereit. Also wenn z.B. eine andere Person den Script mit einem clearflag 0x200 beinhaltet, kann man wieder einen Trank bekommen.
    Das war ein Beispiel für einen Flag-Befehl. Man benutzt die Flags nur einmal. Man darf aber keine X-Beliebigen nehmen, sondern nur Freie! Hier eine Liste mit Flags, die es gibt und wo man das bekommt. Freie gibts ab 200 bis 2A0 und 600 bis 6A0, aber da wäre ich vorsichtig.
    Tipp: Macht euch ne Liste mit den Flags, die ihr benutzt und wo ihr sie benutzt!
    Liste: Pokescript Scripting Tutorial
    In diesem Tut findet ihr alle Flags in verschiedenen Editionen.

    Nun kommen wir zum Givepokemon - Befehl, der ja dem Give - Item Befehl ziemlich ähnlich ist.

    Hier nun wieder unser Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. fanfare 0x13E
    6. msgbox @text
    7. callstd 0x6
    8. waitfanfare
    9. givepokemon 0x1 0x64 0xD 0x0 0x0 0x0
    10. setflag 0x200
    11. release
    12. end
    13. #org @text
    14. = [Player] hat ein Bisasam erhalten.
    Display All


    So gehen wir es durch:

    Source Code

    1. fanfare 0x13E

    Dieser Befehl lässt einen Sound laufen, der in dem Giveitem - Script mit intigriert war, aber hier muss er selbst eingefügt werden!

    Source Code

    1. waitfanfare

    Dieser Befehl lässt den Script erst fortfahren, wenn der Sound fertig abgespielt wurde. Man schreibt ihn hinter dem msgbox - Script, damit der Text + dem Sound gleichzeitig laufen und nicht erst der Sound und dann das "Du erhältst ein Bisasam".

    Source Code

    1. givepokemon 0xPokemon 0xAnzahl 0xItem 0x0 0x0 0x0

    Auch hier muss man wieder drei Nullen dahinter hängen, aber dem Pokemon kann man hier auch ein Item geben, die aus der Item-Liste.

    Liste:
    [TUT] Scripten via POKéScript
    Da bekommt ihr eine Liste mit Pokemon, leider Englisch, hatte keine Zeit ein deutsche zu erstellen, aber die mit den Items hatte ich schon vor Jahren gemacht...

    3.2 Giveegg:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. giveegg 0x1
    6. fanfare 0x13E
    7. msgbox @text 0x6
    8. waitfanfare
    9. release
    10. end
    11. #org @text
    12. = [player] hat ein Ei mit \nBISASAM erhalten.
    Display All


    Also, es ist ganz einfach:

    Source Code

    1. giveegg 0xPokemon-Nr. (in Hex)

    Der Befehl gibt dem player ein Ei, in dem Bisasam ist.

    Aber was im allgemeinen bei givepokemon und giveegg fehlt sind die Prüfer! Lest einfach bei 7.8 weiter, wenn ihr das wissen wollt.

    Das wars auch schon über Item/ Pokemon/ Egg - Scripts

    Für besondere Fragen, PN an mich...

    4. AdvanceMap Script einfügen

    Es ist ja auch wichtig Scripts mit AdvanceMap zu den Leuten zu bringen. Das ist einfach:

    Erstellen wir einfach eine neue Person in AdvanceMap und geben wir ihr das Offset vom Script:


    Nun kann man die Person ansprechen und der Script startet sofort.
    Aber manchmal möchte man, dass ein Script losgeht, wenn man zu einer bestimmten Stelle geht. Wie das geht beschreibe ich hier kurz:

    Erst erstellen wir neue Events auf der Map:


    Wir erhöhen einfach die Anzahl der Scripts um einen und drücken auf Events ändern. Dann haben wir dieses Event (grünes S). Es erscheint genau wie auch bei allen anderen Events am Anfang ganz oben links in der Map. Wir verschieben es da hin, wo der Script starten soll, wenn man auf das Feld kommt:


    Nun kommt die Flag, ohne die kann man den Script nicht starten, aber hier ist das nicht 200 oder so sondern alles unter 4050, sind meine ich Frei. Hier würde ich auch wieder 'ne Liste mit den Flags machen. Dann fehlt natürlich noch das Offset:


    Ich habe noch eine Person hinzugefügt, die einen Applymovement - Script hat, also dazu kommen wir aber später. Jetzt habe wir es geschafft, nur wie soll die Person zu dir oder du zu ihr. Das wird später geklärt. Jetzt sollten wir aber vorher noch einen Script unten einsetzen:


    Es gibt da den Befehl setvar. Mit dem kann man verhindern, dass der Script ein zweites mal startet, wenn man die Fläche betritt, also einfach:

    Source Code

    1. setvar 0xFlag 0x1

    0x1 ist ein Ersatz für setflag, aber in diesem Fall darf man kein setflag benutzen, sondern nur setvar!

    Das war ein Script mit einer bestimmten Stelle, es geht aber auch so, dass, wenn man die Map gerade betritt, der Script sofort beginnt. Den nennt man Levelscript.

    Tut

    Für besondere Fragen, PN an mich...

    5. Applymovement - Script

    Jetzt kommen wir zu einem Teil, der sehr wichtig ist und oft verwendet wird!

    Hier wieder ein Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. applymovement 0x1 @go
    6. waitmovement 0x0
    7. msgbox @text
    8. callstd 0x6
    9. release
    10. end
    11. #org @text
    12. = Blabla
    13. #org @go
    14. #raw 0x13
    15. #raw 0x13
    16. #raw 0x13
    17. #raw 0x13
    18. #raw 0xFE
    Display All


    Gehen wir es am besten einfach gemeinsam durch!

    Source Code

    1. applymovement 0xPersonennummer @go

    Mit diesem Befehl lässt man die Person 1 in der Map laufen. Wie kriege ich raus, ob das 1 oder 2 oder... ist? So:


    Source Code

    1. waitmovement 0x0

    Dieser Befehl wartet darauf, dass der Applymovement-Befehl beendet wurde und führt dann den Script fort. (Danke an Driver.)

    Source Code

    1. #raw 0x13

    Dieser Befehl bestimmt, wohin die Person geht. In diesem Fall 0x13 nach rechts in normaler Geschwindigkeit. Wichtig! Am Ende des Movements mit #raw 0x13 usw. immer raw 0xFE!!! Sonst stürzt der Script ab.

    Hier eine Liste von den Movements aus Feuerrot:
    Ich habe die Liste aus dem Script-Tut von thethethethe
    [list]
    Display Spoiler
    Face Down 0x00
    Face Up 0x01
    Face Left 0x02
    Face Right 0x03
    Step Down (Very Slow) 0x08
    Step Up (Very Slow) 0x09
    Step Left (Very Slow) 0x0A
    Step Right (Very Slow) 0x0B
    Step Down (Slow) 0x0C
    Step Up (Slow) 0x0D
    Step Left (Slow) 0x0E
    Step Right (Slow) 0x0F
    Step Down (Normal) 0x10
    Step Up (Normal) 0x11
    Step Left (Normal) 0x12
    Step Right (Normal) 0x13
    Jump Down 2 Squares 0x14
    Jump Up 2 Squares 0x15
    Jump Left 2 Squares 0x16
    Jump Right 2 Squares 0x17
    Step Down (Fast) 0x1D
    Step Up (Fast) 0x1E
    Step Left (Fast) 0x1F
    Step Right (Fast) 0x20
    Step on the Spot Down 0x21
    Step on the Spot Up 0x22
    Step on the Spot Left 0x23
    Step on the Spot Right 0x24
    Step on the Spot Down (Fast) 0x25
    Step on the Spot Up (Fast) 0x26
    Step on the Spot Left (Fast) 0x27
    Step on the Spot Right (Fast) 0x28
    Step on the Spot Down (Very Fast) 0x29
    Step on the Spot Up (Very Fast) 0x2A
    Step on the Spot Left (Very Fast) 0x2B
    Step on the Spot Right (Very Fast) 0x2C
    Face Down (Non-Instant) 0x2D
    Face Up (Non-Instant) 0x2E
    Face Left (Non-Instant) 0x2F
    Face Right (Non-Instant) 0x30
    Slide Down 0x31
    Slide Up 0x32
    Slide Left 0x33
    Slide Right 0x34
    Slide Down On Right Foot 0x3D
    Slide Up On Right Foot 0x3E
    Slide Left On Right Foot 0x3F
    Slide Right On Right Foot 0x40
    Slide Down On Left Foot 0x41
    Slide Up On Left Foot 0x42
    Slide Left On Left Foot 0x43
    Slide Right On Left Foot 0x44
    Face Player 0x4A
    Face Away from Player 0x4B
    Jump Down 1 Square 0x4E
    Jump Up 1 Square 0x4F
    Jump Left 1 Square 0x50
    Jump Right 1 Square 0x51
    Jump in Place (Facing Down) 0x52
    Jump in Place (Facing Up) 0x53
    Jump in Place (Facing Left) 0x54
    Jump in Place (Facing Right) 0x55
    Jump in Place (Facing Down->Up) 0x56
    Jump in Place (Facing Up->Down) 0x57
    Jump in Place (Facing Left->Right) 0x58
    Jump in Place (Facing Right->Left) 0x59
    Disappear 0x60
    Reappear 0x61
    "!" box popup 0x62
    "?" box popup 0x63
    "X" box popup 0x64
    "!!" box popup 0x65
    "^_^" box popup 0x66
    [/list]


    Und die Liste für Rubin/Saphir/Smaragd:
    Auch aus dem Tut von thethethethe
    [list]
    Display Spoiler
    0x54 ' Hide
    0x55 ' Show
    0x56 ' Alert
    0x57 ' Question
    0x58 ' Love
    0x5A ' Pokeball
    0x10 ' Delay0
    0x11 ' Delay1
    0x12 ' Delay2
    0x13 ' Delay3
    0x14 ' Delay4

    ' Step
    0x00 ' Down0
    0x01 ' Up0
    0x02 ' Left0
    0x03 ' Right0
    0x04 ' Down1
    0x05 ' Up1
    0x06 ' Left1
    0x07 ' Right1
    0x08 ' Down2
    0x09 ' Up2
    0x0A ' Left2
    0x0B ' Right2
    0x17 ' Left3
    0x18 ' Right3
    0x15 ' Down3
    0x16 ' Up3
    0x2D ' Down4
    0x2E ' Up4
    0x2F ' Left4
    0x30 ' Right4

    ' Running
    0x35 ' RunDown
    0x36 ' RunUp
    0x37 ' RunLeft
    0x38 ' RunRight
    0x7E ' RunDown2
    0x7F ' RunUp2
    0x80 ' RunLeft2
    0x81 ' RunRight2

    ' Hop & Jump
    0x0C ' HopTileDown
    0x0D ' HopTileUp
    0x0E ' HopTileLeft
    0x0F ' HopTileRight
    0x3A ' HighHopDown
    0x3B ' HighHopUp
    0x3C ' HighHopLeft
    0x3D ' HighHopRight
    0x46 ' HopDown
    0x47 ' HopUp
    0x48 ' HopLeft
    0x49 ' HopRight
    0x4A ' HopDown180
    0x4B ' HopUp180
    0x4C ' HopLeft180
    0x4D ' HopRight180
    0x42 ' JumpDown
    0x43 ' JumpUp
    0x44 ' JumpLeft
    0x45 ' JumpRight

    ' Straf (May have glitches)
    0x19 ' StDown1
    0x1A ' StUp1
    0x1B ' StLeft1
    0x1C ' StRight1
    0x1D ' StDown2
    0x1E ' StUp2
    0x1F ' StLeft2
    0x20 ' StRight2
    0x21 ' StDown3
    0x22 ' StUp3
    0x23 ' StLeft3
    0x24 ' StRight3
    0x25 ' StDown4
    0x26 ' StUp4
    0x27 ' StLeft4
    0x28 ' StRight4
    0x6A ' StDown1i
    0x6B ' StUp1i
    0x6C ' StLeft1i
    0x6D ' StRight1i
    0x6E ' StDown5
    0x6F ' StUp5
    0x70 ' StLeft5
    0x71 ' StRight5

    'Special
    0x31 ' SlideFaceDown
    0x32 ' SlideFaceUp
    0x33 ' SlideFaceLeft
    0x34 ' SlideFaceRight
    0x86 ' IceSlideDown
    0x87 ' IceSlideUp
    0x88 ' IceSlideLeft
    0x89 ' IceSlideRight

    ' Glitchy
    0x3E ' Up0A
    0x3F ' Down0A
    0x4E ' Down0B
    0x63 ' Up0B
    0x65 ' Right0A
    0x66 ' RunStopLoopDown
    0x67 ' RunStopLoopUp
    0x68 ' RunStopLoopLeft
    0x69 ' RunStopLoopRight
    0x72 ' Down15
    0x73 ' Up15
    0x74 ' Left15
    0x75 ' Right15
    0x7A ' Down6
    0x7B ' Up6
    0x7C ' Left6
    0x7D ' Right6
    0x82 ' Down7
    0x83 ' Up7
    0x84 ' Left7
    0x85 ' Right7

    ' EXIT
    0xFE
    [/list]

    Also wir haben einen grünen S Script in AdvanceMap mit einer Var-Nummer als Flag und eine Pers. mit einer Pers.-Nr. Dann müssen wir nur noch einen Script damit machen. Was kann man dazu noch groß sagen.

    5.1 Besondere Movements

    Schön jetzt können wir alles mit Applymovements. Ok, aber wie bewege ich die eigene Figur, also Player? Diese Pers.-Nr. findet man auf der Map nicht...
    Das kann man so sagen:
    Die Pers.-Nr. für den Player ist in jeder Map 0xFF. (Danke an driver!)

    Ok, das wissen wir jetzt auch, aber was ist mit der Ansicht. Es ist möglich die Kamera zu verschieben, also die Ansicht bewegen. Wie geht das? Nicht sehr schwer:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lockall
    4. special 0x113
    5. applymovement 0x7F @go
    6. pause 0x60
    7. applymovement 0x7F @go2
    8. pause 0x0
    9. special 0x114
    10. releaseall
    11. end
    12. #org @go
    13. #raw 0x13
    14. #raw 0xFE
    15. #org @go3
    16. #raw 0x12
    17. #raw 0xFE
    Display All


    Ok

    Source Code

    1. lockall

    lockall blockt die Bewegungen aller Personen auf der Map und lock nur die Bewegung der Person die man ansprichst. (Von driver)

    Source Code

    1. special 0x113

    Das einzige was es macht ist die Kamera "freizusetzen", damit man sie mit der PersonenNummer 0x7F bewegen kannst. (von Driver)

    Source Code

    1. 0x7F

    Das ist die Pers.-Nr. der Kamera

    Source Code

    1. special 0x114

    Der Befehl neutralisiert special 0x113 wieder.

    Source Code

    1. releaseall

    Neutralisiert lockall.

    6. Trainer/ Kampf - Script

    Das ist eine Scriptart, wo es einfache und erweiterte Kämpfe gibt. Der einfache ist, wenn man in die Sichtweite eines Trainers reinläuft beginnt der Kampf, man besiegt ihn und das wars...

    Bei der anderen Scriptart kann man den Script nach dem Kampf weiterlaufen lassen.

    Wir beginnen mit der ersten:

    6.1 Trainerbattle 0

    Ich werde wieder ein Beispiel zeigen und dann weiter erklären:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. trainerbattle 0x0 0x1 0x0 @before @after
    4. msgbox @text
    5. callstd 0x6
    6. release
    7. end
    8. #org @before
    9. = Ich besiege dich...
    10. #org @after
    11. = Ich habe verloren...
    12. #org @text
    13. = Du warst einfach zu stark!
    Display All


    Source Code

    1. trainerbattle 0xArt des Kampfes 0xTrainer-ID 0x0 @before @after

    Also die Art des Kampfes habe ich erläutert. Hier ist es ein einfacher Trainer-Kampf, also 0x0. Die Trainer-ID. Das erkläre ich noch und 0x0 als Platzhalter. @before ist das, was am Anfang des Kampfes gesagt wird und @after nach dem Kampf, logisch oder?...

    Was macht das

    Source Code

    1. msgbox @text
    da?
    Nachdem der Trainer besiegt wurde, wird der Trainerbattle-Befehl beim Ansprechen übersprungen, also würde die Rom crashen, wenn wir nichts dahinter setzen würden.

    Das wars zum Script, aber wie man das in AdvanceMap einstellt, erkläre ich später.

    6.2 Trainerbattle 1

    Der Script ist nicht viel anders als Trainerbattle 0 seht her:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. trainerbattle 0x1 0x1 0x0 @before @after @later
    4. msgbox @text
    5. callstd 0x6
    6. release
    7. end
    8. #org @before
    9. = Ich besiege dich...
    10. #org @after
    11. = Ich habe verloren...
    12. #org @text
    13. = Du warst einfach zu stark!
    14. #org @later
    15. lock
    16. faceplayer
    17. msgbox @text2
    18. callstd 0x6
    19. release
    20. end
    21. #org @text2
    22. = Du hast mich zwar besiegt, \naber du wirst das Ewige Eis \ptrotzdem nicht bekommen...
    Display All


    Source Code

    1. trainerbattle 0x1 0x1 0x0 @before @after @later

    Wie man hier erkennen kann, gibt es noch einen zweiten Script @later, der nach dem Kampf gestartet wird.

    Wie wir sehen können ist der Script nicht viel anders.

    6.3 AdvanceMap und A-Trainer

    Nun kommen wir zum Interessanteren. Zuerst zeige ich was man in AdvanceMap einstellen muss, wenn es Trainerbattle 0 ist:


    Bei Trainer muss ein Haken sein, es muss die Sichtweite angegeben sein, die bestimmt wie viele Schritte man im Kampf gefangen ist, also in dem Bild habe ich die beiden Felder neben dem Trainer markiert um zu zeigen, dass, wenn man nur Sichtweite 1 hätte, der Player ganz rechts einfach vorbei gehen kann. Die Richtung, wo er hinschaut muss man natürlich auch bestimmen.

    Und nun die Einstellungen bei Trainerbattle 1:


    Kaum Einstellungen, keine Sichtweite. Da nimmt man meistens einen "Grünen S" - Script (xD). Auf diesem Bild, aber ist das Offset bei der Person. (Danke an Driver!)

    Und nun zu A-Trainer:
    Download

    Wir wollen jetzt also die Trainer-ID und den Trainer bestimmen, welche Pokémon er haben soll usw...
    Fangen wir an:


    Ok Name dürfte sich von selbst klären. Sex ist das Geschlecht, auch logisch. Bildnummer 72 ist die Bildnummer die zum Trainer passen muss. Man soll ja nicht einen Matrosen Ryu mit einem Team Aqua Bild machen xD. In deutschen Feuerrot Roms ist es hier so, dass man bei Trainer Class einen weiter unten nehmen muss, also wenn da ist:

    Source Code

    1. Teenager
    2. Matrose
    3. Pokm-Trainer

    und ich einen Matrose will, muss ich Pokm-Trainer wählen.
    Bei Money-Rate kann man einstellen, wie viel Geld man bekommen soll. Bei Items nimmt man nur Tränke oder so, damit die Pokémon von Ryu sich auch erholen können. Wenn man aber einen Ball nimmt, ähh, wirft Ryu einen Ball, hmmm, Blödsinn! Schauen wir nun zur Pokémon-Data, aber vorher "Save":


    Ok, hier kann man Pokémon auswählen, alles wunderbar. Beispiel: Ich erhöhe die Zahl der Pokémon bei Pokémon Amount wähle fröhlich meine Pokémon und plötzlich kann er nicht abspeichern. Hier brauchen wir einen Re-Point. Dazu drücken wir Repoint und machen das:







    Falls der OK-Button nicht frei wird, ist zu wenig Platz in dem Offset, also müssen wir per Hex-Editor nach freien Offsets suchen. Denkt dran nicht nach 00 sondern FF.

    Ich hoffe, dass ihr es Verstanden habt. Die Trainer-ID steht bei Trainer Selection links neben dem Trainer. Man kann auch PET benutzen, aber damit hatte ich oft Probleme!
    Das wars zu diesem Thema!

    6.4 Besondere Trainer - Scripts

    OK, dann mal los:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. checktrainerflag 0x002
    4. compare 0x800D 0x1
    5. if b_true goto @done
    6. msgbox @text 0x6
    7. release
    8. end
    9. #org @text
    10. = Was du hast noch nicht \ngegen HANS gekämpft? \pDann solltest du das tun!
    11. #org @done
    12. msgbox @text2 0x6
    13. release
    14. end
    15. #org @text
    16. = Du hast HANS besiegt, Super!
    Display All


    Gehen wir das einfach mal durch!

    Source Code

    1. checktrainerflag 0xTrainer-ID

    Prüft, ob man schon gegen einen TRAINER gekämpft hat.

    Source Code

    1. compare 0x800D 0x1

    Das ist dasselbe wie compare LASTRESULT 0x1. Das ist nur eine andere Schreibweise.

    Nächster Befehl:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. trainerbattle 0x0 0x002 0x0 @before @after @later
    4. msgbox @text 0x5
    5. compare 0x800D 0x1
    6. if b_true goto @ja
    7. compare 0x800D 0x0
    8. if b_true goto @nein
    9. release
    10. end
    11. #org @before
    12. = Ich besiege dich...
    13. #org @after
    14. = Ich habe verloren...
    15. #org @text
    16. = Willst du nochmal kämpfen?
    17. #org @nein
    18. faceplayer
    19. msgbox @text2 0x6
    20. release
    21. end
    22. #org @text2
    23. = Dann nicht...
    24. #org @ja
    25. cleartrainerflag 0x002
    26. repeattrainerbattle
    27. release
    28. end
    Display All


    Gehen wir das nochmal langsam durch!

    Source Code

    1. cleartrainerflag 0xTrainer-ID

    Löscht eine Trainerflag, sodass man nochmal gegen den Trainer kämpfen kann.

    Source Code

    1. repeattrainerbattle

    Wiederholt den Trainerbattle von eben. Man spart sich einen neuen trainerbattle 0x0 0x002 0x0 @before @after usw.

    Und den letzten:
    Jetzt mal ohne Beispiel.

    Source Code

    1. settrainerflag 0xTrainer-ID

    Wenn man z.B. in einer Arena ist und man einem Trainer ausgewichen ist, muss man nach dem Arenaleiterkampf die Flag setzen, damit man nicht gegen den Trainer kämpfen muss, denn man hat ja schon den Orden!

    Das wars zu diesem Thema!

    7. Sonstige

    Hier werde ich ein paar andere Befehle vorstellen.

    7.1 Setmaptile:
    Tja, ok, ich werde mal die Funktion dieses Script-Befehls erklären. Setmaptile ersetzt in der Map z.B. einen Baum mit gewöhnlichem Gras. Beispiel mal wieder (xD):

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. fcaeplayer
    5. msgbox @text
    6. callstd 0x6
    7. setmaptile 0x1 0x0C 0x07 0x0
    8. setmaptile 0x1 0x0D 0x07 0x0
    9. setmaptile 0x1 0x0C 0x06 0x0
    10. setmaptile 0x1 0x0D 0x06 0x0
    11. setmaptile 0x26 0x0C 0x05 0x1
    12. setmaptile 0x27 0x0D 0x05 0x1
    13. special 0x8E
    14. release
    15. end
    16. #org @text
    17. = Hallo, wir sind der \nMotorsägenvertrieb Müller. \pIch zersäge diesen Baum.
    Display All


    Ok, gehen wir es langsam durch:

    Source Code

    1. setmaptile 0xBlock 0xX-Kordinate 0xY-Kordinate 0xBegehbar?

    ok, Block ist der neue Block, wenn ich den Baum wegmache, nehme ich Rasen als neuen Block. "0xX-Kordinate" Hier schreibt man die X-Kordinate des alten Blockes hin, wo der Block in der Map ersetzt werden soll. "0xY-Kordinate" Das ist der Y-Wert, der den Platz des Blockes angibt. "0xBegehbar?" da gibt es zwei Möglichkeiten. Entweder "0x0" für begehbar oder "0x1" für nicht begehbar.

    Source Code

    1. special 0x8E

    Der Befehl aktualisiert die Map im Spiel, sodass der Baum sofort weg ist.

    Nun dazu, wie ich den Block und die X- und Y-Kordinate herausfinde. Dies geht auch mit AdvanceMap!
    Hier ein Bild davon:


    Ja das wars auch dazu, ich hoffe, dass ihr alles verstanden habt, falls nicht Post oder PN, wie immer.

    7.2 Tür-Scripts/ Warp:

    Dieser Befehl ist eigentlich ganz simpel. Gehen wir das einfach wie immer durch.

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. #raw 0xAC 0x09 0x00 0x0D 0x00
    6. #raw AE
    7. applymovement 0x1 @go
    8. waitmovement 0x0
    9. applymovement 0xFF @go2
    10. waitmovement 0x0
    11. #raw 0xAD 0x09 0x00 0x0D 0x00
    12. #raw AE
    13. setflag 0x267
    14. warp 0x0 0x3 0x48
    15. release
    16. end
    17. #org @go
    18. #raw 0x11
    19. #raw 0x60
    20. #raw 0xFE
    21. #org @go2
    22. #raw 0x12
    23. #raw 0x11
    24. #raw 0x60
    25. #raw 0xFE
    Display All


    Gehen wir es einfach mal durch.

    Source Code

    1. #raw 0xAC 0x09 0x00 0x0D 0x00

    0xAC bereitet das Öffnen einer Tür vor. 0x09 und 0x00 X-Kordinaten, 0x0D und 0x00 Y-Kordinaten der Map.

    Source Code

    1. #raw 0xAE

    Führt das Vorbereitete aus.

    Source Code

    1. #raw 0xAD 0x09 0x00 0x0D 0x00

    Bereitet das Schließen einer Tür vor.

    Nun noch:

    Source Code

    1. warp 0xWarp-Nummer in Hex 0xMap-Bank in Hex 0xMap in Hex

    Der Warp-Befehl bringt den Player in eine andere Map. Hier zum Beispiel in die Warp-Nummer 0 in der Map-Bank 3, in der Map 72 (48 ist Hex). Das ist der normale Warp-Befehl. Wenn man allerdings auf einer bestimmten Stelle in der Map landen soll, nimmt man den sogenannten Warp to Position-Befehl:

    Source Code

    1. warp 0xMapbank 0xMap 0xFF 0xX-Kordinat 0xY-Kordinat

    Das erklärt sich glaub ich von selbst.
    Das wars auch schon.

    7.3 Wildbattle:

    Nun kommen wir zu einem recht simplen Befehl, der einen Wild-Pokemon-Kampf enthält, also kämpft man gegen wilde Pokemon xD.

    Ich stelle wieder ein Beispiel rein:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. checkflag 0x200
    6. if b_true goto @done
    7. msgbox @text
    8. callstd 0x4
    9. cry 0x1 0x0
    10. wildbattle 0x1 0x1E 0x0 0x0
    11. fadescreen 0x1
    12. fadescreen 0x0
    13. setflag 0x200
    14. release
    15. end
    16. #org @done
    17. lock
    18. faceplayer
    19. msgbox @text
    20. callstd 0x6
    21. release
    22. end
    23. #org @text
    24. = Bisa, Bisasam...
    Display All


    Ok, gehen wir es wieder durch:

    Source Code

    1. cry 0xPokemon 0xPlatzhalter

    Ich glaube das erklärt das fast schon. Cry lässt den Pokemon-Schrei eines bestimmten Pokemon ertönen. 0xPokemon, da fügt man einfach das Pokemon ein, das schreien soll ein.

    Source Code

    1. wildbattle 0xPokemon 0xLevel 0xItem 0xArt des Kampfes

    Der Befehl startet den Wild-Pokemon-Kampf. 0xLevel, das Level des Pokemon (in Hex), 0xItem, da kann man dem Pokemon ein Item geben.

    Hier eine Liste zu Fadescreen:
    Display Spoiler
    fadescreen:
    0x0 - macht den schwarzen Bildschirm wieder normal.
    0x1 - macht den Bildschirm schwarz.
    0x2 - macht den weißen Bildschirm wieder normal.
    0x3 - macht den Bildschirm weiß.


    Ich glaube, das ist erklärt!

    7.4 Wetter - Scripts:

    Dieser Befehl ist einfacher, als man sich ihn vorstellt...
    Beginnen wir wieder mit einem Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. checkflag 0x200
    4. if b_true goto @done
    5. setweather 0x3
    6. doweather
    7. setflag 0x200
    8. release
    9. end
    10. #org @done
    11. setweather 0x2
    12. doweather
    13. clearflag 0x200
    14. release
    15. end
    Display All


    Gehen wir das wieder durch:

    Source Code

    1. setweather 0xWetterart

    Wie das da steht: Der Befehl bereitet ein Wetter vor.

    Source Code

    1. doweather

    Wer ein wenig Englisch kann, müsste hinter diesen Befehl kommen. (Doweather = Machwetter)
    Dieser Befehl startet das vorbereitete Wetter.

    Hier eine Liste mit Wettern:
    Display Spoiler
    Sonnig (kein Wetter) = 0x0
    Sonniges Wetter mit Wolken = 0x1
    Normales Wetter = 0x2
    Regen = 0x3
    3 Schneepflocken = 0x4
    Regen mit Gewitter = 0x5
    Nebel = 0x6
    Dauerschnee = 0x7
    Sandsturm = 0x8
    Nebel von oben rechts = 0x9
    Dichter, heller Nebel = 0xA
    Bevölkt = 0xB
    Untergrund blinkt = 0xC
    Viel Regen mit Gewitter = 0xD
    Sonnig (Kein Wetter) = 0xE


    7.5 Pokémart:
    Dieser Befehl ist auch ganz simpel. Mit dem Befehl kann man einen Pokémarkt erstellen. In dem Befehl steckt, das "Guten Tag, was möchten sie", die Liste zum Kaufen, "Kaufen, Verkaufen, Tschüssi!". Man muss praktisch nur angeben, was man Kaufen kann.

    Ein Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. pokemart @markt
    6. release
    7. end
    8. #org @markt
    9. #raw word 0x1
    10. #raw word 0x2
    11. #raw word 0x3
    12. #raw word 0x4
    13. #raw word 0x5
    14. #raw word 0x6
    15. #raw word 0x7
    16. #raw word 0x8
    17. #raw word 0x9
    18. #raw word 0xA
    19. #raw word 0xB
    20. #raw word 0xC
    21. #raw word 0x13
    22. #raw word 0x14
    23. #raw word 0x0
    Display All


    Gehen wir die Befehle durch:

    Source Code

    1. pokemart @markt

    Dieser Befehl startet den Pokémarkt-Script.

    Source Code

    1. #raw word 0xItem

    Hier kann man auswählen, was gekauft werden kann.

    Hier eine Liste mit ein paar Items:
    Display Spoiler
    MEISTERBALL 0x1
    HYPERBALL 0x2
    SUPERBALL 0x3
    POKEBALL 0x4
    SAFARIBALL 0x5
    NETZBALL 0x6
    TAUCHBALL 0x7
    NESTBALL 0x8
    WIEDERBALL 0x9
    TIMERBALL 0xA
    LUXUSBALL 0xB
    PREMIERBALL 0xC
    PARA-HEILER 0x13
    TOP-GENESUNG 0x14


    Ich glaube das wars hierzu.

    7.6 Hide-/ Showsprite:
    Dieser Befehl ist wieder etwas komplexer, aber trotzdem gut zu verstehen.

    Nehmen wir wieder ein Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. showsprite 0x2
    6. msgbox @text
    7. callstd 0x6
    8. hidesprite 0x2
    9. release
    10. end
    11. #org @text
    12. = Hallo, wie geht's?
    Display All


    Gehen wir das einfach mal durch:

    Source Code

    1. showsprite 0xPers-Nr.

    Dieser Befehl lässt eine Pers. erscheinen, die mit hidesprite schonmal versteckt worden war oder man kann clearflag nehmen, falls man die Pers. entfernt hat mit setflag, und sie mit showsprite nach clearflag wieder erscheinen lassen.

    Source Code

    1. hidesprite 0xPers.-Nr.

    Dieser Befehl lässt eine Pers. verschwinden.

    Andere:

    Source Code

    1. hidesprite 0x800F

    Dieser Befehl lässt die Pers. verscheinden, die man gerade angesprochen hatte. Eigentlich auch nützlich...

    Das wars auch schon dazu.

    7.7 Erdbeben:
    Dieser Befehl ist simpel und einfach:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. setvar 0x8004 0xF
    6. setvar 0x8005 0xF
    7. setvar 0x8006 0xF
    8. setvar 0x8007 0xFspecial 0x136
    9. release
    10. end


    Gehen wir es einfach durch:

    Source Code

    1. special 0x136

    Der Befehl beendet das Erdbeben.

    Source Code

    1. setvar 0x8004 0xF
    2. setvar 0x8005 0xF
    3. setvar 0x8006 0xF
    4. setvar 0x8007 0xF

    Die Befehle starten das Erdbeben und bestimmen die Länge (Zeit) und die Stärke des Erdbebens. Dieses Erdbeben ist sehr stark!
    Man kann die Stärke und die Zeit ändern, aber genaueres weiß ich darüber nicht, aber eigentlich ist es egal. Erdbeben ist Erdbeben.

    Das wars auch schon dazu!

    7.8 Countpokemon:
    Ein sehr nützlicher Befehl:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. countpokemon
    4. compare 0x800D 0x6
    5. if b_true goto @done
    6. fanfare 0x13E
    7. msgbox @text 0x6
    8. waitfanfare
    9. givepokemon 0x1 0x1 0xD 0x0 0x0 0x0
    10. setflag 0x200
    11. release
    12. end
    13. #org @text
    14. = [player] erhält ein BISASAM!
    15. #org @done
    16. msgbox @text2 0x6
    17. release
    18. end
    19. #org @text2
    20. = Du musst ein Pokemon in \ndie Box bringen!
    Display All


    OK, gehen wir das mal durch!

    Source Code

    1. countpokemon

    Überprüft die Anzahl der Pokemon im Team.

    Source Code

    1. compare 0x800D 0xAnzahl der Pokemon

    Hier muss man einfach die Anzahl der Pokemon eingeben, die man haben soll, damit ein Script umgeleitet wird. Z.B. Bei 0x6, wenn man ein Pokemon soll, aber 6 im Team hat, kann man keins dazubekommen. Also leiten wir den Script auf @done um.

    Das wars hierzu.

    7.9 Buffer:
    Es gibt verschiedene Buffer-Befehle. Beginnen wir mit:

    7.9.1 Bufferpokemon

    Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. faceplayer
    4. bufferpokemon 0x00 0x1
    5. msgbox @text 0x6
    6. release
    7. end
    8. #org @text
    9. = Wie geht's denn dir \nund [buffer1]?


    Gehen wir das mal durch:

    Source Code

    1. bufferpokemon 0xVariabel 0xPokemon ID (in Hex)

    Dieser Befehl läd das Pokemon bei Pokemon-ID in die Variabel 0x0, also schreibt man in einer Textbox [buffer1], denn dort erscheint der Name des Pokemon, das wir gerade bei bufferpokemon bei der Pers-ID hingeschrieben haben.

    Wenn wir mehrere Pokemon in so ein Buffer laden wollen nehmen wir beim nächsten Mal 0x01 und im Text [buffer2].
    7.9.2 Bufferfirstpokemon

    Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. faceplayer
    4. bufferfirstpokemon 0x00
    5. msgbox @text 0x6
    6. release
    7. end
    8. #org @text
    9. = Wie geht's denn dir \nund [buffer1]?


    Source Code

    1. bufferfirstpokemon

    Der Befehl läd das erste Pokemon im Team in den Buffer.

    7.9.3 Bufferitem

    Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. faceplayer
    4. bufferitem 0x00 0x0D
    5. msgbox @text 0x6
    6. release
    7. end
    8. #org @text
    9. = Willst du einen \n[buffer1]?


    Source Code

    1. bufferitem 0x00 0xItem-Nr. (in Hex)

    Dasgleiche geht auch mit Items.

    7.9.4 Bufferattack

    Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. faceplayer
    4. bufferpokemon 0x00 0x01
    5. bufferattack 0x01 0x002
    6. msgbox @text 0x6
    7. release
    8. end
    9. #org @text
    10. = Dein [buffer1] kann kein \n[buffer2] erlernen!
    Display All


    Source Code

    1. bufferattack 0x00 0xAttack-Nr.

    Dasgleiche geht auch mit Attacken. Eine Liste gibt es bei Punkt 8: Extras und Listen.

    7.9.5 Buffernumber

    Beispiel:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. faceplayer
    4. setvar 0x800D 0x64
    5. buffernumber 0x00 0x800D
    6. bufferitem 0x01 0x0D
    7. msgbox @text 0x6
    8. release
    9. end
    10. #org @text
    11. = Das Item [buffer2] \nkostet [buffer1] Pokedollar!
    Display All


    Source Code

    1. setvar 0x800D 0xZahl (in Hex)

    Der Befehl läd die Zahl, die man eingibt, in meinem Beispiel 100, in die Variabel 800D.

    Source Code

    1. buffernumber 0x00 0x800D

    Der Befehl läd die vorhin geladene Zahl, die in 800D drinsteckt, in den Buffer.

    So schwer war das nicht, aber diese Variabeln und Valuen können eine verwirren, oder? Naja heiter weiter!

    8. Extras/ Listen:

    Hier eine Liste mit Flags, die im Spiel schon benutzt wurden (Feuerrot/Blattgrün):

    flag_fr_bg.txt

    Alternativ:
    Hier

    Falls ihr bestimmte Tuts sucht um Ähnliches zu machen, hat Aeonos ein Inhaltsverzeichnis gemacht:
    Hier

    Ein Super XSE Tut, leider Englisch:

    Hier

    Die Attackenliste:
    Display Spoiler
    001 Pound
    002 Karate Chop
    003 DoubleSlap
    004 Comet Punch
    005 Mega Punch
    006 Pay Day
    007 Fire Punch
    008 Ice Punch
    009 ThunderPunch
    00A Scratch
    00B ViceGrip
    00C Guillotine
    00D Razor Wind
    00E Swords Dance
    00F Cut
    010 Gust
    011 Wing Attack
    012 Whirlwind
    013 Fly
    014 Bind
    015 Slam
    016 Vine Whip
    017 Stomp
    018 Double Kick
    019 Mega Kick
    01A Jump Kick
    01B Rolling Kick
    01C Sand-Attack
    01D Headbutt
    01E Horn Attack
    01F Fury Attack
    020 Horn Drill
    021 Tackle
    022 Body Slam
    023 Wrap
    024 Take Down
    025 Thrash
    026 Double-Edge
    027 Tail Whip
    028 Poison Sting
    029 Twineedle
    02A Pin Missile
    02B Leer
    02C Bite
    02D Growl
    02E Roar
    02F Sing
    030 Supersonic
    031 SonicBoom
    032 Disable
    033 Acid
    034 Ember
    035 Flamethrower
    036 Mist
    037 Water Gun
    038 Hydro Pump
    039 Surf
    03A Ice Beam
    03B Blizzard
    03C Psybeam
    03D BubbleBeam
    03E Aurora Beam
    03F Hyper Beam
    040 Peck
    041 Drill Peck
    042 Submission
    043 Low Kick
    044 Counter
    045 Seismic Toss
    046 Strength
    047 Absorb
    048 Mega Drain
    049 Leech Seed
    04A Growth
    04B Razor Leaf
    04C SolarBeam
    04D PoisonPowder
    04E Stun Spore
    04F Sleep Powder
    050 Petal Dance
    051 String Shot
    052 Dragon Rage
    053 Fire Spin
    054 ThunderShock
    055 Thunderbolt
    056 Thunder Wave
    057 Thunder
    058 Rock Throw
    059 Earthquake
    05A Fissure
    05B Dig
    05C Toxic
    05D Confusion
    05E Psychic
    05F Hypnosis
    060 Meditate
    061 Agility
    062 Quick Attack
    063 Rage
    064 Teleport
    065 Night Shade
    066 Mimic
    067 Screech
    068 Double Team
    069 Recover
    06A Harden
    06B Minimize
    06C SmokeScreen
    06D Confuse Ray
    06E Withdraw
    06F Defense Curl
    070 Barrier
    071 Light Screen
    072 Haze
    073 Reflect
    074 Focus Energy
    075 Bide
    076 Metronome
    077 Mirror Move
    078 Selfdestruct
    079 Egg Bomb
    07A Lick
    07B Smog
    07C Sludge
    07D Bone Club
    07E Fire Blast
    07F Waterfall
    080 Clamp
    081 Swift
    082 Skull Bash
    083 Spike Cannon
    084 Constrict
    085 Amnesia
    086 Kinesis
    087 Softboiled
    088 Hi Jump Kick
    089 Glare
    08A Dream Eater
    08B Poison Gas
    08C Barrage
    08D Leech Life
    08E Lovely Kiss
    08F Sky Attack
    090 Transform
    091 Bubble
    092 Dizzy Punch
    093 Spore
    094 Flash
    095 Psywave
    096 Splash
    097 Acid Armor
    098 Crabhammer
    099 Explosion
    09A Fury Swipes
    09B Bonemerang
    09C Rest
    09D Rock Slide
    09E Hyper Fang
    09F Sharpen
    0A0 Conversion
    0A1 Tri Attack
    0A2 Super Fang
    0A3 Slash
    0A4 Substitute
    0A5 Struggle
    0A6 Sketch
    0A7 Triple Kick
    0A8 Thief
    0A9 Spider Web
    0AA Mind Reader
    0AB Nightmare
    0AC Flame Wheel
    0AD Snore
    0AE Curse
    0AF Flail
    0B0 Conversion 2
    0B1 Aeroblast
    0B2 Cotton Spore
    0B3 Reversal
    0B4 Spite
    0B5 Powder Snow
    0B6 Protect
    0B7 Mach Punch
    0B8 Scary Face
    0B9 Faint Attack
    0BA Sweet Kiss
    0BB Belly Drum
    0BC Sludge Bomb
    0BD Mud-Slap
    0BE Octazooka
    0BF Spikes
    0C0 Zap Cannon
    0C1 Foresight
    0C2 Destiny Bond
    0C3 Perish Song
    0C4 Icy Wind
    0C5 Detect
    0C6 Bone Rush
    0C7 Lock-On
    0C8 Outrage
    0C9 Sandstorm
    0CA Giga Drain
    0CB Endure
    0CC Charm
    0CD Rollout
    0CE False Swipe
    0CF Swagger
    0D0 Milk Drink
    0D1 Spark
    0D2 Fury Cutter
    0D3 Steel Wing
    0D4 Mean Look
    0D5 Attract
    0D6 Sleep Talk
    0D7 Heal Bell
    0D8 Return
    0D9 Present
    0DA Frustration
    0DB Safeguard
    0DC Pain Split
    0DD Sacred Fire
    0DE Magnitude
    0DF DynamicPunch
    0E0 Megahorn
    0E1 DragonBreath
    0E2 Baton Pass
    0E3 Encore
    0E4 Pursuit
    0E5 Rapid Spin
    0E6 Sweet Scent
    0E7 Iron Tail
    0E8 Metal Claw
    0E9 Vital Throw
    0EA Morning Sun
    0EB Synthesis
    0EC Moonlight
    0ED Hidden Power
    0EE Cross Chop
    0EF Twister
    0F0 Rain Dance
    0F1 Sunny Day
    0F2 Crunch
    0F3 Mirror Coat
    0F4 Psych Up
    0F5 ExtremeSpeed
    0F6 AncientPower
    0F7 Shadow Ball
    0F8 Future Sight
    0F9 Rock Smash
    0FA Whirlpool
    0FB Beat Up
    0FC Fake Out
    0FD Uproar
    0FE Stockpile
    0FF Spit Up
    100 Swallow
    101 Heat Wave
    102 Hail
    103 Torment
    104 Flatter
    105 Will-O-Wisp
    106 Memento
    107 Facade
    108 Focus Punch
    109 SmellingSalt
    10A Follow Me
    10B Nature Power
    10C Charge
    10D Taunt
    10E Helping Hand
    10F Trick
    110 Role Play
    111 Wish
    112 Assist
    113 Ingrain
    114 Superpower
    115 Magic Coat
    116 Recycle
    117 Revenge
    118 Brick Break
    119 Yawn
    11A Knock Off
    11B Endeavor
    11C Eruption
    11D Skill Swap
    11E Imprison
    11F Refresh
    120 Grudge
    121 Snatch
    122 Secret Power
    123 Dive
    124 Arm Thrust
    125 Camouflage
    126 Tail Glow
    127 Luster Purge
    128 Mist Ball
    129 FeatherDance
    12A Teeter Dance
    12B Blaze Kick
    12C Mud Sport
    12D Ice Ball
    12E Needle Arm
    12F Slack Off
    130 Hyper Voice
    131 Poison Fang
    132 Crush Claw
    133 Blast Burn
    134 Hydro Cannon
    135 Meteor Mash
    136 Astonish
    137 Weather Ball
    138 Aromatherapy
    139 Fake Tears
    13A Air Cutter
    13B Overheat
    13C Odor Sleuth
    13D Rock Tomb
    13E Silver Wind
    13F Metal Sound
    140 GrassWhistle
    141 Tickle
    142 Cosmic Power
    143 Water Spout
    144 Signal Beam
    145 Shadow Punch
    146 Extrasensory
    147 Sky Uppercut
    148 Sand Tomb
    149 Sheer Cold
    14A Muddy Water
    14B Bullet Seed
    14C Aerial Ace
    14D Icicle Spear
    14E Iron Defense
    14F Block
    150 Howl
    151 Dragon Claw
    152 Frenzy Plant
    153 Bulk Up
    154 Bounce
    155 Mud Shot
    156 Poison Tail
    157 Covet
    158 Volt Tackle
    159 Magical Leaf
    15A Water Sport
    15B Calm Mind
    15C Leaf Blade
    15D Dragon Dance
    15E Rock Blast
    15F Shock Wave
    160 Water Pulse
    161 Doom Desire


    Das wars zu Extras und Listen, nicht viel, aber etwas.

    9. Nachwort:

    Ich danke allen in RHW/RR, die mich immer wieder unterstützt haben, Tipps zu diesem Tut usw.
    Besonders danke an:
    driver
    red-ex (Gruß nach Italien)
    Agi (Wegen dem Tut, der Anzahl der Zeichen usw.)

    10.Credits:
    diegoisawesome
    HackMew
    Lu-Ho

    Dieses Tut ist von Pilo11 geschrieben und darf nicht ohne meine Erlaubnis kopiert werden. Es ist erlaubt es zu verlinken, aber mit Credits.

    Pilo11 :D

    Seit heute dem 03.10.15, 7 Jahre auf RHR!!! :P

    Post was edited 9 times, last by pilo11 ().

  • Re: XSE Tutorial

    @ driver und Freastar:
    Ich glaube kaum,dass bei einem Tutorial die Musik wichtig ist. Außerdem wird es wieder das Problem geben, dass es Leute gibt, welche Metal/Hardrock nicht gerade mögen...
    Deswegen würde ich die Musik irgendwie raustun oder mich einfach mal auf das wichtige Konzentieren: Den Inhalt...
  • Re: XSE Tutorial

    Eig sehr schönes TUT, nur hast du geschrieben, du gibst einen Trank und man bekommt auf einmal ne Limonade?o.O
    Den script, hättest du einfacher schreiben können mit:
    checkitem 0xD
    #raw 0x01 0x00
    und dann.... ;)
    Das du durch 5maps gehst am ende, ist auch nicht so schön. Auf den givepokemon script würd ich trotzdem weiter eingehen... wenn du nur schreibst, giveitem durch givepokemon erstzen naja^^ Naja wie gesagt, ein gutes, mit mehr erklärungen und "veranschaulichungen", TUT(für ein "neuling" wie dich) good job;) (wenn du meine hilfe, bzw hilfe brauchst, PN me=) ) Viel kritik ich weiss, aber nur so wirst du besser^^;)

    mfg
  • Re: XSE Tutorial

    Nettes Tutorial, ich habs zwar jetzt nur schnell überflogen, aber für Anfänger nicht schlecht :wink:
    Bie Givepokemon müssen 6 Bytes eingefügt werden, jedoch braucht man im XSE nur 3, daher muss man danach noch 3x "0x00" einfügen, als Filler.
    Irgendwie ist das unheimlich, gerade heute befolge ich einen Rat von M_T und möchte Scripten mit dem XSE lernen und dann kommt das :D

    Lg
    MfG, Alen

    When faced with tragedy we come alive or come undone
    So don't look back, let it shape you like an ocean
    Even the deepest scars in time will fade
  • Re: XSE Tutorial

    Also erstmal: Ich finde das Tutorial super!

    Jedoch habe ich ein Problem.

    Ich verwende den folgenden Script:

    Source Code

    1. #dynamic 0x800000
    2. #org @main
    3. lock
    4. faceplayer
    5. applymovement 0x3 @go
    6. pause 0x0
    7. msgbox @text
    8. callstd 0x6
    9. release
    10. end
    11. #org @text
    12. = Dort ist es gefährlich!\nIch will dich nur warnen!
    13. #org @go
    14. #raw 13
    15. #raw 13
    16. #raw FE
    Display All


    Nur wenn ich dann auf "Kompilieren" drücke, bekomme ich so eine Meldung:
    Zu wenig Parameter in Zeile Acht (das ist die

    Source Code

    1. msgbox @text
    ). Die korrekte Zahl ist 2.

    Ich kenne mich weder mit Scripten noch mit dem XSE besonders gut aus, um zu wissen, was das bedeutet.

    Meine Frage: Was muss ich nun tun, damit der Script funktioniert?