Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[TUTORIEL] [SCRIPTS/DIALOGUES] LÂ’utilisation du trigger d'état CD_STATE_NOTVALID

Répondre
Avatar du membre
Armand
Adepte de Grondemarteau
Ours des cavernes
Messages : 1141
Enregistré le : lun. 03 déc. 2007, 22:04
Localisation : Dordogne
Statut : Hors ligne

[TUTORIEL] [SCRIPTS/DIALOGUES] L’utilisation du trigger d'état CD_STATE_NOTVALID

.

Message par Armand »

[TUTORIAL] L’utilisation du CD_STATE_NOTVALID pour vos scripts




L’utilisation du CD_STATE_NOTVALID.


Pour s’assurer que les personnages ne parlent pas quand ils ne sont pas censés pouvoir le faire.




Note d'armand : Ce tutorial a été écrit il y a déjà quelques années par phoeunix, je le reproduis ici aujourd'hui avec son aimable autorisation. Merci à lui.


Voici la traduction d'un tutoriel écrit par K'aeloree sur le forume SHS, avec son aimable autorisation.




Ce tutoriel explique l’utilisation du CD_ STATE_NOTVALID, et pourquoi vous devriez l’utiliser.




Introduction.




Dans les scripts originaux, il existe une fonction appelée "IsValidForPartyDialogue()". Elle est utilisée tout au long de SoA et ToB ; cependant, elle ne fonctionne pas correctement quand elle est utilisée pour le personnage qui initie le dialogue. Par exemple, Minsc et Aerie ont un dilaogue avec Delon que Minsc initie ; toute vérification de IsValidForPartyDialogue("Minsc") se trouverait fausse.
Avec ce problème en tête, CamDawg, administrateur de G3, a trouvé un moyen de vérifier si les personnages ne sont PAS disponible pour un dialogue de groupe, et il a créé le CD_ STATE_NOTVALID, qui est utilisé dans la plupart des mods PNJ récents.




Quand devrais-je utiliser cette fonction et pourquoi ?




Pour commencer, CD_ STATE_NOTVALID se comprend facilement : CD est le préfixe de CamDawg, et CD_ STATE_NOTVALID signifie "Le personnage n’est pas disponible pour dialoguer".
Pour s’en servir, il suffit d’ajouter une simple ligne de code dans les triggers :



Code : Tout sélectionner

!StateCheck("MyNPC",CD_STATE_NOTVALID)



Ceci peut être assez déroutant, puisqu’il s’agit d’une formulation doublement négative : cela signifie "si le personnage n’est pas pas disponible pour le dialogue." En d’autres termes, "Si le PNJ est disponible pour le dialogue."




En utilisant cette ligne de code, on peut vérifier toutes sortes de choses qui pourraient empêcher un personnage de dialoguer : être mort, endormi, étourdi, réduit au silence, pétrifié etc. Ceci en fait un outil très utile, car cela signifie qu’il n’y a plus besoin de vérifier chaque état (STATE) individuellement.
Un exemple de l’usage de CD_STATE_NOTVALID dans un banter de Xan pour BG2 SoA et ToB, par Xyluok :



Code : Tout sélectionner

 CHAIN
IF ~InParty("Keldorn")
See("Keldorn")
!StateCheck("Keldorn",CD_STATE_NOTVALID)
!StateCheck("O#Xan",CD_STATE_NOTVALID)
CombatCounter(0)
!See([ENEMY])
Global("O#XanKeldorn1","GLOBAL",0)~ THEN BO#XAN O#XanKeldorn1
@3214 
DO ~SetGlobal("O#XanKeldorn1","GLOBAL",1)~
== BKELDOR @3215 
== BO#XAN @3216
== BKELDOR @3217
== BO#XAN @3218
== BKELDOR @3219
== BO#XAN @3220
== BKELDOR @3221
== BO#XAN @3222
EXIT



Que dois-je faire pour pouvoir l’utiliser ?




Pour pouvoir vous servir de CD_STATE_NOTVALID, il faut ajouter un tout petit morceau de code dans votre .tp2, avec l’aimable autorisation de CamDawg.



Note : Vérifier que vous ajoutez ce bout de code avant de compiler vos scripts ou dialogues contenant CD_STATE_NOTVALID dans votre .tp2, sinon cela créera des erreurs.

Code : Tout sélectionner

 // Adds CD_STATE_NOTVALID state
APPEND ~STATE.IDS~ ~0x80101FEF CD_STATE_NOTVALID~
UNLESS ~CD_STATE_NOTVALID~



C’est tout ! Une fois que vous avez ce bout de code dans votre .tp2, vous pouvez utiliser CD_STATE_NOTVALID n’importe où dans les dialogues et les scripts.
http://toutlemondesontrolistes.blogspot ... ation.html
Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe
Répondre

Retourner vers « Tutoriels »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité