La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/09/2024 20:26:46


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Wiz
Novice
Inscrit le: 19 Nov 2003
Messages: 6
Répondre en citant
Posté le : 25/11/2003 14:56:49 Sujet du message : Creature qui apparait de facon aléatoire

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


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 25/11/2003 18:55:37 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Wiz
Novice
Inscrit le: 19 Nov 2003
Messages: 6
Répondre en citant
Posté le : 25/11/2003 21:50:23 Sujet du message :

NWScript :
#include "RANDOMCREATURE"

void main()
{
int nMaxInt = 10;
string sCreatureTag = "Dryade";
string sCreatureBlueprint = "nw_dryad";
string sLocation = "Lieudryade";

RandomCreature (nMaxInt, sCreatureTag, sCreatureBluePrint, sLocation);
}
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 25/11/2003 23:02:33 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
nawer
Chevalier
Inscrit le: 01 Juil 2003
Messages: 93
Répondre en citant
Posté le : 26/11/2003 10:38:08 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 26/11/2003 12:17:42 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Wiz
Novice
Inscrit le: 19 Nov 2003
Messages: 6
Répondre en citant
Posté le : 26/11/2003 12:20:02 Sujet du message :

J'ai modifié le script en consequence, je vous remerci de votre aide Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
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 89.712ms