Rez or not rez ???

Répondre
Partager Rechercher


Bonjour à tous, j'ai une misère avec un script qui réagit de façon différente si je rez mon objet à partir de mon inventaire et si je le réinitialise bêtement en édition.
En gros, je veux demander une autorisation de paiement et changer de state pour aller ailleurs. Si je recompile mon script en édition, je passe bien par la demande d'autorisation et je passe dans le state suivant. Si je le fais en sortant de l'inventaire, j'ai même pas les messages.
Je suis presque sûr d'avoir une galère avec le rez mais je sais pas comment m'en sortir.
Si quelqu'un peut m'aider, ce sera coooooooooooolllllllll
Le script :

default
{
state_entry()
{
llSay(0, "Entering State_Entry");
llSetTimerEvent(0);
llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
}

on_rez(integer num)
{
llSay(0, "Entering on_rez");
llSay(0, (string)num);
llResetScript();
}

run_time_permissions(integer perm)
{
if (perm & PERMISSION_DEBIT)
{
llSay(0, "Permissions debit");
llSay(0, "Call next State");
state en_cours;

}
}

state_exit()
{
llSay(0, "Out State default");
}
}

state en_cours
{
state_entry()
{
llSay(0, "State en_cours");
}
state_exit()
{
llSay(0, "Out State en_cours");
}
}
Après compilation tu te trouves dans l'état "default", qui après avoir demandé les permissions te places dans l'état "en_cours". Quand tu récupères l'object et que tu le rez à nouveau, tu te trouves encore dans cet état.

Pour voir la boîte de message, déplace le on_rez() dans "en_cours" par exemple. Ceci dit, là l'état "en_cours" ne sert à rien.
Petite question : lorsque tu rez ton objet, as tu la phrase :"Entering on_rez" qui s'affiche ou pas ?

Bref si elle n'apparaît pas normal que tu ne passe pas dans la zone de demande de débit.

Tiens nous au courant, je ne me suis jamais penché sur ce genre de problème... mais c'est une chose que je fais dès cette après-midi
Unhappy
Merci de vos réponses.
Euh, d'abord, pour votre info, l'état en cours sert à rien, j'ai edulcoré tout le code qui était dedans pour que ce soit plus lisible et pour voir si je mettais pas la panique plus loin.
En fait, donc, quand je compile mon prog en mode en édition, je passe bien par les étapes Entering on-rez, demande de Grant et je me retrouve bien dans le state en-cours avec le message.
Quand, je reprends mon objet et que je le redépose, j'ai plus aucun message qui apparaisse, je ne sais même pas dans quel état je suis... Commateux ???
J'ai effectivement essayé de passer ma demande de Grant dans state en_cours, ca change rien, les symptomes sont les mêmes.
En lisant le Wiki, sur les états, il semble que le fait de changer de state, clear la queue des messages, pas choquant en soit, mais je vois pas le rapport avec le Rez (d'autant que j'ai foutu des reset scripts dans chaque state et que je repars jamais au point d'entrée default ...)
J'aurai bien voulu poser une question sur le forum technique de SL mais j'y arrive pas ...
Quand tu reprends l'objet dans ton inventaire, il reste dans l'état dans lequel il était. Le rez ne fait pas un reset.

Donc, quand tu le rez, il passe par l'evenement on_rez de l'état dans lequel il est. S'il est en état "en cours", il n'y a pas d'evenement on_rez, donc il ne fait rien.

Quand tu réinitialises (ou sauves) le script, il passe par l'état "default", et l'evenement on_rez de cet état.

Tu dois rajouter un event on_rez à ton état "en cours" qui fera un reset du script.
Wink
Yep Nibb, c'est vrai par un reset du script mais je voulais l'éviter dans mes states, par contre ca m'a donné une idée, dans chaque state quand je detecte un rez, je refais un state default pour repartir dans un etat 'normal'.
Ca marche, merci de vos reponses a tous.
Take care.
Ol obscure.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés