Pokémon XSE Script Bug

  • Hallo, nach dem ich ein Schritt gegangen bin taucht der Sprite wieder auf.
    Wieso passiert das?


    Code:
    #org 0x8E7B8C
    lock
    faceplayer
    checkflag 0x200
    if 0x1 goto 0x88EE234
    msgbox 0x88EFC3F MSG_KEEPOPEN '"!!!"
    wildbattle 0x15B 0x50 0x0
    fadescreen 0x1
    fadescreen 0x0
    hidesprite 0x0
    hidesprite LASTTALKED
    setflag 0x200
    release
    end



    Weiß es nicht weiter, bin dankbar bei jeder Hilfe!! :)
    Lg.

  • Ein paar Sachen zur Aufklärung, auch wenns jetzt geht:


    • Es reicht ein hidesprite Befehl, entweder mit der NPC ID des Sprites, oder mit der Variable LASTTALKED, falls man mit der Person reden muss. (Ansonsten verschwindet ggf. eine Person, die nicht verschwinden soll)
    • hidesprite setzt die Flag, welche bei der Person eingetragen ist, von selbst.
    • Nachdem die Person verschwunden ist, kann man natürlich nicht mehr mit ihr reden, was das checkflag relativ unnötig macht.
    • Fadescreen setzt das Script in einen Pollwait, bis der Effekt fertig dargestellt wurde, das heißt dein hidesprite ist vermutlich sichtbar und wäre besser zwischen den beiden fadescreen Befehlen aufgehoben.

    Ein optimiertes Script könnte z.b. so aussehen:



    Code
    1. #org @entry
    2. lock
    3. faceplayer
    4. msgbox @text MSG_KEEPOPEN 'define text
    5. wildbattle 0x15B 0x50 0x0
    6. fadescreen 0x1
    7. hidesprite LASTTALKED
    8. fadescreen 0x0
    9. release
    10. end

    ~Sturmvogel


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


  • Scheint als müsste man die Flags tatsächlich manuell setzen. In der Routine von hide_sprite wird allerdings ein Flag gesetzt, ich schätze aber, dass den Entwicklern da ein Fehler unterlaufen ist, es wird nämlich das Flag mit der ID 0 versucht zu setzen...


    ~Sturmvogel


    Edit: Ok ich hab nochmal drübergeschaut, wenn die richtige Flag bei der Person gesetzt ist, braucht man das Flag nicht manuell zu setzen, es wird automatisch in hidesprite gesetzt, so wie ich es anfangs vermutet habe und Wodka es bestätigt hat.


    ~Sturmvogel


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


    Edited once, last by Sturmvogel ().

  • Also ich habe schon öfter hidesprite ohne ein manuelles setflag verwendet. Welche Flag hast du denn genau in Benutzung? Vielleicht ist diese schlicht nicht frei...

  • Gar nicht. Im Allgemeinen sind in FRD die Flags > 0x200 safe to use (zumindest hat noch niemand das Gegenteil bewiesen) und die direkt < 0x200 (also 0x1FF, 0x1FE...) vom Originalspiel verwendet. Wenn du das nicht behalten willst (also alle Maps etc. neu) kannst du auch die wiederverwerten.