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 22:48:59
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 |
S@ntoS Seigneur Messages: 169 Localisation: J'aimerais bien le savoir. |
Salut,
J'ai un petit problème avec le script qui suit. Malgré tous mes efforts je ne parviens pas à trouver la solution. Le script correspond au « OnHearthBeat » par défault de NWN. J'y ais rajouté les lignes du début pour appliquer des effets visuels sur la créature. Tel quel, le code fonctionne, j'obtiens le résultat voulu. Mais dès que les créatures deviennent nombreuses (moins d'une dizaine), les anomalies surgissent. En fait, les effets ne s'appliquent alors qu'à une seule créature et pas aux autres. Je vois bien d'où viens le problème, (toutes les créatures en question, possèdent le même tag), mais je ne parviens à le résoudre ce problème. Il faut savoir que lorsque le PJ entre dans la zone, les créatures ne sont pas présentes. Elles apparaissent si le PJ se rapproche de certains plaçables (script sur le « OnHearthBeat » du plaçable). Merci d'avance ceux qui sauront m'aider. @+.f€r. NWScript : //:///////////////////////// ///////////////////// //:: Default On Heartbeat //:: NW_C2_DEFAULT1 //:: Copyright (c) 2001 Bioware Corp. //:///////////////////////// //////////////////// /* This script will have people perform default animations. */ //:///////////////////////// //////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Nov 23, 2001 //:///////////////////////// //////////////////// #include "NW_I0_GENERIC" void main() { object oNPC=GetObjectByTag("NW_SKELCHIEF"); effect eEffect2 = EffectVisualEffect(VFX_IMP_SLEEP); effect eEffect3 = EffectVisualEffect(VFX_DUR_GLOW_PURPLE); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect2, oNPC); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect3, oNPC); if(GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY)) { if(TalentAdvancedBuff(40.0)) { SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE); return; } } if(GetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING)) { int nDay = FALSE; if(GetIsDay() || GetIsDawn()) { nDay = TRUE; } if(GetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT") != nDay) { if(nDay == TRUE) { SetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT", TRUE); } else { SetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT", FALSE); } WalkWayPoints(); } } if(!GetHasEffect(EFFECT_TYPE_SLEEP)) { if(!GetIsPostOrWalking()) { if(!GetIsObjectValid(GetAttemptedAttackTarget()) && !GetIsObjectValid(GetAttemptedSpellTarget())) { if(!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN))) { if(!GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) && !IsInConversation(OBJECT_SELF)) { if(GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) || GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN)) { PlayMobileAmbientAnimations(); } else if(GetIsEncounterCreature() && !GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN))) { PlayMobileAmbientAnimations(); } else if(GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS) && !GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN))) { PlayImmobileAmbientAnimations(); } } else { DetermineSpecialBehavior(); } } else { //DetermineCombatRound(); } } } } else { if(GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT)) { effect eVis = EffectVisualEffect(VFX_IMP_SLEEP); if(d10() > 6) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); } } } if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(1001)); } } _________________ L'oiseau vole, le serpent rampe et l'homme... heu, j'en sais rien. Le RP, cé vrémant tro z'injuste ! |
Revenir en haut | |
Athanor salamander Légende vivante Messages: 306 Localisation: Ecole du Script |
ces scripts par defaut... c'est d'un compliqué et encore, pas la moitié n'est vraiment utile quand on souhaite y mettre sa touche d'originalité enfin...
La fonction GetObjectByTag possède un argument supplémentaire que peu de personnes n'utilisent. Il s'agit d'une énième object au tag nommé. Tu fais donc une boucle encapsulant tes instructions, en faisant un truc du genre : NWScript : object oMonObjectMultiple = GetObjectByTag("TagMonstre", 0); int iIndex = 0; while (GetIsObjectValid(oMonObjectMultiple)){ // tes instructions iIndex++; oMonObjectMultiple = GetObjectByTag("TagMonstre", iIndex); } _________________ Atha, Artisan Scripteur. meet the most beautiful woman in the world |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Merci, j'ai eu le même problème sur mon module Boisperdu, dans une cérémonie, seul un perso bougeait, maintenant je vais pouvoir corriger....
_________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
S@ntoS Seigneur Messages: 169 Localisation: J'aimerais bien le savoir. |
Salut,
Effectivement, je ne connaissais pas cette fonction. Mais, c'est clair, je ne l'oublierai pas dorénavant. Merci, cela me sera très utile. Quant au script par défaut, parlons-en, si tu as un moment. Je le trouvais justement un peu long, et je me demandais s'il était vraiment utile. Par exemple, si je fais ceci (voir script qui suit) cela posera-t-il un problème par la suite dans le jeu ? La fonction « #include "NW_I0_GENERIC" » sert-elle alors à quelque chose ou puis-je simplement l'éliminer. Détail important le script qui suit ne fonctionne pas. Je l'ais testé. La moitié des créatures est affectée par les effets, l'autre non. En fait, si les créatures apparaissent les unes après les autres, les effets sont appliqués à chacune d'elles, mais si plusieurs créatures apparaissent en même temps, une seule bénéficie des effets. NWScript : #include "NW_I0_GENERIC" void main() { object oMonObjectMultiple = GetObjectByTag("NW_SKELCHIEF", 0); int iIndex = 0; while (GetIsObjectValid(oMonObjectMultiple)){ object oNPC=GetObjectByTag("NW_SKELCHIEF"); effect eEffect2 = EffectVisualEffect(VFX_IMP_SLEEP); effect eEffect3 = EffectVisualEffect(VFX_DUR_GLOW_PURPLE); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect2, oNPC); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect3, oNPC); iIndex++; oMonObjectMultiple = GetObjectByTag("NW_SKELCHIEF", iIndex); } } _________________ L'oiseau vole, le serpent rampe et l'homme... heu, j'en sais rien. Le RP, cé vrémant tro z'injuste ! |
Revenir en haut | |
Athanor salamander Légende vivante Messages: 306 Localisation: Ecole du Script |
......
NWScript :
#include "NW_I0_GENERIC" void main() { object oNPC= GetObjectByTag("NW_SKELCHIEF", 0); int iIndex = 0; while (GetIsObjectValid(oNPC)){ effect eEffect2 = EffectVisualEffect(VFX_IMP_SLEEP); effect eEffect3 = EffectVisualEffect(VFX_DUR_GLOW_PURPLE); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect2, oNPC); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect3, oNPC); iIndex++; oNPC = GetObjectByTag("NW_SKELCHIEF", iIndex); } } Si tu boucles sur un tag dont tu ne te sers aucunement c normal que ça ne marche absolument pas. Essaie comme ça plutot. _________________ Atha, Artisan Scripteur. meet the most beautiful woman in the world |
Revenir en haut | |
S@ntoS Seigneur Messages: 169 Localisation: J'aimerais bien le savoir. |
....
Je n'avais même pas vu que « oMonObjectMultiple » n'étais pas une fonction. LOULE !!! Merci beaucoup Athanor. Comme d'ab, j'ais rajouté ton nom, la date et l'url du site sur le script. _________________ L'oiseau vole, le serpent rampe et l'homme... heu, j'en sais rien. Le RP, cé vrémant tro z'injuste ! |
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