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

Le langage des scripts.
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

Script de téléportation et variable globale

Message par claustro »

Bonsoir à tous,

Je suis actuellement en train de modder ma petite demeure et pour ce faire j'avais initialement deux sorts avec script pour la téléportation .... Tout marchait bien et je me suis dit ... pourquoi deux sorts ... deux scripts.... deux effets .... on va tout mettre en 1 .... et là c'est le drame ... ça ne marche pas .... je pense qu'il s'agit d'un problème de variable ...
► Afficher le texte
Merci à vous !!!!
Modifié en dernier par claustro le 20 juin 2015, 18:45, modifié 5 fois.
Avatar du membre
Gerauld
Confrère
Messages : 2439

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

Message par Gerauld »

Hors-sujet
Demande à Inny par MP le statut de moddeur en herbe que Paneb puisse ensuite déplacer le sujet dans la Forge, à sa place. La Forge est le sous-forum dédié au modding du site et il est inaccessible aux simples confrères. Il y a d'ailleurs une catégorie Scripts dédiée à ce genre de question.
Tant qu'à être ici, en guise de cadeau de future bienvenue dans la Forge, une petite réponse :

Donc, si j'ai bien compris ton sort, tu as un marqueur situé dans un manoir (AdsMark002 au début).
Quand tu te téléporte, tu places AdsMark001 à l'emplacement initial du joueur pour pouvoir revenir et tu envois le joueur au manoir. Pour le retour, tu veux le renvoyer là où il était. C'est ça?


Tout d'abord, est-ce que tes propriétés sont remplies? (double-clic sur le nom du script dans la fenêtre d'édition de l'effet magique pour vérifier et éventuellement les remplir).

Pour pouvoir utiliser la variable globale, il faut l'avoir également créé dans le CK. Les variables globales sont des objets présents dans l'esp au même titre que les race, cell, weapons, armors, armor addon...etc... Donc as-tu créé la variable globale? (dans l'explorateur d'objets, sous miscellaneous pour vérifier). Elle ne doit surtout pas avoir la case "constant" de cochée sinon le script ne pourra pas agir dessus.

Autre petit truc, pour être sûr de ne pas se mélanger entre les variables globales qui doivent être des entiers et celles qui sont de type float, il est mieux d'utiliser getvalueint() et setvalueint() pour les entiers et getvalue() et setvalue() pour les float afin de mieux les repérer dans les scripts.
► Afficher le texte
A mon avis, tu n'as pas besoin de renvoyer ton marqueur n°1 dans le manoir à l'issue du retour vers le 1er emplacement de téléportation vu qu'il est censé être placé au niveau du joueur lors de l'utilisation suivante... donc, tu dois pouvoir retirer la ligne soulignée.

Ensuite, le soucis est que si tu te barres du manoir sans utiliser le sort de téléportation pour le retour, la prochaine utilisation de celui-ci te renverra à l'emplacement de la précédente téléportation et non au manoir... Il faudrait peut-être prévoir la possibilité de remettre la variable globale AdsVarTele à 0 si le joueur change de cell par exemple (quitte le manoir ou ses environs)...

Si jamais les vérifications faites et la très légère modification de script n'ont rien donné, poste plus de détails afin que nous puissions trouver rapidement la solution.
Hors-sujet
N'oublies pas de demander le statut de moddeur en herbe à Inny surtout, que ce sujet puisse rejoindre sa place...
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

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

Message par claustro »

Merci beaucoup pour cette réponse détaillée !!

Effectivement l'idée c'est un marker qui se balade en fonction de la position du joueur (AdsMark001) et un marker positionnel qui lui ne bouge pas et qui sert de localisateur pour la "téléportation".

J'ai voulu faire en sorte que le premier revienne avec le deuxième en guise de reset surtout au cas où le joueur reparte à pieds du manoir.

Ma variable global est bien crée dans le CK sans le constant de coché.

Effectivement le fait de remettre la variable à 0 m'évite cette ligne .... J'avais pas vu ça ..... Trop de code tue le code !!!!

