La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 21/09/2024 18:20:05


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
nyko30
Novice
Inscrit le: 11 Sep 2003
Messages: 16
Répondre en citant
Posté le : 11/09/2003 01:15:55 Sujet du message : PNJ qui vient vers joueur HELP

Bonjour, besoin d'un coup de main concernant les PNJ

comment faire pour que quand le joueur s'approche (par exemple à - de 10m d'un PNJ, ce PNJ vienne de lui-meme aborder le joueur et donc lancer un dialogue ??

merciiiii
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 11/09/2003 07:42:26 Sujet du message :

Il y a un tutorial la dessus quelque part.

En résumé:

1 - modifie le OnSpawn du NPC (sauve sous un autre nom sinon tous tes NPC agiront de même): Décommente la ligne qui contient SetSpawnInCondition (NW_FLAG_PERCIEVE_EVENT); (c.a.d. enlève les 2 / de début de ligne)

NOTE: je n'ai pas fait de faute de frappe, c'est Bioware qui s'est planté: il faut bien écrire PERCIEVE à cet endroit là, alors que l'évènement est OnPerceive !!!

2 - Dans le fichier dialogue de ton NPC, va à la 1ère ligne ou il parle avec le PC. Dans action conséquentes, ajout le script suivant :
Code :
void main()
{
SetLocalInt(GetPCSpeaker(), "Dlg_Init_" + GetTag(OBJECT_SELF), TRUE);
}

3 - Dans le OnUserDefined de ton NPC, mets le script suivant:

void main()
{
int nEvent = GetUserDefinedEventNumber();
// 1002 est l'évènement qui coerrespond à On Perceive
if (nEvent == 1002)
{
// récupère le PC que le NPC voit
object oPC = GetLastPerceived();

// teste si oPC est bien un PC, si la variable de conversation
// est FALSE (cf 2 ci dessus) et si le NPC n'est pas déjà en conversation
if (GetIsPC (oPC) && GetLocalInt (oPC, "Dlg_Init_" + GetTag(OBJECT_SELF)) == FALSE && !IsInConversation (OBJECT_SELF))
{
// efface les actions en cours du NPC
ClearAllActions();

// efface les actions de la liste (queue dans le NWN Lexicon) d'action du PC
AssignCommand (oPC, ClearAllActions());

// Déplace le NPC vers le PC
ActionMoveToObject (oPC);

// Démarre la conversation avec le PC
ActionStartConversation (oPC);
} // fin du if (GetIsPC....
} // fin du if (nEvent...
}



ATTENTION: Cela ne fonctionne que si le PC n'est pas en vue du NPC lorsque le NPC apparait (c.a.d. que la distance entre PC et NPC n'est pas inférieure à la distance de détection du NPC. Cette distance peut être modifiée)


PS: désolé mais je n'arrive toujours pas à formater les scripts avec le BBCode. je mets pourtant
NWScript :
avant et
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.
après, le BBCode est activé, mais .... mystère de l'informatique
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 11/09/2003 08:15:34 Sujet du message :

Pour ma part j'utilise une autre méthode, peut-être plus simple, à toi de voir.

Celle-ci fait que lorsque le PNJ aperçoit le joueur, il avance vers lui et lance le dialogue.

Tu mets ce script dans le OnPerception du PNJ :
Code :
object oPC = GetFirstPC(); //Attention, ça ne marche que pour les modules pour un seul joueur, sinon ça risque de cafouiller un peu

