
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 01/05/2025 05:48:46
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 |
Panda Fou Grand Chevalier Messages: 101 Localisation: Qui me parle ? |
Salut,
Je voudrais savoir si on peut faire qu'un pnj soit alonger sur le sol, agonisant et dès que le pj apperçois le pnj, il court dans sa direction et commence un dialogue. Et dès que le dialogue est terminé, le pnj meurt. C'est possible ??? Merci de me répondre. -Panda Fou- _________________ Suis-je fou ? -Panda Fou- |
Revenir en haut | ![]() ![]() ![]() |
kiky.le.magnifique Homme très gay ![]() Messages: 907 Localisation: Camping de la nation martienne... |
Je suis pas sûr de moi mais je pense que :
Dans le OnPerception du PNJ Agonisant : NWScript :
void main() { object oPJ = GetLastPerceived(); object oPNJ = GetObjectByTag("Tag_du_PNJ_agonisant"); //on annonce qui est quoi if (GetIsPC(oPJ)&&GetLastPerceptionSeen()) //si ton perso agonisant voit un perso, qui est un perso jouable { AssignCommand(oPJ, ClearAllActions()); //le perso jouable arrete ce qu'il faisait SetCommandable(FALSE,oPJ); //il n'est plus controlable par le joueur AssignCommand(oPJ, ActionForceMoveToObject(oPNJ, TRUE, 1.0)); //il court vers le perso agonisant AssignCommand(oPNJ, ActionStartConversation(oPJ, "nom du dialogue")); } } En action conséquente, à la fin du dialogue : NWScript :
void main() { object oPJ = GetLastPerceived(); object oPNJ = GetObjectByTag("Tag_du_PNJ_agonisant"); //on annonce qui est quoi SetCommandable(TRUE,oPJ); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(1000, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL), oPNJ); //on acheve l'agonisant } peut être, éventuellement... ![]() _________________ 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 | ![]() ![]() ![]() ![]() |
Panda Fou Grand Chevalier Messages: 101 Localisation: Qui me parle ? |
Merci de m'avoir répondu aussi vite mais...
Le problème c'est que dès que le pnj agonisant voit mon pj, il va le voir alors que normalement c'est le contraire, puis le dialogue se met en route et quand le pnj meurt, le pj est toujours sans contrôle. Voilà. Est-ce que tu peux (ou quelqu'un d'autre) arranger ça SVP car j'y connais rien au script. Grand merci. _________________ Suis-je fou ? -Panda Fou- |
Revenir en haut | ![]() ![]() ![]() |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Je vais essayer une autre méthode...
1. Créer un PNJ dont le nombre de points de vie est de 35 2. Lui donner le Tag "Bavard" 3. Lui mettre le script suivant dans son script SPAWN pour lui infliger des dégats et qu'il soit réellement agonisant... NWScript :
// On SPAWN void main() { ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(32, DAMAGE_TYPE_FIRE), OBJECT_SELF); } 4. C'est là que les chose se complique mais cela fonctionne Ce script est à placer dans son heartBeat... NWScript :
// On HeartBeat void main() { object oPC = GetNearestCreature ( CREATURE_TYPE_PLAYER_CHAR , PLAYER_CHAR_IS_PC ); if (GetLocalInt(GetModule(), "resteassis") < 10) { PlayAnimation (ANIMATION_LOOPING_DEAD_BACK, 1.0, 7.0); } else if (GetLocalInt(GetModule(), "resteassis") == 10) { ClearAllActions(); SpeakString("a..attendez..."); SetLocalInt(GetModule(), "resteassis", 20); } else if (GetLocalInt(GetModule(), "resteassis") > 10) { ClearAllActions(); ActionForceMoveToObject(oPC, FALSE); ActionStartConversation(oPC); } } 5. Lui donner un dialogue et mettre le script suivant dans "Fichier actuel" complètement à droite des onglets... NWScript :
// dans "normales" et "abandon" void main() { object oDeath = GetObjectByTag("Bavard"); ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectDeath(TRUE), oDeath); } 6. Fermer le PNJ et créer un déclencheur à proximité mais pas trop près (à la limite de l'audition d'un PJ) 7. Placer le script suivant dans le OnEnter du déclencheur NWScript :
void main() { object oPC = GetEnteringObject(); if (GetIsPC(oPC)) {SetLocalInt(GetModule(), "resteassis", 10); FloatingTextStringOnCreature("J'entend une plainte...", oPC); DestroyObject(OBJECT_SELF,1.0); } } Je l'ai testé... cela fonctionne... Le PNJ met un heartbeat avant de se traîner vers le joueur (donc pas trop près de lui). _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | ![]() ![]() ![]() ![]() |
Panda Fou Grand Chevalier Messages: 101 Localisation: Qui me parle ? |
Trop class !!!
Merci Longbow, ça marche très bien. ![]() _________________ Suis-je fou ? -Panda Fou- |
Revenir en haut | ![]() ![]() ![]() |
Panda Fou Grand Chevalier Messages: 101 Localisation: Qui me parle ? |
En fait j'ai un problème: le pnj meurt avant que le dialogue finisse et donc le dialogue stop.
_________________ Suis-je fou ? -Panda Fou- |
Revenir en haut | ![]() ![]() ![]() |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
As-tu bien placé le script avec EffectDeath est bien intégré dans le dialogue ni dans "Conditions d'exectution" ni dans "Actions Conséquentes" mais bien dans "Fichiers Actuels"...
Ainsi ce script ne se déclenche qu'à la fin du dialogue soit parceque le dialogue est eini soit parce que la discussion a été abandonnée... Donc en aucune manière au milieu du dialogue... Vérifie toutes les cases "Actions Conséquentes" _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | ![]() ![]() ![]() ![]() |
Panda Fou Grand Chevalier Messages: 101 Localisation: Qui me parle ? |
J'ai réussi à faire ce que je voulais, merci et désolé de ne pas avoir répondu plus tôt (j'avais oublié
![]() _________________ Suis-je fou ? -Panda Fou- |
Revenir en haut | ![]() ![]() ![]() |


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