Aller au contenu


Script Changement De Couleur Des Yeux, Besoin D’Aide.

eyes yeux texture

  • Veuillez vous connecter pour répondre
41 réponses à ce sujet

#1 Daan_Noa

Daan_Noa

Posté 25 novembre 2012 - 20:37

Bonjour,

Je cherche a rédiger un script qui permettrait le changement de texture des yeux du «  player » quand ce dernier tient un objet précis en main.

En cherchant un peut je suis tombé sur ça :
http://www.creationk...Texture_-_Actor

J’ai adapté ça à mes besoins et j’ai rédigé le script qui suit :

Scriptname DMN_Scripte_Dague extends ObjectReference

Event OnEquipped(actor akActor)

TextureSet FemaleEyesHumanDemon
Game.GetPlayer().SetEyeTexture(FemaleEyesHumanDemon)

EndEvent


Pour une raison que j’ignore il ne se passe rien « in game ».
L’un d’entre vous a-t-il déjà utilisé cette commande ?
L’un d’entre vous aurait il une idée du problème ?

D’avance je vous remercie pour votre aide.

#2 Gérauld

Gérauld

Posté 25 novembre 2012 - 20:55

Salut, as-tu déclaré et remplis la propriété FemaleEyesHumanDemon?
Il faut ajouter en dessous de la ligne scriptname celle-ci :
textureset property FemaleEyesHumanDemon auto

Ensuite, tu compils ton script et dans la fenêtre d'édition de ton objet tu double-cliques sur le nom du script et tu cliques sur auto-fill.
La propriété devrait se remplir. Dans le cas contraire, tu la sélectionnes et tu la remplis à l'aide du menu déroulant sur la droite.

Petit conseil en passant :
Pour les petits scripts, cela ne pose pas trop de problèmes mais dans les plus gros, il vaut mieux ne pas utiliser game.getplayer() qui est une instruction assez lente à l'exécution.

Il vaut mieux ajouter la propriété suivant :
actor property playerref auto
La remplir avec un auto-fill (comme précisé au-dessus) et donc mettre ensuite :
playerref.SetEyeTexture(FemaleEyesHumanDemon)

Si ton soucis ne provient pas du script en lui-même, il faut vérifier que ton esp soit bien dépendant de Dawnguard si c'est ce dernier qui ajoute le textureset correspondant aux yeux.

Modifié par Gérauld, 25 novembre 2012 - 20:55.

L'ours blanc est l'un des plus grands carnivores de Nirn. Les poils du pelage sont translucides et creux. C'est la réfraction de la lumière visible sur la surface interne des poils creux et incolores qui les fait paraître blancs. Cette particularité lui permet de se camoufler dans son environnement de neige et de glace, afin de mieux surprendre ses proies. Ce plantigrade vit exclusivement en Bordeciel et sur l'île de Solstheim.

#3 Daan_Noa

Daan_Noa

Posté 25 novembre 2012 - 22:05

re bonjour ,
d'abord merci pour ton aide.

mon script est a present :

Scriptname DMN_Scripte_Dague extends ObjectReference

textureset property EyesMaleHumanDemon auto

Event OnEquipped(actor akActor)

Game.GetPlayer().SetEyeTexture(EyesMaleHumanDemon)

EndEvent

mais il ne se passe toujours rien "in game".

je suis tombé sur ca :
http://www.creationk...xtureSet_Script
du coup je me demande si c'est bien
Scriptname DMN_Scripte_Dague extends ObjectReference

PS: j'ai modifié "FemaleEyesHumanDemon" en "EyesMaleHumanDemon" car "FemaleEyesHumanDemon" n'etait pas une texture.

Modifié par Daan_Noa, 25 novembre 2012 - 22:08.


#4 Gérauld

Gérauld

Posté 26 novembre 2012 - 01:36

Dans la 1ère ligne, ce qui suit le "extends" dépend de l'objet auquel est attaché le script et non pas de ce qu'il y a à l'intérieur. Donc, dans ton cas, il faut laisser objectreference. Si tu modifies ceci, ton script ne fonctionnera pas.

