[Résolu] Script de téléportation et variable globale

Le langage des scripts.
Avatar du membre
Paneb
Traducteur vétéran
Traducteur vétéran
Messages : 4368

Re: Problème avec un script ....

Message par Paneb »

Cela veut juste dire qu'il ne pas encore lu.
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

Re: Problème avec un script ....

Message par claustro »

Oki merci ... Je retourne a a réinstallation de windaube ...
Avatar du membre
Paneb
Traducteur vétéran
Traducteur vétéran
Messages : 4368

Re: Problème avec un script ....

Message par Paneb »

Sujet déplacé !
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

Re: Problème avec un script ....

Message par claustro »

Me voila de retour avec un pc fraichement formaté ....

Je me suis plongé dans lecture des réponses données et un détail m'interpelle dans l'utilisation des états, dans le script proposé par Lucead , la mention autostate remet à jour l'état.

Si je comprend bien a chaque fois que le script est exécuté l'autostate fait office de reset ???
Avatar du membre
Lucead
Moddeur aspirant
Moddeur aspirant
Messages : 286

Re: Problème avec un script ....

Message par Lucead »

En fait, dans chaque script, tu as un état "invisible" qui correspond tout simplement à tous les éléments placés en dehors d'un état que tu créer toi-même. Cet état "invisible" est l'état "par défaut". Or, dans le cas que j'ai présenté, utiliser cet état n'a pas de sens, on rédéfinit donc l'état "par défaut" en ajoutant le mot-clé "auto" devant l'état.

Une autre solution aurait été de mettre un

Code : Tout sélectionner

Event OnInit()
[tab=30]GoToState("Au_Marqueur_1")
EndEvent
juste après les variables. Comme cet évènement est dans l'étant "invisible", il est exécuté dans le lancement du script. Et on lui demande simplement de changer d'état. L'avantage du mot-clé "Auto" est donc d'éviter d'avoir à déclarer un type d'event si l'on se moque totalement du fonctionnement par défaut.

J'espère avoir été assez limpide :)
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

Re: Problème avec un script ....

Message par claustro »

Je pense avoir compris, est ce que les états sont gardés en mémoire ???

Si c'est le cas, un autre script peux initialiser l'état et de ce fait se passer de l'autostate ?
Avatar du membre
Lucead
Moddeur aspirant
Moddeur aspirant
Messages : 286

Re: Problème avec un script ....

Message par Lucead »

Je suis pas sûr qu'un autre script puisse changer l'état d'un autre script.

Quand au fait de se passer de l'auto-state, tu es libre de ne pas l'utiliser si tu ne souhaites pas l'utiliser, mais il reste assez utile pour se simplifier la vie. Tu peux très bien préférer la version avec le OnInit() si tu trouves ça plus clair.

Après, les états sont peut-être assez compliqués à comprendre pour un débutant. Ils sont très pratiques, mais il faut bien comprendre quand les utiliser et pourquoi. Dans ton cas actuel, tout comme tu l'as fait, on peux très bien s'en passer.
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

Re: Problème avec un script ....

Message par claustro »

grrr .... j'aurais mieux fait de me casser une jambe le jour où j'ai ouvert le CK ....

Il est certain que les états offrent de nombreuses possibilités.

Je vais creuser tout ça et essayer de faire en sorte que ça marche .... pour l'instant je bute pour rattacher l'effet au sort ....
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

Re: Problème avec un script ....

Message par claustro »

Bonne nouvelle !!

Le script marche !!!

Code : Tout sélectionner


Scriptname AdsScriptTele extends activemagiceffect  
{Sort de téléportation au manoir}

Actor Property PlayerREF Auto

ObjectReference Property AdsMarkTele01 Auto
ObjectReference Property AdsMarkTele02 Auto

GlobalVariable Property AdsVarTeleportation Auto

Event OnEffectStart(Actor akTarget, Actor akCaster)

If AdsVarTeleportation.GetValueint() == 0
	
        AdsMarkTele01.MoveTo(PlayerREF)
     	PlayerREF.MoveTo(AdsMarkTele02)
        AdsVarTeleportation.SetValueInt(1)
        
ElseIf AdsVarTeleportation.GetValueint() == 1
        
        PlayerREF.MoveTo(AdsMarkTele01)
        AdsVarTeleportation.SetValueInt(0)
        
EndIf

EndEvent

Le problème venait de la manipulation des variables globales et l'utilisation de getvalue et setvalue ...

Merci à vous tous !!!

Je garde sous le coude les états qui me seront très utile par la suite
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: [Résolu] Script de téléportation et variable globale

Message par Gerauld »

Il y a un script dans les ressources utilisant les états pour compter des activations. Cela peut aider à apprécier un peu leur potentiel. Les états servent aussi à éviter une double activation quand un event ne doit déclencher qu'une fois (le fameux state busy utilisé par Beth).
Répondre

Retourner vers « Entraide sur les scripts »