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







La date/heure actuelle est 01/05/2025 07:41:12
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 |
Seth de Sombrelune Seigneur Messages: 156 |
Bonjour à tous.
Mon problème du jour est assez complexe. Je souhaite créer pour mon module un Doppelganger, c'est une créature qui a la possibilité de changer d'apparence et de prendre celle de celui qui est en face d'elle. Pour cela j'avais penser à recuperer le script du Miroir dans le donjon de HOU. Le script crée une copie du joueur qui a déclanché le script. Pour mon module je prend une créature quelconque, et dans le "OnPerception" j'y ai placer mon script (qui ne fonctionne pas tout a fait comme je le voudrais), en voici le code : NWScript :
void main() { object oPC = GetLastPerceived(); object oDoppel=OBJECT_SELF; location lDoppel =GetLocation(oDoppel); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(471),lDoppel); DestroyObject(oDoppel); object oCopie =CopyObject(oPC, lDoppel,OBJECT_INVALID,"COPIE"); ChangeToStandardFaction(oCopie, STANDARD_FACTION_HOSTILE); AssignCommand(oCopie, ClearAllActions()); AssignCommand(oCopie, ActionEquipMostDamagingMelee()); DelayCommand(1.5, AssignCommand(oCopie, ActionAttack(oPC))); } Voici ce qui se passe : Dés qu'un PJ arrive ma créature disparais mais c'est Deux copie du personnage au lieu d'une seule qui apparait, je ne comprend pas pourquoi. Autre problème : La créature qui apparait a un panel de script par defaut. comment faire pour que je puisse assigner à ma copie un panel de script de mon choix ? Merci de votre aide. |
Revenir en haut | ![]() ![]() ![]() |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
C'est pas une histoire de perception :
Visuel et auditive? |
Revenir en haut | ![]() ![]() ![]() |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
Exacte, il faut rejouter ceci :
NWScript :
void main() { object oPC = GetLastPerceived(); object oDoppel=OBJECT_SELF; location lDoppel =GetLocation(oDoppel); if(GetLastPerceptionSeen(oPC)) { ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(471),lDoppel); DestroyObject(oDoppel); object oCopie =CopyObject(oPC, lDoppel,OBJECT_INVALID,"COPIE"); ChangeToStandardFaction(oCopie, STANDARD_FACTION_HOSTILE); AssignCommand(oCopie, ClearAllActions()); AssignCommand(oCopie, ActionEquipMostDamagingMelee()); DelayCommand(1.5, AssignCommand(oCopie, ActionAttack(oPC))); } } Logiqument, celui la devrai ne créer qu'une copie ... _________________ Rejoignez nous sur notre forum Aelor, module en construction Vive Gimli ![]() |
Revenir en haut | ![]() ![]() ![]() ![]() |
Seth de Sombrelune Seigneur Messages: 156 |
merci mais en fait ton script ne fonctiopnne pas, le getlasperceptionseen renvoit en fait un integer, donc dans la condition il fauv verifier que cet integer est bien egal à 1.
Voici une version modifié du script que j'avais proposer NWScript :
//: ![]() //:: Name Doppelganger //:: Copyright (c) 2001 Bioware Corp. //: ![]() /* Script a placer dans le onperception d'une crature Copie l'apparence d'une crature. Le script detruit tout les items et l'or de la copie afin de ne pas devenir une mine d'or pour les aventuriers... */ //: ![]() //:: Created By: Seth de Sombrelune //:: Created On: 15/07/05 //: ![]() void main() { object oPC = GetLastPerceived(); //recherche du model object oDoppel=OBJECT_SELF; // le Doppelganger location lDoppel =GetLocation(oDoppel); if(GetLastPerceptionSeen()==1) // des qu'il appercois un pJ ou une autre crature { ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(471),lDoppel);//le changement de forme DestroyObject(oDoppel); object oCopie =CopyObject(oPC, lDoppel,OBJECT_INVALID,"COPIE"); ChangeToStandardFaction(oCopie, STANDARD_FACTION_HOSTILE); AssignCommand(oCopie, ClearAllActions()); ////////////////////////////// ////////////////////////////// ////////////////// // Partie du script que j'aurais aimer placer dans le ondeath de la crature // ////////////////////////////// ////////////////////////////// ////////////////// object oItem = GetFirstItemInInventory(oCopie); // destruction des items de la copie while (GetIsObjectValid(oItem) == TRUE) { DestroyObject(oItem); oItem = GetNextItemInInventory(oCopie); } int iGold = GetGold(oCopie); // destruction de l'or de la copie TakeGoldFromCreature(iGold, oCopie, TRUE); ////////////////////////////// ////////////////////////////// ///////////////// ////////////////////////////// ////////////////////////////// ///////////////// AssignCommand(oCopie, ActionAttack(oPC)); } } Ici la créature dupliqué attaque la première créature apperçus en prenant sa forme. Je prend soins de vider l'inventaire de la créature. J'aurais aimer pouvoir asigner un autre script dans le on death de la créature dupliquée, afin de lui detruire tout les items dont elle est équipée et eventuellement lui refiler un script particulier dans le onspawn. si quelqun a une idée.... |
Revenir en haut | ![]() ![]() ![]() |
BenGorre Légende vivante ![]() Messages: 301 |
Tu enleve les items de l'inventaire, il reste ceux dans les emplacements tu peus dire par script de pas les dropper, j'ai vu une fonction SetDropable je crois.je vais me pencher la dessus. autre chose essaie de rendre sa forme initial a la créature a sa mort et un certain temps apres avoir finis le combat.
_________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 ![]() Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | ![]() ![]() ![]() |
Seth de Sombrelune Seigneur Messages: 156 |
BenGorre a écrit : autre chose essaie de rendre sa forme initial a la créature a sa mort et un certain temps apres avoir finis le combat. En fait, c'est mon deuxième problème. POur faire cela c'est tres facile, a condition de pouvoir designer les scripts de la créature copiée. Hors, j'ai chercher et je n'ai pas trouver comment assigner un script dans le OnDeath de la créature. Si je peu pallier au script OnSpawn de la copie en bidouillant celui du OnPerception de la créature original, je suis coincé pour le reste...![]() |
Revenir en haut | ![]() ![]() ![]() |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
pourquoi ne pas envoyer la créature originale dans une map "fermé" aux joueurs et la faire revenir par la suite, morte si necessaire
|
Revenir en haut | ![]() ![]() ![]() |
Seth de Sombrelune Seigneur Messages: 156 |
simplement parce que les evenements qui se produisent à la mort de la copie doivent être specifier dans le script OnDeath de la copie. La question est :"comment choisir les scripts des evenements de la copie lors de sa création ?"
|
Revenir en haut | ![]() ![]() ![]() |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
il s'agit donc d'un script générique puisque c'est la copie d'un joueur (ni'connais rien les copies).
Tu créés une variable et tu la met en condition dans le script générique, reste à savoir lequel. Il faut évidement voir à créer un variable localiser avec le tag de la créature. C'est qu'une idée qui me vient comme ça, je ne sais pas si... enfin voilà je la sort brute de décoffrage. |
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