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:17:57
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,
Je rencontre une difficulté avec ce sript. Il est placé dans le « On Enter » d'une zone. Il fonctionne parfaitement. Problème, quand le PJ quitte la zone, il demeure affecté par l'effet. Or, j'aimerai que l'effet ne se produise que dans la zone concernée. Bien sur, je m'attendais à rencontrer cette anomalie, mais je ne parviens à la résoudre. Je me doute bien qu'il faudrait déclarer un script dans le « OnExit » de la zone. Mais j'ignore lequel. Bien entendu, j'ai testé la fonction « DURATION_TYPE_TEMPORARY , X secondes », pas très concluante. Si quelqu'un pouvait m'aider, merci. @+.f€r. NWScript : void main() { object oPC=GetEnteringObject(); object oNPC=GetObjectByTag("pnj01"); effect eEffect2 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect2, oPC); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect2, oNPC); } _________________ 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 | |
S@ntoS Seigneur Messages: 169 Localisation: J'aimerais bien le savoir. |
J'ai essayé ça (voir script plus bas) dans le « OnExit » de la zone. Ça ne marche pas.
NWScript : void main() { object oPC=GetExitingObject(); effect eEffect2 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE); RemoveEffect(oPC, eEffect2); } _________________ 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 | |
S@ntoS Seigneur Messages: 169 Localisation: J'aimerais bien le savoir. |
Je viens de trouver une parade, en plaçant le script dans le « OnHearthBeat » de la zone et en plaçant un « TEMPORARY_EFFECT » de 6 secondes. Vous aurez compris le tour de passe-passe. La méthode s'avère néanmoins peu orthodoxe.
Si quelqu'un avait mieux à me proposer, je lui en serai reconnaissant. @+.f€r. _________________ 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 | |
Aldigo Chevalier Messages: 70 |
Salut à toi S@ntos.
Ta première solution me semble la bonne, débutant dans ce domaine je te prpose cette solution qui fonctionne. Quelqu'un à peut être mieux. Script à me mettre dans OnEnter : // On Enter /* Script generated by Lilac Soul's NWN Script Generator, v. 1.6 For download info, please visit: [http] */ //Put this OnEnter void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; object oTarget; oTarget = oPC; //Visual effects can't be applied to waypoints, so if it is a WP //apply to the WP's location instead int nInt; nInt = GetObjectType(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE), GetLocation(oTarget)); } Script à mettre dans On Exit : //OnExit #include "nw_i0_spells" void main() { object oPC=GetExitingObject(); if (!GetIsPC(oPC)) return; RemoveSpecificEffect(EFFECT_TYPE_VISUALEFFECT,oPC); } En espérant que cela réponde à ta question. |
Revenir en haut | |
S@ntoS Seigneur Messages: 169 Localisation: J'aimerais bien le savoir. |
Puisque tu débutes, c'est un bon début. Ton script fonctionne parfaitement. Merci beaucoup, Aldigo.
Pourrais-tu m'indiquer l'URL du « Lilac Soul's NWN Script Generator, v. 1.6 » pour que je le mentionne en début de script ? @+.f€r. _________________ 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 | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
-> [http]
_________________ 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 | |
Athanagorn Acolyte Messages: 38 |
S@ntoS a écrit : J'ai essayé ça (voir script plus bas) dans le « OnExit » de la zone. Ça ne marche pas.
La démarche pour supprimer un effect est un peu particulière. ce que tu faitici, c'est créer un nouvel effect, que tu essaies ensuite de supprimer, sans l'avoir appliqué d'ailleurs.
NWScript : void main() { object oPC=GetExitingObject(); effect eEffect2 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE); RemoveEffect(oPC, eEffect2); } Ce qu'il faut faire pour supprimer un effect, c'est boucler sur la liste (chainée) des effect avec GetFirstEffect / GetNextEffect, vérifier si l'effect en cours correspond à ton effect avec GetEffectType, GetEffectSubType, GetEffectDurationType, eventuellement aussi avec GetEffectCreator ou GetEffectSpellId, et ensuite le supprimer (le cas echéant) avec RemoveEffect. J'ai pas NWN sous la main, mais je suis sûr à 95% que RemoveSpecificEffect est une fonction qui doit ressembler à ceci: NWScript :
void RemoveSpecificEffect(int nEffectTypeID, object oTarget) { effect eEff = GetFirstEffect(oTarget); while(GetIsEffectValid(eEff)) { if(nEffectTypeID==GetEffectType(eEff)) RemoveEffect(eEff); eEff = GetNextEffect(); } } En fait, je viens de relire la description de NWNLexicon, et j'en suis maintenant sûr à 99%. |
Revenir en haut | |
S@ntoS Seigneur Messages: 169 Localisation: J'aimerais bien le savoir. |
Salut,
Oui, cela fonctionne. Le script est beaucoup plus simple et plus clair. Je prends. Merci beaucoup à tous pour votre aide. @+.f€r. _________________ 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 | |
S@ntoS Seigneur Messages: 169 Localisation: J'aimerais bien le savoir. |
Ah, j'allais oublier !
Merci pour les explications Atha, car effectivement, j'ignorais comment m'y prendre pour supprimer un effet, et quelle commande appliquer. ++ _________________ 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