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 00:28:38


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 04/02/2005 15:42:43 Sujet du message : De plus en plus forts

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


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);
    }
}
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 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 Boulet ! et moi pas savoir comment faire. Quelqu'un peut m'aider?Very Happy
_________________
Heldar qui tue tous les monstres du soir.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 04/02/2005 15:59:08 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 05/02/2005 12:39:35 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 05/02/2005 13:44:54 Sujet du message :

C'est peut-être parce que tes questions sont compliquées que personne répond Laughing
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);
}
}
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.


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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 05/02/2005 14:29:35 Sujet du message :

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 Boulet ! et moi pas savoir comment faire. Quelqu'un peut m'aider?Very Happy
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 05/02/2005 15:07:12 Sujet du message :

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



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 () */
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 05/02/2005 15:17:05 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 05/02/2005 16:36:32 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 05/02/2005 16:38:16 Sujet du message :

oui, les pnj sont crées à l'infini, demande moi si tu veux que ce ne soit pas le cas.
_________________
...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 05/02/2005 19:49:45 Sujet du message :

J'aimerais-bien que ça s'arrête effectivement. Merci.
_________________
Heldar qui tue tous les monstres du soir.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 11/02/2005 22:55:09 Sujet du message :

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 Boulet !
_________________
Heldar qui tue tous les monstres du soir.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 12/02/2005 09:22:46 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 12/02/2005 16:41:36 Sujet du message :

La deuxième soluce.
_________________
Heldar qui tue tous les monstres du soir.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 12/02/2005 19:50:10 Sujet du message :

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 );
    }
  }
}
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 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 95.387ms