$cript&ASM Help

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • An 0x02064590 steht in einem Byte (!) das OW des Heros...
    Man kanns jedoch - sodass etwas funktionierendes rauskommt - nicht gut ändern... Nur in 0 und 1 (0 = Junge, 1 = Mädchen)...
    Achja, wenn du die DMA deaktivieren willst, mach folgendes:

    Zitat von driver

    Ändere mal im Hexeditor den Wert an 0x4C084 im ROM von 0x0140 auf 0x0021 ;)



    driver

  • Hey, ich suche eine kleine Hilfe:


    Wie genau geht das mit den Warps? Also ich will jemanden laufen lassen, dann verschwinden und auf einer anderen Map (zB in einem Haus) wieder auftauchen lassen. Kann mir jemand genaue, nicht geekishe (:P) Anweisungen oder besser einen Musterscript geben? :3

    You always wanted to be part of a circus company for the fun and death defying
    But in time you forgot; life is small in the big top and your dreams are slowly dying
    What you wanted was not a crime- you could have done it but you needed time

  • Du kannst OWs nicht auf eine andere Map warpen, nur dich selber ;)
    Du musst wohl auf der einen Map ein applymovement machen (zum Bewegen der Person) und dann ein hidesprite benutzen (sodass diese verschwindet)... Du kannst beim hidesprite den sound 0x27 benutzen (warp-sound)... setflag ist wichtig, wenn eine Person die PersonenID 0200 hat (Beispiel), ist diese - solange die Flag 0x200 aktiviert ist - unsichtbar; setze also eine Flag und gib sie als PersonenID der zu "warpenden" Person... Auf der anderen Map braucht die Person also eine PersonenID einer schon gesetzten Flag, welche du mit deinem "Warp-Script" auf der 1. Map wieder löschst (clearflag)...


    Es könnte folgendermaßen aussehen (PokeScript):

    Code
    #org $beginlockmessage $1$1 1 = Diese Person wird sich warpen!boxset 6applymovement 0x1 $move1pausemove 0x0#raw 0x2F 0x27 0x00 'sound#raw 0x53 0x01 0x00 'hidespritesetflag 0x200clearflag 0x201releaseend#org $move1#raw 0x54 0x12 0xFE 'iwelche random Moves


    in XSE:


    In diesen Scripts hat die zu warpende Person die Personen-Nummer 1 und die PersonenID 0200; und später die gewarpte auf der anderen Map die PersonenID 0201 ;)



    driver

  • Okay, hab den Warp jetzt hinbekommen. Aber er warpt mich zur falschen Stelle! Man muss doch nur

    Code
    warp 0xMap Bank 0xMap Nr. 0xWarp Nr. 0x0 0x0

    eingeben, oder nicht? Es warpt mich zwar, aber auf eine ganz andere Map als ich angegeben habe. Ich benutze eine englische Feuerrot, habe XSE und wollte zu Map 15.2 warpen, wäre das dann nicht

    Code
    warp 0x15 0x2 0x1 0x0 0x0

    ??

    You always wanted to be part of a circus company for the fun and death defying
    But in time you forgot; life is small in the big top and your dreams are slowly dying
    What you wanted was not a crime- you could have done it but you needed time

  • Danke Danke Danke! (Man sollte meinen, Tutorial-Schreiber würden sowas danebenschreiben, aber nein...)
    Endlich funktioniert es. Leute freut euch, bald kommt ein Update zu University. :3 Danke, Haro100.

    You always wanted to be part of a circus company for the fun and death defying
    But in time you forgot; life is small in the big top and your dreams are slowly dying
    What you wanted was not a crime- you could have done it but you needed time

  • Danke Danke Danke! (Man sollte meinen, Tutorial-Schreiber würden sowas danebenschreiben, aber nein...)
    Endlich funktioniert es. Leute freut euch, bald kommt ein Update zu University. :3 Danke, Haro100.


    Es könnte eigentlich auch klar sein... 0x ist das Zeichen für Hexadezimal... kannst es ja mal ohne das 0x in normalen Dezimalzahlen versuchen, das sollte auch funktionieren (hab es noch nicht ausprobiert...)

  • Ein Kumpel von mir hat mit der Levelscript-Funktion von XSE folgenden Script geschrieben. Ich habe schon einige Fehler rauskorigiert, aber er läuft immernoch nicht:


    01 #dynamic 0x800000
    02
    03 #org @main
    04 applymovement 0x0001 @move
    05 applymovement 0x0002 @move2
    06 waitmovement 0x0
    07 applymovement MOVE_PLAYER @moveP
    08 waitmovement 0x0
    09 msgbox @text 0x2
    10 end
    11
    12 #org @move
    13 #raw 0x62
    14 #raw 0xFE
    15
    16 #org @move2
    17 #raw 0x62
    18 #raw 0xFE
    19
    20 #org @moveP
    21 #raw 0x62
    22 #raw 0x3
    23 #raw 0xFE
    24
    25 #org @text
    26 = Willkommen!\nWillkommen im Trainerhaus!\lHier kannst du mit deinen\lPokemon gegen andere\lTrainer kämpfen!


    Ingame würde das, wenn es funktionieren würde, dafür sorgen, dass bei zwei Personen gleichzeitig eine Ausrufezeichenbox erscheint. Anschließend erscheint eine !-Box beim Spieler, bevor er sich nach rechts dreht. Dann kommt der Text aus Zeile 26.
    edit: ups, ein Tipfehler meinerseits (im Script steht NICHT dinamyc, sondern dynamic >< hab mich nur beim abtippen vertan)
    edit2: Wir haben das MOVE_PLAYER durch 0xFF (was soweit ich weiß die Figur des spielers ist ersetzt) das hat auch nicht geholfen.
    Mit der Hilfe Funktion, habe ich auch mal das waitmovement geändert (da steht "People to wait for") und entsprechend 0x0 durch die entsprechende ID ersetzt. Das Game freezt immernoch.

    [tabmenu][tab=YT-Channel]DarkTekHacks
    In Bearbeitung: Scripting Tutorial #001 - Grundlagen zu Events
    Ich habe im Moment keine Zeit für Tutorials, sorry.
    [tab=dA-Account]TheDarkShark
    Ab sofort wird immer, wenn ich was sehenswertes mache, hochgeladen![/tabmenu]

    2 Mal editiert, zuletzt von DARKSHARK ()

  • Was heißt "läuft nicht" Sobald man auf das Feld tritt, freezt die rom, ich finde keine passende Fehlerursache

    Und was bitte schön machst du in der lvlscript-Funktion? In XSE kann man, sobald man ein Offset eingegeben hat einen Butten "drücken" der mit "Levelscript" gekennzeichnet ist


    edit @SBird: Oh man, ist das peinlich. (Wenn mir noch mehr Fehler unter XSE passieren wechsel ich zurück zu Pokescript X( ) Wie geht ein Levelscript denn sonst in XSE?
    Ich hab jetzt mal nach geguckt wie ein Levelscript geht, jetzt läuft's.

    [tabmenu][tab=YT-Channel]DarkTekHacks
    In Bearbeitung: Scripting Tutorial #001 - Grundlagen zu Events
    Ich habe im Moment keine Zeit für Tutorials, sorry.
    [tab=dA-Account]TheDarkShark
    Ab sofort wird immer, wenn ich was sehenswertes mache, hochgeladen![/tabmenu]

    2 Mal editiert, zuletzt von DARKSHARK ()

  • @SBird: Falls dus nicht bemerkt hast, ih hab meinen Beitrag editiert, es läuft jetzt.


    Mal ne kleine Frage zum givepokemon Befehl: Ist es (in XSE) möglich, ein besonderes moveset für das Pokémon das das man bekommen soll festlegen? Ich hab irgendwo mal was über A-Trainer in dem Zusammenhang gelesen, check aber nicht wie das ohne trainerkampf funktionieren soll.


    Außerdem habe ich mich mal an einem Kopfnussscript versucht, ich blick das mit den Animationen iwie nicht, hätte gerne mal ein Scripting tut das auch anis behandelt.

    [tabmenu][tab=YT-Channel]DarkTekHacks
    In Bearbeitung: Scripting Tutorial #001 - Grundlagen zu Events
    Ich habe im Moment keine Zeit für Tutorials, sorry.
    [tab=dA-Account]TheDarkShark
    Ab sofort wird immer, wenn ich was sehenswertes mache, hochgeladen![/tabmenu]

  • so zum ersten.
    Da weiß ich selber nichts.
    Aber ich glaub du könntest ja die TM dazugeben.
    Kommt zwar ein bisschen Dämlich aber so wie ichs verstanden hab, hab ich noch nichts gehört.


    Beim zweiten kannst du doch einfach den Erdbeben Script einfügen.
    Also ein schwaches kein Starkes.
    Also der Text, "Enton setzt Kopfnuss ein", dann das Erdbeben, und dann "Wow! Ein Pokemon ist vom Baum gefallen" oder so, wie du es haben willst

  • hmm, mit TMS ist das keine so schöne Lösung wie ich es mir erhofft hatte, naja.


    Danke für die schnelle Antwort Ram. Ich habe es jetzt zwar auch so hinbekommen, aber der Wille ist was zählt (lol)
    Irgendwie war XSE nicht mit folgendem einverstanden:


    compare LASTRESULT 0x0
    if 0x1 goto @end
    if 0x0 goto @main2


    deswegen habe ich das drausgemacht:


    compare LASTRESULT 0x1
    if 0x0 goto @end
    if 0x1 goto @main2


    jetzt funktionierts, *grübel*, müsste eigentlich genau das gleiche sein...

    [tabmenu][tab=YT-Channel]DarkTekHacks
    In Bearbeitung: Scripting Tutorial #001 - Grundlagen zu Events
    Ich habe im Moment keine Zeit für Tutorials, sorry.
    [tab=dA-Account]TheDarkShark
    Ab sofort wird immer, wenn ich was sehenswertes mache, hochgeladen![/tabmenu]

    Einmal editiert, zuletzt von DARKSHARK ()

  • Löl...
    0x0 ist die Abfrage für b_lower/b_<<, also falls kleiner... Da etwas kaum kleiner als 0 sein kann (jedenfalls nicht hier), funktioniert das nicht... Falls du 0x0 benutztest mit dem Gedanken, es hieße ungleich, so muss ich dich enttäuschen... Ungleich ist 0x5 ;)



    driver

  • Erstmal ein herzliches "Hallo" an euch alle!
    (So, sich erstmal vorstellen)
    Ich bin Yoshis Fan, der "Neue" :P
    Ich glaube es zwar nicht, aber vielleicht kennen ein paar von euch mich von SMWCentral.net (gleicher Name),
    wo ich einen der Vollendung nahe stehenden Yoshi's Island Hack veröffentlicht habe. (noch eineinhalb Levels und er ist fertig)
    Und ich hab mir gedacht, dass ich nach dem Yoshi's Island Hack mal nen Pokémon Hack versuchen will.
    Ich hab auch schon n bisschen mit Map-editieren und Scripten angefangen, aber wie das so ist, hat dann
    manches nicht so geklappt wie ich wollte. Ich hab mir überlegt, einen Hack zu machen, der der Kristall-Version ähnlich sieht. (Jaja, altes Konzept, ich weiß)
    Als Basis nehme ich die Feuerrote Edition. (Hm, vielleicht ist die Smaragd besser? (Wegen Poké-Animationen)) So, ganz am Anfang geht's dann schon los:
    Wie kann ich machen, dass Professor Eich nicht von seinem Enkel redet? Will heißen, dass er nachdem er den Namen des Spielers weiß, direkt zu dem Teil kommt, wo
    er sagt, dass ein Traum in Erfüllung geht? (Kann man das Scripten oder muss man das Hex-Editieren?)
    Okay, erste Sache. Dann wollte ich noch, dass man nur alle Pokémon der 1. und 2. Generation braucht, um den Dex fertig zu machen.
    Das heißt, der Pokédex soll kein Pokémon über #251 anzeigen (ich werde im Spiel auch keines auftauchen lassen, mit dem Sammeln von 251 hat man genug zu tun, außerdem soll es ja der Kristall-Edition möglichst nahe kommen)
    Soweit ich mich erinnere zeigt der Dex in Feuerrot am Anfang nur die 1. Generation an und danach zusätzlich die 2. und 3.. Er soll von Anfang an
    die 1. UND 2. anzeigen (Weil allein das Start-Pokémon ja schon mindestens #152 ist). (Für die Vollständigkeit des Dex reicht es bestimmt, einen Hex-Wert zu verändern)
    Okay, hier noch was "Elementares", dann sind wir durch:
    Wie kann ich machen, dass Personen einfach so verschwinden? (Silph Co., glaube ich passiert das, wenn die Rockets abhauen. Da wird der Bildschirm kurz schwarz und alle sind weg. Wie ich den Bildschirm schwarz kriege, weiß ich, aber den Rest nicht ;) )
    Das Problem sieht konkret so aus:
    Am Anfang von Kristall ist ja die Nachbarin zu Besuch, nach einer Zeit geht sie aber wieder.
    Und meine Frage ist jetzt, wie ich es schaffe, dass sie geht, ohne applymovement zu benutzen, sodass sie einfach
    i-wann nicht mehr da ist. Muss ich dann auf der Haus-Map des Spielers ein Script einfügen oder ist es ein Personen-Script? (Das ich also als Script für die Nachbarin verwenden muss) Angenommen ich will, dass sie weg ist, wenn ich das Start-Pokémon erhalte. Wie mache ich das?


    (Ich weiß, das gehört eigentlich nicht hierhin, aber ich bekomme das Spiel seit ein paar Stunden nicht mehr ans Laufen.
    Ich krieg immer nur einen weißen Screen, aber davor hat alles geklappt. Habs auch schon mit ner Original-ROM (sprich
    nicht editierte) versucht, klappt nicht, weder mit VBA noch mit NoCashGBA. Englische Spiele laufen jedoch, aber ich will
    nicht auf ne englische ROM umschwenken, weil ich einen deutschsprachigen Hack machen möchte.)


    Sorry, dass es so viele Fragen sind (und der Text so lang ist), aber ich hoffe ihr könnt mir helfen!


    ~Yoshis Fan~

  • Yoshis Fan
    bei solchen Usern fahr ich gerne das kontrastprogramm: alles ganz kurz XD
    Also:

    • Zur Edi: Würd dir FR empfehlen. Dann kannste sowohl die Kanto als auch die Johto Region einbauen.
    • Das Intro: Das ist etwas kompliziert (mit Scripten dürfte da nix so leicht gehen)... man kann da atm nur den Text editieren (über Tool nach dem entsprechenden codierten Text in der Rom suchen und den dann umschrieben.) Das mit dem Enkel würde ich also einfach mal umschrieben, z.B. zu einem Freund. Oder du versuchst nen Jump einzubauen, aber das ist riskant, da ich (und ich denke auch sonst niemand) bisher das Intro entschlüsselt hat.
    • Das Dexproblem: schalt einfach am Anfang gleich den Nationalen Dex frei (ein special im Scripting) und solange du keine Pokemon über dem 251. den Spieler sehen lässt ist alles gut. An der Editierbarkeit der Nummerbegrenzung im Dex arbeite ich gerade für meinen CPE, kann aber noch etwas dauern...
    • Person(=OW) soll verschwinden: hier für musst du nur eine Person im AM erstellen, dieser dann als Personen-ID eine unbenutze Flag geben.
      Wenn dann die Person verschwinden soll einfach die Flag setzten.


    Dann noch viel Spaß hier beim Hacken ^^

  • Zitat

    Als Basis nehme ich die Feuerrote Edition. (Hm, vielleicht ist die Smaragd besser? (Wegen Poké-Animationen)) So, ganz am Anfang geht's dann schon los:


    Musst du entscheiden.
    Is eigentlich egal, außer das mit den animationen is geil.
    Aber es gibt für Smaragt fast keine Tilesets, da musst du ein eigenes machen.

    Zitat

    Wie kann ich machen, dass Professor Eich nicht von seinem Enkel redet? Will heißen, dass er nachdem er den Namen des Spielers weiß, direkt zu dem Teil kommt, wo
    er sagt, dass ein Traum in Erfüllung geht? (Kann man das Scripten oder muss man das Hex-Editieren?)


    RIchtig. Du musst es umpointen.
    Ich weiß aber leider nicht, wie man das ändern kann. sry.

    Zitat

    Okay, erste Sache. Dann wollte ich noch, dass man nur alle Pokémon der 1. und 2. Generation braucht, um den Dex fertig zu machen.
    Das heißt, der Pokédex soll kein Pokémon über #251 anzeigen (ich werde im Spiel auch keines auftauchen lassen, mit dem Sammeln von 251 hat man genug zu tun, außerdem soll es ja der Kristall-Edition möglichst nahe kommen)
    Soweit ich mich erinnere zeigt der Dex in Feuerrot am Anfang nur die 1. Generation an und danach zusätzlich die 2. und 3.. Er soll von Anfang an


    Dann darfst du halt nicht die Pokemon nehmen.
    Um den Nationalen Pokedex zu bekommen musst du ein Give Item Script machen.
    Also du nimmst nur die ersten 251 Pokemon.
    Wenn du nicht gegen die Kämpfst, erscheinen sie auch nicht im Dex.

    Zitat

    Wie kann ich machen, dass Personen einfach so verschwinden? (Silph Co., glaube ich passiert das, wenn die Rockets abhauen. Da wird der Bildschirm kurz schwarz und alle sind weg. Wie ich den Bildschirm schwarz kriege, weiß ich, aber den Rest nicht )


    Einfach "Hide Sprite" nehmen.
    Aber ließ dir für scripting fragen als erstes mal das tutorial hier durch.