Bonjour à tous, je viens vous demander un peu d'aide...
En effet, je cherche à créer une methode qui permettrais à mon guerrier, d'envoyer une onde de choc autour de lui qui enverrais valser ses attaquants s'ils sont trop nombreux.
Jusqu'a maintenant, j'ai essayer de scripter la chose sur l'acteur dans l'évent OnHit() sans succès.
Avez vous une solution ou des idées?
Merçi, d'avance pour votre aide.
Méthode de comptage d'ennemis autour du joueur ?
Méthode de comptage d'ennemis autour du joueur ?
Modifié en dernier par Fenrys le 26 août 2014, 16:59, modifié 2 fois.
Re: Méthode de comptage d'ennemis!!!
Regarde du côté du mod Sélène Kate traduit par mes soins.
Elle possède une attaque de ce genre.
Elle possède une attaque de ce genre.
Re: Méthode de comptage d'ennemis!!!
Non, malheureusement ça ne fonctionne pas du tout comme ça, c'est juste un sort qu'elle utilise kate peut importe le nombre d'ennemis qui l'attaque
Re: [Résolu] Méthode de comptage d'ennemis!!!
Scriptname TestScript extends Actor
Spell Property EnnemyToken Auto
Spell Property DefensiveSpell Auto
INT count = 0
Event onHit(objectReference akAggressor, Form akWeapon, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
IF !(akAggressor as actor).HasSpell(EnnemyToken)
(akAggressor as actor).AddSpell(EnnemyToken)
count = count + 1
Debug.Notification("OUCH")
ELSEIF (akAggressor as actor).HasSpell(EnnemyToken)
Debug.Notification("Spell Detected")
EndIF
IF count == 4 && count < 5
DefensiveSpell.cast(self,self)
Debug.Notification("Shockwave!")
(akAggressor as actor).RemoveSpell(EnnemyToken)
count == 0
EndIF
EndEvent
Ca marche une fois et c'est tout erf...
Spell Property EnnemyToken Auto
Spell Property DefensiveSpell Auto
INT count = 0
Event onHit(objectReference akAggressor, Form akWeapon, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
IF !(akAggressor as actor).HasSpell(EnnemyToken)
(akAggressor as actor).AddSpell(EnnemyToken)
count = count + 1
Debug.Notification("OUCH")
ELSEIF (akAggressor as actor).HasSpell(EnnemyToken)
Debug.Notification("Spell Detected")
EndIF
IF count == 4 && count < 5
DefensiveSpell.cast(self,self)
Debug.Notification("Shockwave!")
(akAggressor as actor).RemoveSpell(EnnemyToken)
count == 0
EndIF
EndEvent
Ca marche une fois et c'est tout erf...
Re: Méthode de comptage d'ennemis!!!
Je pense que c'est parce que tu détecte l'absence de spell pour alimenter ton compteur. Comme une fois que tu l'a détecté tu lui a donné le spell, tu ne le détecte plus lorsqu'il t'attaque à nouveau (même si entre temps tu a caster ton DefensiveSpell et reset ton compteur).
(Note : Même si ton spell a un MagicEffect associé qui lui est temporaire, il n'empêche que le spell est toujours là, même si le magiceffect est dispelled)
Ajoute un effet à ton sort défensif un effet qui enlève le spell aux actors touchés, ou détecte le magic effect au lieu du spell, ça devrait aller. Dans le deuxième cas, même si l'actor n'a plus le magic effect et donc HasMagicEffect te renvoie False, ton AddSpell n'aura aucun effet vu qu'il a toujours le Spell. En revanche tu peux mettre un truc du style :
If (akAggressor as actor).HasSpell(EnnemyToken) && !(akAggressor as actor).HasMagicEffect(EnnemyTokenEffect)
EnnemyToken.cast(akAggressor, akAggressor)
EndIf
Ca devrait remettre le magiceffect sur l'actor.
Pas besoin de cast akAggressor en actor pour cast le spell, la fonction fonctionne direct sur des object reference.
(Note : Même si ton spell a un MagicEffect associé qui lui est temporaire, il n'empêche que le spell est toujours là, même si le magiceffect est dispelled)
Ajoute un effet à ton sort défensif un effet qui enlève le spell aux actors touchés, ou détecte le magic effect au lieu du spell, ça devrait aller. Dans le deuxième cas, même si l'actor n'a plus le magic effect et donc HasMagicEffect te renvoie False, ton AddSpell n'aura aucun effet vu qu'il a toujours le Spell. En revanche tu peux mettre un truc du style :
If (akAggressor as actor).HasSpell(EnnemyToken) && !(akAggressor as actor).HasMagicEffect(EnnemyTokenEffect)
EnnemyToken.cast(akAggressor, akAggressor)
EndIf
Ca devrait remettre le magiceffect sur l'actor.
Pas besoin de cast akAggressor en actor pour cast le spell, la fonction fonctionne direct sur des object reference.
Faites un feu à un homme, il aura chaud un jour.
Mettez le feu à un homme, il aura chaud jusqu'à la fin de sa vie.
Terry Pratchett
Mettez le feu à un homme, il aura chaud jusqu'à la fin de sa vie.
Terry Pratchett
Re: Méthode de comptage d'ennemis!!!
je crois que c'est pas la bonne methode je devrais plutot utiliser un truc de distance qui dit combien d'ennemis sont sur lui.