Tu as ajouté la ligne de propriété dans le script mais tu ne l'as pas remplie en dehors du script...
As-tu trouvé la fenêtre avec le bouton "autofill" quand tu double-cliques sur le nom du script?
Tu dois y retrouver le nom de ta propriété dan une colonne, le type dans la deuxième et la 3ème colonne doit contenir la valeur associée.... C'est cette colonne là qui doit être renseignée pour ta propriété. Tu dois faire le lien entre ta variable définie après "textureset property" dans ton script et l'objet de type textureset existant dans le CK.

Un textureset est un objet créé dans le CK qui répertorie un ensemble de textures et n'est nullement une texture. La texture qui doit être employée doit être citée dans le textureset. (=> http://www.creationkit.com/TextureSet )
C'est bien le textureset qui doit être mis en propriété et non la texture (ce qui est impossible d'ailleurs).

EDIT :  J'en ai profité pour te répondre aussi de l'autre côté :
http://www.confrerie...p?f=208&t=14460
J'ai ajouté quelques éléments. Au besoin, je les copierai dans ce sujet car, une fois ton post déplacé sur la Conf', il ne sera plus accessible à tout le monde.
Bonne initiative de poster sur les deux sites, cela permet de profiter de l'expérience de plus de moddeurs (même si, pour le coup, ce sujet mériterait l'intervention d'un moddeur ayant déjà utilisé l'instruction seteyetexture afin de nous faire profiter de son expérience... )

Un petit lien vers un sujet parlant de cette instruction (lire les posts de Ced qui a testé cette instruction) :
http://forum.wiwilan...ure#entry713857

Un petit lien vers le wiwiki pour les scripts :
http://wiwiki.wiwila...ts_introduction

EDIT2 : Il m'arrive assez souvent de parler de Wiwiland (et du Wiwiki) sur la Conf' et de la Conf' sur Wiwiland en mettant des liens, donc ne pas s'étonner de la présence d'un lien vers un site complémentaire dans ce sujet... Pour plus de détails, un petit spoil (j'ai enfin trouvé cette fichue balise après des mois de recherche... Il me reste à trouver la balise "hors-sujet."..) ;
Spoiler

Modifié par Gérauld, 26 novembre 2012 - 15:20.

L'ours blanc est l'un des plus grands carnivores de Nirn. Les poils du pelage sont translucides et creux. C'est la réfraction de la lumière visible sur la surface interne des poils creux et incolores qui les fait paraître blancs. Cette particularité lui permet de se camoufler dans son environnement de neige et de glace, afin de mieux surprendre ses proies. Ce plantigrade vit exclusivement en Bordeciel et sur l'île de Solstheim.

#5 Daan_Noa

Daan_Noa

Posté 26 novembre 2012 - 22:02

Salut,

D’abord un grand merci à toi pour, non pas TA mais TES réponses !
Toutes deux très précises et donc très instructives pour un débutant dans les scriptes comme moi.

Ca y est ! Le script fonctionne… presque ! lol

1er cas : je charge ma sauvegarde (une sauvegarde « vierge »), je joue à la 1ère personne, je ramasse l’objet (une dague) sur lequel est appliqué le script, je sors du menu et la … rien, toujours les yeux bleu.

2ème cas : je charge ma sauvegarde (une sauvegarde « vierge »), je joue à la 3ème personne, je ramasse l’objet, je sors du menu et la … Bingo, ça marche !

Une idée d’où ça vient ?
Une idée pour résoudre le problème ?

J’imagine qu’il serait possible, via le script, de passer le joueur à la 3ème personne (j’ai pas vérifié), mais ça risque de vite devenir pénible de devoir à chaque fois repassé en 1ère personne.

Pour finir je me permet de déposer une version corriger du script que tu as eu la gentillesse de rédiger, le but étant d’y apporté 2 petites corrections (j'ai modifié "FemaleEyesHumanDemon" en "EyesMaleHumanDemon" car "FemaleEyesHumanDemon" n'était pas une texture, une petite erreur de frappe dans « textureset ») afin que ce dernier puisse être utilisé par les autres lecteurs.



Scriptname DMN_Scripte_Dague extends ObjectReference

actor property playerref auto	; je déclare une propriété de type actor appelée playerref
textureset property EyesMaleHumanDemon auto ; déclaration d'un propriété de type textureset

