Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

probleme avec ActionCastSpellAtObject

Par Iridian le 14/11/2002 à 16:54:03 (#2561719)

Je suis scripteur debutant et j'ai un probleme avec une fonction.
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)

je pense que ca vient plutot du HOMING, mais je peut me tromper...


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)

Nan ca ne marche pas non plus, merci d'avoir essayé de m'aider.
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)

Ah ok, j'avais pas capté l'utilisation d'objet... desole.

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)

Ah oui pas bête !
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)

Lors de l'activation de l'objet, tu fais un Create. Rien ne t'empeche de faire juste apres Un SetLocalObbject(oSpawn, "oTarget",Get...target());

Et dans le OnSpawn, tu recupere ce localobject

Par Iridian le 15/11/2002 à 23:04:09 (#2571821)

J'ai essayé cette méthode, mais ça ne marche pas, le pnj n'apparais pas. Voici mon code d'invoc (dans le OneActivateItem du module):
(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)

Au fait, je me rend compte a quel point je suis nul...

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)

Ca me paraîtrait plus simple d'utiliser des effets plutôt qu'un lancement de sort (en fait il s'agit simplement du script du sort mage armor):


//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)

Merci pour vos réponses, je crois que je vais en rester aux effets.
Je ne m'en sort vraiment pas avec le pnjs :o)

JOL Archives 1.0.1
@ JOL / JeuxOnLine