Pour ce qui est des propriétés c'était déjà fait donc ça ne bug pas de ce coté là ... (j'ai découvert ça tout a fat par hasard lors de ma première tentative et crise de nerfs !!!)

J'ai fait un essai avec les changements que tu m'as donné .. helas le résultat est le même ... Le premier déplacement s'effectue sans problème mais le retour est inopérant ....

Je vais de ce pas demander le statut !!!

Merci beaucoup
Avatar du membre
Lucead
Moddeur aspirant
Moddeur aspirant
Messages : 286

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

Message par Lucead »

Bonsoir,

Avec ma maigre expérience en scripting, je vais peut-être dire une connerie, mais il me semble que cela serait peut-être plus simple en utilisant les états. Voici à quoi je pense :

Code : Tout sélectionner

ScriptName AdsScriptTeleportation Extends activemagiceffect
{Sort de téléportation au manoir}

Actor Property PlayerREF Auto
ObjectReference Property AdsMark001 Auto
ObjectReference Property AdsMark002 Auto

Auto State "Au_Marqueur_1"
    Event OnEffectStart(Actor akTarget, Actor akCaster)
        PlayerREF.MoveTo(AdsMark001)
		AdsMark001.MoveTo(AdsMark002)
		GotoState("Au_Marqueur_2")
    EndEvent	
EndState

State "Au_Marqueur_2"
    Event OnEffectStart(Actor akTarget, Actor akCaster)
        AdsMark001.MoveTo(PlayerREF)
        PlayerREF.MoveTo(AdsMark002)
		GotoState("Au_Marqueur_1")
    EndEvent
EndState
De cette façon, pas besoin d'une variable globale, et il me semble que l'emplaçement des AdsMark seront conservés dans la sauvegarde.

Pour expliquer un peu le principe, le sort ne fera pas la même chose en fonction de son "état".
Par défaut, c'est l'état "Au_Marqueur_1" qui est activé, mais lorsque l'utilisateur utilise le sort, le sort "bascule" sur l'état "Au_Marqueur_2" après avoir fait son boulot.
Dans ce nouvel état, on peut placer le fonctionnement inverse, de façon isoler par rapport au premier fonctionnement. Il ne faut bien sûr pas oublier de passer d'un état à l'autre.
Avatar du membre
Gerauld
Confrère
Messages : 2439

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

Message par Gerauld »

J'allais poster quand j'ai vu le post de Lucead. Effectivement, les états sont adaptés à ce genre de choses (et tu sais que j'en use et abuse dans les scripts. ;) (par contre, leurs noms après auto state et state ne prennent pas de guillemets, il me semble)) et permettent d'éviter l'utilisation d'une variable globale. Cependant, pour remettre dans l'état initial le script si le joueur sort du manoir par la porte et non en se téléportant, l'utilisation d'une variable globale est plus simple. (un onactivate avec un setvalueint(0) et on en parle plus vu que la porte est un ajout du mod, pas de soucis de compatibilité).

Il est important pour effectuer les tests d'un mod de toujours partir d'une sauvegarde où tu n'as pas utilisé d'anciennes versions du script ou du sort, le jeu sauvegardant les effets placés sur le joueur tout comme les propriétés des scripts actifs. Cela peut générer des bugs bizarres. Il vaut mieux appliquer ce principe pour tous les mods en développement. Donc, au pire, tente avec une nouvelle partie si tu n'es pas sûr de ta sauvegarde avant toute chose.

Si la deuxième utilisation de ton sort est inopérante, cela peut aussi venir de ton effet magique en lui même...
Place :
debug.notification("Je suis là")
juste après la ligne :
Event OnEffectStart(Actor akTarget, Actor akCaster)

Si la ligne s'affiche en haut à gauche de l'écran à chaque fois que tu lances le sort (sur une nouvelle partie de préférence pour être sûr), c'est que ça vient du script, sinon c'est que cela vient du sort ou de l'effet.
Avatar du membre
Lucead
Moddeur aspirant
Moddeur aspirant
Messages : 286

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

Message par Lucead »

Gerauld a écrit :par contre, leurs noms après auto state et state ne prennent pas de guillemets, il me semble
N'étant jamais sûr de moi sur ce détail aussi, je viens d'aller voir sur la documentation officielle, et effectivement, il ne faut pas de guillemets !
Gerauld a écrit :Cependant, pour remettre dans l'état initial le script si le joueur sort du manoir par la porte et non en se téléportant, l'utilisation d'une variable globale est plus simple. (un onactivate avec un setvalueint(0) et on en parle plus vu que la porte est un ajout du mod, pas de soucis de compatibilité).
En effet, les états permettent de simplifier le code en lui donnant "un sens", mais ne résout pas ce problème. Dans le cas présent, je pense cependant que deux sorts reste le top du top, mais cela a au moins le mérite de faire travailler les débutants ;)

