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 20:24:54
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 |
Yan the salor Seigneur Messages: 151 |
Dans une salle comportant plusieurs portes et une statue au centre:
Je voudrai faire ouvrir les portes dés qu'un Pj touche la statue (l'ouvre quoi). Quelqu'un aurait-il une idée? Dernière édition par Yan the salor le 22/10/2004 12:10:20; édité 1 fois
|
Revenir en haut | |
FitzChevalerie Novice Messages: 6 |
Tu peux peut-être essayé de mettre le script suivant sur le OnUsed de la statue :
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. |
Revenir en haut | |
Yan the salor Seigneur Messages: 151 |
j'ai essayé maias la porte reste close.
j'ai bien attribué le tag à la porte, mais rien. Une idée? |
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
NWScript :
void main() { object oDoor1 = GetObjectByTag("dt_door1"); AssignCommand(oDoor1, ActionOpenDoor(oDoor1)); } _________________ http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin! |
Revenir en haut | |
Yan the salor Seigneur Messages: 151 |
Ca marche aux poils (et je te remercie) pour une porte, mais quand j'en ajoute une autre avec le même tag, c'est cette dernière qui s'ouvre et plus la première.
Comment faire pour que toutes mes portes s'ouvrent en même temps en touchant la statue? |
Revenir en haut | |
Blackblood Chevalier Messages: 80 Localisation: France |
Salut,
il te suffit de nommer les portes en incrémantant leur tag comme ceci : NWScript :
void main() { object oDoor1 = GetObjectByTag("dt_door1"); AssignCommand(oDoor1, ActionOpenDoor(oDoor1)); object oDoor2 = GetObjectByTag("dt_door2"); AssignCommand(oDoor2, ActionOpenDoor(oDoor2)); object oDoor3 = GetObjectByTag("dt_door3"); AssignCommand(oDoor3, ActionOpenDoor(oDoor3)); } Maintenant, créer le nombre de portes dont tu as besoin, appelle-les : dt_door1, dt_door2, dt_door3, etc. Met dans ce script le nombre de lignes correspondant au nombre de portes sans oublier de changer le n° de la porte bien entendu. Bon courage |
Revenir en haut | |
Yan the salor Seigneur Messages: 151 |
Super génial ça marche...sympa
Merci |
Revenir en haut | |
blackwinter Novice Messages: 8 |
Le script plus haut a ses limites . Il faut rentrer à chaque fois une valeur pour une nouvelle porte au risque d'en oublier une.
Que dirais tu de celui là qui va boucler les différentes portes du même tag pour les fermer une à une. Voila la fonction à créer si tu as un "inc_" place là dedans NWScript :
//string sO : string du tag de la porte //float fRearm : float du temps de la fermeture de la porte void FermePorte (string sO,float fRearm) { object oO; oO = GetFirstObjectInArea(OBJECT_SELF); while (GetIsObjectValid(oO)){ if (oO == GetObjectByTag(sO)){ AssignCommand(oO, ActionOpenDoor(oO)); DelayCommand(fRearm,ActionCloseDoor(oO)); } oO = GetNextObjectInArea(OBJECT_SELF); } } Après il te suffit d'appeler la fonction sur le on_used de ta statue. 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.
Les avantages de cette solution c'est que de un on peut réutiliser cette fonction et de deux on évite d'oublier des portes. Et en plus on s'évite la peine de devoir changer les tags de chaque porte. NB: Veuillez vérifier si je ne ne me suis pas trompé qlq part, on ne sait jamais. Et au fait j'espère que NWN considère bien les portes comme des objects |
Revenir en haut | |
Athanagorn Acolyte Messages: 38 |
A prioris, rien à voir avec le sujet du post initial (ou alors, j'ai mal lu).
Le PO voulais bien ouvrir les portes, non? Ah, oui, ton script les ouvre puis les referme. Le nom reste à mon avis mal choisi (Puisqu'il m'a enduit d'erreur ...) Et a prioris (en tout cas, c'est ainsi qu'elle est décrite, et c'est toujours dangereux d'utiliser des fonctions d'une façon différente de celle décrite) GetFirstObjectInArea() prends une Area en paramètre, et OBJECT_SELF sera la statue et non la zone de la statue. Remplacer par GetArea(OBJECT_SELF)? Ah, une dernière chose... Je ne suis pas sûr que la statue soit capable de se déplacer pour aller fermer les portes... |
Revenir en haut | |
blackwinter Novice Messages: 8 |
Athanagorn a écrit : A prioris, rien à voir avec le sujet du post initial (ou alors, j'ai mal lu).
Le PO voulais bien ouvrir les portes, non? Ah, oui, ton script les ouvre puis les referme. Le nom reste à mon avis mal choisi (Puisqu'il m'a enduit d'erreur ...) Non sans rire, en effet le nom n'est pas super bien choisis, m'enfin moi ouvrir un porte pour la laisser ouverte... Enfin juste je n'ai pas à critiquer un choix de conception. Sinon je ne comprends pas pourquoi tu dis que je n'ai rien avoir avec le sujet initial ? J'ouvre les portes non ? Athanagorn a écrit : Et a prioris (en tout cas, c'est ainsi qu'elle est décrite, et c'est toujours dangereux d'utiliser des fonctions d'une façon différente de celle décrite) GetFirstObjectInArea() prends une Area en paramètre, et OBJECT_SELF sera la statue et non la zone de la statue.
Agree , voila ce que c'est de faire ce genre de script de mémoire. En effet on doit faire référence à une area pour plus de facilité.
Remplacer par GetArea(OBJECT_SELF)? Athanagorn a écrit : Ah, une dernière chose... Je ne suis pas sûr que la statue soit capable de se déplacer pour aller fermer les portes... Attention NWScript : vérifie que l'on parle bien de la porte et donc dans la suite ce sera elle qui va s'ouvrir, par contre en effet la fermeture ne ce fera pas il manque une partie de code.
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. Donc si l'on reprend le tout. NWScript :
//string sO : string du tag de la porte void OuvrePorte (string sO) { object oO; oO = GetFirstObjectInArea(GetArea(OBJECT_SELF)); while (GetIsObjectValid(oO)){ if (oO == GetObjectByTag(sO)) AssignCommand(oO, ActionOpenDoor(oO)); oO = GetNextObjectInArea(GetArea(OBJECT_SELF)); } } Après il te suffit d'appeler la fonction sur le on_used de ta statue. |
Revenir en haut | |
Athanagorn Acolyte Messages: 38 |
blackwinter a écrit : Sinon je ne comprends pas pourquoi tu dis que je n'ai rien avoir avec le sujet initial ? J'ouvre les portes non ?
Dans un premier temps, j'avais pas vu que tu ouvrais les portes avant de les refermer.
blackwinter a écrit : Attention non, NWScript : vérifie que l'on parle bien de la porte et donc dans la suite ce sera elle qui va s'ouvrir, par contre en effet la fermeture ne ce fera pas il manque une partie de code. 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. NWScript : vérifie que l'objet est "UNE" des portes portants ce tag. L'objet retourné par GetObjectByTag(sO) peut être n'importe quel objet ayant pour trag sO, donc pas forcement celui que tu penses (sauf s'il est unique avec ce tag, bien sur, mais dans ce cas pas besoin de boucler avec GetFirstObject/GetNextObject.
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. Ce que tu veux, toi, c'est vérifier que l'objet à bien le bon tag et c'est comme ceci NWScript : qu'on doit faire.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. |
Revenir en haut | |
Anthraxcite Légende vivante Messages: 372 Localisation: Belgique |
NWScript : void main() { object oDoor; int i = 0; while((oDoor = GetNearestObjectByTag("tagdesportes",OBJECT_SELF,i))!=OBJECT_INVALID) { AssignCommand(oDoor, ActionOpenDoor(oDoor)); i++; } } |
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