Baldur's Gate et Dragon Age | La Couronne de Cuivre
 

Précédent   Baldur's Gate et Dragon Age | La Couronne de Cuivre > La Forge de GrondMarteau > La Forge des Apprentis > Problèmes Techniques

Problèmes Techniques
Un problème technique lors de la création d'un mod? Exposez votre probleme et les membres vous aideront de leur mieux.

Réponse
 
Outils de la discussion Note
Vieux 16/04/2004, 02h18   #1
ferrumach
Berserker Ogre
 
Date d'inscription: janvier 2004
Messages: 1 017
Par défaut

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é le script reste sur le meme bloc ( pour simplifier)

QUESTIONS:
1)Que se passe t'il ensuite , par exemple lors d'un combat lorque 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 tres explicite avec des flèches dans un tutorial fait par un certain simdingo sur team bg ) que se passe t'il, lla créature reste "bloqué" sur le dernier script (DEFAULT)?

Un exemple ( en francais ) est donné dans un tutorial : celui du script d'un dragon rouge , le 2 eme 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 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
Merci
Edit : comment fait on pour jouer en mode fenétre ( utile pour faire des tests), j'ai du mal avec la commande -w ?
ferrumach est déconnecté   Réponse avec citation
Vieux 16/04/2004, 02h34   #2
Walar, Patricien de Melandis
Berserker Ogre
 
Avatar de Walar
 
Date d'inscription: avril 2003
Messages: 1 016
Par défaut

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).

Citation:
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).

Citation:
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.
Walar est déconnecté   Réponse avec citation
Vieux 16/04/2004, 18h10   #3
ferrumach
Berserker Ogre
 
Date d'inscription: janvier 2004
Messages: 1 017
Par défaut

Citation:
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)

Citation:
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
ferrumach est déconnecté   Réponse avec citation
Vieux 16/04/2004, 22h30   #4
Isaya
Minotaure
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 729
Envoyer un message via MSN à Isaya
Par défaut

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 :
Citation:

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.
Isaya est déconnecté   Réponse avec citation
Vieux 16/04/2004, 23h17   #5
ferrumach
Berserker Ogre
 
Date d'inscription: janvier 2004
Messages: 1 017
Par défaut

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.
ferrumach est déconnecté   Réponse avec citation
Vieux 17/04/2004, 10h27   #6
Isaya
Minotaure
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 729
Envoyer un message via MSN à Isaya
Par défaut

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.
Isaya est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Tags
Aucune


Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Noter la discussion
Noter la discussion:

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

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are non

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
[BGT/TUTU] Quelques questions HaluKard Baldur's Gate Reloaded : les mods TUTU et Baldur's Gate Trilogy 5 11/10/2006 23h31
[KIM] Quelques questions Coaswen Kim 4 23/01/2005 21h01
[JEU] Quelques questions sur les archers Atropos NeverWinter Nights & NeverWinter Nights 2 : Le Jeu 8 09/04/2004 09h32
[MODS] Quelques questions... Bat Le Bazar de l'Aventurier 15 31/08/2003 19h54


Fuseau horaire GMT +2. Il est actuellement 11h42.


Merci de soutenir La Couronne de Cuivre et le Wiki consacré à Baldur's Gate et aux RPG

Les forums La Sirène Rougissante, La Couronne de Cuivre, ainsi que les sites associés Le Portail du Web et Le Monde de Baldur's Gate sont protégés par le Code de la propriété littéraire et artistique. Baldur's Gate I (1998), Tales of the Sword Coast (1999), Baldur's Gate II (2000) Shadows of Amn, et Throne of Bhaal (2001) sont ©BioWare, licenses et distribution ©ATARI. Dungeons & Dragons material est ©Wizards of the Coast. NeverWinter Nights est un produit ©Bioware, licenses et distribution ©ATARI. DRAGON AGE © 2002-2007 BioWare Corp. Dragon Age, the Dragon Age logo, BioWare Corp., and the BioWare logo are trademarks of BioWare Corp. in the United States, Canada and other countries. All other trademarks are the property of their respective owners. All rights reserved.
Conformément à l'article 34 de la loi 78-17 du 6 janvier 1978 dite loi "Informatiques et Libertés" vous disposez d'un droit d'accès, de modification, de rectification et de suppression de vos données personnelles (déclaration CNIL en cours mai 2007). Pour faire valoir ce droit contactez nous en cliquant ici et en utilisant le formulaire à votre disposition


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0 RC7 Tous droits réservés.
Version française #16 par l'association vBulletin francophone

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