La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 21:43:09
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Monsieur Ubum Novice Messages: 7 |
J'ai créé un script simple qui fait apparaitre un blaireau si on passe par une zone. Ca marche mais si on repasse sur la zone et ben ya plein de blaireaux qui sortent et j'en veux qu'un.
J'ai essayé de faire une variable globale (#include "variables" avec int compteur) et ca marche pas. le compteur est modifié dans le script qui fait apparaitre le blaireau mais apparemment ca modifie pas la variable du script "variables" et donc les blaireau y apparaissent a l'infini. Sinon j'ai vu que beaucoup de monde se sert de SetLocalInt avec sVarname, j'aimerai savoir a quoi ca sert. _________________ Merci. |
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Très simple, il te suffit de mettre un DestroyObject(OBJECT_SELF) à la fin de ton script d'invocation de blaireau, ça détruira le trigger donc aucune chance d'en invoquer un autre
_________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
Monsieur Ubum Novice Messages: 7 |
Merci mon dieu.
Mais sinon Pour la fonction SetLocal(Int ou Float ou Object). Et enfin plus generalement, si je veux executer mon script un certain nombre de fois ou alors avoir un compteur qui me dise le nombre de fois que le script est utilisé. _________________ Merci. |
Revenir en haut | |
Monsieur Ubum Novice Messages: 7 |
Ou meme, un script qui, la premiere fois qu'on marche dans une zone, on fait apparaitre ce fameux blaireau (wookie) et les fois suivantes qu'on marche, il se passe alors autres chose tout cela dans le meme script.
(en gros est ce que c'est possible de garder une trace des action precedente) Un Fabuleux merci a tous _________________ Merci. |
Revenir en haut | |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
Tout à fait. Il sagit des variables locales. Une variable locale est au départ égale à 0 et se place sur un objet. La fonction "SetLocalInt" te permet de fixer cette variable à un nombre différent de 0. Ainsi, à l'intérieur des parenthèses qui suivent le "SetLocalInt", il faut mettre plusieurs choses : tout d'abord l'objet qui reçoit la variable ( la plus grande majorité du temps le joueur ) puis une virgule et le nom de la variable ( à mettre entre guillemets, ça peut être n'importe quoi tant que ce n'est pas la même chose qu'une autre fois ) encore une virgule et enfin le nombre auquel tu veux fixer la variable. Comme déjà expliqué, 0 est la valeur par défaut, le plus simple est donc de la mettre à 1.
Le "GetLocalInt" détermine la valeur de la variable ( il faut de nouveau préciser l'objet concerné et le nom de celle-ci ). Un exemple serait plus concret. Imaginons que tu fais un script contenant ceci : SetLocalInt(GetFirstPC(), "exemple", 55); Dans ce cas, ce GetLocalInt(GetFirstPC(), "exemple") sera égal à 55. L'intérêt, maintenant, c'est de régler une variable à 1 à la fin de ton script et de mettre au début la condition qu'il soit égal à 0. Il ne marchera donc qu'une fois. Exemple : Code : if(GetLocalInt(GetFirstPC(), "exemple") == 0) { //Tu tapes ton script SetLocalInt(GetFirstPC(), "exemple", 1); } Tu peux même faire mieux : Code : if(GetLocalInt(GetFirstPC(), "exemple") == 0) { //Tu tapes ton script SetLocalInt(GetFirstPC(), "exemple", 1); } else { //Tu tapes ton script } Ainsi, si le script s'enclenche pour la première fois, il fera ce que tu as mis dans le premier espace et les prochaines fois ce que tu as mis dans le deuxième. Et ce n'est pas tout ! Imaginons maintenant que tu souhaites qu'un script ne s'enclenche que si 4 bandits ont été tués. Dans ta condition, tu tapes ceci : Code : if(GetLocalInt(GetFirstPC(), "exemple") == 4) { //Tu tapes ton script } Et dans l'événement "OnDeath" de chaque bandit ceci : Code : SetLocalInt(GetFirstPC(), "exemple", GetLocalInt(GetFirstPC(), "exemple")+1); Dans ce cas, si la variable est à 0, elle se met à 1, si elle à 1, elle se met à 2, etc. Bref, les variables sont très intéressantes. EDIT : en plus des variables 'int'(=entières), c'est-à-dire de loin les plus utilisées, il y a même d'autres variables (float, object, location et string), qui sont très utiles aussi, mais pour des scripts plus complexes. Le principe est le même, mais là, ce sont, suivant le cas, des décimaux, d'autres objets, des localisations ou des messages qui sont enregistrés sur l'objet-cible. Les 'LocalFloat' ne servent quasiment jamais, c'est juste si vous désirez enregistrer une valeur décimale sans l'arrondir par un 'FloatToInt()'. Les 'LocalObject', 'LocalLocation' et 'LocalString' sont certainement plus fréquents. Exemple (pour un objet) : vous voulez déterminer la créature qui était la plus proche du joueur alors qu'il faisait une action, peut importe laquelle. Dans un autre script, il se passera quelque chose avec cette créature. Seulement voilà, à ce moment-là, la plus proche créature du joueur ne sera pas forcément l'ancienne ! En la sauvegardant avec un 'SetLocalObject' et en la retrouvant avec uin 'GetLocalObject', vous vous épargenerez beaucoup de prises de tête. Idem pour les location et les string, évidement. _________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. Dernière édition par Lavok le 23/06/2003 14:21:56; édité 1 fois
|
Revenir en haut | |
Monsieur Ubum Novice Messages: 7 |
Cher Monsieur Lavok, Monsieur Ubum te remercie d'avoir pris le temps de lui repondre. Cela lui sera d'un grand secours.
Chaque jour qui passe ouvre de nouvelles possibilitées. _________________ Merci. |
Revenir en haut | |
Albator003 Invité |
Et en faisant une rencontre ? ca marche non ? tant quil est pas mort il ne spawnera pas je crois ...
|
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Page 1 sur 1 ¤
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum