Tomfox Wiranata
Registered User
Join date: 20 Dec 2006
Posts: 80
|
01-01-2007 12:28
Hallo Leute! Mein Problem kann man sehr kurz erläutern: Ich möchte den User nach "touch" nach 3 Zahlen abfragen. Nachdem ich nach der ersten Zahl gefragt habe und diese in einer Liste gespeichert habe, soll er die Möglichkeit haben eine weitere einzugeben. Mein Problem ist die Reihenfolge. Eine Zahl abfragen und speichern geht, aber ich komme nicht mehr zur zweiten Abfrage.. die Abfrage erfolgt in der Funktion getNumbersForOne. integer i; integer spieleBisher = 0; integer maxSpiele; integer channelChoosing = 1; // dialog channel list NUMBER_OF_PLAYCARDS = ["10","15","20","7","8","9","4","5","6","1","2","3"]; // the main menu list NUMBERS = ["1","2","3"]; list TIPP; string playername; integer num1; integer num2; integer num3; integer num4; integer num5; integer num6; string element;
getNumbersForOne() { llSay(0,"First Number"); llListen(100,"",playername,""); llSay(0,"Second number"); llListen(100,"",playername,"");
}//getNumbersForOne
default {
state_entry() { llListen(0, "", NULL_KEY, ""); // listen for dialog answers (from multiple users)
} touch_start(integer total_number) { string name = llDetectedName(0); playername = name; llSay(0,"Hello"+ (string) playername); llDialog(llDetectedKey(0), "How many playcards would you like to buy?", NUMBER_OF_PLAYCARDS, 0); // present dialog on click }
listen(integer channel, string name, key id, string message) { if (llListFindList(NUMBER_OF_PLAYCARDS, [message]) != -1) // verify dialog choice { if (message == "1") getNumbersForOne(); } if (channel == 100) { TIPP = [message]; element = llList2String(TIPP,0); llSay(0, (string) element); }
}//listen
}//default
Danke sehr 
|
Berakos Tandino
Registered User
Join date: 2 Mar 2006
Posts: 24
|
01-01-2007 17:17
llListen(100,"",playername,""  ; startet zweimal den listener auf dem chan 100 das macht wenig sinn wenn du drei zahlen speichern willst, mach doch z.b. sowas im listen event: if zahl1 == 0 zahl1 = eingabe_vom_user else if zahl2 == 0 zahl2 = eingabe_vom_user else if zahl3 == 0 zahl3 = eingabe_vom_user bei der ersten usereingabe wird die zahl in zahl1 gespeichert, bei der zweiten usereingabe in zahl2 und bei der dritten usereingabe in zahl3
|
Tomfox Wiranata
Registered User
Join date: 20 Dec 2006
Posts: 80
|
01-02-2007 03:20
tut mir leid aber aus dem code werde ich nicht schlau... wieso if zahl1 == 0? mit 0 meinst du den channel oder?
wie mache ich dem skript klar, dass zahl1 die erste benutzereingabe ist? und wie komme ich wieder zur zweiten eingabeaufforderung?
danke
|
Berakos Tandino
Registered User
Join date: 2 Mar 2006
Posts: 24
|
01-02-2007 23:46
entschuldige.. also ich mein damit dass du in dein listen event folgende abfrage einbaust: wenn bei der benutzereingabe die variable "zahl1" den wert 0 hat (am anfang hat jede integer variable den wert 0) dann speicher die benutzereingabe in der variable "zahl1" ansonsten mach das nich sondern das folgende wenn bei der benutzereingabe die variable "zahl2" den wert 0 hat dann speicher die benutzereingabe in der variable "zahl2" ansonsten mach das nich sondern das folgende wenn bei der benutzereingabe die variable "zahl3" den wert 0 hat dann speicher die benutzereingabe in der variable "zahl3" ansonsten mach garnix dadurch speichert dein script die erste benutzereingabe in "zahl1", die zweite in "zahl2", die dritte in "zahl3" und ignoriert dann weitere benutzereingaben also LSL code waere das halt integer zahl1; integer zahl2; integer zahl3;
default { listen(integer channel, string name, key id, string message) { if(zahl1 == 0) { zahl1 = (integer)message; } else if(zahl2 == 0) { zahl2 = (integer)message; } else if(zahl3 == 0) { zahl3 = (integer)message; } } }
das einzige problem ist, wenn der benutzer keine zahl oder 0 sagt ^^
|
Tomfox Wiranata
Registered User
Join date: 20 Dec 2006
Posts: 80
|
01-03-2007 06:28
aaah..ok. danke sehr 
|