Event OnEquipped(actor akActor) ;l évènement : 'objet sur lequel est placé le script est équipé
		  if akActor == playerref  ;si c'est le joueur qui l'a équippé
				  playerref.SetEyeTexture(EyesMaleHumanDemon) ;j'applique le textureset au joueur
		  endif   ; fin de mon bloc if
EndEvent


Encore merci pour ton aide.


EDIT : a quel moment exactement sont chargés les éléments 3D de l'actor playerref ?

Modifié par Daan_Noa, 26 novembre 2012 - 22:05.


#6 ced

ced

    les météores


Posté 26 novembre 2012 - 23:02

Salut ;)

Le pb, il est dit ici : http://forum.wiwilan...ure#entry713857
ou encore ici : http://www.creationk...Texture_-_Actor

Quote

This will only last until the actor reloads their 3D
Les chargements 3D interviennent :
- au chargement de la sauvegarde
- lorsqu'on passe d'interieur/exterieur ou inversement
- ou lorsqu'on utilise le déplacement rapide ou tout autre téléportation dans le genre.

La Solution serait de réappliquer après chaque chargement 3D de l'actor, SetEyeTexture...
c'est pas bien compliqué à réaliser ;)

regarde les différents Event qui existent en script, il y en a un qui permet cela.

#7 Daan_Noa

Daan_Noa

Posté 27 novembre 2012 - 20:39

Bonsoir,

Désolé de faire mon boulet mais je rame un peut. :umnik:
Non seulement je n’arrive pas a résoudre mon problème mais en plus je ne comprends pas ce qui se passe :

Comme dis dans mon précèdent poste si je charge ma sauvegarde (une sauvegarde « vierge »), je joue à la 1ère personne, je ramasse l’objet sur lequel est appliqué le script et que je sors du menu :  rien, toujours les yeux bleu.

Par contre,  si je charge ma sauvegarde, que je joue à la 3ème personne, je ramasse l’objet et je sors du menu : la ça marche les yeux passent au noir.

Conte tenu du fait que cette texture devrait « s’effacer » au chargement du 3D je décide de sortir de la cellule où je me trouve  pour voir si la texture revient a la normale. Et la a ma grande surprise  elle reste noir.
Idem après une téléportation , idem après entrée dans une ville ou une autre cellule.

Sur les conseilles de Ced (au passage : un grand merci a toi ! :good: ) je rajoute ce qui suit A mon script :

Event OnLoad()
	 playerref.SetEyeTexture(EyesMaleHumanDemon)
EndEvent

( @ Ced : j’espère que c’est bien a cet « event » que tu faisais allusion ! :green: )
Malheureusement cela n’apporte aucun changement.

#8 ced

ced

    les météores


Posté 27 novembre 2012 - 20:52

Salut, :)

oui oui je pensais à celle ci, mais ça ne marche pas non plus...
Oui de mon coté, j'ai effectué plusieurs tests dans le meme exemple que toi, avec une amulette.

Bon j'ai déjà une meilleur nouvelle lorsque tu t'en équipes :
Event OnEquipped(actor akActor)
	  if akActor == playerref  
			  Game.ForceThirdPerson()	 ;force à etre en vue 3e personne à appliquer avant le SetEyeTexture
			  playerref.SetEyeTexture(EyesMaleHumanDemon)
	  endif
EndEvent

Game.ForceThirdPerson()
force le joueur à être en vue 3e personne, dans le script ça fera effet chaque fois que tu t'en équipes que tu sois dans le menu ou pas. Tu peux revenir de suite à la vue 1ere personne - pas d'inquiétude.
Donc le résultat est tout bon, plus de pb en s'y equippant.

Bon après, en rechargeant la sauvegarde, comme il est dit : le chargement 3D de l'actor annulle son SetEyeTexture.
Il faudra trouver une astuce tjs par script, l'event Onload() n'est pas bon, il y a surement autre chose mais pour le moment je suis à court d'idée.

#9 Daan_Noa

Daan_Noa

Posté 27 novembre 2012 - 22:04

Salut

Game.ForceThirdPerson()  marche au poile ! Grâce à toi j’avance ! :good: :grin: .

Pour info, Pour ma part je me suis dirigé vers :

Waepon property Dague auto

