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







La date/heure actuelle est 01/05/2025 05:48:42
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 |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
Bonjour !
Alors voila , j'ai un piti soucis , j'utilise ce script sur le " onused " d'un levier pour mettre l'effet fantôme sur mon pnj : 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. Puis ensuite , j'ai beau tout essayer avec des "removeeffects" et des "while" dans tous les sens , pas moyen de pouvoir réussir a supprimer cet effet de mon personnage ! Y a il un moyen de supprimer un VFX_DUR sur un " object " ? Merci d'avance et @+ _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG Dernière édition par Semcatala le 05/02/2005 19:43:06; édité 1 fois
|
Revenir en haut | ![]() ![]() ![]() |
S@ntoS Seigneur ![]() Messages: 169 Localisation: J'aimerais bien le savoir. |
Salu,
Ce script à été créé par Athanagorn. En modifant les paramètres locaux, tu devrais pourvoir t'en sortir. @++ NWScript : //OnExit /* Script cree par Athanagorn le 24-01-2005 et publi sur "la bibliothque de NWN" http://www.system-tek.com/nw inter/nwn/ */ void RemoveSpecificEffect(int nEffectTypeID, object oTarget) { effect eEff = GetFirstEffect(oTarget); while(GetIsEffectValid(eEff)) { if(nEffectTypeID==GetEffectType(eEff)) RemoveEffect(eEff); eEff = GetNextEffect(); } } _________________ 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 | ![]() ![]() ![]() |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
erf ... merci , mais j'avais déja trouvé et essayé ce script sans succés !
en fait , j'ai placé un second levier , avec le script suivant sur son " onused " NWScript :
void RemoveSpecificEffect(int nEffectTypeID, object oTarget) { effect eEff = GetFirstEffect(oTarget); while(GetIsEffectValid(eEff)) { if(nEffectTypeID==GetEffectType(eEff)) { RemoveEffect(oTarget,eEff); } eEff = GetNextEffect(oTarget); } } void main() { object oPC = GetLastUsedBy(); RemoveSpecificEffect(VFX_DUR_GHOSTLY_VISAGE_NO_SOUND,oPC); } mais rien ne se passe lorsque je l'utilise , mon pj reste avec ce sort sur les épaules !!!! Et ce , même si je met un duration_type_temporary a 20 secondes , ça n'y change rien , rien ne se passe avant la fin des 20 secondes et pas moyen de virer ce VFX_DUR ! ![]() _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
Pourquoi utiliser un effet visuel ?
Il est normal que ton script ne marche pas, vu qu'il ne gère que les effets normaux ( constantes du nom de EFFECT_TYPE_... ), alors que tu as mis un effet visuel. Essaye plutôt : NWScript :
void main() { object oPC = GetLastUsedBy(); ApplyEffectToObject( DURATION_TYPE_PERMANENT, EffectEthereal(), oPC ); } et comme script d'enlèvement : NWScript : void RemoveSpecificEffect(int nEffectTypeID, object oTarget) { effect eEff = GetFirstEffect(oTarget); while(GetIsEffectValid(eEff)) { if(nEffectTypeID==GetEffectType(eEff)) { RemoveEffect(oTarget,eEff); } eEff = GetNextEffect(oTarget); } } void main() { object oPC = GetLastUsedBy(); RemoveSpecificEffect(EFFECT_TYPE_ETHEREAL ,oPC); } _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
Merci , j'ai fait comme tu m'a dit , et ça marche bien.
Mais .... j'aurais vraiment besoin de pouvoir faire sauter un VFX_DUR utilisé sur un perso ! par exemple , j'ai ce script : NWScript :
void RemoveSpecificEffect(int nEffectTypeID, object oTarget) { effect eEff = GetFirstEffect(oTarget); while(GetIsEffectValid(eEff)) { if(nEffectTypeID==GetEffectType(eEff)) { RemoveEffect(oTarget,eEff); } eEff = GetNextEffect(oTarget); } } void main() { object oPC = GetLastUsedBy(); effect vfx1 = SupernaturalEffect(EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN)); DelayCommand(10.0,ApplyEffectToObject(DURATION_TYPE_PERMANENT,vfx1,oPC)); DelayCommand(15.0,RemoveSpecificEffect(VFX_DUR_GLOW_LIGHT_GREEN,oPC)); DelayCommand(20.0,RemoveEffect(oPC,EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN))); } qui a pour but de placer un glow sur un perso , pour le faire partir plus tard , a un moment intéterminé. Comment faire partir cet effet visuel de lumiére verte " glow " qui n'est dispo qu'en " VFX " ??? ce script met bien le glow sur le pj , mais aprés , pas moyen de l'enlever. C'est vraiment une question qui me taraude ! _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
essaye :
NWScript : void RemoveSpecificEffect(int nEffectTypeID, object oTarget) { effect eEff = GetFirstEffect(oTarget); while(GetIsEffectValid(eEff)) { if(nEffectTypeID==GetEffectType(eEff)) { RemoveEffect(oTarget,eEff); } eEff = GetNextEffect(oTarget); } } void main() { object oPC = GetLastUsedBy(); effect vfx1 = SupernaturalEffect(EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN)); effect eNone = EffectVisualEffect( VFX_NONE ); DelayCommand(10.0,ApplyEffectToObject(DURATION_TYPE_PERMANENT,vfx1,oPC)); DelayCommand(15.0,ApplyEffectToObject( DURATION_TYPE_PERMANENT, eNone, oPC)); } _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
Bon , ça marche pas !
Mais ...... j'ai trouvé comment faire !!!!!! Mais accrochez vous bien , ça va faire mal , c'est un truc de tordu ! Pour trouver , j'ai placé 2 leviers , l'un pour appliquer l'effet visuel que mon pj , l'autre pour l'enlever. Donc , ces 2 scripts : NWScript :
void main() { object oPC = GetLastUsedBy(); effect effet_visuel = SupernaturalEffect(EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN)); ApplyEffectToObject(DURATION_TYPE_PERMANENT,effet_visuel,oPC); } NWScript :
void main() { object oPC=GetLastUsedBy(); effect eLoop=GetFirstEffect(oPC); while (GetIsEffectValid(eLoop)) { int type_effet = GetEffectType(eLoop); string str_type_effet = IntToString(type_effet); SendMessageToPC(oPC,str_type_effet); // if (GetEffectType(eLoop)== SORT_INCONNU ) RemoveEffect(oPC, eLoop); eLoop=GetNextEffect(oPC); } } grace au premier script , on applique l'effet visuel , avec le second , on vire TOUS les effets visuels !!!! Donc on sait qu'il est possible de virer l'effet visuel qui nous interesse , reste a trouver lequel ! C'est ce que font les lignes NWScript :
int type_effet = GetEffectType(eLoop); string str_type_effet = IntToString(type_effet); SendMessageToPC(oPC,str_type_effet); elles nous retournent un numéro : 74 , dans la fenetre des message du jeu quand on actionne le levier. Mais c'est quoi ça 74 ? Et bien c'est le numéro de l'effet visuel qui nous interesse , qui se trouve dans la liste " visualeffects " disponible sur le site de bioware dans le pack des 2da avec tous plein de fichiers. Ensuite , on regarde la liste , et on voit que le 74 , c'est l'effet visuel apellé : " VFX_IMP_LIGHTNING_M " , donc dans le second script on remplace la ligne : NWScript :
// if (GetEffectType(eLoop)== SORT_INCONNU ) par la 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. et là , ô miracle , quand on appuie sur le second levier , l'effet visuel VFX_DUR désiré disparait ! Yoouuppiii ! La preuve que ça marche vraiment ? Remplacez VFX_IMP_LIGHTNING_M par VFX_IMP_LIGHTNING_S , et là , le second levier ne marchera plus !!! En résumé , quand on applique un VFX_DUR , c'est un autre VFX , par exemple , un VFX_IMP qui s'applique , reste alors a déterminer lequel pour pouvoir simplement le dégager avec un simple " removeeffects " !!! Diantre , je suis content de moi , depuis le temps que je cherchais ! ![]() _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
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