Pokemon Smaragd - Item Codes für scripts und mehr

  • Hey Leute,


    Ich habe früher mal ein paar arbeiten bereits mit romhacks gemacht (privat), aber das ist bereits eine ganze weile her und das was ich früher wusste ist heute futsch :) das problem ist folgendes. ich möchte für einben kumpel eine Pokemon smaragd rom (deutsch) so verändern, dass er alle pokemon fangen kann, und dass sich pokemon nicht mehr durch tausch entwickeln. dafür habe ich nun erstmal amplifier geladen, aber immer wenn ich nun bei..zum beispiel in meinem fall alpollo, die evolution bverändere und speichern will, kommt run-time error 13 und das programm schließt sich.


    nach neuladen der rom hat alpollo gar keine entwicklung mehr


    kann mir da jemand mal bitte helfen?


    Edit: Dieses Problem hat sich geklärt habe nun CPE genommen.


    So nun aber...Pokemon Mart funktioniert ja mit smaragd nicht. deswegen bleibt mir nichts anderes übrig als die items im script editor zu ändern.


    frage: wenn ich das im script mache... gibt es dann auch eine maximale item anzahl die im shop ist (verschiedene meine ich) oder kann ich da mehr adden?


    frage 2: hat wer eine liste der items und den code den ich im script adden muss?



    Edit2:
    Außerdem versuche ich gerade die ganze zeit einen neuen pokemon markt zu erstellen in seegrasulb city.
    ich habe eine neue person erstellt und dieser ein bishcer nicht zugewiesens script offset gegeben. ich kopiere da ein script rein, ändere auch oben das script offset aber nach dem schließen des script editors (und speichern) hat er das script nicht übernommen. wenn ich das event doppelklicke ist das script fenster wieder leer. und wenn ich auf die zahnräder gehe steh immer dass in zeil 2 (da wo das script offset steht) was falsch ist....

  • frage: wenn ich das im script mache... gibt es dann auch eine maximale item anzahl die im shop ist (verschiedene meine ich) oder kann ich da mehr adden?


    Wenn du irgendwelche Scripts bearbeitest, stehen die an respektiven Addressen im ROM, und nach diesen Scripts stehen andere Daten, wenn du also deinen Datensatz vergrößerst überschreibst du die, Lösung: Repoint.

    frage 2: hat wer eine liste der items und den code den ich im script adden muss?

    XSE müsste ein stditems.rbh File haben, wo die alle drin stehen.

    Außerdem versuche ich gerade die ganze zeit einen neuen pokemon markt zu erstellen in seegrasulb city.
    ich habe eine neue person erstellt und dieser ein bishcer nicht zugewiesens script offset gegeben. ich kopiere da ein script rein, ändere auch oben das script offset aber nach dem schließen des script editors (und speichern) hat er das script nicht übernommen. wenn ich das event doppelklicke ist das script fenster wieder leer. und wenn ich auf die zahnräder gehe steh immer dass in zeil 2 (da wo das script offset steht) was falsch ist....

    "In Zeile 2 ist was falsch" welp, ohne Kristallkugel und/oder Spionageausrüstung kann ich dir dir dann leider auch nicht helfen... Bitte immer zumindest ein minimal, complete and verifiable example mitliefern.


    ~Sturmvogel


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


  • Zitat

    Wenn du irgendwelche Scripts bearbeitest, stehen die an respektiven Addressen im ROM, und nach diesen Scripts stehen andere Daten, wenn du also deinen Datensatz vergrößerst überschreibst du die, Lösung: Repoint.


    entschuldigung bitte xd leider kenne ich mich nicht soo gut aus. wegen ich den teil nicht verstehe


    Zitat

    "In Zeile 2 ist was falsch" welp, ohne Kristallkugel und/oder Spionageausrüstung kann ich dir dir dann leider auch nicht helfen... Bitte immer zumindest ein minimal, complete and verifiable example mitliefern.


    Sry also erstmal wollte ich das Pokemon markt script aus dem 4. stock in seegrasulb city kopieren.



    Und einer neuen Person die ich eingefügt hatte mit neuem offset geben. leicht abgeändert natürlich. die items wollte ich später passend einfügen. (sollten die tickets zu den legendären pokemon sein)



    Fehler 63 "Bad record number" in Zeile 2


    das ganz oben angegebene offset ist das was die neue person als zugewiesenes script offset hat.

  • entschuldigung bitte xd leider kenne ich mich nicht soo gut aus. wegen ich den teil nicht verstehe

    Wenn dein ROM schematisch so aufgebaut ist: [Daten vor deinem Script] [Dein Script] [Daten nach deinem Script]
    Kannst du dir vorstellen was passiert, wenn dein Script auf einmal größer wird: [Daten vor deinem Script] [Dein Script]ten nach deinem Script

    Du überschreibst halt einfach Daten, die du nicht überschreiben willst. Easy enough. Du musst den Script also umpointen, in dem einfachen Fall reicht es vermutlich die eine Adresse im ROM, nämlich, das "Script Offset" des Events oder des NPC zu ändern.


    Fehler 63 "Bad record number" in Zeile 2

    Easy enough, dein Offset ist halt einfach invalide. Du kannst XSE im übrigen auch dynamisch ein Offset wählen lassen, dazu einfach am Anfang ein #dynamic <start> angeben, im Fall von den meisten Spielen reicht dabei ein #dynamic 0x800000. Für Smaragd musst du vermutlich noch ein #freespace 0xFF angeben. Anschließend kannst du mit dynamischen Labels arbeiten, e.g. #org @your_main_label - Am Ende wird dir XSE dann alle Labels verlinken, zu Adressen auflösen und dir sagen, wo der Kram ins ROM geschreiben wurde.


    ~Sturmvogel


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


  • ah okay, ungefähr habe ich das soweit verstanden denke ich.


    könnte du mir genau sagen wie ich dass dann machen muss?


    also


    #dynamic 0x800000
    #freespace 0xF`
    weiterer teil des scriptes


    so?


    und was müsste ich machen wenn ich möchte dass der typ mir die items jeweils nur ein einziges mal verkauft? oder ist das bei basis items (was es ja sein wird) eh egal? ich wollte den wert dieser basis items dafür auf 90.000 setzen damit man dafür auch arbeiten muss


    für die anderen legis muss ich schauen wie genau das mit den flags geht da ich vorhabe dass man alle legis nur einmal fangen kann und net einfach in der wildnis

  • In jedem Fall `#freespace 0xFF`. Anschließend halt keine statischen Offsets mehr. Sondern i.e. `#dynamic 0x800000`.


    Wenn die Items nur einmal verkauft werden sollen, kannst du theoretisch mit verschiedenen Märkten arbeiten, dazu einen Blick auf die Befehle `checkitem` werfen, und wie conditionals funktionieren. (e.g. Scripting Tutorials lesen :))


    Allerdings wird das, je nachdem wie viele Items du so exkludieren willst ein Wirrwar aus Fällen. Alternativ kannst du auch mehrere NPCs bauen, die ihren Mark dann komplett schließen wenn das Item gekauft wurde. Du kannst das Item dann auch ohne Markt verkaufen lassen wenn du willst, einfach ein bisschen ausprobieren was mit dieser Scriptsprache alles möglich ist, ich habe da jetzt keine Patentlösung.


    ~Sturmvogel


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


  • hmm ich hatte noch im kopf ein gesprächs script erstellen bei dem der ein multiple choice anbietet und die items, selbst wenn sie keinen eigentlichen wert haben für 90000 verkauft. durch eine checkflag würde das item nach einem einmaligen kauf nicht mehr angeboten werden. wäre das eine lösung?