Mdr tu me fais pensé à mon ancien prof de DotNet, il me parlait la même chose ^^... J'ai pas tout compris sur le fait que llResetScript() soit sauvage ou qu'il reste des effets de bords... Et non, je n'ai pas repiqué des boût de code que je passe j'ai bricolé

... Bref, voici le code :
string animation;
float secondes;
integer prixParSecondes;
integer montantDu = 0;
key avatarSit;
integer noAFK;
integer maxGains;
string reponse = "start";
integer channel;
default {
state_entry() {
channel = (integer)llFrand(2000000000);
llMessageLinked(LINK_SET, 666, "", NULL_KEY);
llSetSitText("Dance");
llListen((integer)channel, "", NULL_KEY, "");
}
touch(integer num_detected) {
if(llDetectedKey(0) == llGetOwner()) {
llDialog(llGetOwner(),"What do you want to do ?",["Reset","Turn Off"],channel);
}
}
listen(integer channel, string name, key id, string message)
{
if(message == "Yes") {
reponse = "ok";
} else if(message == "No"){
llUnSit(avatarSit);
} else if(message == "Reset") {
llResetScript();
} else if(message == "Turn Off") {
state off;
}
}
changed(integer change) {
if (change & CHANGED_LINK) {
if (llAvatarOnSitTarget() != NULL_KEY) {
avatarSit = llAvatarOnSitTarget();
llSetText(llKey2Name(avatarSit)+" is dancing.\nCurrent earned "+(string)montantDu+"L$",<1,1,1>,1);
animation = llGetInventoryName(INVENTORY_ANIMATION,0);
llRequestPermissions(avatarSit, PERMISSION_TRIGGER_ANIMATION);
montantDu = 0;
llStopAnimation("sit");
llStartAnimation(animation);
llSetTimerEvent(secondes);
}
else {
llStopAnimation(animation);
llSetText("As2piK's DancePad.\n"+(string)prixParSecondes+"L$ each "+(string)((integer)(secondes/60))+" minutes",<1,1,1>,1);
reponse = "start";
llMessageLinked(LINK_SET, 999, (string)montantDu, avatarSit);
montantDu = 0;
llSetTimerEvent(0);
}
}
}
link_message(integer sender_num, integer num, string str, key id) {
if(num == 1001) {
llSay(0,(string)num);
secondes = (integer)str;
} else if(num == 1002) {
llSay(0,(string)num);
prixParSecondes = (integer)str;
} else if(num == 1003) {
llSay(0,(string)num);
noAFK = (integer)str;
} else if(num == 1004) {
llSay(0,(string)num);
maxGains = (integer)str;
} else if(num == 1010) {
llResetScript();
}
llSetText("As2piK's DancePad.\n"+(string)prixParSecondes+"L$ each "+(string)((integer)(secondes/60))+" minutes",<1,1,1>,1);
}
timer() {
if(noAFK && reponse == "stop") {
llUnSit(avatarSit);
} else {
montantDu += prixParSecondes;
llSetText(llKey2Name(avatarSit)+" is dancing.\nCurrent earned "+(string)montantDu+"L$",<1,1,1>,1);
if(maxGains != 0 && maxGains <= montantDu) {
llUnSit(avatarSit);
}
if(noAFK) {
reponse = "stop";
list yesno = ["Yes","No"];
list noyes = ["No", "Yes"];
list rep;
float yn = (integer)llFrand(2);
if(yn == 0) {
llSay(0,(string)yn);
rep = yesno;
} else {
llSay(0,(string)yn);
rep = noyes;
}
llDialog(avatarSit,"Do you want to stay on the DancePad ?",rep,channel);
}
}
}
run_time_permissions(integer parm) {
if(parm == PERMISSION_TRIGGER_ANIMATION) {
llStopAnimation("sit");
llStartAnimation(animation);
}
}
on_rez(integer start_param) {
llResetScript();
}
}
state off {
state_entry() {
llSay(0,"off");
llSetText("Off",<1,1,1>,1);
}
changed(integer change) {
if (change & CHANGED_LINK) {
if (llAvatarOnSitTarget() != NULL_KEY) {
avatarSit = llAvatarOnSitTarget();
animation = llGetInventoryName(INVENTORY_ANIMATION,0);
llRequestPermissions(avatarSit, PERMISSION_TRIGGER_ANIMATION);
montantDu = 0;
llStopAnimation("sit");
llStartAnimation(animation);
}
else {
llStopAnimation(animation);
}
}
}
touch(integer num_detected) {
if(llDetectedKey(0) == llGetOwner()) {
llDialog(llGetOwner(),"What do you want to do ?",["Turn On","Stay at off"],channel);
}
}
listen(integer channel, string name, key id, string message) {
if(message == "Turn On") {
llResetScript();
}
}
}
Merci