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 20:55:27
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 |
Djezebel Héros Messages: 252 |
Bonsoir !
Aujourd'hui je nous plonge dans le monde merveilleux des psychopathes... Notre PJ (ou groupe) décide de visiter un asile. Là, il tombe sur un homme restant dans son coin, gromelant certaines phrases incompréhensibles. Il s'approche quelque peu et soudain, l'interné, qui était jusqu'à présent calme, se jette furieusement sur lui. Le PJ répond également par la violence, mais au premier coup, le "fou" s'en retourne dans son coin, tout chétif en implorant "pas taper! pas taper !". Oui, je sais, c'est moi qui vais passer pour une dingue avec ce script, mais ce n'est pas grave, j'assume. Dans cette scène je teste avec : - un PNJ témoin (faction populace avec aucun script) - Un PNJ "Fou" ( faction populace aussi !) Dans le "OnPerception" de notre ami, j'ai mis : NWScript :
void main() { object oPC = GetLastPerceived(); if (GetIsPC(oPC)) { SpeakString(""); SetIsTemporaryEnemy(oPC, OBJECT_SELF, TRUE, 5.0 ); ActionAttack(oPC); } } Et dans le OnDamaged : NWScript :
void main() { ClearAllActions(TRUE); object oPC = GetLastDamager(); SetIsTemporaryNeutral(oPC, OBJECT_SELF, FALSE); SpeakString(""); } J'ai enlevé les scripts du OnPhysicalAttack et OnSpellCastAt Au début, notre fou se jette effectivement sur le pauvre joueur. Le Fou est "rouge" (hostile) et le PNJ témoin est "bleu" (neutre). Puis, le fou attaque et le PJ réplique... Et là... c'est le drame ! Le PNJ témoin devient hostile et le fou le reste. Comment faire pour que notre joueur ne se fasse pas sauter dessus par toute la population parce qu'il a repoussé un malade mentale qui lui sautait dessus ? Merci de votre attention ! Dernière édition par Djezebel le 06/01/2006 11:09:04; édité 1 fois
|
Revenir en haut | |
Khorgan Ecuyer Messages: 67 |
Salut
Je ne suis vraiment pas doué en script (il suffit de voir mes autres post pour s'en rendre compte ) mais ne suffirait-il pas que tu crées une faction spécifique pour ton "fou" ? Ainsi quand ton pj l'attaque, la faction populace ne devrait pas réagir. Enfin je dis peut-être une bétise mais il me semble que ça devrait fonctionner. |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Salut Djezebel, tu vas croire que je te traque !
En fait la solution est simple, pour que le PNJ témoin n'attaque pas le joueur, il faut que tu commentes la ligne suivante du script onSpawn de ton "fou" : NWScript :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.
devient : NWScript :
// SetListeningPatterns(); Ensuite, sur le script OnDammaged de ton fou : Mets cette ligne : NWScript :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.
au lieu de : NWScript :
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. Cela devrait marcher. Je n'ai pas testé mais je pense que c'est bon. |
Revenir en haut | |
Djezebel Héros Messages: 252 |
Je pourrais effectivement faire une faction spéciale : ça ferait que le PNJ et le PJ se voient en hostile tout en étant neutre pour les autres factions.
Le "problème" c'est que je veux que le PNJ soit de base "neutre", puis devienne "hostile" pour redevenir dès qu'on le frappe "neutre". C'est là toute la difficulté de la chose ! Et, qui plus est, il ne faut pas que ce soit le PJ qui devienne hostile envers toute la faction du fou. Donc pour résoudre la dernière partie, c'est possible effectivement de faire une nouvelle faction, mais j'ignore si ce ne serait pas possible de faire autrement... (par exemple de passer le "fou" en hostile pendant un laps de temps assez cout) Voilà, si vous avez des idées... -- EDIT --- Citation : Salut Djezebel, tu vas croire que je te traque ! Non non, je pense juste qu'on fréquente beaucoup ce forum
Merci pour les scripts, je teste ! |
Revenir en haut | |
Djezebel Héros Messages: 252 |
Le SurrenderEnemy() fonctionne impec !
(on en apprend tous les jours avec les fonctions) Par contre, le PNJ teste devient tout de même hostile, même en commentant le SetListeningPattern(); |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Laisse tomber le SetListeningPattern, cela m'avait provoqué une fois l'effet recherché, mais je pense après coup que cela devait être un bug.
Par contre : Remplace le NWScript :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.
par NWScript :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.
avec cet include au début : NWScript :
#include "x0_i0_partywide" Cela n'est pas entièrement satisfaisant, mais c'est mieux que rien. |
Revenir en haut | |
Djezebel Héros Messages: 252 |
Salut !
Citation : Cela n'est pas entièrement satisfaisant, mais c'est mieux que rien Tu es bien difficile alors ! Parce que ça marche très bien chez moi.
Le PNJ teste n'attaque pas le PJ. Pour cette scène, il faut : - un PNJ "fou" créé dans la palette - un Waypoin "W_fou" Dans les scripts du Fou, il faut supprimer ceux du : - OnPhysicalAttack (pour qu'il ne réplique pas quand il se fait frapper par des armes) - OnSpellCastAt ( la même chose par des sorts ) On remplace celui du OnPerception par : NWScript :
void main() { object oPC = GetLastPerceived(); if (GetIsPC(oPC)) { SpeakString(""); SetIsTemporaryEnemy(oPC, OBJECT_SELF, TRUE, 5.0 ); ActionAttack(oPC); } } Et celui du OnDamaged par : NWScript :
#include "x0_i0_partywide" void main() { object oWP = GetObjectByTag("W_fou"); ClearAllActions(TRUE); object oPC = GetLastDamager(); SurrenderAllToEnemies();//Tres interessante fonction qui permet que les autres PNJ ne soient pas agressifs envers le joueur quand il se defend. SpeakString("");//Preuve qu'il est dingue DelayCommand(1.0, ActionForceMoveToObject(oWP)); // Le DelayCommand semble imperatif si on veut que ca fonctionne, car sans, l'action ne se fait pas. } Avec ça, vous aurez un véritable asile plus "vivant"... Et les joueurs penseront que le scripteur est timbré lui aussi ! |
Revenir en haut | |
lylver Héros Messages: 274 |
De mon avis : il vaudrait mieux que tu n'utilises pas la faction commoner (populace) pour tes créatures car la gestion de l'hostilité sur les factions de base est globale : ca risque de mal finir pour les PJs si ils répondent aux aggressions.
Crée ta faction personnalisée (en faction sans mémoire : effet global désactivé) ou fait passer tes PNJs en faction hostile pour la durée de ton animation : ce sera plus prudent et cela ne change pas l'effet de SurrenderToEnnemy() Tu as la fonction suivante à disposition NWScript : 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. |
Revenir en haut | |
Djezebel Héros Messages: 252 |
Justement, j'ai mis ceci :
NWScript :
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. Ce qui devrait le mettre en ennemi et ne pas prendre en compte qu'il frappe quelqu'un de la faction "populace" ... Enfin, avec le PNJ teste (qui est de la faction populace), il n'a pas bougé, donc visiblement ça marche quand même. Mais merci de ton attention ! |
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