La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 29/12/2024 01:47:19


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Monsieur Ubum
Novice
Inscrit le: 15 Avr 2003
Messages: 7
Répondre en citant
Posté le : 17/04/2003 15:26:10 Sujet du message : Une horde de blaireaux

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. Smile
_________________
Merci.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 17/04/2003 15:45:02 Sujet du message :

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 Wink
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Monsieur Ubum
Novice
Inscrit le: 15 Avr 2003
Messages: 7
Répondre en citant
Posté le : 17/04/2003 15:55:28 Sujet du message :

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é. Calimero
_________________
Merci.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Monsieur Ubum
Novice
Inscrit le: 15 Avr 2003
Messages: 7
Répondre en citant
Posté le : 17/04/2003 16:02:07 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lavok
Légende vivante
Inscrit le: 22 Oct 2002
Messages: 434
Localisation: Sphère planaire
Répondre en citant
Posté le : 17/04/2003 16:53:52 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Monsieur Ubum
Novice
Inscrit le: 15 Avr 2003
Messages: 7
Répondre en citant
Posté le : 17/04/2003 20:10:45 Sujet du message :

Cher Monsieur Lavok, Monsieur Ubum te remercie d'avoir pris le temps de lui repondre. Cela lui sera d'un grand secours. Laughing

Chaque jour qui passe ouvre de nouvelles possibilitées.
_________________
Merci.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Albator003
Invité


Répondre en citant
Posté le : 17/04/2003 21:21:37 Sujet du message :

Et en faisant une rencontre ? ca marche non ? tant quil est pas mort il ne spawnera pas je crois ...
 
Revenir en haut
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 25.645ms