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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Le Blaireau
Chevalier
Inscrit le: 17 Jan 2005
Messages: 71
Répondre en citant
Posté le : 16/02/2005 16:16:36 Sujet du message : Chaise encore la chaise

Je sais que ce sujet a été répété des dizaines de fois, mais y en a comme moi qui ont besoin d'avoir à ce faire expliquer en profondeur car ça fonctionne pas !!Sad

Dans ma zone, il y a un PNJ que je veux assis en permanence sur un objet (ici l'objet est un bloc de glace) Pour y faire asseoir un PJ, pas de prob ça, j'y arrive.

Donc je veux qu'à l'arrivé du PJ dans la zone, le PNJ soit déjà assis et y reste.

J'ai vu les scripts proposés dans d'autre post, mais ce que je comprends pas dans tout ça c'est (o chaise)....Dans le script. Dois-je remplacer le (o chaise) par le tag du bloc de glace? Que dois-je faire??...Y a t'il autre chose a changé sur le PNJ et le bloc de glace??

Merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
grenwald
Novice
Inscrit le: 24 Jan 2003
Messages: 11
Répondre en citant
Posté le : 16/02/2005 16:32:21 Sujet du message :

Si tu veux qu'on explique un script, n'hésite pas à poster le code de celui que tu utilise. En plus, sur les scripts de chaises, il doit exister plusieur versions avec à chaque fois des petite nuances.
Mais généralement, tu dois avoir quelque chose du genre
Code :
object oChaise = GetNearestObjectByTag ("TAG_DE_LA_CHAISE");


et c'est ce fameux TAG_DE_LA_CHAISE qu'il faut que tu modifie en fonction de tes beoins.
après l'objet oChaise correspondra (pour la durée du script) à ce qu'il aura trouvé avec la fonction ci-dessus
_________________
Un troll???? où ça?........ oups, pardon, je ne l'avais pas vu
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger MSN Messenger Ignorer l'utilisateur
 
Le Blaireau
Chevalier
Inscrit le: 17 Jan 2005
Messages: 71
Répondre en citant
Posté le : 17/02/2005 03:15:49 Sujet du message :

Bon...Tout dabord merci:smile: car maintenant mon PNJ s'assoit sur le bloc de glace en question avec l'aide du script ci dessous...Mais quand je parle au Pnj, il se lève mais ne se rassoit pas... Comment faire pour quil se ressoit ???

Merci


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);
}
}
}
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
grenwald
Novice
Inscrit le: 24 Jan 2003
Messages: 11
Répondre en citant
Posté le : 17/02/2005 10:42:11 Sujet du message :

pour que ton PNJ fasse des acvtions à la fin d'un dialogue (dans ton cas s'assoir sur une chaise) il faut que tu modifie deux scripts dans les propriétés du dialogue, onglet "fichier actuel"
- 2Normales => s'éxécute quand un dialogue se fini normalement (avec la phrase "FIN DIALOGIE")
- abandon => quand le dialogue est iterronpu par un événement externe

PS : quand tu post un script, n'hésite pas a mettre les balises nwscript, ca sera tout de suite plus lisible Wink
_________________
Un troll???? où ça?........ oups, pardon, je ne l'avais pas vu
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger MSN Messenger Ignorer l'utilisateur
 
Le Blaireau
Chevalier
Inscrit le: 17 Jan 2005
Messages: 71
Répondre en citant
Posté le : 17/02/2005 13:21:53 Sujet du message :

Si j'ai bien compris, dans le dialogue, dans l'onglet fichier actuel, a abandon(si j'arrete la discution en m'éloignant par exemple)je dois mettre le meme script que j'ai mis au PNJ pour le faire assoir au départ. Si c'est le cas sa ne fonctionne pas....Sinon quel script je dois placé a cette endroit svp:???:

Merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jaheira 007
Seigneur
Inscrit le: 24 Juin 2004
Messages: 223
Répondre en citant
Posté le : 17/02/2005 19:56:41 Sujet du message :

