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







La date/heure actuelle est 20/02/2025 20:13:14
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 |
Heldar Seigneur ![]() Messages: 169 Localisation: France |
Voila, j'ai des scripts me permettant de créer en série des pnj (merci Longbow):
dans le Onspawn du pnj: NWScript :
#include "NW_O2_CONINCLUDE" #include "NW_I0_GENERIC" void main() { SetSpawnInCondition(NW_FLAG_DEATH_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1007 // DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) ****************************** ****************************** ***************************** SetListeningPatterns(); // Goes through and sets up which shouts the NPC will listen to. WalkWayPoints(); // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0) // 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them // 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after // combat. } dans le OnUserdefined: NWScript :
void main() { int iUD = GetUserDefinedEventNumber(); object oZombiSpawn = GetNearestObjectByTag("tag_du_point_passage_de_creation"); location lSpawn = GetLocation(oZombiSpawn); if (iUD == 1007) { CreateObject(OBJECT_TYPE_CREATURE, "tagdupnjcree", lSpawn); } } donc ensuite on met un point de passage où se créront les pnj et un de ces pnj. Et puis je me suis demander si il ne serait pas possible de faire en sorte qu'au bout d'un moment il en vienne un autre de pnj et puis qu'après les autres reviennent. Je pense que c'est possible mais moi ![]() ![]() _________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | ![]() ![]() ![]() |
Heldar Seigneur ![]() Messages: 169 Localisation: France |
Et j'aimerais bien savoir aussi si c'est possible qu'il y est une limite. Encore merci.
_________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | ![]() ![]() ![]() |
Heldar Seigneur ![]() Messages: 169 Localisation: France |
Mince et encore un topic auquel personne ne repondra, c'est le deuxième.
_________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | ![]() ![]() ![]() |
Laxam Légende vivante ![]() Messages: 425 Localisation: Lyon |
C'est peut-être parce que tes questions sont compliquées que personne répond
![]() Pour ton truc de création, si je comprends bien : Tu a un NPC qui lorsqu'il meurre est remplacé par un clone qui apparaît à un WP que tu as défini. Tu voudrais qu'au bout de la nième apparition, l'effet cesse. C'est ça ? Si c'est ça, à chaque création tu incrémente une variable et tu la mets en condition avant de créer le clone : NWScript :
void main() { int iUD = GetUserDefinedEventNumber(); object oZombiSpawn = GetNearestObjectByTag("tag_du_point_passage_de_creation"); location lSpawn = GetLocation(oZombiSpawn); int vMax = 10; // 10 apparitions maxi int vnbClones2 = GetLocalInt(GetModule(), vnbClones); if ((iUD == 1007) && (vnbClones2<=vMax)) { CreateObject(OBJECT_TYPE_CREATURE, "tagdupnjcree", lSpawn); // tu incrementes de 1 ta variable vnbClones2 = vnbClones2 + 1; SetLocalInt(GetModule(), vnbClones, vnbClones2); } } Voilà... Pour en faire apparaître un autre un peu plus tard (pour en avoir en stocke), tu ajoute après le CreateObject un DelayCommand pour retarder l'apparition (et tu n'oublies pas d'incrémenter ta variable) Ruse de sioux, en utilisant un DelayCommand, il faut derrière une commande et CreateObject n'en est pas une, il faut donc créer une fonction de création de créature et appeler celle-ci à la place du CreateObject (Rq : je l'ai fait dans mon module Boisperdu). Si c'est bien ça que tu veux et que tu n'arrives pas à le faire tout seul je te le ferai. _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) ![]() |
Revenir en haut | ![]() ![]() ![]() ![]() |
Heldar Seigneur ![]() Messages: 169 Localisation: France |
J'ai éssayé ton script Laxam mais ca me dit :v_cree_ud.nss(9): ERREUR : VARIABLE DEFINED WITHOUT TYPE
sinon par: Heldar a écrit : Et puis je me suis demander si il ne serait pas possible de faire en sorte qu'au bout d'un moment il en vienne un autre de pnj et puis qu'après les autres reviennent. Je pense que c'est possible mais moi Je voulais dire qu'au bout d'un moment ce soit une autre sorte de pnj qui sorte mais un nombre de fois défini avant que les autres reviennent.![]() ![]() _________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
NWScript :
void main() { int iUD = GetUserDefinedEventNumber(); object oZombiSpawn = GetNearestObjectByTag("tag_du_point_passage_de_creation"); location lSpawn = GetLocation(oZombiSpawn); int vMax = 10; // nombre d'apparition avant changement de PNJ int vMax2 = 5; //nombre d'apparition du deuxieme pnj avant changement int vnbClones = GetLocalInt(GetModule(), "vnbClones"); int vnbClones2 = GetLocalInt(GetModule(), "vnbClones2"); if ((iUD == 1007) && (vnbClones!=vMax)) { CreateObject(OBJECT_TYPE_CREATURE, "resrefdupnjcree", lSpawn); // tu incrementes de 1 ta variable vnbClones += 1; SetLocalInt(GetModule(), "vnbClones", vnbClones); if ( vnbClones == vMax ) { vnbClones2 = 0; SetLocalInt( GetModule(), "vnbClones2", vnbClones2 ); } } else if ((iUD == 1007 ) && ( vnbClones == vMax ) && ( vnbClones2 != vMax2 )) { CreateObject( OBJECT_TYPE_CREATURE, "resref_de_l'autre_pnj", lSpawn ); vnbClones2 += 1; SetLocalInt( GetModule(), "vnbClones2", vnbClones2 ); if ( vnbClones2 == vMax2 ) { vnbClones = 0; SetLocalInt( GetModule(), "vnbClones", vnbClones ); } } } Si tu veux que le changement ne se fasse qu'une fois : NWScript : void main() { int iUD = GetUserDefinedEventNumber(); object oZombiSpawn = GetNearestObjectByTag("tag_du_point_passage_de_creation"); location lSpawn = GetLocation(oZombiSpawn); int nDejaFait = GetLocalInt( GetModule(), "DejaFait" ); int vMax = 10; // nombre d'apparition avant changement de PNJ int vnbClones2 = GetLocalInt(GetModule(), "vnbClones"); if ((iUD == 1007) && ( (vnbClones2!=vMax) || ( nDejaFait == 1 )) { CreateObject(OBJECT_TYPE_CREATURE, "resrefdupnjcree", lSpawn); // tu incrementes de 1 ta variable vnbClones2 = vnbClones2 + 1; SetLocalInt(GetModule(), "vnbClones", vnbClones2); } else if ((iUD == 1007 ) && ( vnbClones2 == vMax ) && ( nDejaFait == 0 )) { CreateObject( OBJECT_TYPE_CREATURE, "resref_de_l'autre_pnj", lSpawn ); vnbClones2 = 0; SetLocalInt( GetModule(), "vnbClones", vnbClones2 ); SetLocalInt( GetModule(), "DejaFait", 1 ); } } /* warning: 1 unclosed parenthesis () */ _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Laxam Légende vivante ![]() Messages: 425 Localisation: Lyon |
Milles excuses, j'avais oublié les " autour de vnbClones dans les GetLocalInt et SetLocalInt...
_________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) ![]() |
Revenir en haut | ![]() ![]() ![]() ![]() |
Heldar Seigneur ![]() Messages: 169 Localisation: France |
Merci pour les scripts mais y'a un trucs que je pige pas (à part le script en général)
est-ce que dans tes scripts Klemmt les pnjs arreteront de se créer au bout d'un moment? _________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
oui, les pnj sont crées à l'infini, demande moi si tu veux que ce ne soit pas le cas.
_________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Heldar Seigneur ![]() Messages: 169 Localisation: France |
J'aimerais-bien que ça s'arrête effectivement. Merci.
_________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | ![]() ![]() ![]() |
Heldar Seigneur ![]() Messages: 169 Localisation: France |
En fait effectivement sert à rien. J'orai du dire:"En fait je voulais que se soit limiter." mais c'est pas grave; enfin je le dis parce que je suis un
![]() _________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
explique plus précisement ce que tu veux comme limitation :
les premiers apparaissent puis ensuite les suivants puis ca s'arrete les premiers apparaissent puis les suivants puis a nouveau les premiers puis ca s'arrete ....... _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Heldar Seigneur ![]() Messages: 169 Localisation: France |
La deuxième soluce.
_________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
NWScript : void main() { int iUD = GetUserDefinedEventNumber(); object oZombiSpawn = GetNearestObjectByTag("tag_du_point_passage_de_creation"); location lSpawn = GetLocation(oZombiSpawn); int vMax = 10; // nombre d'apparition avant changement de PNJ int vMax2 = 5; //nombre d'apparition du deuxieme pnj avant changement int vnbClones = GetLocalInt(GetModule(), "vnbClones"); int vnbClones2 = GetLocalInt(GetModule(), "vnbClones2"); int nDejaFait = GetLocalInt( GetModule(), "DejaFait" ); if ((iUD == 1007) && (vnbClones!=vMax) && ( ( nDejaFait == 0 ) || ( nDejaFait == 2 ) ) ) { CreateObject(OBJECT_TYPE_CREATURE, "resrefdupnjcree", lSpawn); // tu incrementes de 1 ta variable vnbClones += 1; SetLocalInt(GetModule(), "vnbClones", vnbClones); if ( vnbClones == vMax ) { SetLocalInt( GetModule(), "DejaFait", nDejaFait+1 ); vnbClones2 = 0; SetLocalInt( GetModule(), "vnbClones2", vnbClones2 ); } } else if ((iUD == 1007 ) && ( vnbClones == vMax ) && ( vnbClones2 != vMax2 ) && ( nDejaFait == 1 )) { CreateObject( OBJECT_TYPE_CREATURE, "resref_de_l'autre_pnj", lSpawn ); vnbClones2 += 1; SetLocalInt( GetModule(), "vnbClones2", vnbClones2 ); if ( vnbClones2 == vMax2 ) { vnbClones = 0; SetLocalInt( GetModule(), "DejaFait", nDejaFait+1 ); SetLocalInt( GetModule(), "vnbClones", vnbClones ); } } } _________________ ... |
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