Event OnInt()
if (Game.GetPlayer().IsEquipped(Dague))
  playerref.SetEyeTexture(EyesMaleHumanDemon)
EndIf
EndEvent

Mais ça ne marche pas non plus…

#10 Gérauld

Gérauld

Posté 28 novembre 2012 - 02:46

Plutôt que de forcer la vue 3ème personne, il y a aussi la solution de détecter à l'aide d'un effet magique conditionné par le type caméra  et le fait d'avoir l'arme équipée ( et une variable globale ajoutée par le mod par propreté si l'arme n'est pas ajoutée par le mod) , un script du type extends activemagiceffect et un event oneffectstart. En gros, dès que le joueur passe en vue 3ème personne et qu'il a l'arme, la modification des yeux est appliquée. Elle est de toute façon inutile en vue 1ère personne.
Ce genre de détection fonctionne très bien pour l'avoir utiliser dans plusieurs mods.

Le problème de sauvegarde et de chargement de parties, il faut utiliser un event onplayerloadgame() : http://www.creationk...oadGame_-_Actor
Pour l'utiliser de manière propre, il faut créer une quête, créer un referencealias qui pointe vers le joueur, attacher un script de type extends referencealias  à ce referencealias, y placer l'event.
Tant qu'à y être, y ajouter un event onraceswithcomplete : http://www.creationk...omplete_-_Actor
La modification des yeux disparaissant à chaque chargement du modèle3D donc à chaque changement de race.
Concernant les soucis de changements de cells, j'aurai tenté avec l'event oncellattach : http://www.creationk...ObjectReference

Il faut ensuite mettre des notifications différentes dans chaque event pour bien identifier quand ils se déclenchent afin de pouvoir identifier celui qui ne fonctionne pas comme on voulait. Ne pas cocher la case hideinUI de l'effet magique ajouté pendant les tests afin de vérifier que l'effet et ses conditions fonctionnent. Ce n'est qu'à la fin, qu'il faudra le cacher.

Modifié par Gérauld, 28 novembre 2012 - 02:50.

L'ours blanc est l'un des plus grands carnivores de Nirn. Les poils du pelage sont translucides et creux. C'est la réfraction de la lumière visible sur la surface interne des poils creux et incolores qui les fait paraître blancs. Cette particularité lui permet de se camoufler dans son environnement de neige et de glace, afin de mieux surprendre ses proies. Ce plantigrade vit exclusivement en Bordeciel et sur l'île de Solstheim.

#11 Daan_Noa

Daan_Noa

Posté 28 novembre 2012 - 22:25

Bonsoir,

Première série de questions :

Quote

...Détecter à l'aide d'un effet magique...

Si j’ai bien compris je dois créer un effet magique sur lequel je place le script, je le mettre dans un sort qui serra placé sur le joueur via un « addSpel » qui pourra se trouvé directement sur la dague.
Ai-je bien compris ? Est ce bien un sort que je dois ajouter ? Si oui : puis je l’ajouter via un script sur la dague ?

En ce qui concerne les conditions :
Je n’est pas trouvé la condition qui vérifie que le joueur soit a la 3em personne par contre j’ai utiliser : isPC1stperson  == 0 cette condition peut elle faire l’affaire ?

Pour vérifier que se soit bien la dague qui est utilisée j’ai ajouté un « GetIsUsedItem »
EDIT : cette commande semble posé problème: Avec cette condition il ne se passe rien « in Game ».
Sans elle la texture est appliquée Si et Seulement SI je suis a la 3eme personne lorsque je m’équipe de la dague. (Comme avant en faite.)



Encore merci pour votre aide.


EDIT :
Deuxième série de questions :
J’ai créer une « quête » avec un alias (unique actor : player) mais je n’est pas compris a quel moment, par quel moyen, cette quête devait être lancé
Pourriez vous m’expliqué ce point ?
Encore merci.

Modifié par Daan_Noa, 28 novembre 2012 - 23:05.


#12 ced

ced

    les météores


Posté 28 novembre 2012 - 23:23

pas mal de questions en effet :elf:
Perso, j'ai laissé tomber les tests, je me rends compte que cette fonction SetEyeTexture est quand meme mal fichue.

