$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“
  • Öhm sorry ^_^" Da komme ich nicht ganz mit.
    Flag 201 ist in FR/BG eine unbenutzte Flag. Sie hat noch keinen anderen Inhalt. Muss ich also die Personen-ID der zu verschwindenden Person in 0201 ändern? Oder muss ich der Person überhaupt mal irgendeine ID geben und die dann hinter hidesprite angeben? ?(

    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

  • Sry aber ich kenne mich nur aus mit Scripten mit Pokescript.
    Ich kann dir hier ein Tutorial schicken, leider für Pokescript:


    Lg Passy

  • D'awww, ich benutze nur XSE... ist Pokéscript sehr anders? Aber nein, das gehört nicht hierher. Vielen Dank für deine Hilfe! (-:

    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

  • XSE unterscheidet sich nicht sehr von Pokéscript, viele Sachen sind ähnlich, könnte also durchaus helfen. Davon mal abgesehen muss die Flag natürlich in die Personen-ID eingegeben werden, damit klar ist, welche Person nach Setzen der Flag wegbleiben soll.


    Edit: Glaub ich zumindest, ich kenn mich nicht gut damit aus^^

  • OH MEIN GOTT. Es hat tatsächlich funktioniert. Ich musste nur 201 in Hex umformen und als ID angeben und jetzt ist sie weg und bleibt auch verschwunden. Ich schulde euch beiden was. Vielen vielen Dank. *_*

    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

  • Hi;
    ich arbeite mit XSE und habe folgendes Problem: Nachdem ich bei einem script eine Person verschinden gelassen habe, ist sie nach dem erneuten Laden des Spielstandes wieder da. Wie schaffe ich es, dass sie für immer wegbleibt?

  • Hi,
    irgendwie komme ich mit Levelscripts, die erst starten, wenn eine bestimmte var gesetzt worden ist, nicht ganz klar. Also ich möchte eine Person auf der Map durch ein Levelscript erst verschwinden lassen, wenn die Var 0x4029 0x1 gesetzt worden ist. Also gebe ich jetzt in Advance Map bei Mapscript den Type [02] ein und als Flag 0x4029 0x1. Dann noch diesen Script:

    Zitat

    '-----------------------
    #org 0x817B28
    hidesprite 0x1
    release
    end


    So, dieser Level-Script soll nun erst starten, wenn die var in diesem script aktiviert wurde:


    Aber die Person ist schon verschwunden, bevor die var in dem anderen script gesetzt wurde. Was mache ich falsch?

  • Hi;
    ich hätte mal wieder eine Frage^^; Ich weiß nicht, ob jemand das weiß, aber ich habe ein Problem damit, bei meinem Smaragd Hack die Symbole aus der Kampfzone dem Kampfzonenpass hinzuzufügen; Ich habe bei dem schon in der Rom vorhandenen Levelscript der Kampffabrik die nötige Setvar gefunden, nämlich setvar 0x8004 0xD gefolgt von special 0xEA; Ich habe es in meinem Script eingefügt, aber nicht das Kenntnissymbol, sondern das Anlagesymbol bekommen; dann habe ich bei den anderen Kampfeinrichtungen der Kampfzone bei den anderen Symbolen den gleichen Setvar gefunden, wieder 0x8004 0xD; wie kann es sein, dass diese setvar dort die richtigen Symbole freischaltet und nicht das Anlagesymbol?
    Ich hoffe, jemand weiß die Antwort :);
    Danke im Voraus


    Edit: Frage hat sich erledigt; Ich konnte die Flags für die Symbole beim Script von Scott herausfinden ;)

  • So, ich melde mich auch endlich mal wieder mit ein paar Fragen an die Pros, natürlich wieder auf ASM bezogen. Ich habe kein konkretes Problem, die Sache ist nur, ich habe mich ein wenig mit Grafiken auf Hardware-Ebene auseinander gesetzt, allerdings gibt es ein paar Punkte, bei denen ich meine Quellen, hauptsächlich GBATek, nicht ganz verstehe. Fangen wir mit Backgrounds an, das ist in meinen Augen einfacher:


    1. TileMaps
    Ein wesentlicher Punkt das Setzen der Tiles in der Tilemap. Wie ich eine Grafik in den RAM lade weiß ich, wie ich sie dann aber anzeigen lassen kann nicht. Zwei Beispiel-Szenarien:

    • 16 Farb-Modus, ich möchte ein GUI-Element oder ähnliches an der Position (0|0) mit einer Größe von 3x3 Tiles anzeigen lassen (das eigentliche Spielgeschehen wird nicht beeinflusst), dementsprechend auf Layer BG0. Meine Tiles liegen in der CharBase 0x0600C000, genauer gesagt handelt es sich um die Tiles 1 bis 9.
    • 256 Farb-Modus, ich möchte für eine art Cut-Scene ein Bildschirmgroßes Bild anzeigen lassen, um die Map nicht neu laden zu müssen alles auf Layer BG0. Ich bin mir nicht mal sicher, ob dieses Szenario realistisch ist, ich weiß auch nicht, ob man da mit der letzten, eventuell kleineren (?) CharBase auskommt, aber ich behaupte mal, ich wolle die CharBase 0x06010000 benutzen.


    2. Alpha-Blending
    Behaupten wir mal, ich wolle die TextBox semi-transparent machen, die Schrift sowie, sagen wir mal, 3 weitere Farben dieser Palette hingegen nicht. Ist das überhaupt möglich, oder wird der Alpha-Wert mit dem Tile bzw. dem BG-Layer festgelegt? Dass Bit15 (oder war es Bit0? ) einer Farbe für Transparenz steht weiß ich, aber es handelt sich dabei nicht um den Alpha-Channel, oder? Oder habe ich die GBATek total missinterpretiert und nur Sprites können einen Alpha-Wert benutzen? Ich habe das Alpha-Blending noch nie in Aktion gesehen und was darüber zu finden war, hab ich eigentlich nicht wirklich verstanden, von daher möge man mir diese sehr vage formulierte Frage verzeihen.


    3. Sprites & OAM
    Okay, hier muss ich zugeben, mir nicht ein mal besonders Mühe gegeben habe, zu verstehen, was die GBATek beschrieben hat, ich will es daher kurz fassen: Wie rendere ich einen Sprite von, sagen wir mal, 16x16px Größe? Wie bestimme ich, wohin im RAM der Sprite geladen werden muss, wie sind die OAM-Daten vor den Bild-Daten aufgebaut?


    So frech es auch klingen mag, ich hoffe auf eine hilfreiche und schnelle Antwort, auch wenn ich sie nicht all zu bald brauche, geschweige denn erwarte, gibt immerhin nicht viele hier, die sich mit ASM auskennen...
    Danke im Vorraus,


    mfg, Darkshark

    [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]

  • Over all Keyword: IO-RAM im RAM-Bereich 0x4000000.


    1. Einfach daten in die RAM schreiben, bzw je nach Situation, falls ein häufiges Update erfolgt, die Source oder den Code finden, von dem die Daten kopiert werden bzw. welcher den Kopiervorgang leitet und diese(-n) dann verändern.
    Die genauen Spezifikationen werden in der IO-RAM festgelegt.


    Bei den 256-Farben hast du schon mal ein etwas größeres Problem, da du die Farben überschreiben musst. Ansonsten die Eigenschaften eines Layers mit der IO-RAM verändern und freuen.


    btw. ist die Charbase 0x6010000 für OWs reserviert und kann nicht für die Backgrounds verwendet werden.


    2. Transparenz und Semitransparenz... hab ich leider nicht mehr so ganz im Kopf geht aber so weit ich weiß nur mit OWs und diese hast du bei einer Textbox ja leider nicht vorliegen...
    Das erste Bit, das die größte Zahl darstellt, hat damit nichts zu tun und wird so weit ich weiß einfach nicht benutzt.


    Weitere grafische und soundtechnische Effekte kannst du übrigend in der IO-Ram erstellen.


    3. Lies dir GBATek durch, da steht alles und ich würde es dir hier auch nur kopieren -.-

  • Hätt mal ne Frage zu nem eigentlich "leichtem" Script.



    Das Script stürzt mir immer ab.
    Ich hab den Code schon 10 mal durchgelesen, aber ich find keinen Fehler ...

  • k hier is dann mal der decompilierte.



    Ist auch nichts ungewöhnliches, meiner Meinung nach :/

  • Wie wird das Script ausgelöst (kursiv ist meine Vermutung)?


    Person: alles sollte eigentlich funktionieren
    Scriptsign (orangenes Scriptfeld, das durch das Ansprechen ausgelöst wird): auch hier müsste alles klappen
    Scriptfeld: hier musst du eine var anstelle der flag verwenden, die du auch im Scriptfeld verwendest, damit es nicht zu einer internen Endlosschleife beim Scriptcall kommt und das Spiel sich aufhängt (afaik).
    Levelscript: Sind andere Levelscripts gelöscht und ggf der Scriptheader angepasst?

  • Und das Problem hat sich gelöst :)
    Ist ein Scriptfeld. Ich tu mir da immer recht schwer wenn ich jetzt eine var oder eine flag brauch.
    Hättest du da nen Tipp wie ich das am Besten unterscheiden kann? Aber vielen dank schonmal, ich werd versuchen ob ich es jetzt schaff.


    E://
    Hab das jetzt hinbekommen. Aber nicht ganz. Der Text wird zwar angezeigt, aber es is kein Applymovement des Heros.
    Hab die Var 4041 gesetzt in AM

  • Vars (4 Stellige Hexwerte) werden bei Levelscripts, Scriptfeldern und als Speichermedium für einen Wert bis 65535 benutzt. Die Vars dienen also der "Komunikation" zwischen dem Script und der Map. Flags (3-1 Stellige Hexwerte) werden eigentlich nur in dem Script selbst benutzt und können nur gesetzt oder nicht gesetzt sein. Ausserhalb werden sie lediglich bei Personen benutzt um diese verschwinden zu lassen.


    Und mir ist gerade doch noch ein Fehler aufgefallen: Du hast waitmovement vergessen. Füge also bitte noch waitmovement 0xFF um auf den Spieler zu warten oder waitmovement 0x0 um auf alle applymovements aller OWs zu warten nach dem applymovement-Befehl ein.