Hi alle zusammen...
ich erkläre mal kurz was mein objekt macht: bevor ich eine leistung erbringe muss der user per "pay" zahlen. danach "touchen" um die eigentliche leistung zu bekommen.
während dem touch-prozess läuft ein timerEvent. nach 5 min wird die timer-funktion aufgerufen und das skript wird zurückgesetzt. soll verhindern dass das terminal für immer blockiert wird. soweit funzt das skript perfekt.
nun ist mir folgendes eingefallen. was ist wenn man auf "pay" drückt und einfach weggeht? auch dann wäre das terminal ewig blockiert. um das zu verhindern habe ich noch ein zweites timerEvent eingebaut, dass aktiv wird wenn "pay" gedrückt ist. Doch ich bekomme folgende Meldung:
"Invalid Key passed to instant message."
ich frage mich was das timerEvent mit ner IM zu tun hat ^^ ? habe auch im default state ne eigenes listen event eingebaut. hat auch nix gebracht
vielen dank für eure mühe und zeit
ich erkläre mal kurz was mein objekt macht: bevor ich eine leistung erbringe muss der user per "pay" zahlen. danach "touchen" um die eigentliche leistung zu bekommen.
während dem touch-prozess läuft ein timerEvent. nach 5 min wird die timer-funktion aufgerufen und das skript wird zurückgesetzt. soll verhindern dass das terminal für immer blockiert wird. soweit funzt das skript perfekt.
nun ist mir folgendes eingefallen. was ist wenn man auf "pay" drückt und einfach weggeht? auch dann wäre das terminal ewig blockiert. um das zu verhindern habe ich noch ein zweites timerEvent eingebaut, dass aktiv wird wenn "pay" gedrückt ist. Doch ich bekomme folgende Meldung:
"Invalid Key passed to instant message."
ich frage mich was das timerEvent mit ner IM zu tun hat ^^ ? habe auch im default state ne eigenes listen event eingebaut. hat auch nix gebracht
Code:
//Objekt berührt, timeEvent startet
touched()
{
if (currentUser == llDetectedKey(0) || currentUser == NULL_KEY)
{
llSetTimerEvent(0);
llInstantMessage(llDetectedKey(0),"You are the current user of this terminal");
currentUser = llDetectedKey(0);
llSetTimerEvent(60);
name = llDetectedName(0);
integer ch = ChannelFromName(name);
llListen(ch,"",currentUser,"");
llDialog(llDetectedKey(0), "Pick a Number. Use the navigation buttons for different numbers! ", PC__01_09, ch);
}
else
{
llInstantMessage(llDetectedKey(0),"This system is already in use. Please use another terminal.");
}
}
default
{
state_entry()
{
llSetPayPrice(PAY_HIDE,[10,PAY_HIDE,PAY_HIDE,PAY_HIDE]);
}
money(key giver, integer amount)
{
state payed;
}
state_exit()
{
llSetTimerEvent(30); //nach bezahlen hat user 30s zeit bevor er aus-
//ausgeloggt wird
llMessageLinked(LINK_ALL_CHILDREN, 0, "PAYED", NULL_KEY);
llSay(0,"Please TOUCH the keyboard to pick your numbers.");
}
}//default
state payed
{
state_entry()
{
currentUser = NULL_KEY;
}
touch_start(integer total_number)
{
touched();
}
listen(integer channel, string name, key id, string message)
{
integer ch = ChannelFromName(name);
listening(ch,name,id,message);
}
timer()
{
integer ch = ChannelFromName(name);
llInstantMessage(currentUser,"Time is up. You were logged off");
currentUser = NULL_KEY;
llResetScript();
}
state_exit()
{
}
}
vielen dank für eure mühe und zeit