Affichage des résultats 1 à 6 sur 6

Discussion: [SCRIPT] Quelques questions sur l'ordre d'exécution des scripts

  1. #1
    Date d'inscription
    January 2004
    Messages
    1 011

    [SCRIPT] Quelques questions sur l'ordre d'exécution des scripts

    Un script est lu de haut en bas , le END final clot le script etau début (d'après qq tutoriaux), tant qu'une condition (IF) est vérifiée le script reste sur le même bloc (pour simplifier).

    QUESTIONS :

    1) Que se passe t-il ensuite, par exemple lors d'un combat lorsque le script affecté à une créature ennemie arrive à la fin ?
    J'ai lu qu'il y a 7 scripts, pour par exemple une créature : d'abord celui d'override, puis area, specific,race ,classe, puis défaut (je crois que c'est l'ordre) donc rapport avec ma question les scripts (lorsqu'ils existent) sont lus l'un à la suite des autres ?
    Et ensuite (il y a un schéma très explicite avec des flèches dans un tutorial fait par un certain simdingo sur TeamBG) que se passe t-il, la créature reste "bloquée" sur le dernier script (DEFAULT) ?

    Un exemple (en français) est donné dans un tutorial : celui du script d'un dragon rouge, le 2eme bloc (le 1er il se met une peau de pierre) (il y 14 blocs) raconte:

    "Si je ne vois pas de Personnages Joueurs et que mes points de vie sont en dessous de 50 alors je me lance un sort de guérison de prêtre"

    On est au début du combat, cela m'étonnerait qu'il ait moins de 50 HP, donc (dans la plupart des cas) le script passe au 3eme bloc, à noter c'est le seul bloc qui lui permet de se soigner... et comme le script n'est pas relu il ne pourra plus se soigner..

    a) quel intérêt de mettre un "bloc soin" dés le 2eme bloc ? Et dans la pratique j'ai déjà vu Firkkrag se lancer des guérisons après un certain temps de combat, si qq peut m'expliquer.
    Merci

    Édit : comment fait on pour jouer en mode fenêtré (utile pour faire des tests), j'ai du mal avec la commande -w ?
    Dernière modification par Freddy_Gwendo ; 03/04/2016 à 02h31. Motif: Modification du titre de la discussion

  2. #2
    Date d'inscription
    April 2003
    Messages
    979
    Je ne pourrais pas t'expliquer techniquement. Mais le script "tourne" en permanence quand la créature est présente. Il y a aussi l'exemple des potions, si le script ne se lisait qu'une fois les créatures ne les utiliseraient qu'une fois ou même pas du tout (selon les conditons).

    J'ai lu qu'il y a 7 scripts, pour par exemple une créature : d'abord celui d'override, puis area, specific,race ,classe, puis défaut (je crois que c'est l'ordre) donc rapport avec ma question les scripts (lorsqu'ils existent) sont lus l'un à la suite des autres ?
    Je me sers toujours du script d'override moi (c'est rare tout de même d'avoir besoin de plusieurs scripts pour une créature, c'est plutôt dans le jeu original qu'il y a ça). Quand aux ordres d'exécution il y en a mais je ne saurais le dire par coeur... Mais les scripts tournent en permanence quand la créature est là... Mais dans un script lui-même, les trucs du haut se déclencheront d'abord (si les conditions sont réunies).

    On est au début du combat , cela m'étonnerait quil ait moins de 50 HP, donc (dans la plupart des cas) le script passe au 3 eme bloc, a noter c'est le seul bloc qui lui permets de se soigner...et comme le script n'est pas relu il ne pourra plus se soigner..
    a) quel intéret de mettre un "bloc soin " dés le 2eme bloc?, et dans la pratique j'ai déja vu frikrag se lancer des guérisons après un certain temps de combat , si qq peut m'expliquer
    Je viens d'y répondre. Je sais cependant qu'il y a un ordre préférentiel pour mettre les commandes dans un script, Isaya l'avait dit récemment. En tout cas moi au début j'ai tendance à poser les variables.

    Enfin je dois dire clairement que je ne me suis pas trop embarrassé de tutoriels sur les scripts et j'ai un peu fait par moi-même surtout en regardant comment faisaient les autres.

  3. #3
    Date d'inscription
    January 2004
    Messages
    1 011
    Les scripts tournent en permanence : le taux de rafraîchissement de l'IA définie dans le programme de config détermine le rythme de répétition (typiquement 30 fois par seconde).
    Une itération du script s'arrête dès qu'elle trouve une condition de remplie. La fois suivante, l'évaluation des conditions reprendra normalement depuis le début. Je crois que la commande Continue() permet de continuer depuis le point atteint.
    citation d'ISAYA

    Le tutorial ne dis pas vraiment cela....
    je cite le tutorial fait par un certain ( misdrha'al ), section 3)

    Le script est lu par le moteur de haut en bas..une fois la dernière condition finie il ne repart pas pour un tour.... il est dit exécuté
    Bon il y a peut etre une nuance....
    (mais laquelle ?), enfin la pratique du jeu me conforte vers l'explication de walar et d'isaya...

    merci d'avance

  4. #4
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 398
    D'après ce que j'ai lu, il semble bien en effet que les scripts soient parcourus dans un ordre précis. Je crois que le parcours successifs des scripts s'interrompt dès qu'une condition IF est vérifiée. Les actions correspondantes sont lancées et le parcours des scripts est alors censé reprendre au début du premier script. Il me semble que le jeu cycle au rythme indiqué dans le programme BGConfig dans le paramètre Taux de rafraîchissement des options AI.
    C'est d'ailleurs ce qui faisait dire à certains concepteurs de script que certains écrivaient des scripts qui trichent vis à vis des règles du jeu, notamment vis à vis des sorts (normalement, un seul sort par round, donc toutes les 6 secondes), en n'introduisant pas de pause (par un timer) entre deux sorts.

    La logique des scripts est à priori d'avoir les cas les plus importants dans le premier script, de façon à ce que la réaction soit la plus rapide et qu'il y ait peu de chances qu'une condition plus prioritaire ait empêché d'atteindre ce point.

    Du coup, la présence du soin en début de script lui donne une priorité importante par rapport aux attaques. Comme le script tourne en permanence, ce n'est pas une question de début de combat, mais plutôt de début de round voire encore plus souvent.

    Le tutorial de SimDingo a plutôt bonne réputation. Peut-être est-il clair sur ce point ? Par ailleurs tu trouveras aussi peut-être des infos dans d'autres tutorials sur le même site, voire même dans la doc du compilateur Bioware.

    D'ailleurs, voici un petit extrait qui pourrait expliquer des choses :

    There are a several 'default' scripts which run all the time in the various games.
    In all games, the DPLAYER scripts are present. Of these, the important ones are DPLAYER2.BCS, which is assigned to all party members on joining, and DPLAYER3.BCS, which runs on the protragonist. However, these scripts are deactivated when the party AI is turned off.
    In the Baldur's Gate games, BALDUR.BCS (and BALDUR25.BCS in ToB) are also present. They have no specific object (and as such, local variables do not work in them), but run all the time.
    Finally, PLAYER1D.BCS runs whenever the party rests, in a similar way to the NPC entries in PDIALOG.2DA.
    Ma suggestion d'utiliser DPLAYER2 a peut-être été la cause de certains de tes problèmes si l'IA n'était pas active.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  5. #5
    Date d'inscription
    January 2004
    Messages
    1 011
    Très intéressant+++

    Pour etre clair, je vais prendre un exemple:

    1)Prenons un script avec 14 blocs: le 1,2,et 3éme aucune des conditions ne sont vérifiées ( donc le moteur passe à la suivante) , le 4 ème IF marche donc response (actions) ET le moteur repart au 1 er bloc
    Tout ceci fait avec une itération de 30 par seconde, si le paramètre choisi est 30 c'est juste ?
    (je comprends mieux alors l'interet du continue())

    Donc en théorie un script n'est jamais terminé (tant que le perso est vivant )puisqu'il faudrait que tous les blocs soient faux.

    Quant au tutorial de simdingo il est très bien fait ( le seul problème c'est l'anglais)
    le schéma est très explicatif ( je le conseille vraiment pour comprendre comment un script est lu par le moteur). C'est plutot la phrase que je cite de l'auteur du tutorial en francais que je ne comprends pas (cf)

    Merci en tout cas isaya pour les explications, je préfère avoir une vue d'ensemble que betement modifier des scripts sans savoir les mécanismes globaux.

  6. #6
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 398
    Si une action prend du temps (attaquer, lancer un sort, se déplacer), l'exécution du script ne reprend apparemment qu'après la fin de la ou des actions.

    Dans le tutorial, peut-être l'auteur faisait-il référence au fait que le script ne repartait pas de lui-même, mais qu'il était soumis à la période de rafraîchissement et au fait que le personnage n'était pas déjà lancé dans une action.

    L'intérêt du continue(), c'est aussi d'éviter de boucler toujours sur les mêmes actions si les conditions d'un des premiers blocs sont vérifiées. D'après le tutorial de SimDingo, c'est surtout utile pour scripter les combats.

    Si, les scripts se terminent fréquemment. Un script de personnage de l'équipe contient notamment les tests spécifiques aux interactions, aux quêtes, ... basés sur des conditions qui ne sont pas toujours vérifiés (souvent, ils n'ont rien à faire). C'est surtout lors d'un combat que des conditions se trouvent facilement vérifiées. Tu trouveras dans certains scripts un test sur True(), justement lorsque le personnage n'a rien d'autre à faire, pour lui faire faire les cents pas par exemple.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

Discussions similaires

  1. [BGT/TUTU] Quelques questions
    Par HaluKard dans le forum Baldur's Gate Reloaded : les mods TUTU et Baldur's Gate Trilogy
    Réponses: 5
    Dernier message: 11/10/2006, 22h31
  2. [VALEN/TASHIA/KIM] Quelques questions
    Par Bilbon dans le forum Compagnons d'Amn : Les modules dit "PNJ"
    Réponses: 10
    Dernier message: 27/02/2005, 12h40
  3. [KIM] Quelques questions
    Par Coaswen dans le forum Kim
    Réponses: 4
    Dernier message: 23/01/2005, 20h01
  4. [JEU] Quelques questions sur les archers
    Par Atropos dans le forum L'Académie de Padhiver (NWN 1)
    Réponses: 8
    Dernier message: 09/04/2004, 08h32
  5. [MODS] Quelques questions...
    Par Bat dans le forum Le Bazar de l'Aventurier
    Réponses: 15
    Dernier message: 31/08/2003, 18h54

Les tags pour cette discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239