Script Changement De Couleur Des Yeux, Besoin D’Aide.
#26
Posté 30 novembre 2012 - 21:16
Par contre fais bien attention pour les transformations (en lg ou lord vampire), revois mon post plus haut dans ce cas.
ET Aussi, si tu dois desinstaller ou desactiver le mod, n'oublie pas de deséquipper la dague avant pour ne laisser aucune trace sur ta prochaine sauvegarde.
#27
Posté 30 novembre 2012 - 21:25
en postant mon message la page c'est actualisé , et je viens de lire vos derniers messages.
je prend bonne note , je regarde ça demain soir quand je rentre .
bonne soirée a vous.
Modifié par Daan_Noa, 30 novembre 2012 - 21:26.
#28
Posté 30 novembre 2012 - 21:27
EDIT : C'est quoi cette manie que nous avons de poster en même temps...
Modifié par Gérauld, 30 novembre 2012 - 21:27.
#29
Posté 30 novembre 2012 - 21:30
J'en ai fait aucune expérience là dessus...
De tête, je dirai qu'en utiliser dans les conditions du Magic Effect serait l'idéal mais après je devrai aller voir sur CreationKit.com comment ça marche...
Donc en gros je suis pas chaud de suite
Je pensais aussi à une Target condition sur la fenetre du Magic Effect en haut à droite...
#30
Posté 30 novembre 2012 - 21:33
Citation
j’osai pas demander!
Citation
bonne question !
Modifié par Daan_Noa, 30 novembre 2012 - 21:33.
#31
Posté 30 novembre 2012 - 22:01
J'essaierai de faire ça ce weekend avec des captures d'écran et quelques explications.
#32
Posté 01 décembre 2012 - 12:35
Pour cela un RegisterForSingleUpdate à répeter sur une nouvelle condition (si le joueur a tjs la dague équippée)
Scriptname AA_MagicEffectScript extends activemagiceffect Actor Property Player Auto TextureSet Property NewEyes Auto Weapon Property Dagger Auto ;ta dague Event OnUpdate() Debug.Notification ("test") ;cette ligne est à enlever, c'est là juste pour test if ( Player.IsEquipped (Dagger) ) Player.SetEyeTexture (NewEyes) RegisterForSingleUpdate(0.5) endif EndEvent Event OnEffectStart (Actor Target, Actor Caster) if ( Target == Player ) RegisterForSingleUpdate(0.5) Player.SetEyeTexture (NewEyes) endif EndEvent Event OnEffectFinish (Actor Target, Actor Caster) UnregisterForUpdate() EndEvent
Si on sauvegarde avec la dague équippée, en rechargeant la save (mod desactivé) le singleUpdate sera joué une seule fois puis disparaitra.
Apparemment plus de pb...
En attendant une meilleur idée de Gérauld
#33
Posté 01 décembre 2012 - 13:11
Nous aurions aussi pu utiliser un perk par exemple. Si un troisième moddeur se sent de faire un truc en partant de là, nous aurions fait le tour... ou presque.
J'essaierai de faire un truc avec une autre méthode ce weekend (l'effet magique conditionné placé par quête, qui est réutilisable dans plein de cas et permet de tester des choses que Papyrus ne peut pas) histoire de compléter un peu ce sujet déjà riche d'idées.
Modifié par Gérauld, 01 décembre 2012 - 13:11.
#34
Posté 01 décembre 2012 - 19:56
Comme d’habitude un grand merci a vous pour votre aide.
J’aurai besoin d’explications concernant le « RegisterForUpdate » car je dois admettre ne pas être sur d’avoir compris le problème.
Ce que je pense avoir compris :
le « RegisterForUpdate » déclanche l’ Event OnUpdate() toutes les X secondes.
le « RegisterForUpdate » n’est pas souhaitable dans les scripts des mods car il est possible (certain ?) que le script reste stocker dans une sauvegarde même après désactivation ou la désinstallation du mod, ce qui entraîne une répétition d’action qui ne sont plus voulu et sûrement une consommation de ressources excessive .
Est-ce bien ça ?
On y préfère donc le « RegisterForSingelUpdate » qui lui ne lance qu’une fois l’ Event OnUpdate().
Je suis toujours bon la ?
Je me permet également de poser une question qui s’éloigne, tres légèrement, du sujet :
Le « RegisterForSingelUpdate » est il confiné a sont script ?
Mon idée était: plus le joueur passe de temps avec la dague au poing plus je lui « donne » de sorts. Pour cela je pensais utiliser un « RegisterForSingelUpdate » mais du coup si il y en a déjà un dans le magic effect je me demande si l’un ne va pas déclencher le « OnUpdate() » de l’autre.
Encore merci a vous,
Daan .
PS : si la dernière question serait plus a sa place dans un autre poste dite le moi, je la déplacerai .
#35
Posté 01 décembre 2012 - 20:33
Il ne peut y avoir deux events onupdate différenciés dans un script mais les events onupdate() et onupdategametime() sont différenciés. Cela veut dire que l'on peut avoir un appel avec un registerforsingleupdate et un appel avec un registerforsingleupdategametime.
Dans le cas de l'arme qui a de plus en plus de pouvoirs en fonction du temps, le registerforsingleupdategametime est tout indiqué. Cela permet de s'affranchir des éventuels problèmes avec ceux qui ont modifié le timescale.
L'unité du paramètre entre parenthèses est l'heure, non pas IRL mais dans le jeu.
Sinon, une petite précision, un registerforsingleupdate placé dans un event onupdate sans être conditionné par un ajout du mod est aussi dangereux qu'un registerforupdate. Il faut prendre l'habitude de toujours conditionner les ajouts faits par le mod lorsqu'il y a présence d'effets magiques ou d'instructions commençant par register.
Modifié par Gérauld, 01 décembre 2012 - 20:34.
#36
Posté 01 décembre 2012 - 21:30
avec le « RegisterForSingelUpdategametime » les déplacements rapide ( téléportation) peuvent représenter une grande partie du temps écoulé.
Tu parle de « problèmes avec ceux qui ont modifié le timescale » peut tu m’en dire d’avantage ?
EDIT:
Re ,
@Ced :
Chez moi
if ( Playerref.IsEquipped (Dagger) )ne pase que si j’ai la dague dans la main droite !
j’ai contourné le probleme avec
If (Playerref.GetEquippedWeapon() == Dagger) Player.SetEyeTexture (NewEyes) RegisterForSingleUpdate(0.5) Else If (Playerref.GetEquippedWeapon(true) == Dagger) Player.SetEyeTexture (NewEyes) RegisterForSingleUpdate(0.5) EndIf EndIf
Pourrai tu me dire si c’est pareil chez toi ou si ça vient d’une erreur de m’a part ?
Merci.
Modifié par Daan_Noa, 01 décembre 2012 - 22:40.
#37
Posté 02 décembre 2012 - 00:38
Tu as bien fait, et je ne pensais pas que IsEquipped() ne prenait pas en compte la main gauche... ça me surprend mais effectivement c'est le cas.
Il faut vérifier si le joueur s'équipe main gauche ou droite...
Juste comme ça histoire d'alléger ce que tu as mis :
If (Playerref.GetEquippedWeapon() == Dagger) Player.SetEyeTexture (NewEyes) RegisterForSingleUpdate(0.5) ElseIf (Playerref.GetEquippedWeapon(true) == Dagger) Player.SetEyeTexture (NewEyes) RegisterForSingleUpdate(0.5) EndIfEt mieux encore avec un "OU" :
If (Playerref.GetEquippedWeapon() == Dagger || Playerref.GetEquippedWeapon(true) == Dagger) Player.SetEyeTexture (NewEyes) RegisterForSingleUpdate(0.5) EndIf
#38
Posté 02 décembre 2012 - 01:16
Pour la petite histoire, il est possible de détecter les voyages rapides en comparant l'écoulement de temps entre l'evnt onupdate() et le onupdategametime () dans un même script pour pouvoir éventuellement ne pas prendre en compte le voyage rapide mais là, ça va compliquer les choses (même si ça marche, testé dans SEI, mais dans l'optique de détecter le fast travel pour mener certaines actions.).
Dans ton cas, autant passer par plusieurs scripts avec leurs events onupdate() séparés, ce sera plus simple. Il vaut mieux utiliser plein d'éléments simples que de faire un seul élément qui devient très compliqué.
#39
Posté 02 décembre 2012 - 16:44
Citation
Pour infos : la transformation en loups-garous avec la dague en main provoquait un petit bug a savoir :
L’animation de transformation commence , puis le personnage reprend brutalement sa forme originel pour au finale finir sa transformation .
J’ai corrigé ça avec :
if ( akActor == Playerref && playerwerewolfQuest.GetStage() != 1 )par dessus :
if ( akActor == Playerref && RacePlayer != ImperialRace ) Playerref.RemoveSpell (ItemCurseSpell) ;on lui retire la capacité discretos Playerref.SetRace (ImperialRace) Playerref.SetRace (RacePlayer) elseif ( akActor == Playerref && RacePlayer != NordRace ) Playerref.RemoveSpell (ItemCurseSpell) ;on lui retire la capacité discretos Playerref.SetRace (NordRace) Playerref.SetRace (RacePlayer) endif
L’un de vous aurait « Dauwngard » ? Il me faudrait le nom de la quête de transformation en lord vampire pour pouvoir de suite faire de même pour cette transformation.
D’avance merci.
#40
Posté 02 décembre 2012 - 19:06
if ( akActor == Playerref && playerwerewolfQuest.GetStage() != 1 )
essaie plutot :
if ( akActor == Playerref && !playerwerewolfQuest.isRunning() )ça vérifie si la Quest n'est pas en train de tourner, car à partir du moment où la transfo commence, elle tourne et ne s'arretera qu'après le passage LG en Humain
Idem pour le seigneur vampire de Dawnguard : (faudra penser dans ce cas, à cocher Dawnguard.esm en plus de Skyrim.esm & Update.esm dans le CK)
Si tu n'as pas Dawnguard, ça ne servira à rien d'effectuer des changements... toutes les données du DLC sont dans Dawnguard.esm
Si tu as le DLC alors :
if ( akActor == Playerref && !playerwerewolfQuest.isRunning() && !DLC1PlayerVampireQuest.isRunning() ) if ( RacePlayer != ImperialRace ) ... elseif ( RacePlayer != NordRace ) ... endif endifAussi évite dans les conditions de répéter plusieurs fois la même (akActor == Playerref), dans une succession de &&
Il est évident que si une condition n'est pas vérifiée parmis tout ça, le script n'executera pas le contenu du if
EDIT : pense aussi à faire en sorte de deséquipper la dague si le joueur commence à se transformer, ou un truc dans le genre...
EDIT2 : en relisant mon post, je commence à me demander si je suis pas un peu scripté
#41
Posté 02 décembre 2012 - 22:32
http://www.creationk...FromFile_-_Game
Il suffit juste de demander les ID à mettre si ça t'intéresse...
#42
Posté 03 décembre 2012 - 22:19
Ça t'intéresse !
Le seul truc c’est que mes compétences linguistique (minable, il faut bien l’admettre) sont largement dépassées.
Je me permets de faire mon boulet :
Existe- il une explication française de cette fonction ?
Aussi étiqueté avec eyes, yeux, texture
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)