Page 1 sur 1

[SCRIPT] Script de comportement de Perso

Posté : ven. 17 avr. 2009, 14:33
par Sith
Salut à vous,

je ne sais absolument pas si je suis au bon endroit.
C'est pas vraiment un mod que je veux développer mais bon.

En gros, je suis occupé à modifier un script eseries pour inclure une petite routine, qui, traduite en français, donne:
"si le joueur appuie K et que j'ai des baies, je mange mes baies jusqu'à être guéri totalement".

Je l'ai créé dans un script etest.bs. Tout fonctionne : quand je le mets comme script du personnage, j'appuie K et le personnage me dit (comme prévu): "j'ai des baies dans ma poche. Tu as l'oeil, cher joueur :D "
"miam - c'est bon. Joueur, pense à manger
miam - c'est vraiment bon. Joueur, va boire un coup.
miam - aaah ça fait du bien d'être seul sans joueur pour vous donenr des ordres
miam - tiens, déjà de retour?"
puis à la fin
"je suis guéri! merci joueur de prendre soin de moi!"

(Je vous ai romancé la chose).


donc, mon mini script fonctionne

Je mets le code en spoil
► Afficher le texte
Tout content que j'ai fait le script, je m'en vais maintenant le coller dans les scripts "normaux" de eseries. Parce que mon script, à part soigner, i lfait rien ^^ .


Je le colle à la toute fin du fichier.(en vérité des 6 fichiers de scripts), après la routine d'attaque normale. Bref, après ça:

Code : Tout sélectionner

// * MINIMUM ATTACK
IF
  ActionListEmpty()
  See(NearestEnemyOf(Myself))                                              // but we can still see AN enemy
  !InParty(LastSeenBy(Myself))                                             // and they're not in our party (double-check)
  !Allegiance(LastSeenBy(Myself),GOODCUTOFF)                               // and not an Ally, Familiar, Minion or Simulacrum
THEN
  RESPONSE #100
    AttackOneRound(NearestEnemyOf(Myself))                                 // and attack
END
J'installe le mod eseries.
Je redémarre BG2.

Je clique sur K cette fois (en fait, je reprends toujours une sauvegarde où le personnage blessé a genre 100 baies sur lui ^^ - c'est mon druide ^^ -> et ça explique d'où me vient l'idée ... je voulais éviter de cliquer 100 fois sur la baie).

Et....... rien ne se passe.
La petite ligne "tiens j'ai des baies dans ma poche", sensée m'indiquer que le personnage a lancé la routine de manger les baies ne s'affiche pas.

Je ne comprends pas.

Quelqu'un peut il m'aider?

Sith

Re : Scripts de comportement de Perso

Posté : ven. 17 avr. 2009, 18:48
par Isaya
Je suppose que tu as vérifié que ce n'était pas qu'un problème d'affichage du message et que les baies restaient bien patiemment dans ton inventaire ?

Quand tu ajoutes quelque chose à la fin d'un script, tu prends le risque que cette partie ne soit jamais atteinte. J'explique. Un script s'exécute de la façon suivante (je vais aussi utiliser du bon français ;) ) :
  1. vérification des conditions du premier bloc : si elles sont atteintes, j'exécute le bloc d'actions et je recommence l'exécution au début du script, sauf si la fin du bloc d'action est l'instruction Continue
  2. si les conditions du premier bloc ne sont pas atteintes, je fais pareil pour le deuxième, et ainsi de suite jusqu'à la fin du script
  3. à la fin du script, si je n'ai trouvé aucune condition atteinte, je recommence au début du script à la prochaine itération (fonction de la période de rafraîchissement d'IA dans les options)
Autrement dit, si une quelconque condition du script eseries est vérifiée en permanence avant tes ajouts, les actions en question seront effectuées et ton bloc ne sera jamais atteint.

Pour vérifier si c'est le problème, mets tes ajouts en début de fichier.
Sur le fond, tu as raison de les mettre à la fin, car ces tests ne sont pas prioritaires. Mais essaie quand même pour t'assurer que ça ne vient pas de toi.

Par ailleurs, je pense que tu as oublié une condition importante pour sortir de ta boulimie de baies : si tu n'as pas assez de baies pour remonter à 100 %, ton script va continuer à vérifier la présence de baies en permanence, tout simplement parce que tu n'auras pas remis à 0 ta variable qui indique que tu es en train de te soigner.
A mon avis, tu devrais ajouter une sortie du mode de soin dès que tu n'as plus aucune baie. Cela évitera que ton script passe son temps à vérifier la présence de baies, ce qui peut être long avec des sacs de contenance bien remplis.

Ceci dit, cela n'a aucun rapport avec le problème que tu rencontres.

Re : Scripts de comportement de Perso

Posté : ven. 17 avr. 2009, 19:23
par Sith
Isaya, merci de l'éclaircissement:
notamment, les 3 points que tu indiques m'expliquent sans aucun doute le problème rencontré.

En effet, tu as raison, mon script est imparfait :) . Je n'avais pas pensé à ce cas.

Je vais y retravailler, et je viendrai poster le compte rendu ;)

Re : Scripts de comportement de Perso

Posté : ven. 17 avr. 2009, 20:26
par Sith
J'ai rajouté une partie pour clore la variable (à 0) si on n'a plus de baie.

En mettant tout mon bloc de texte au début, tout fonctionne parfaitement.
Il y avait donc sans doute un script en boucle, qui empêchait d'aller jusqu'à la fin du fichier.

Peut être même vers le dernier bloc, qui concerne le truc minimal.

Enfin, je suis content :D

Prochain script: faire un sorcier sous enchainement qui ne gaspille pas tous ses sorts sur 1 seul monstre fort...
Script après: faire un script pour mage/guerrier qui utilise ses sorts pour frapper au contact.