La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 21:41:28
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 |
nyko30 Novice Messages: 16 |
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 | |
phil76 Héros Messages: 262 Localisation: Rouen |
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 : après, le BBCode est activé, mais .... mystère de l'informatique avant et |
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
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 ) (Phil : je ne sais pas pourquoi les balises [ nwscript ] ne marchent pas, il faut voir ça avec l'admin en chef , mais tu peux utiliser à la place les balises [ code ]) Je déplace dans le forum Script où ça a plus sa place _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
phil76 Héros Messages: 262 Localisation: Rouen |
Test
Code : void main() OK, ça marche, Merci ! |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
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 | |
phil76 Héros Messages: 262 Localisation: Rouen |
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 | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Oui car j'ai pas encore trouvé un highligther de script pour ça
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
nyko30 Novice Messages: 16 |
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 | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
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 | |
phil76 Héros Messages: 262 Localisation: Rouen |
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 |
Revenir en haut | |
phil76 Héros Messages: 262 Localisation: Rouen |
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 | |
phil76 Héros Messages: 262 Localisation: Rouen |
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 | |
phil76 Héros Messages: 262 Localisation: Rouen |
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 | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Bon je viens de tester, ça marche
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 | |
phil76 Héros Messages: 262 Localisation: Rouen |
Et si nos explications sont insuffisantes, 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 | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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