
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 02/05/2025 05:11:56
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 |
Wiz Novice Messages: 6 |
Bonjour,
J'ai creer une fonction permettant de faire apparaitre une créature de facon aleatoire. C'est fonction est appelée dans l'évenement Heartbeat, mais avant de regarder si le nombre est choisi pour faire apparaitre la creature, elle doit de verifier si la creature n'est pas deja apparu. Car le script s'execute a chaque 6 sec du a l'évenement. NWScript :
//declaration de la fonction RandomCreature void RandomCreature (int nMaxInt, string sCreatureTag, string sCreatureBlueprint, string sLocation); //**************************** ****************************** ********************** //* Auteur : Wiz //* Date : 21 novembre 2003 //* Description : Fonction permettant de choisir une creature (sCreatureTag, sCreatureBleuprint) a apparaitre de //* facon aleatoire (nMaxint) et dans une localisation (sLocation) determiner par l'utilisateur. //**************************** ****************************** ********************** void RandomCreature (int nMaxInt, string sCreatureTag, string sCreatureBlueprint, string sLocation) { int nResultat; nResultat = Random( nMaxInt + 1); if ( GetIsObjectValid ( GetObjectByTag( sCreatureTag)) == FALSE) { if ( nResultat == nMaxInt) CreateObject( OBJECT_TYPE_CREATURE, sCreatureBlueprint, GetLocation( GetObjectByTag( sLocation)), TRUE, sCreatureTag); } } Bon vous voyez que je verifie avec la fonction GetIsObjectValid si elle renvoie false, donc que la creature n'existe pas deja pour que le premier if soit executé. Le probleme s'est qu'elle donne toujour resultat de FALSE donc je me ramasse avec plusieur random de la meme creature. J'ai essayée, a la place de GetIsObjectValid, la fonction GetIsEncounterCreature mais avec toujour le meme resultat :-s Alors j'aimerais savoir si il exiterait pas une fonction adequate pour faire cette verification? Je vous remerci d'avance pour votre aide! |
Revenir en haut | ![]() ![]() ![]() |
lendraste Grand Maître Chanteur du Conseil ![]() Messages: 1403 Localisation: Quelque part ailleurs |
La fonction GetIsObjectValid et GetObjectByTag fonctionnant toutes les deux très bien, je pense que la seule raison pour laquelle ton test renvoie faux est que le TAG fourni en paramètre ne correspond à aucune créature créée dans le module. Le problème n'est pas ta fonction RandomCreature mais le script qui l'utilise. Peux-tu nous le montrer ?
_________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | ![]() ![]() ![]() ![]() ![]() |
Wiz Novice Messages: 6 |
NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. Je comprends pas très bien, parce que le sCreatureTag est defini par l'utilisateur, donc au départ c'est l'utilisateur qui donne le Tag de la creature, cela peut-etre n'importe quel nom, au depart et ca jusqu'a ce que la creature soit créée, elle n'existe pas sur le module. Une fois que la fonction CreateObject s'active, le Tag est existant. Et par la suite la condition devrait etre TRUE, donc ne plus rentré dans le If jusqu'a que la creature n'existe plus sur le module. |
Revenir en haut | ![]() ![]() ![]() |
lendraste Grand Maître Chanteur du Conseil ![]() Messages: 1403 Localisation: Quelque part ailleurs |
Effectivement, je n'avais pas noté le double usage de sCreatureTag. Le fait est que la possibilité de spécifier le tag de l'objet créé dans CreateObject est un ajout récent à NWNScript. Il conviendrait de s'assurer que cette fonctionnalité n'est pas boguées et donc de vérifier le tag de l'objet créé.
Pour ce faire, récupère le résultat de la fonction CreateObject dans une variable objet et affiche le GetTag de cette variable pour contrôler la valeur du Tag. Car de mon point de vue, GetIsObjectValid ne renverra FALSE que si la fonction GetObjectByTag ne trouve rien. La seule chose qui me vienne à l'esprit malgré ton script est que le Tag recherché n'existe pas. _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | ![]() ![]() ![]() ![]() ![]() |
nawer Chevalier Messages: 93 |
Je confirme, CreateObject est buggé, le changement du tag ne fonctionne pas forcemment, en tout cas pas bien.
Si tu instancies un objet directement avec la fonction CreateObject, tu pourras récupérer le tag de cet objet, mais si tu essayes d'instancier un objet en te basant sur le tag 'ajouté' par la fonction en utilisant GetObjectByTag, ça ne marche pas... |
Revenir en haut | ![]() ![]() ![]() |
lendraste Grand Maître Chanteur du Conseil ![]() Messages: 1403 Localisation: Quelque part ailleurs |
Si l'utilisation du paramètre initialisant le Tag dans CreateObject est bien bogué, je pense que le plus simple pour disposer d'un TAG personnalisé est de faire un nouveau blueprint de la créature nw_dryad (en créant une copie personnalisée dans l'éditeur), donc avec un resref et un tag différent de l'original, et d'instancier ce blueprint personnalisé sans se soucier de spécifier sCreatureTag comme Tag.
Le Tag produit par la créature sera ainsi celui défini dans l'éditeur ce qui posera moins de problème de reconnaissance pour la fonction GetObjectByTag _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | ![]() ![]() ![]() ![]() ![]() |
Wiz Novice Messages: 6 |
J'ai modifié le script en consequence, je vous remerci de votre aide
![]() |
Revenir en haut | ![]() ![]() ![]() |


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