Pour répondre à tes questions,
- oui tu dois créer un Magic Effect à effet constant, dedans tu y créées un script (type activemagiceffect)
avec les Event OnEffectStart (Actor Target, Actor Caster)  / (et eventuellement) Event OnEffectFinish (Actor Target, Actor Caster)
dans le le premier event, tu y applique le seteyetexture (soumis dans une boucle if qui verifie si le joueur est équipé de la dague + vue 3e personne)
- créer un sort de type "capacité", lui inclure le magic effect précédemment créé, ce sort sera lancé dans l'Event Equip de la dague.
- créer une Quest, qui se lancera automatiquement ou par une commande dans le script de la dague équippée.
Dans cette Quest, créer un ReferenceAlias "PlayerRef" (par exmple), à placer sur l'object Unique Actor : Player
Lui créer un script, c'est primordial pour utiliser l'Event onplayerloadgame()  car ça ne marche que sur le joueur.

C'est assez fastidieux mais très astucieux de la part de Gérauld.

Quote

Je n’est pas trouvé la condition qui vérifie que le joueur soit a la 3em personne par contre j’ai utiliser : isPC1stperson  == 0 cette condition peut elle faire l’affaire ?
oui oui ;)
Sinon si j'ai le courage je testerai de mon coté, simple curiosité ;)

Par contre, ptit soucis, bien que tu pourras stopper la quete par l'event Unequip de la dague, et par la meme occasion annuler le sort sur le joueur, tes yeux ne reviendront à la normal qu'au moment d'une futur save/load et oui...


EDIT :
bon je vais tester
ouai ouai

#13 Nico coiN

Nico coiN

    Commissaire Magret


Posté 28 novembre 2012 - 23:56

Faire ça pour le joueur peut être utile, mais cela est-il transposable sur un PNJ ? Pour parler PNO :
Spoiler

Canard mystique, grand instigateur et créateur de la carpe d'ondepluie.

#14 ced

ced

    les météores


Posté 29 novembre 2012 - 00:35

Dans Dawnguard, Serana conserve ses yeux brillants oui mais cela ne vient pas du SetEyeTexture, mais plutot du meshe utilisé pour son Head Part "Female" ;)
c'est ce fichier nif qui inclus cet effet de brillance, je l'avais vu lorsqu'on en avait parlé il y a quelque mois.

Tu pourras lui mettre n'importe quelles textures, ses yeux seront tjs brillants (ce sont ces nouveaux meshes Head Part, ces yeux brillants de vampires Special Dawnguard)
Enfin je ne vois qu'1 seule solution trouvée par Ancestral Ghost et Aurix : Créer un NPC Serana "alternative"  qui serait avec le bon head part (non brillant)
Biensur il faudra l'incorporer sur les Quest liés et lui remettre son script attaché & ses Property enfin un peu le bordel mais c'est la meilleur soluce!

http://forum.wiwilan...ure#entry713857

EDIT :
Bon et bien merci Gerauld, effectivement ça marche. :)
Daan_Noa, j'ai réussi je t'explique demain, mais en gros, tu as besoin :

- de l'object (ta dague) + un script attaché
- d'un magic effect type "effet constant" + un script attaché
- d'un Spell type capacité, en lui mettant le magic effect créé
et c'est tout !

meme plus besoin de Quest ni de Reference Alias
plus besoin de Event OnRaceSwitchComplete() ou Event OnPlayerLoadGame() même si c'était bien pensé ;)

#15 Gérauld

Gérauld

Posté 29 novembre 2012 - 01:08

Content que ça marche. Par contre, ce soucis de mesh avec Serana m'intrigue...
L'ours blanc est l'un des plus grands carnivores de Nirn. Les poils du pelage sont translucides et creux. C'est la réfraction de la lumière visible sur la surface interne des poils creux et incolores qui les fait paraître blancs. Cette particularité lui permet de se camoufler dans son environnement de neige et de glace, afin de mieux surprendre ses proies. Ce plantigrade vit exclusivement en Bordeciel et sur l'île de Solstheim.

#16 ced

ced

    les météores


Posté 29 novembre 2012 - 01:39

