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 ...
[Résolu] Script de téléportation et variable globale
Script de téléportation et variable globale
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 ...
Merci à vous !!!!
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
Modifié en dernier par claustro le 20 juin 2015, 18:45, modifié 5 fois.
Re: Problème avec un script ....
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.
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
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...
Re: Problème avec un script ....
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
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
Re: Problème avec un script ....
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 :
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.
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
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.
Re: Problème avec un script ....
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.
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.
Re: Problème avec un script ....
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 :par contre, leurs noms après auto state et state ne prennent pas de guillemets, il me semble
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ébutantsGerauld 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é).
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
Re: Problème avec un script ....
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.
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.
Re: Problème avec un script ....
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
Hélas la technologie actuelle ne permet pas de coder sur un iphone ssnirrf
Re: Problème avec un script ....
Hors-sujet
Je fais pas spécialement de course au rang, et je pense pas gagner plus en passant moddeurGerauld 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.
Concernant le Level Design, j'ai découvert le F5 et le Shift+Q, depuis, ma vie a changé
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
Re: Problème avec un script ....
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 ??
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 ??
