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 15:24:35
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 |
Heldar Seigneur Messages: 169 Localisation: France |
:grin:Salut à tous! Et oui c'est encore moi et mes éternels problèmes de transformation même si cette fois c'est pour finir une transformation. En effet j'ai bien le script qui m'équipe un objet me donne de la force et tout mais je voudrais que si cet objet venait à être désequipé ou jeté par le pj tous les effets s'estompent. voici le script de ma transformation:
NWScript :
void main() { object oPC=GetPCSpeaker(); object oCasque = CreateItemOnObject ("casque", oPC, 1); AssignCommand(oPC, ActionEquipItem(oCasque, INVENTORY_SLOT_HEAD)); effect eCarracAAugmenter= EffectAbilityIncrease (ABILITY_STRENGTH, 5); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter, oPC); effect eCarracAAugmenter1= EffectAbilityIncrease (ABILITY_CONSTITUTION, 5); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter1, oPC); effect eCarracAAugmenter2= EffectAbilityIncrease (ABILITY_DEXTERITY, 5); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter2, oPC); effect eCarracAAugmenter3= EffectTemporaryHitpoints (3); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter3, oPC); effect eCarracAAugmenter4= EffectAbilityIncrease (ABILITY_WISDOM, 5); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter4, oPC); effect aura= EffectVisualEffect (VFX_DUR_ELEMENTAL_SHIELD); ApplyEffectToObject(DURATION_TYPE_PERMANENT, aura, oPC); effect explosion1= EffectVisualEffect (VFX_FNF_MYSTICAL_EXPLOSION); ApplyEffectToObject(DURATION_TYPE_INSTANT, explosion1, oPC); } J'aimerais également savoir s'il est possible de détruire un objet après un délai qui serait initié dans le script qui équipe ce même objet. Merci d'avance. _________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
pour ta deuxième question il y a ça :
NWScript : // fonction permettant d'appliquer un delai a la destruction void DestroyObjectVoid(object oDestroy,string sNewTag="") { oDestroy = GetObjectByTag(sNewTag); DestroyObject(oDestroy); } |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Déjà pourquoi les augmentations de caractéristiques tu ne les mets pas directement sur le casque ?
Après il n'y aurait plus que les points de vie et l'effet visuel à rajouter par script. Je pense à ça, dans le script de ton dialogue : Si tu veux que le casque soit détruit après 20 secondes (exemple) NWScript :
object oPC=GetPCSpeaker(); float fDuree = 20.0; //Duree avant la destruction du casuqe en secondes effect eEffect1 = EffectTemporaryHitpoints (3); effect eEffect2 = EffectVisualEffect (VFX_DUR_ELEMENTAL_SHIELD); object oCasque = CreateItemOnObject ("casque", oPC, 1); AssignCommand(oPC, ActionEquipItem(oCasque, INVENTORY_SLOT_HEAD)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEffect1,oPC,fDuree); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEffect2,oPC,fDuree); DestroyObject(oCasque,fDuree); effect explosion1= EffectVisualEffect (VFX_FNF_MYSTICAL_EXPLOSION); ApplyEffectToObject(DURATION_TYPE_INSTANT, explosion1, oPC); Dans le OnPlayerUnEquipItem du module : NWScript :
object oItem=GetPCItemLastUnequipped(); object oPC = GetPCItemLastUnequippedBy(); string sTag = GetTag(oItem); if (sTag == "Casque") { effect eEffect = GetFirstEffect(oPC); while (GetIsEffectValid(eEffect)) { object oCreator = GetEffectCreator(eEffect); if (GetTag(oCreator)=="TAGPNJ") RemoveEffect(eEffect); //remplacer TAGPNJ par le tag de l'objet qui donne le dialogue qui cree le casque eEffect=GetNextEffect(oPC); } } La ça devrait donner : le PJ équipe le casque (auquel tu as rajouté les modifs de carac, sinon il faut rajouter les lignes de script correspondantes), gagne les point de vie emporaires et l'effet visuel, puis le casque est détruit (qu'il soit déséquipé entre temps ou pas) Le casque est détruit en même temps que les effets s'arretent. Si le PJ enlève le casque, les effets s'arretent (théoriquement...) Problème (je viens d'y penser...) si il a trop chaud et qu'il enlève le casque, ça remet pas les effets si il le remet ensuite... flûte |
Revenir en haut | |
Heldar Seigneur Messages: 169 Localisation: France |
En fait c'est pas tout à fait ce que je veux pour le 1er script de sith vicious c'est bon mais en fait ce script n'est pas dans un dialogue mais avec un don et si j'ai mis getpcspeaker c'est pour tester le script desolé j'ai pas pensé à l'enlever donc ma question est: est-ce que ca marchera toujours le 2eme script et aussi comment fait-on pour détriure le casque dans le même script et pas dans l'autre.
_________________ Heldar qui tue tous les monstres du soir. |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Effectivement, si c'est pas un dialogue le 2eme script ne va pas marcher, car le créateur de l'effet sera... je sais pas trop, le PJ ou le module je suis pas à fond la dessus (je vote le joueur mais bon...). Le problème que ça pose, c'est que quand tu voudras retirer l'effet créé par le casque, ben ça va être dur de pas enlever un autre effet (ex, si il a utilisé une potion d'aide, ça risque de lui virer tous les points de vie temporaires).
Mon idée ça serait un truc comme ça : lors de l'utilisation du don, tu équipes le casque et tu programme sa destruction en même temps (j'ai pas saisi quand tu voulais programmer ça dans quel script tu demandais ?). Ensuite, tu modifie le OnEquipItem pour ajouter l'effet quand tu mets le casque, ce qui résoud le problème du type qui l'enlève et le remet, et l'inverse dans le UnEquipItem. Seule question : est-ce que le script de UnEquipItem se déclanche quand le casque est détruit ? Ca c'est pas sur et c'est génant. a mettre dans le EquipItem : NWScript :
object oPC = GetPCItemLastEquippedBy(); object oItem = GetPCItemLastEquipped(); string sTag = GetTag(oItem); float fDuree = 20.0; //Duree de l'effet if (sTag=="Casque") { effect eVis = EffectVisualEffect (VFX_DUR_ELEMENTAL_SHIELD); effect eLife = EffectTemporaryHitpoints (3); effect eEffect = EffectLinkEffects(eVis,eLife); effect eEffect = SupernaturalEffect(eEffect); //Ca c'est pour permettre de differencier les effets ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEffect,oPC,fDuree); effect explosion1= EffectVisualEffect (VFX_FNF_MYSTICAL_EXPLOSION); ApplyEffectToObject(DURATION_TYPE_INSTANT, explosion1, oPC); DestroyObject(oItem,fDuree); } et dans le UnEquip : NWScript :
object oItem=GetPCItemLastUnequipped(); object oPC = GetPCItemLastUnequippedBy(); string sTag = GetTag(oItem); if (sTag == "Casque") { effect eEffect = GetFirstEffect(oPC); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect)==EFFECT_TYPE_TEMPORARY_HITPOINTS && GetEffectSubType(eEffect) == SUBTYPE_SUPERNATURAL) RemoveEffect(eEffect); eEffect=GetNextEffect(oPC); } } Finalement dans le script du don, tu ne fais plus que donner le casque et le faire équiper. C'est ptet un peu tiré par les cheveux, et je sais pas si c'est vraiment ça que tu veux mais si ça peut aider |
Revenir en haut | |
Heldar Seigneur Messages: 169 Localisation: France |
J'ai eu une autre idée et voilà ce que ça donne pour ceux que ça interesse.
NWScript :
void main() { object oItem=GetPCItemLastUnequipped(); object oPC = GetPCItemLastUnequippedBy(); string sTag = GetTag(oItem); effect explosion = EffectVisualEffect(VFX_IMP_DUST_EXPLOSION); if (sTag == "Casque") { effect eCarracAAugmenter= EffectAbilityDecrease (ABILITY_STRENGTH, 5); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter, oPC); effect eCarracAAugmenter1= EffectAbilityDecrease (ABILITY_CONSTITUTION, 5); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter1, oPC); effect eCarracAAugmenter2= EffectAbilityDecrease (ABILITY_DEXTERITY, 5); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter2, oPC); effect eCarracAAugmenter3= EffectDamage (3); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter3, oPC); effect eCarracAAugmenter4= EffectAbilityDecrease (ABILITY_WISDOM, 5); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter4, oPC); DestroyObject(oItem); effect eEffect = GetFirstEffect(oPC); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT) { RemoveEffect(oPC, eEffect); eEffect=GetNextEffect(oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT, explosion, oPC); } } } } et pour répondre à ta question si je mets les carac sur le casque je ne peux pas dépasser les 12 (je compte faire des transfo plus puissantes). _________________ Heldar qui tue tous les monstres du soir. |
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