Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Data scanning with llListen(). 3 times in a row

Tomfox Wiranata
Registered User
Join date: 20 Dec 2006
Posts: 80
01-01-2007 12:35
Hi everybody!

Quick explanation of my problem.

When a resident touches my object i ask him to enter 3 numbers.
After the first number is entered and saved, he needs to enter the second number etc.

I can not make it work to ask for the first, saving it and THEN ask for the second one.


the query exists in function getNumbersForOne.

CODE

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







Please help me. thx :)
grumble Loudon
A Little bit a lion
Join date: 30 Nov 2005
Posts: 612
01-01-2007 13:28
CODE

GetNumbersForOne()
{
llSay(0,"First Number");
llListen(100,"",playername,"");

llSay(0,"Second number");
llListen(100,"",playername,"");
}//getNumbersForOne


1. This makes no sense since the second listen has no effect.
2. Don't route dialog responses back threw channel 0
3. Use ListenRemove to remove the earlier listens.
4. Don't leave the listens open when it's not needed.

I would suggest you either use states or a global variable for state.
Then use different chat channel for each dialog response.

Then llWhisper(0,) the result as needed so the other players know.
Tomfox Wiranata
Registered User
Join date: 20 Dec 2006
Posts: 80
01-01-2007 14:28
thx. could you help me out with code?

i tried often to let objects respond with other channels than 0. but i do not know how. if i change the channel i can not see messages, that object write....

maybe you can show me what you meant. would be so greatful :)

thx so much