void main()
{
if (GetIsPC(oPC) == TRUE) // là on vérifie que le personnage aperçut par le PNJ est bien le joueur
    {
    ActionMoveToObject (oPC, FALSE, 1.0); // tu peux changer le FALSE par un TRUE si tu veux que le PNJ court vers le joueur au lieu de marcher
    AssignCommand (OBJECT_SELF, ActionStartConversation (oPC, "nom de ton dialogue", TRUE); // lancement de la conversation)
    }
}


Et normalement ça devrait marcher (je ne peux pas tester, je suis au bureau Wink )



(Phil : je ne sais pas pourquoi les balises [ nwscript ] ne marchent pas, il faut voir ça avec l'admin en chef Wink, mais tu peux utiliser à la place les balises [ code ])



Je déplace dans le forum Script où ça a plus sa place Wink
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 11/09/2003 08:31:55 Sujet du message :

Test

Code :

void main()


OK, ça marche,

Merci !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14065
Localisation: Quadran Alpha
Répondre en citant
Posté le : 11/09/2003 10:31:28 Sujet du message :

Pour ça ? => [nwscript][/nwscript]

Il faudrait que j'ai le temps de créer une source pour mettre en surbrillance certains mots clefs du NWScript..
_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 11/09/2003 10:39:01 Sujet du message :

non, ça marche avec [code][/code -- je n'ai pas mis le dernier ] pour que cela apparaisse bien

Mais ça ne marche pas avec [nwscript][/nwscript]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14065
Localisation: Quadran Alpha
Répondre en citant
Posté le : 11/09/2003 10:46:10 Sujet du message :

Oui Smile car j'ai pas encore trouvé un highligther de script pour ça
_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
nyko30
Novice
Inscrit le: 11 Sep 2003
Messages: 16
Répondre en citant
Posté le : 11/09/2003 11:38:38 Sujet du message : ca marche pas :(:(:(

Désolé les gars, mais que j'essaie une ou les 2 propositions, ca marche toujours pas .....snifffff

un peu d'aide ? thx
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 11/09/2003 13:20:16 Sujet du message :

J'avoue que je n'ai pas testé celui que j'ai donné ; je voulais le faire ce midi mais je n'ai pas eu le temps...

Je vérifie ce soir (j'ai justement un cas comme ça à mettre dans mon module)...
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 11/09/2003 15:33:57 Sujet du message :

Mon exemple fonctionne, mais le mieux serait que tu ailles voir le tutorial sur NWNvault.

Malheureusement je ne pas pas t'indiquer le lien car je ne peux plus accéder au site NWNvault Mad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 11/09/2003 15:58:27 Sujet du message :

Normalement le script de Cassin devrait fonctionner (d'ailleurs le lexicon indique la même méthode).

1 - Vérifie que le PC est bien hors du cercle de perception du NPC quand il entre dans la zone (sinon l'évènement OnPerceive ne se déclenche pas)

2 - Vérifie le titre de ton dialogue (l'éditeur est très pointilleux sur les minuscules/majuscules)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 11/09/2003 16:02:20 Sujet du message :

Ah également,

dans le script de Cassin, il me semble que le object Code :
oPC=GetFirstPC();
devrait être placé dans le void main().
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 11/09/2003 16:09:21 Sujet du message :

dans mon exemple, remplace
Code :

object oPC = GetLastPerceived();


par
Code :

object oPC = GetFirstPC();


En effet avec GetLastPerceived s'il y a d'autre NPC dans le coin, ça peut planter.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 11/09/2003 17:59:41 Sujet du message :

Bon je viens de tester, ça marche Wink

Remplace le GetFirstPC(); par GetLastPerceived(); pour voir si ça fonctionne mieux, et vire le AssignCommand (n'oublie donc pas de retirer une paranthèse à la fin), dans le script que j'ai testé ça marche sans.

Mais normalement c'est bon... Si tu as bien mis le script dans le OnPerception du PNJ, comme l'a dit Phil vérifie que ton joueur n'est pas à portée de vue du PNJ, car l'évènement OnPerception ne se déclenche qui quelque chose entre OU sort du champ de vue du PNJ, donc si ton joueur y est déjà, ça ne marchera pas.
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 12/09/2003 07:29:35 Sujet du message :

Et si nos explications sont insuffisantes, Smile j'ai retrouvé le tutorial ....écrit par D.Gaider himself et traduit en Français par Jawrill.

En fait il est sur ce site, à l'adresse suivante


[http]
 
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 32.697ms