Essaye de placer ton script dans le OnHeartBeat de ton PNJ.

Dans mon mod, j'ai utilisé ce script:

NWScript :
void main()
{
  object oChair = GetNearestObjectByTag( "Tag_de_ta_chaise" );
  if ( ( !IsInConversation( OBJECT_SELF ) ) && ( GetIsObjectValid( oChair ) ) )
    ActionSit( oChair );
}
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.


J'ai placé le script ci-dessus dans le OnSpawn ET dans le OnHeartBeat de mes PNJ. De ce fait, ils sont déjà assis sur leur chaise quant le PJ arrive, et ils se rassoient après la discussion.

Donc essaye de faire de même avec ton script!
_________________
La nature reprendra ses droits ici, aprés notre passage.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Le Blaireau
Chevalier
Inscrit le: 17 Jan 2005
Messages: 71
Répondre en citant
Posté le : 19/02/2005 16:29:55 Sujet du message :

Very Happy Merci...ca fonctionne Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Valmoer
Novice
Inscrit le: 01 Sep 2004
Messages: 19
Répondre en citant
Posté le : 27/02/2005 00:22:36 Sujet du message :

C'est toujours embêtant de recourir au onHeartBeat... ca bouffe trop de ressources à force, non ?

On avait identifié toutes les situations dans lesquelles le PNJ avait besoin de se rasseoir ... pourquoi utiliser le heartbeat ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
omega
Grand Chevalier
Inscrit le: 09 Jan 2004
Messages: 116
Répondre en citant
Posté le : 27/02/2005 10:54:53 Sujet du message :


Citation :
On avait identifié toutes les situations dans lesquelles le PNJ avait besoin de se rasseoir ... pourquoi utiliser le heartbeat ?
Parceque si tu as identifié 3 situations, ca fait 3 scritps, alrs que le OnHeartBeat, il n'en nececite que 1 ! donc, moins de ressources prises !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 27/02/2005 11:26:27 Sujet du message :


omega a écrit :
3 situations, ca fait 3 scripts
Attend, ces trois evennements étant liés au même PNJ,
on aura à chaque fois objet oPNJ = OBJECT_SELF;
donc ce sera le même script à chaque fois, non???

ça serait le PJ, d'accord, mais pour un PNJ, je vois pas...
_________________
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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Valmoer
Novice
Inscrit le: 01 Sep 2004
Messages: 19
Répondre en citant
Posté le : 27/02/2005 13:18:22 Sujet du message :

De plus, il ne faut pas confondre espace disque et ressources mémoire.


*Mode "La Minute du professeur Valmoer" ON*

Dans le cas même où cela nécessiterait 3 scripts différents, les resources mémoires seraient plus importantes avec le onHeartBeat. Je m'explique : les 3 scripts serait constitués de suites de caractères ( a-z, 1-9, { } = * et autres) qui occuperaient de l'espace disque sur votre disque dur, c'est-à-dire qu'il auraient besoint d'être stockés. Les 3 scripts occuperaient donc plus d'espace disque qu'un seul correspondant au onHeartBeat.

Cependant, la finalité d'un script est d'être éxécuté. Ceci est fait durant les parties à divers moments : lorsqu'on entre quelque part (onEnter), ou lorsqu'on en sort (onExit), lorsqu'on active un objet (onItemActivated)... et également à des intervalles très courts (onHeartBeat; 6 secondes, je crois). Tout script placé dans le onHeartBeat sera donc exécuté à de multiples reprises. Toute éxécution mobilisant des ressources mémoires (de la RAM) , un script d'onHeartBeat demandera sur un temps défini, plus de ressources que les trois autres réunis, qui eux, ne se déclenchent qu'en des moments prédéfinis.

Donc, les 3 scripts auronts besoin de plus d'espace disque (disque dur) mais de moins de ressources mémoire (RAM).

*mode "La Minute du professeur Valmoer" OFF*

Voila pourquoi je rechigne à utiliser les onHeartBeat quand je peux, même de manière plus compliquée, recourir à d'autres scripts.
 
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 23.37ms