Aller au contenu


Dompter Un Startscript


  • Veuillez vous connecter pour répondre
Aucune réponse à ce sujet

#1 Rotten Borough

Rotten Borough

Posté 03 juin 2013 - 13:28

J'ai récemment accouché de mon premier startscript, comme prévu, il est insupportable, il fait un bazar de tous les diables, je m'en réveille la nuit.

Mon problème a la même source que dans mon autre post, c'est à dire la récupération de la version bêta de Vivec's Fate pour camembérisation, qui passe d'abord par un débogage et des finitions.
L'auteur annonçait dans son read-me vouloir casser les scripts liés au bénédiction du Temple si les Tribuns étaient amenés à disparaître. Grâce à Kira, la substitution des autels est devenue possible et indolore, reste que je voulais inclure ces changements dans un startscript qui, grâce aux index journal, se chargerait de rendre les autels inopérants au fur et à mesure du mod.
Pour l'instant, je ne teste que le temple de Balmora. Globalement, le script qui remplace les autels par des faux fonctionne bien...mais ne "refonctionne" pas, si j'ose dire.
Lorsqu'un index journal est franchi, les autels sont remplacés.
Lorsqu'un 2ème index est franchit, rien ne se passe, et ce, quel que soit l'ordre des index franchis.
J'ai bien essayé de modifier mes cas d'arrêt, mais rien n'y fait. Sauf que, en rechargeant ma sauvegarde, je me suis aperçu que le script avait fonctionné.
Après vérification d'usage, il apparait que le startscript ne fonctione qu'une seule fois in-game, la deuxième fois en rechargeant.
Je ne comprend absolument pas le problème et je frotte ma lampe wiwilandaise en espérant qu'un bon génie du scripting apparaitra...

Ci-joint, le script en question, et un excellent dimanche à tous les argoniens sur les plages !

Begin VF_StartScriptTemple

short DoOnceBal

If ( MenuMode == 1 )
return
Endif

If ( GetPCCell "Balmora, temple" == 1 )
If ( DoOnceBal == 3 )
return
Elseif  ( GetJournalIndex "VF_GhostGate" >= 10 )
If ( DoOnceBal != 2 )
VF_Furn_shrine_llothis_cure_01 -> Enable
VF_Furn_shrine_Rilm_cure_01 -> Enable
set DoOnceBal to 2
Endif
Elseif  ( GetJournalIndex "VF_Vivec" >= 100 )
If ( DoOnceBal != 3 )
VF_Furn_shrine_Tribunal_cure_01 -> Enable
VF_Furn_shrine_llothis_cure_01 -> Enable
VF_Furn_shrine_Rilm_cure_01 -> Enable
set DoOnceBal to 3
Endif
Elseif ( DoOnceBal == 0 )
VF_Furn_shrine_llothis_cure_01 -> Disable
VF_Furn_shrine_Rilm_cure_01 -> Disable
VF_Furn_shrine_Tribunal_cure_01 -> Disable
set DoOnceBal to 1
EndIf
Endif


End  VF_StartScriptTemple



[RESOLU], la solution était simple sans l'être. J'avais déjà lu que les "Elseif" pouvaient poser problème, mais je ne pensais pas à ce point-là.
Je poste la solution, au cas où quelqu'un aurait un global script qui ne s'exécute pas plus d'une fois.

Le script fonctionne avec cette syntaxe :

Begin VF_StartScriptTemple

short DoOnceBal

If ( MenuMode == 1 )
    return
Endif

If ( GetPCCell "Balmora, temple" == 1 )
    If ( DoOnceBal == 3 )
        return
    Endif
Endif

If ( GetPCCell "Balmora, temple" == 1 )
    If  ( GetJournalIndex "VF_GhostGate" >= 10 )
        If ( DoOnceBal != 2 )
            VF_Furn_shrine_llothis_cure_01 -> Enable
            VF_Furn_shrine_Rilm_cure_01 -> Enable
            set DoOnceBal to 2
        Endif
    Endif
Endif

If ( GetPCCell "Balmora, temple" == 1 )
    If  ( GetJournalIndex "VF_Vivec" >= 100 )
        If ( DoOnceBal != 3 )
            VF_Furn_shrine_Tribunal_cure_01 -> Enable
            VF_Furn_shrine_llothis_cure_01 -> Enable
            VF_Furn_shrine_Rilm_cure_01 -> Enable
            set DoOnceBal to 3
        Endif
    Endif
Endif

If ( GetPCCell "Balmora, temple" == 1 )
    If ( DoOnceBal == 0 )
            VF_Furn_shrine_llothis_cure_01 -> Disable
            VF_Furn_shrine_Rilm_cure_01 -> Disable
            VF_Furn_shrine_Tribunal_cure_01 -> Disable
            set DoOnceBal to 1
    EndIf
Endif


End VF_StartScriptTemple

(NB : pas de StopScript contrairement au conseil du MSfD, les DoOnce suffisent)

Modifié par Rotten Borough, 03 juin 2013 - 13:36.





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)