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 11/11/2024 20:54:10
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 |
Archéops Ecuyer Messages: 55 |
Salutation...
Comme le titre l'indique le but est de créer des objets qui soient maudits, c'est à dire qu'une fois mis on ne puisse les enlever sauf grâce à l'aide d'un prêtre ou en utilisant le sort délivrance des Malédiction. Bien sûr lorsque l'objet est équipé son porteur subira des effets plus ou moins néfastes... Mais pour les propriétés je verai plutard. Pour définir si l'objet est maudit j'utilise son blueprint : tout les objets maudits ont comme blueprint maudit_xxxx. On utilise ensuite un script que l'on place dans OnEquipeItem, alors via quelques manipes et une petite condition (if..) , on peut créer des effets visuels et autres chosesl Lorsque le PJ s'équipe de l'objet. Pour l'instant tout va pour le mieux... Mais les choses se compliquent vite.. En effet le but du jeu est de faire en sorte que le PJ ne puisse déséquiper l'objet maudit, comme quand on se transforme en guerrier Tenser. Mais comment y arriver ??? J'ai déjà chercher dans le script qui gére la transformation en tenser mais je n'ai rien trouvé... Je suis donc bloqué pour l'instant.. Donc si quelqu'un peut m'aider ? Merci pour votre attention.. |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Je pense que la lecture de ce topic devrait t'aider _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
lalilo Acolyte Messages: 35 Localisation: quelques par en france |
Longbow a écrit :Bonjour à toi "Longbow" je n'est rien contre toi mais j'ai remarqué que tu ne disais jamais bonjour aux autres personnes...Dans la vie meme si t'est un boss en scripts, il faut rester poli... @++ |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
lalilo a écrit : Bonjour à toi "Longbow" je n'est rien contre toi mais j'ai remarqué que tu ne disais jamais bonjour aux autres personnes...Dans la vie meme si t'est un boss en scripts, il faut rester poli...
A l'avenir merci d'ecrire ce genre de remarques à la personne concernée en privé. Tes états d'âmes par rapport à la politesse des uns et des autres ne concernent pas ce forum. Considère ceci comme un avertissement.@++ _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
Archéops Ecuyer Messages: 55 |
Merci LongBow pour ton aide...
En fait dans mon script de départ, il me manquait juste un insignifiant AssigneCommand.... Voila ce que j'ai fait... A mettre dans OnPlayerEquipeItem NWScript :
//Script a placer dans OnEquipeItem // Noter que les objets maudits doivent avoir un blueprint commencant par // maudit_ //Les effets ont etaient choisis au hasard, vous pouvez les changer.. // la variables est definis pour eviter qu'a chaque fois que le joueur tente //d'enlever l'objet le texte ne s'affiche. //TRES IMPORTANT : pour eviter que le joueur depose l'objet maudit par terre // lors de la creation de celui-ci cochez la case ne peut etre abandonne object oItem=GetPCItemLastEquipped(); object oPerso=GetPCItemLastEquippedBy(); string sBlue=GetResRef(oItem); string sMal= GetStringLeft(sBlue,6); string sType=GetSubString(sBlue,8,16); void main() { if (sMal=="maudit") { if (GetLocalInt(oPerso,sBlue)==0) { ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_DESTRUCTION),oPerso,3.0); FloatingTextStringOnCreature("vous venez de vous equiper d'un objet maudit",oPerso,TRUE); DelayCommand(2.0,FloatingTextStringOnCreature("vous sentez l'objet prendre emprise sur vous...",oPerso,TRUE)); SetDroppableFlag(oItem,FALSE); SetLocalInt(oPerso,sBlue,1); if (sType=="epee") { //Mettre les effets lorsque l'epee est mise// } if (sType=="armure") { //Mettre les effets pour l'armure// } //if (sType=="xxx"// on peut ainsi rajouter des objets maudit de tout type.. } if (GetLocalInt(oPerso,sBlue)==1) { } } else { } } A mettre dans OnPlayerUnEquipeItem NWScript :
// Script a placer dans OnUnequitem object oItem=GetPCItemLastUnequipped(); object oPerso=GetPCItemLastUnequippedBy(); string sBlue=GetResRef(oItem); string sMal= GetStringLeft(sBlue,6); #include "sys_maudit_bib" void main() { if (sMal=="maudit") { EquipUnEquipItem(oItem,oPerso); FloatingTextStringOnCreature("Impossible d'enlever cet objet..",oPerso,TRUE); DelayCommand(2.0,FloatingTextStringOnCreature("Il fait maintenant parti de vous..",oPerso,TRUE)); } } Et enfin un petit script et bibliothèque.. enfin je pense que c'est comme cela que l'on dit.. NWScript :
object oObjet; object oPC; ///Definition d'une nouvelle foncyion permettant de se reequiper d'un ///objet que l'on vient d'enlever.. void EquipUnEquipItem(object oObjet,object oPC) { if (GetItemInSlot(INVENTORY_SLOT_ARMS,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_ARMS)); } if (GetItemInSlot(INVENTORY_SLOT_ARROWS,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_ARROWS)); } if (GetItemInSlot(INVENTORY_SLOT_BELT,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_BELT)); } if (GetItemInSlot(INVENTORY_SLOT_BOLTS,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_BOLTS)); } if (GetItemInSlot(INVENTORY_SLOT_BOOTS,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_BOOTS)); } if (GetItemInSlot(INVENTORY_SLOT_BULLETS,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_BULLETS)); } if (GetItemInSlot(INVENTORY_SLOT_CARMOUR,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CARMOUR)); } if (GetItemInSlot(INVENTORY_SLOT_CHEST,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CHEST)); } if (GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CLOAK)); } if (GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CWEAPON_B)); } if (GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CWEAPON_L)); } if (GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oItem,INVENTORY_SLOT_CWEAPON_R)); } if (GetItemInSlot(INVENTORY_SLOT_HEAD,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_HEAD)); } if (GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_LEFTHAND)); } if (GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_LEFTRING)); } if (GetItemInSlot(INVENTORY_SLOT_NECK,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_NECK)); } if (GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_RIGHTRING)); } if (GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC)==oObjet) { AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_RIGHTHAND)); } } Voila, le résultat est pas mal.. il manque plus qu'à trouver quels effets mettre aux armes.. Remarque : Comme je suis maniac, je chercherai voir s'il y a pas moyen de faire comme la transformation de Tenser, c'est à dire qu'on ne puisse pas du tout déséquiper l'objet... Enfin merci pour votre aide... |
Revenir en haut | |
Archéops Ecuyer Messages: 55 |
Hum.. Une petit correction a apporté.. En effet la fonction GetSubString n'est pas terrible... Mieux vaut utiliser GetSringbyRight et donner un BluePrint a l'objet maudit du type maudit_xxxxxxxxx, avec 9 caractère aprés maudit_..
Ce qui donne : NWScript :
//Script a placer dans OnEquipeItem // Noter que les objets maudits doivent avoir un blueprint commencant par // maudit_xxxxxxxxx il faut 9 caractere apres _ //Les effets ont etaient choisis au hasard, vous pouvez les changer.. // la variables est definis pour eviter qu'a chaque fois que le joueur tente //d'enlever l'objet le texte ne s'affiche. //TRES IMPORTANT : pour eviter que le joueur depose l'objet maudit par terre // lors de la creation de celui-ci cochez la case ne peut etre abandonne object oItem=GetPCItemLastEquipped(); object oPerso=GetPCItemLastEquippedBy(); string sBlue=GetResRef(oItem); string sMal= GetStringLeft(sBlue,6); string sType=GetStringRight(sBlue,9); void main() { if (sMal=="maudit") { if (GetLocalInt(oPerso,sBlue)==0) { ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_DESTRUCTION),oPerso,3.0); FloatingTextStringOnCreature("vous venez de vous equiper d'un objet maudit",oPerso,TRUE); DelayCommand(2.0,FloatingTextStringOnCreature("vous sentez l'objet prendre emprise sur vous...",oPerso,TRUE)); SetDroppableFlag(oItem,FALSE); SetLocalInt(oPerso,sBlue,1); if (sType=="epeecourt") { ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectPolymorph(POLYMORPH_TYPE_COW),oPerso); //Mettre les effets lorsque l'epee est mise// } if (sType=="armurecui") { //Mettre les effets pour l'armure// } //if (sType=="xxx"// on peut ainsi rajouter des objets maudit de tout type.. } if (GetLocalInt(oPerso,sBlue)==1) { } } else { } } Bien, en fait maintenant, il ne reste plus qu'a trouver un moyen pour se débarasser de l'objet maudit... |
Revenir en haut | |
Archéops Ecuyer Messages: 55 |
Rebonjour à tout le monde...
Afin de pouvoir se débarraser de l'objet maudit, mon but est de créer une fonction qui récupère le BluePrint de l'objet quand celui-ci est équiper... Mes recherches m'ont conduits à ce script : NWScript :
string CheckMaudit(object oPoss) { object oPoss; object oItem1=GetItemInSlot(INVENTORY_SLOT_ARMS,oPoss); object oItem2=GetItemInSlot(INVENTORY_SLOT_ARROWS,oPoss); object oItem3=GetItemInSlot(INVENTORY_SLOT_BELT,oPoss); object oItem4=GetItemInSlot(INVENTORY_SLOT_BOLTS,oPoss); object oItem5=GetItemInSlot(INVENTORY_SLOT_BOOTS,oPoss); object oItem6=GetItemInSlot(INVENTORY_SLOT_BULLETS,oPoss); object oItem7=GetItemInSlot(INVENTORY_SLOT_CARMOUR,oPoss); object oItem8=GetItemInSlot(INVENTORY_SLOT_CHEST,oPoss); object oItem9=GetItemInSlot(INVENTORY_SLOT_CLOAK,oPoss); object oItem10=GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oPoss); object oItem11=GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oPoss); object oItem12=GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oPoss); object oItem13=GetItemInSlot(INVENTORY_SLOT_HEAD,oPoss); object oItem14=GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPoss); object oItem15=GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPoss); object oItem16=GetItemInSlot(INVENTORY_SLOT_NECK,oPoss); object oItem17=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPoss); object oItem18=GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPoss); if ((GetStringLeft(GetResRef(oItem1),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_ARMS,oPoss)); } else if ((GetStringLeft(GetResRef(oItem2),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_ARROWS,oPoss)); } else if ((GetStringLeft(GetResRef(oItem3),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_BELT,oPoss)); } else if ((GetStringLeft(GetResRef(oItem4),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_BOLTS,oPoss)); } else if ((GetStringLeft(GetResRef(oItem5),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_BOOTS,oPoss)); } else if ((GetStringLeft(GetResRef(oItem6),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_BULLETS,oPoss)); } else if ((GetStringLeft(GetResRef(oItem7),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_CARMOUR,oPoss)); } else if ((GetStringLeft(GetResRef(oItem8),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_CHEST,oPoss)); } else if ((GetStringLeft(GetResRef(oItem9),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_CLOAK,oPoss)); } else if ((GetStringLeft(GetResRef(oItem10),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oPoss)); } else if ((GetStringLeft(GetResRef(oItem11),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oPoss)); } else if ((GetStringLeft(GetResRef(oItem12),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oPoss)); } else if ((GetStringLeft(GetResRef(oItem13),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_HEAD,oPoss)); } else if ((GetStringLeft(GetResRef(oItem14),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPoss)); } else if ((GetStringLeft(GetResRef(oItem15),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPoss)); } else if ((GetStringLeft(GetResRef(oItem16),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_NECK,oPoss)); } else if ((GetStringLeft(GetResRef(oItem17),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPoss)); } else if ((GetStringLeft(GetResRef(oItem18),6))=="maudit") { return GetResRef(GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPoss)); } else { return "rien"; } /* warning: 1 unclosed block {} */ Voilà c'est un peu lourd, mais normalement cela devrai récupèrer le BluePrint d'un objet maudit équipé.. Mais voilà cela ne fonctionne pas et je ne comprend pas pourquoi.. La seul valeur que la fonction donne c'est "rien"... Là j'ai besoin d'un peu d'aide je vois pas où est mon erreur... |
Revenir en haut | |
Archéops Ecuyer Messages: 55 |
Pour ce qui étaient ou qui sont toujours intéressé par le sujet voilà ce que j'espère être la version finale du script...
Ce script permet de créer des objets magiques maudits que l'on ne peut enlever.. De plus le PJ ne peut prendre plus d'un objet maudit en même temps... Enfin un script permet de détruire cet objet et d'enlever tout les efet pervers du à celui-ci.. Voilà les scripts, le script à mettre en bibliothèque n'as pas à être touché mais il est toujours nécessaire au bon fonctionement de la chose ! NWScript :
//Script a placer dans OnEquipeItem // Noter que les objets maudits doivent avoir un blueprint commencant par // maudit_xxxxxxxxx il faut 9 caractere apres _ //Les effets ont etaient choisis au hasard, vous pouvez les changer.. // la variables est definis pour eviter qu'a chaque fois que le joueur tente //d'enlever l'objet le texte ne s'affiche. //TRES IMPORTANT : pour eviter que le joueur depose l'objet maudit par terre // lors de la creation de celui-ci cochez la case ne peut etre abandonne object oItem=GetPCItemLastEquipped(); object oPerso=GetPCItemLastEquippedBy(); string sBlue=GetResRef(oItem); string sMal= GetStringLeft(sBlue,6); string sType=GetStringRight(sBlue,9); string sTag=GetTag(oItem); void main() { if (sMal=="maudit") { if (GetLocalInt(oPerso,"malediction")==0) { ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_DESTRUCTION),oPerso,3.0); FloatingTextStringOnCreature("vous venez de vous equiper d'un objet maudit",oPerso,TRUE); DelayCommand(2.0,FloatingTextStringOnCreature("vous sentez l'objet prendre emprise sur vous...",oPerso,TRUE)); SetDroppableFlag(oItem,FALSE); SetLocalInt(oPerso,"malediction",1); SetLocalString(oPerso,"Objet_maudit",sTag); if (sType=="epeecourt") { ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectAbilityDecrease(ABILITY_CHARISMA,6),oPerso); ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectAbilityDecrease(ABILITY_INTELLIGENCE,6),oPerso); ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectAbilityIncrease(ABILITY_CONSTITUTION,6),oPerso); //Mettre les effets lorsque l'epee est mise// } if (sType=="armurecui") { ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectPolymorph(POLYMORPH_TYPE_SUPER_CHICKEN),oPerso); //Mettre les effets pour l'armure// } //if (sType=="xxx"// on peut ainsi rajouter des objets maudit de tout type.. } // Pour appliquer les effets une seule fois... if (GetLocalInt(oPerso,"malediction")==1 && GetTag(oItem)==GetLocalString(oPerso,"Objet_maudit")) { } ///Pour que le joueur puisse s'equiper d'un seul item maudit.. if (GetLocalInt(oPerso,"malediction")==1 && GetTag(oItem)!=GetLocalString(oPerso,"Objet_maudit")) { DelayCommand(3.0,FloatingTextStringOnCreature("Vous portez deja un objet maudit, vous ne supporterez pas une nouvelle malediction..",oPerso,TRUE)); AssignCommand(oPerso,ActionUnequipItem(oItem)); } } else { } } NWScript :
// Script a placer dans OnUnequitem object oItem=GetPCItemLastUnequipped(); object oPerso=GetPCItemLastUnequippedBy(); string sBlue=GetResRef(oItem); string sMal= GetStringLeft(sBlue,6); #include "sys_maudit_bib" void main() { //reequipe l'item maudit... if (sMal=="maudit" && GetLocalString(oPerso,"Objet_maudit")==GetTag(oItem)) { EquipUnEquipItem(oItem,oPerso); FloatingTextStringOnCreature("Impossible d'enlever cet objet..",oPerso,TRUE); DelayCommand(2.0,FloatingTextStringOnCreature("Il fait maintenant parti de vous..",oPerso,TRUE)); } } NWScript :
//Script a place ans un dialogue afin de demaudir un PJ... object oPC=GetPCSpeaker(); int iMaudit=GetLocalInt(oPC,"malediction"); string sTag=GetLocalString(oPC,"Objet_maudit"); effect eEffect=GetFirstEffect(oPC); void main() { if (iMaudit==1) { DestroyObject(GetItemPossessedBy(oPC,sTag)); SetLocalInt(oPC,"malediction",0); SetLocalString(oPC,"Objet_maudit",""); while (GetIsEffectValid(eEffect)) { if (GetEffectDurationType(eEffect)==DURATION_TYPE_PERMANENT) { RemoveEffect(oPC,eEffect); } eEffect=GetNextEffect(oPC); } } } Voilà.. S'il y a un bug faites le savoir... |
Revenir en haut | |
Drazhar Voyageur Messages: 3 |
Super l'idée mais pourquoi ne pas Implanter la delivrance dans le sort: délivrances des maledictions (nw_s0_remeffect) ?
|
Revenir en haut | |
Archéops Ecuyer Messages: 55 |
Citation : Super l'idée mais pourquoi ne pas Implanter la delivrance dans le sort: délivrances des maledictions (nw_s0_remeffect) ? Hé bien, tout simplement parceque je ne savais quel script il fallait modifier... Mais maintenant que je le sais, c'est tout à fait faisable, il suffit d'adapter le script pour lever la malédiction au script qui gèrent le sort délivrances des malédictions.. |
Revenir en haut | |
Drazhar Voyageur Messages: 3 |
tu pourra me dire ce qu'il en est j'ai éssayé mais j'ai pô reussi...si t'y arrive tu me fait signe ! dac ?
|
Revenir en haut | |
Archéops Ecuyer Messages: 55 |
En fait le script qui gère délivrance des malédictions est a nom avis celui-ci nw_s0_rmvcurse.
Ce script permet d'enlever des effets du type : EFFECT_TYPE_CURSE. Donc en fait pour que le script agisse aussi dans le cas où le joueur est équiper d'un objet maudit, il faut que les effets produits par l'objet soit des effets du type EFFECT_TYPE_CURSE. Il faut ensuite rajouter une ligne de commande qui détruit l'objet. Ce qui donne pour le script de la délivrance : NWScript :
//:///////////////////////// ///////////////////// //:: Remove Curse //:: NW_S0_RmvCurse.nss //:: Copyright (c) 2001 Bioware Corp. //:///////////////////////// //////////////////// /* Goes through the effects on a character and removes all curse effects. */ //:///////////////////////// //////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Aug 7, 2001 //:///////////////////////// //////////////////// //:: VFX Pass By: Preston W, On: June 22, 2001 void main() { //Declare major variables object oTarget = GetSpellTargetObject(); int nType; effect eRemove = GetFirstEffect(oTarget); effect eVis = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION); //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_REMOVE_CURSE, FALSE)); //Get the first effect on the target while(GetIsEffectValid(eRemove)) { //Check if the current effect is of correct type if (GetEffectType(eRemove) == EFFECT_TYPE_CURSE) { //Remove the effect and apply VFX impact RemoveEffect(oTarget, eRemove); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } //Get the next effect on the target GetNextEffect(oTarget); } if (GetLocalInt(oTarget,"malediction")==1) { DestroyObject(GetItemPossessedBy(oTarget,GetLocalString(oTarget,"Objet_maudit"))); SetLocalInt(oTarget,"malediction",0); SetLocalString(oTarget,"Objet_maudit",""); } } Pour créer des effets de type curse il faut utiliser la fonction EffectCurse() et la mettre dans le OnequipeItem, là où il faut appliquer les effets. Le problème c'est que l'on est limité à des diminutions de caractérisques et l'on ne peut rien faire d'autre. Pour résoudre ce problème, il faudrait créer d'autres effets du type curse pour avoir un plus grand choix dans la malédiction.... Mais ça j'y ai pas encore réfléchi.... P.S. : j'ai pas vérifier si le script que j'ai donné fonctionne... |
Revenir en haut | |
Archéops Ecuyer Messages: 55 |
Visiblement mon script ne marche quand parti. Les effets néfastes sont bien dissipés mais l'objet maudit n'est pas détruit... En plus je n'arrive pas à voir où j'ai fait l'erreur..
Si quelqu'un touve, je suis preneur... |
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