La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 25/04/2024 23:13:03


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
scalam
Voyageur
Inscrit le: 31 Mar 2004
Messages: 2
Répondre en citant
Posté le : 31/03/2004 14:21:56 Sujet du message : faire s'assoir un pnj sur une chaise

J'aimerai savoir comment faire pour qu'un Pnj s'assoi sur une chaise, je sais que ce n'est pas possible qu'il soit assis des le debut alors ce que je voudrai savoir c'est comment faire pour pour que au lancement du module le pnj aille s'assoir sur la chaise
_________________
cul qui gratte le soir, doigt qui pue le matin!!!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Asmo
Voyageur
Inscrit le: 29 Oct 2003
Messages: 3
Répondre en citant
Posté le : 31/03/2004 15:23:17 Sujet du message : faire assoir un pnj

Tient en espérant que cela puisse te servir.

Scripts servant à faire assoir un joueur ou un pnj sur terre ou sur un banc, une chaise, un tonneau etc...


Assoir un Joueur sur une chaise, banc, ect :
NWScript :
void main()
{
  object oUtilisateur = GetLastUsedBy (); // l'utilisateur d l'objet
  object oChaise;
  if (GetIsPC(oUtilisateur)) // si l'utilisateur est un joueur (PC)
  {
      oChaise = GetNearestObjectByTag ("Chaise", oUtilisateur, 0);
// Chaise (ou ce que vous voudrez) est le tag que doit avoir l'objet; une chaise, banc, tabouret, ect. Du moins, avec GetNearestObjectByTag() le joueur essayera d'aller s'assoir sur l'objet le plus proche et portant ce tag.

      if (GetIsObjectValid(oChaise) && !GetIsObjectValid (GetSittingCreature (oChaise)))

      {
          AssignCommand (oUtilisateur, ActionSit (oChaise)); // Assit le joueur sur l'objet Chaise
      }
  }
}
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.

ATTENTION : Ce script doit être dans le OnUsed de l'objet.


Assoir un PNJ (personnage non-joueur) sur une chaise, banc, ect :

* Ce script est déjà présent dans le jeu sous le nom de NW_C2_SITTING sous All Ressources
NWScript :
void main()
{

  if (!GetIsInCombat() && !IsInConversation(OBJECT_SELF))
  if (GetCurrentAction() != ACTION_SIT)
  {
      ClearAllActions();
      int i = 1;
      // trouver la premiere chaise de libre
      object oChaise = GetNearestObjectByTag("Chaise", OBJECT_SELF,i);
      int bFoundChair = FALSE;
      while (bFoundChair == FALSE && GetIsObjectValid(oChaise) == TRUE)
      {
        // Cette chaise est libre
        if (GetIsObjectValid(GetSittingCreature(oChaise)) == FALSE)
        {
            bFoundChair = TRUE;
            ActionSit(oChaise); // le NPJ s'assoit
        }
        else // pas de chaise libre, alors on en cherche une autre
        {
            i++;
            oChaise = GetNearestObjectByTag("Chaise", OBJECT_SELF,i);
        }
      }
      if (bFoundChair == FALSE) // on a trouver aucune chaise, objet ou s'assoir
      {
          ClearAllActions();
          ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD);
      }
  }
}
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.

ATTENTION : Ce script doit être dans le OnHeartBeat de l'objet si vous voulez qu'il se rassoit après un combat ou une discution.

Voila deux scripts de base très utile !


