[Résolu] Effets visuels sur un PNJ invockable

Le langage des scripts.
Répondre
Elianor
Traducteur chevronné
Traducteur chevronné
Messages : 1602

Effets visuels sur un PNJ invockable

Message par Elianor »

Bonjour à tous, je créer ce topic pour obtenir de l'aide sur un problème qui me tracasse depuis deux mois, ce problème je désespère d'arriver à le résoudre, j'ai du tout essayer pour que mon idée fonctionne, mais malheureusement n'y arrivant pas je me tourne vers la communauté qui je l'espère saura m'aider dans ma tache.
Comme certains le savent ici je travaille sur un mod visant à introduire comme PNJ invocables Kaos et Alkage et c'est justement sur ce dernier que j'ai rencontré un problème.Dès le début je voulait quelque chose de spectaculaire pour Alkage...mais je doit dire que mes modestes connaissances en modding m'on rapidement freiner sur mes ambitions, néanmoins je voulait comme même du festival pyrotechnique pour lui, ce qui fait que je me suis échiner à créer un Alkage tout feu tout flammes qui en impose, à ceci j'y suis sans doute arriver, mais c'est dans la conceptions des effets que je désirait pour Alkage que le problème est survenu.
Je voulait que la Mort puisse avoir à son arrivée dans le jeu grâce à l'invocation et à son départ que ce soit par sa "mort " ( Lorsque Alkage décide de se retirer volontairement car il en a marre de donner un coup de main... ) ou par la fin du timer que subis l'invocation, le même effet que les Atronachs de feu lorsque qu'elle sont tuées.En gros une grosse explosion de feu qui ravage une zone définie.L'effet qui permet cette explosion pour les Atronachs j'ai du passer des heures à le rechercher jusqu'à ce que enfin je tombe dessus : "FlammeAtronachEffects"

Code : Tout sélectionner

Scriptname FlameAtronachEffectScript extends ActiveMagicEffect  

{This is a temp script to get the art working right for the flame atronach.}
;===============================================

import utility
import form

;===============================================

Actor selfRef
VisualEffect Property AtronachFlameTrail Auto
Armor Property AtronachFlameDeadSkin  Auto  
EffectShader Property AtronachFlameDeathFXS Auto
EffectShader Property AtronachUnsummonDeathFXS Auto
explosion property AtronachFlameDeathExplosion auto
int atronachHealth 

       EVENT OnEffectStart(Actor Target, Actor Caster)        
               selfRef = caster
               AtronachFlameTrail.Play(selfRef, -1)
       ENDEVENT
       
       Event OnEffectFinish(Actor akTarget, Actor akCaster)
               AtronachFlameTrail.Stop(selfRef)
       ENDEVENT
       
       EVENT onDying(actor myKiller)
               atronachHealth = selfRef.GetAV("Health") as int
               if atronachHealth > 0
;                         debug.trace("flame health  > 0")
                       AtronachFlameTrail.Stop(selfRef)
                       AtronachUnsummonDeathFXS.Play(selfRef)
               elseIf atronachHealth <= 0
                       wait(3.0)
;                         debug.trace("flame health  <= 0")
                       AtronachFlameDeathFXS.Play(selfRef)
                       wait(0.5)
                       selfRef.placeAtMe(AtronachFlameDeathExplosion)
                       wait(0.1)
                       AtronachFlameTrail.Stop(selfRef)
                       selfRef.EquipItem(AtronachFlameDeadSkin)
                       wait(1)
                       AtronachFlameDeathFXS.Stop(selfRef)
               endif
       ENDEVENT
       

J'ai donc essayer de placer ce script sur Alkage ce qui n'a pas fonctionner, de plus ce script ne permettait pas une explosion à l’apparition de l’invocation...j'ai donc essayer de le modifier mais rien n'y fit et je n'ai donc pas réussis sur ce plan la.
Mais je n'ai pas renoncé et je me suis rappeler les familiers de feu invocables qui étaient des bombes vivantes, j'ai donc chercher le script permettant le compte à rebours de l'explosion.Après de multiples péripéties et grâce à l'aide précieuse de Tenzaku j'ai donc enfin réussit à appliquer ce script :

Code : Tout sélectionner

Scriptname spellSummonDraugrBomb extends ACTOR 


EXPLOSION PROPERTY fireballExplosion AUTO
EffectShader Property AtronachUnsummonDeathFXS Auto

BOOL doOnce=TRUE

EVENT onLoad()

utility.wait(179.5)

IF(doOnce && SELF.is3DLoaded())
SELF.placeAtMe(fireballExplosion)
doOnce = FALSE
utility.wait(0.1)
disable()
utility.wait(0.5) 
delete()
ENDIF

ENDEVENT

EVENT onHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)

IF(doOnce)
SELF.placeAtMe(fireballExplosion)
doOnce = FALSE
utility.wait(0.1)
disable()
utility.wait(0.5) 
delete()
ENDIF

ENDEVENT

EVENT onDying(actor myKiller)
AtronachUnsummonDeathFXS.Play(self)
ENDEVENT