Au moins, si tu veux faire un système de téléportation où chaque point de téléportation se met à jour à chaque utilisation, le script actuel suffit ^^ Cela peut-être une variante intéressante.
Avatar du membre
Gerauld
Confrère
Messages : 2439

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

Message par Gerauld »

Hors-sujet
Vu que tu commences à bien gérer en level design (ton travail pour le Roy) et en scripts (tes posts et nos échanges) et que tu nous développes de chouettes jouets, il va peut-être être temps de tondre le gazon et de te passer "moddeur". Il faudra voir ce que les excellentissimes administrateurs en pensent... J'enverrai un MP à Kaos pour demander comment cela se passe car je n'en sais rien du tout.
J'ai également repéré Arkanikorde qui devrait se faire tondre vu son énorme boulot (dont le nettoyage complet côté meshes) sur Le Roy et qui passe de plus en plus souvent filer des coups de main dans la Forge pour notre plus grand plaisir.
Ensuite, je ne sais pas s'il faut avoir sorti des mods ou si avoir un niveau plus que correct dans certains domaines suffit.
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

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

Message par claustro »

Au fond de mon lit je lis vos commentaires riches en astuces et en point de vues.

Hélas la technologie actuelle ne permet pas de coder sur un iphone ssnirrf
Avatar du membre
Lucead
Moddeur aspirant
Moddeur aspirant
Messages : 286

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

Message par Lucead »

Hors-sujet
Gerauld a écrit :Vu que tu commences à bien gérer en level design (ton travail pour le Roy) et en scripts (tes posts et nos échanges) et que tu nous développes de chouettes jouets, il va peut-être être temps de tondre le gazon et de te passer "moddeur". Il faudra voir ce que les excellentissimes administrateurs en pensent... J'enverrai un MP à Kaos pour demander comment cela se passe car je n'en sais rien du tout.
J'ai également repéré Arkanikorde qui devrait se faire tondre vu son énorme boulot (dont le nettoyage complet côté meshes) sur Le Roy et qui passe de plus en plus souvent filer des coups de main dans la Forge pour notre plus grand plaisir.
Ensuite, je ne sais pas s'il faut avoir sorti des mods ou si avoir un niveau plus que correct dans certains domaines suffit.
Je fais pas spécialement de course au rang, et je pense pas gagner plus en passant moddeur :D Mais j'apprécie la proposition et cela serai avec joie !

Concernant le Level Design, j'ai découvert le F5 et le Shift+Q, depuis, ma vie a changé :mdr: Du coup, je peux me réutiliser le peu d'expérience que j'avais acquis sur Morrowind et pondre certaines choses rapidement. Pour Papyrus, soyons clair : j'y connais franchement pas grand-chose, mais de part mon boulot, j'arrive à m'en sortir. A l'heure actuelle, tu me supplantes largement sur ce domaine !

Si tu souhaites poursuivre le sujet, je te propose de faire ça en MP pour éviter de polluer ce pauvre topic qui n'en demandait pas tant ;)
claustro
Moddeur aspirant
Moddeur aspirant
Messages : 16

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

Message par claustro »

Aie aie ... Le pc est en rade il n'a pas aime la dernière mise a jour ...


Petite question j'ai envoyé un message a inny mais je vois que le message est dans la boîte d'envoie et non dans le répertoire des messages envoyés ... Est ce normal ??
Répondre

Retourner vers « Entraide sur les scripts »