le HeadPart des yeux vampires sur Skyrim sans Dawnguard basés sur ces nif :
\Data\Meshes\Actors\Character\Character Assets\EyesFemale.nif  
\Data\Meshes\Actors\Character\Character Assets\Eyesmale.nif  

ces nif n'ont biensur pas l'effet brillant dedans

le HeadPart des yeux vampires sur Skyrim avec Dawnguard : (dans le Dawnguard.bsa)
\Data\Meshes\Actors\Character\Character Assets\EyesFemaleVampire.nif  
\Data\Meshes\Actors\Character\Character Assets\EyesmaleVampire.nif  

Je crois que le pb vient de là...

il faudrait regarder, mais je ne sais pas dedans d'où ça vient :
Posted Image Posted Image

#17 Daan_Noa

Daan_Noa

Posté 30 novembre 2012 - 17:19

Bonjour,

d'abord un grand merci pour vos réponses , votre aides et vos testes !

Je but toujours sur le script du magic effect , plus précisément sur les conditions que je dois y mettre.
La commande « isPC1stperson  == 0 » ne semble pas être accepté ou plus probablement je ne l'utilise pas correctement ! :monstre:

Je vous aurai vraiment embête jusqu'au but ! :sorry:

Encore merci a vous .

#18 ced

ced

    les météores


Posté 30 novembre 2012 - 18:51

Salut ;) (non tu ne nous embêtes pas)

Je vais te mettre ici ce que j'ai fait de mon coté, scripts, magic effect, spell, weapon ... ...
Je tiens à préciser qu'il n'est plus necessaire d'utiliser la condition « isPC1stperson  == 0 » ou encore la fonction " Game.ForceThirdPerson() "

Je reviens avec le tout dans quelque minutes...



EDIT :

1/ d'abord créer un nouveau Magic Effect, de type "effet constant" & "personnel"
Posted Image
Le script attaché :
Spoiler
Pour les Properties, tu dois te douter de ce qu'il faut mettre ;)


2/ créer un nouveau Spell (nouvel ID...) de type "capacité"
Posted Image
Prend bien soin de lui ajouter le Magic Effect prédémment créé, en cliquant sur new - un clic-droit dans la fenetre "Effects"


3/ Sur ta Dague, dans Weapon, voici le script qu'il faudra placer :
Spoiler
Pour les Properties, l'Actor = PlayerRef & le Spell = le sort créé, dans mon exemple "AA_ItemCurseSpell"


Et le tour est joué!
Par contre, il n'existe pas de moyen (pas de fonction) pour remettre la couleur originale des yeux de ton perso. Il faudra se deséquipper et sauvegarder et recharger.

Mais dernièrement j'ai tenté un truc pas mal avec le SetRace, mais je ne sais pas si cela marche pour les Argoniens et les Khajiits

#19 Daan_Noa

Daan_Noa

Posté 30 novembre 2012 - 19:06

Grand merci a toi .

J’ai encore une petite question : (promis c’est la dernière …..pour ce poste ! :grin: )
D’après vous serrait il possible de relever/stoker la « valeur » des yeux d’origine pour pouvoir remettre la couleur d’origine ?

Daan

#20 ced

ced

    les météores


Posté 30 novembre 2012 - 19:41

Non pas moyen,
Pour pouvoir remettre les yeux d'origine, voici ce que tu peux faire dans le script d'arme :
Scriptname AA_ItemScript extends ObjectReference


Actor Property Player Auto
Spell Property ItemCurseSpell Auto
Race Property ImperialRace Auto	;chercher la Property correspondante
Race Property NordRace Auto	;chercher la Property correspondante
Race RacePlayer	;ce n'est pas une property ;)


Event OnEquipped (Actor akActor)
	if ( akActor == Player )
		 RacePlayer = Player.GetRace()
		 Player.AddSpell (ItemCurseSpell, false)		;on met sur le joueur la capacité crée affectant les yeux
	endif
EndEvent


Event OnUnEquipped (Actor akActor)

	if ( akActor == Player && RacePlayer != ImperialRace )
		 Player.RemoveSpell (ItemCurseSpell)		;on lui retire la capacité discretos
		 Player.SetRace ImperialRace
		 Player.SetRace RacePlayer

	elseif ( akActor == Player && RacePlayer != NordRace )
		 Player.RemoveSpell (ItemCurseSpell)		;on lui retire la capacité discretos
		 Player.SetRace NordRace
		 Player.SetRace RacePlayer
	endif
