Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

menu driven item giver

Damian Hallstrom
Registered User
Join date: 20 Jan 2007
Posts: 2
01-25-2007 10:28
Im trying to create a menu driver drink giver for a bar Im creating for my house. Im tired of giving my guests a big box of drinks to fill there inventory up with stuff they do not want. so I decided to make a menu system where they select the drink they want. needless to say I hit a road block because I wouldnt be here seeking help if I didnt
Damian Hallstrom
Registered User
Join date: 20 Jan 2007
Posts: 2
here is what I have so far
01-25-2007 10:32
the menu drops down perfectly, I can select what I want but the item will not give out the drink. I do have the drinks inside the prim, and I did triple check that each name is exactly equal to the object given. this is what I have so far

CODE

list DRINK_OPTIONS = ["Beer", "Jack", "smokes", "coctail", "vodka", "sake", "blood",];
integer Beer = -1234;
integer coctail = -1235 ;
integer Jack = -1245;
integer vodka = -1243;
integer smokes = -3454;
integer sake = -5564;
integer blood = -6645;
integer CHANNEL = -8788;



default {
state_entry()
{
llListen(CHANNEL, "", NULL_KEY, ""); // listen for dialog answers (from multiple users)
} // end state_entry()

touch_start(integer total_number)
{
llDialog(llDetectedKey(0), "what can I help you with?", DRINK_OPTIONS, CHANNEL); // present dialog on click

}// end touch_start()

listen(integer channel, string name, key id, string message)
{
if (llListFindList(DRINK_OPTIONS, [message]) != -1) // verify dialog choice
{
if (message == "Beer")
{
llGiveInventory(llDetectedKey(0),"Beer_Dag- Beer");

}
else if (message == "Jack")
{
llGiveInventory(llDetectedKey(0),"Jack Daniels Whiskey");

}
else if (message == "Smokes")
{
llGiveInventory(llDetectedKey(0),"Smokes_Cigarette");

}
else if (message == "coctail")
{
llGiveInventory(llDetectedKey(0),"(drink)**Baki Green Queen Coctail");

}
else if (message == "vodka")
{
llGiveInventory(llDetectedKey(0),"YadNi s Bottle of Absynthe");

}
else if (message == "sake")
{
llGiveInventory(llDetectedKey(0),"glass of sake");

}
else if (message == "blood")
{
llGiveInventory(llDetectedKey(0),"goblet");

}


}
}
}
Elsewhere Essex
Registered User
Join date: 8 Sep 2006
Posts: 50
01-25-2007 10:52
you cant use llDetectedKey(0) inside a listen event
instead, listen gives you the key of the user from the dialog()
in you listen event, instead use
CODE

llGiveInventory(id, Beer_Dag- Beer");
Newgate Ludd
Out of Chesse Error
Join date: 8 Apr 2005
Posts: 2,103
01-26-2007 00:45
You may want to look at the fridge script.
racush Cheeky
Registered User
Join date: 23 Jan 2006
Posts: 23
01-26-2007 15:31
Well I aswell had a need for such a script though never gave it more than more drink to give but here is what I used I changed it up to support 3 drinks but i'm shure you can expand it to how ever you like

CODE

integer menu_handler;
integer menu_channel;
menu(key user,string title,list buttons)
{
menu_channel = (integer)(llFrand(99999.0) * -1);
menu_handler = llListen(menu_channel,"","","");
llDialog(user,title,buttons,menu_channel);
llSetTimerEvent(5.0);
}

default
{
touch_start(integer t)
{
menu(llDetectedKey(0),"Care for a Drink?",["Drink1","Drink2","Drink3"]);
}
timer()
{
llSetTimerEvent(0.0);
llListenRemove(menu_handler);
}
listen(integer channel,string name,key id,string message)
{
if (channel == menu_channel)
{
llSetTimerEvent(0.0);
llListenRemove(menu_handler);
if(message == "Drink1")
{
llGiveInventory(id,"Drink1");
}
else if(message == "Drink2")
{
llGiveInventory(id,"Drink2");
}
else if(message == "Drink3")
{
llGiveInventory(id,"Drink3");
}
}
}
}