Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > probleme avec ActionCastSpellAtObject
probleme avec ActionCastSpellAtObject
Par Iridian le 14/11/2002 à 16:54:03 (#2561719)
J'ai eu beau chercher un peu partout, je n'ai pas trouvé de solution a mon probleme, le voici :
ActionCastSpellAtObject(SPELL_BULLS_STRENGTH,oActivator,METAMAGIC_ANY,TRUE,0,PROJECTILE_PATH_TYPE_HOMING,FALSE);
Cette fonction ne marche pas.
Pourtant
-oActivator est correct (c'est la personne qui declanche l'objet, j'ai fait afficher son nom en mesage et c'est bon)
-le script ou la fonction est stoqué est bien effectué (sinon j'aurai pas le nom en message ;) )
Je soupsonne que le probleme viens du "0" (en gras), car c'est le seul parametre que je ne comprend pas :rolleyes:
J'ai essayé plusieurs valeures (integer) et ca ne change rien ...
Si quelqu'un vois d'ou viens le probleme, merci d'avance
Par eMRaistlin le 14/11/2002 à 17:06:15 (#2561822)
Ce que je te conseille : essaye simplement ca :
ActionCastSpellAtObject(SPELL_BULLS_STRENGTH,oActivator,oTarget,1);
Par Iridian le 14/11/2002 à 20:27:09 (#2563532)
Quelqu'un m'a soufflé que cette fonction ne fonctionne que pour les scripts de pnjs, alors que moi je voulais l'utiliser dans certains cas d'utilisation d'objets dans les scripts du module (me rappel plus le nom de l'evenement, zut).
(oui je sais j'aurai eu plus vite de donner le pouvoir a l'objet mais je voulais essayer, pour le plaisir)
Toujours est-il que grace aux fonction EFFECTXXINCREASE et EFFECTXXDECREASE on peu **emuler** la plus part des sortilleges de boost.
Donc j'ai pu augmenter la force du perso comme par un sort de force du taureau, mais lancé par script.
Si quelqu'un connais le moyen de lancer reelement un sort lors de l'activation d'un objet, je suis preneur quand meme :D
Par eMRaistlin le 14/11/2002 à 21:27:43 (#2564012)
Pour ca, c'est simple : tu créé un PNJ invisible avec createobject... tu le fais lancer le sort, puis tu le detruit avec DestroyObject (avec un DelayCommand), c'est facile ^^)
Par Iridian le 15/11/2002 à 8:18:38 (#2566144)
Mais dans le onSpawn du pnj, comment je peu savoir qui a activer l'objet ?
Par eMRaistlin le 15/11/2002 à 9:20:27 (#2566330)
Et dans le OnSpawn, tu recupere ce localobject
Par Iridian le 15/11/2002 à 23:04:09 (#2571821)
(oActivator = PC qui active l'item, l'objet est valide je l'ai testé)
-----------------------------------
object oEsprit = CreateObject(OBJECT_TYPE_CREATURE,"esprit_ocean",GetLocation(oActivator));
SetLocalObject(oEsprit,"beneficiaire",oActivator);
-----------------------------------
et dans le OnSpawn du pnj :
-----------------------------------
object oCible = GetLocalObject(OBJECT_SELF,"beneficiaire");
ActionCastSpellAtObject(SPELL_MAGE_ARMOR,oCible,METAMAGIC_NONE,TRUE);
DestroyObject (OBJECT_SELF);
-----------------------------------
Par eMRaistlin le 16/11/2002 à 0:03:28 (#2572134)
le 0, remplace le par TRUE... ca permet au PNJ de lancer le sort meme sans le connaitre ou pouvoir le lancer...
Par Kemay le 16/11/2002 à 2:27:41 (#2572855)
//Durée du sort d'armure (originellement nDuration est égal au niveau du spellcaster)
int nDuration = 9;
effect eVis = EffectVisualEffect(VFX_IMP_AC_BONUS);
effect eAC1, eAC2, eAC3, eAC4;
//Set the four unique armor bonuses
eAC1 = EffectACIncrease(1, AC_ARMOUR_ENCHANTMENT_BONUS);
eAC2 = EffectACIncrease(1, AC_DEFLECTION_BONUS);
eAC3 = EffectACIncrease(1, AC_DODGE_BONUS);
eAC4 = EffectACIncrease(1, AC_NATURAL_BONUS);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
effect eLink = EffectLinkEffects(eAC1, eAC2);
eLink = EffectLinkEffects(eLink, eAC3);
eLink = EffectLinkEffects(eLink, eAC4);
eLink = EffectLinkEffects(eLink, eDur);
//Apply the armor bonuses and the VFX impact
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, Activator, HoursToSeconds(nDuration));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oActivator);
Par Iridian le 16/11/2002 à 15:55:12 (#2575393)
Je ne m'en sort vraiment pas avec le pnjs :o)
JOL Archives 1.0.1
@ JOL / JeuxOnLine