EndEvent

Cela aura pour effet de changer de race mais de suite après remettre la race d'origine du joueur, pour lui remettre ses yeux d'origines.
Car si tu fais juste le "SetRace RacePlayer" (sa race d'origine) le SetEyeTexture ne s'enlève pas...
J'ai testé ceci pour mon impérial ça a marché sans lui enlever ses stats et effets magique de Race, par contre à vérifier si ça marche pour d'autre races


Attention tout ceci avec mon précédent post est à tester sur une save qui n'a pas les anciens script de ta dague : sinon les scripts risquent de ne pas marcher.
Donc à tester sur une save propre (sans tes anciens essais)

#21 Gérauld

Gérauld

Posté 30 novembre 2012 - 20:21

Sinon, à défaut de save propre, quand il s'agit d'un objet présent dans l'inventaire (ou à proximité du joueur), il suffit de se débarrasser de l'ancienne dague présente dans l'inventaire, de la balancer, d'ouvrir la console, de la sélectionner en cliquant dessus, de taper "markfordelete" puis faire un "disable". Normalement elle disparait.
Rajouter ensuite grâce à la console ("help nomdeladague" puis "player.additem codetrouvé 1") une nouvelle dague toute neuve ayant les nouveaux scripts attachés avec les bonnes propriétés...
Il est cependant vrai que toujours partir d'une save faite avant de commencer à développer le mod est le mieux et le plus rapide à faire, comme Ced te l'as précisé.

Bonne idée que de forcer le chargement de l'objet 3D avec un setrace() correspondant au joueur pour réinitialiser les yeux. ;)

Cependant, il faut prévoir le cas des transformations (qui sont des changements de race aussi) qui risquent de lancer l'event onunequipped() de ton arme. Je ne sais plus si les objets sont déséquipés avant ou après le changement effectif de race... Il serait dommage de se transformer et de revenir tout de suite à la race que nous avions en équipant la dague...

Dans le cas des transformations, de nouveaux objets3D sont chargés donc les yeux version dague "effacés" de toutes façons. Il faut donc détecter ces changements et inhiber les setrace() du script dans ce cas. Pour détecter sans dépendance la race de seigneur vampire, je te conseille d'utiliser un getformfromfile() sur une variable de type RACE. Pour le loup-garou c'est werewolfbeastrace qu'il faut tester de mémoire.

Je me demande, sans avoir testé, si un disable() suivi d'un enable() n'aurait pas fait l'affaire... Je ne sais pas si l'objet3D est déchargée de la mémoire et rechargé ensuite mais cela vaudrait peut-être le coup d'essayer... Cela peut aussi être potentiellement risqué pour les referencealias sur le joueur n'ayant pas la case "allow disabled".

EDIT IMPORTANT : Je n'avais pas regardé le script...
Les effets magiques sont sauvegardés même le mod  désactivé. De plus, ton registerforupdate non conditionné a tendance à ne pas beaucoup m'inspirer confiance. En règle générale, toujours éviter les registerforupdate. Il faut préférer les registerforsingleupdate et les conditionner.
Le plus propre reste l'ajout de la condition de la caméra au niveau de l'effet magique placé dans la capacité et le retrait pur et simple de ce très vilain registerfforupdate ou d'un registerforsingleupdate.
J'ai aussi pris pour habitude, suite à une vieille discussion avec Thanatos, de toujours conditionner les effets magiques avec un ajout du mod pour être sûr qu'il ne soient plus jamais actifs une fois un mod désinstallé ou seulement désactivé.
Le mieux étant de créer un keyword pour déclencher cet effet et de conditionner l'effet magique avec celui-ci. On ajoute le keyword à la dague et à toute chose qui doit provoquer le même effet (armure, autres armes...).
Il n'est plus nécessaire de scripter l'arme si on lui ajoute le keyword.
L'effet magique sera placé via un referencealias d'une quête en "start game enable".

Si le mod est désactivé, le keyword disparait, l'effet ne peut plus être actif. CQFD.

Cela ne dispense pas de bosser sur les changements de races mais aura le mérite de rendre cette modification beacuoup plus propre.

Modifié par Gérauld, 30 novembre 2012 - 20:41.

L'ours blanc est l'un des plus grands carnivores de Nirn. Les poils du pelage sont translucides et creux. C'est la réfraction de la lumière visible sur la surface interne des poils creux et incolores qui les fait paraître blancs. Cette particularité lui permet de se camoufler dans son environnement de neige et de glace, afin de mieux surprendre ses proies. Ce plantigrade vit exclusivement en Bordeciel et sur l'île de Solstheim.

#22 ced

ced

    les météores


Posté 30 novembre 2012 - 20:40

View PostGérauld, on 30 novembre 2012 - 20:21, said:

Je me demande, sans avoir testé, si un disable() suivi d'un enable() n'aurait pas fait l'affaire... Je ne sais pas si l'objet3D est déchargée de la mémoire et rechargé ensuite mais cela vaudrait peut-être le coup d'essayer... Cela peut aussi être potentiellement risqué pour les referencealias sur le joueur n'ayant pas la case "allow disabled".
Alors si c'est le coup du Disable() / Enable() effuecté par sur le joueur, il me semble l'avoir testé avant le SetRace... mais ça ne marche pas, du moins, sur le joueur.
Peut-etre qu'en passant par un ReferenceAlias avec son propre script, ça peut le faire - j'ai pas testé...

Aussi comme tu dis, si la save comporte l'ancienne arme dans l'inventaire (et du coup l'ancien script) :
Player.removeitem xxxxxxxx 1
Player.additem xxxxxxxx 1
"xxxxxxxx" la form Id de l'arme obtenu par un :
Help "nomdeladague" 0

Tout ceci remet à jour le nouveau script sur la dague.

En ce qui concerne les race de Transformation, faut-être prudent, durant la phase de transformation ou les objets sont deséquippés... ça pourrait partir en vrille avec le SetRace...
Dans ce cas, il faudrait agir dans le script du MagicEffect l'Event OnUpdate et detecter si la Quest relative au processus de transformation LG ou Seigneur Vampire est démarrée...

#23 Gérauld

Gérauld

Posté 30 novembre 2012 - 20:45

J'ai édité mon post plus haut. Il faudra retirer ce très vilain registerforupdate et conditionner un minimum l'effet magique placé sur le joueur.
Je te laisse lire mon EDIT un peu plus haut...
L'ours blanc est l'un des plus grands carnivores de Nirn. Les poils du pelage sont translucides et creux. C'est la réfraction de la lumière visible sur la surface interne des poils creux et incolores qui les fait paraître blancs. Cette particularité lui permet de se camoufler dans son environnement de neige et de glace, afin de mieux surprendre ses proies. Ce plantigrade vit exclusivement en Bordeciel et sur l'île de Solstheim.

#24 ced

ced

    les météores


Posté 30 novembre 2012 - 20:56

oui tu as tout à fait raison, ce satané Skyrim continue à jouer le OnUpdate() même le mod desactivé!
Sorry, dans un soucis de précipitation, j'ai fait ce script à l'arrache en oubliant les conséquences.

Par contre, si le mod est desactivé ou desinstallé et que les scripts compilés du mod sont virés, ça passe...
pour les effets magiques, tu as raison, faudrait conditionner ça par Keyword

#25 Daan_Noa

Daan_Noa

Posté 30 novembre 2012 - 21:14

Vous êtes tous simplement géniaux !! :good: :yahoo:
Ca marche magnifiquement bien !
Un grand merci a vous !

Pour ce qui est des autres races (notamment les Argoniens et les Khajiits) je testerai ça ce dimanche.
Je vous dirai ce qu’il en est et je passerai le sujet en « résolu » à ce moment.

Dernière précision pour d’éventuel lecteurs :
Dans les scripts de ced ,
J’ai passé la propriété « Player » en « playerref » pour pouvoir utiliser « autofill »
J’ai passé les
Player.SetRace ImperialRace
Player.SetRace RacePlayer
Player.SetRace NordRace
En:
Player.SetRace (ImperialRace)
Player.SetRace (RacePlayer)
Player.SetRace (NordRace)

Encore merci a vous !
Daan.





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)