Mais malgré son bon fonctionnement il causait des bugs d'IA sur Alkage qui n'était pas souhaitables, de plus l’invocation subissait un timer qui ne marchait que sur un seul point, en effet le script originel des familiers de feu prévoyait un timer de cinq secondes au bout duquel le familier explosait, j'ai donc modifier cette durée dans la script, avec l'aide de Tenz, pour qu'elle soit du temps de l'invocation.Mais le problème était bien la ! l'explosion n'avait lieu qu'à la fin d'un timer de trois minutes ! cela voulait donc dire que si Alkage était "tué" l'explosion n'aurait donc pas lieu, et de plus le problème de déclencher une explosion au début de l'invocation restait...car ce script quand il provoque l'explosion du PNJ le tue aussi et le fait donc disparaître ce qui amenait une impossibilité logique à son utilisation pour l’explosion du début...

Voila donc ou j'en suis, j'ai décidé d'abandonner le script avec le timer car il ne répondait finalement pas à mes attentes et qu'il causait des bugs.J'aurait donc besoin de l'aide d'un scripteur pour m'aider à concevoir un Script qui provoquerait cette explosion de feu ( celle des Atronachs) à l’arrivé du PNJ en jeu suite à son invocation et à sa sortie du jeu que ce soit par la fin du timer du sort ou par la "mort" du PNJ...

Merci d'avance pour une potentiel aide
Modifié en dernier par Elianor le 20 juin 2015, 18:40, modifié 7 fois.
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: Aide et conseils pour la réalisation d'un Script.

Message par Gerauld »

Etant donné que tu m'a envoyé ton esp, je regarderai ça demain et posterai le script ici.
Elianor
Traducteur chevronné
Traducteur chevronné
Messages : 1602

Re: Aide et conseils pour la réalisation d'un Script.

Message par Elianor »

Je ne pourrait sans doute jamais te remercier assez pour l'aide que tu m'apporte dans la réalisation de ce mod, sans toi il n'aurait sans doute pas pu voir le jour, alors merci !
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: Aide et conseils pour la réalisation d'un Script.

Message par Gerauld »

Je viens d'ouvrir ton esp. J'attaque le script (avec un jour de retard...)
En clair, tu veux l'effectshader ainsi que l'explosion quand Alkage arrive ou tire sa révérence...
Plutôt que de placer le script sur Alkage, tu devrais t'inspirer de ce qui a été fait pour les bestioles à flammes : placer le script sur l'effect magique qui invoque Alkage. Cela aurait simplifié grandement l'adaptation.
Tu auras des nouvelles dès que ce sera fini et testé.

EDIT : en fait, je vais placer une capacité sur Alkage avec l'effet qui contient le script pour l'explosion et les effets visuels pour voir. Cela devrait marcher. Comme Alkage est un ajout du mod, je peux l'appliquer directement sur l'actor.

Ensuite, je ferai une copie de la capacité, de l'effet magique et du script pour ajouter l'explosion à l'arrivée d'Alkage.


EDIT 2 : Tout compte fait, un petit script des familles suffit. Il faut le placer sur ton actor AAADeathinvocation :
► Afficher le texte
Concernant les propriétés, tu fais d'abord un auto-fill puis tu remplis par ce que tu veux.
Par exemple, j'ai mis :
Fireballexp01 pour l'explosion
AtronachflamedeathSFX pour l'effectshader
FXAtronachFlameTraileffect pour le visual effect

Tu obtiens donc une explosion à l'arrivée et une au départ ou en cas de mort.
Elianor
Traducteur chevronné
Traducteur chevronné
Messages : 1602

Re: Aide et conseils pour la réalisation d'un Script.

Message par Elianor »

Merci beaucoup Gerauld, et ne t'en fait pas pour le retard car de mon côté j'en ait profité pour rajouter du contenu au mod, en tout cas ton analyse de la situation présente du mod et ce que tu en à tirer pour réaliser le script que je désirait est parfaite, je regarde ça tout de suite et te tient au courant , et vu ta participation dans le Mod il est évident que tu sera mis dans les Crédits.

EDIT : le script fonctionne très bien ! par contre la ou un problème est réglé un autre arrive... en effet le script que tu m'avait fait pour bloquer le sort si le joueur n'a pas 2000 PO, et bien il y a un gros bug : si on essaye de lancer le sort alors que l'on n'a pas 2000 PO et bien l'effet de la conjuration ( le vortex violet) se fige et reste ainsi.De plus à partir du moment ou le joueur aura de nouveau 2000Po et bien l'effet figé va se débloquer et un Alkage PNJ et non pas invocation va alors apparaître à l’emplacement de ce même vortex et rester ainsi tandis que si on essaye à ce moment la de convoquer à nouveau Alkage il y aura un Alkage PNJ et un Alkage conjuration ! et ainsi de suite j'ai réussit à faire poper 5 Alkage !
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: Aide et conseils pour la réalisation d'un Script.

Message par Gerauld »

Je vais donc corriger ça en ajoutant que si le joueur n'a pas 2000 Po, Alkage, fou de rage, se jette sur lui et le tue.
Il suffit d'éditer le sort, de double-cliquer sur l'effet et enlever la condition pour supprimer le bug.
Il faudra donc modifier le script de retrait de Po et de manière à rendre le joueur ennemi de Alkage s'il ne peut payer.
Répondre

Retourner vers « Entraide sur les scripts »