Maintenant, voici comment faire assoir un joueur sur le sol. Le script doit être placer dans le OnUsed d'un objet :
NWScript :
void main()
{
  // joueur qui va executer l'animation
  object oPC=GetLastUsedBy();
  // type d'animation; ici c'est s'assoir sur le sol
  int nAnimation = ANIMATION_LOOPING_SIT_CROSS;
  // vitesse d'execution de l'animation; ici normale
  float fVitesse = 1.0;
  // duree, en seconde, de l'animation; ici le joueur va rester au sol 1000 sec ou jusqu'a ce qu'il se releve
  float fDuree = 1000.0;

  AssignCommand(oPC, ActionPlayAnimation(nAnimation,fVitesse,fDuree));
  // Ici on assigne au joueur oPC l'action de d'executer l'animation nAnimation pour fDuree de seconde

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

Pour faire assoir un PNJ, il suffit de remplacer le object oPC=GetLastUsedBy() ; par object oPC=OBJECT_SELF ; et de mettre le tout dans son OnHeartBeat.

[Edit d'Alenn Tax :] Il y a sur ce forum une balise <nwscript>. Merci de l'utiliser.[/Edit]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 31/03/2004 15:24:43 Sujet du message :

Hum, hum...

erreur de frappe... sorry...
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 03/04/2004 10:24:29 Sujet du message :

Pourquoi ne pas te donner directement l'adresse du site, parce que tu n'as pas l'air de connaître sinon tu n'aurais pas poser cette question... Wink
[http]

Voili voilou. Il y a énormément de scripts (141) prêts à l'emploi, bien expliqués et super utiles... Cool
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Psychopompos
Seigneur
Inscrit le: 10 Fév 2008
Messages: 209
Localisation: Ici
Répondre en citant
Posté le : 18/04/2010 09:52:54 Sujet du message : Re: faire assoir un pnj


Asmo a écrit :

Assoir un PNJ (personnage non-joueur) sur une chaise, banc, ect :

* Ce script est déjà présent dans le jeu sous le nom de NW_C2_SITTING sous All Ressources
NWScript :
void main()
{

  if (!GetIsInCombat() && !IsInConversation(OBJECT_SELF))
  if (GetCurrentAction() != ACTION_SIT)
  {
      ClearAllActions();
      int i = 1;
      // trouver la premiere chaise de libre
      object oChaise = GetNearestObjectByTag("Chaise", OBJECT_SELF,i);
      int bFoundChair = FALSE;
      while (bFoundChair == FALSE && GetIsObjectValid(oChaise) == TRUE)
      {
        // Cette chaise est libre
        if (GetIsObjectValid(GetSittingCreature(oChaise)) == FALSE)
        {
            bFoundChair = TRUE;
            ActionSit(oChaise); // le NPJ s'assoit
        }
        else // pas de chaise libre, alors on en cherche une autre
        {
            i++;
            oChaise = GetNearestObjectByTag("Chaise", OBJECT_SELF,i);
        }
      }
      if (bFoundChair == FALSE) // on a trouver aucune chaise, objet ou s'assoir
      {
          ClearAllActions();
          ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD);
      }
  }
}
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.

ATTENTION : Ce script doit être dans le OnHeartBeat de l'objet si vous voulez qu'il se rassoit après un combat ou une discution.
Bonjour.
En cherchant comment faire un PNJ sur une chaise je suis tombé sur ce topic mais j'ai un peu galéré en raison de l'imprécision de ce message. J'ai finalement trouvé comment faire :
- placer une chaise et un PNJ ;
- définir la chaise comme "utilisable" ;
- lui donner le tag NW_CHAIR ;
- définir le script x0_o2_use_chair comme "OnUsed" ;
- définir le script NW_C2_SITTING comme OnHeartBeat du PNJ.
Pour s'asseoir, il faut juste que le PNJ ait la place d'accéder à la chaise.

A propos du tag, voici un extrait du script :

NWScript :
oChair = GetNearestObjectByTag("NW_CHAIR", OBJECT_SELF,i);
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.


Le tag de la chaise doit être identique à celui indiqué entre guillemets dans la parenthèse, NW_CHAIR est juste le nom utilisé dans la version non modifiée du script. Attention, la ligne GetNearestObjectByTag... apparaît deux fois dans le script.
_________________
"Oh Destin cruel! Cruel, cruel cruel Destin! Oh cruauté du destin!"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
zelmir1337
Novice
Inscrit le: 20 Avr 2010
Messages: 5
Répondre en citant
Posté le : 20/04/2010 09:39:04 Sujet du message :

Bonjour, je suis nouveau sur ce forum et je débute avec l'editeur nwn2.

Voici mon problème.

J'ai essayé plusieur scripte pour faire en sorte que le joueur puisse s'assoire mais cela ne marche qu'a moitié, quand je clique sur la chaise mon personnage s'assoi mais a coté de la chaise jamais dessu. mon souci est que je ne trouve pas de quoi le problème peu venir.

Alors si quelqun pourai m'eclairer sur ce sujet je lui en serais trés reconnaissant.
Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Psychopompos
Seigneur
Inscrit le: 10 Fév 2008
Messages: 209
Localisation: Ici
Répondre en citant
Posté le : 20/04/2010 17:09:22 Sujet du message :

Aucune idée d'explication, mais ici tu es dans la section dédiée aux scripts de NWN1. Wink
La section des scripts de NWN2 est là : [http]
_________________
"Oh Destin cruel! Cruel, cruel cruel Destin! Oh cruauté du destin!"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 20/04/2010 20:56:19 Sujet du message :

Je déplace le sujet dans le bon forum, et j'ajoute au passage que cette question a été posée une trentaine de fois : une recherche aurait sûrement donné un résultat probant Cool
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 36.072ms