02-18-2013, 02:38 AM
PHP Code:
/////////////////////////////////////////////////////////////////////////////////////////////////
// PARSER ///////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
string sep = ";";
string putVar(string src,string varName,string varValue) {
list varSet = llParseString2List(llBase64ToString(src),[sep],[]);
integer count;
for(count=0;count<llGetListLength(varSet);count++) {
list var = llParseString2List(llList2String(varSet,count),["="],[]);
if(llList2String(var,0) == varName) {
varSet = llListReplaceList(varSet,[varName + "=" + varValue],count,count);
src = llDumpList2String(varSet,sep);
return llStringToBase64(src);
}
}
src = llDumpList2String(varSet + [varName + "=" + varValue],sep);
return llStringToBase64(src);
}
string getVar(string src,string varName) {
list varSet = llParseString2List(llBase64ToString(src),[sep],[]);
integer count;
for(count=0;count<llGetListLength(varSet);count++) {
list var = llParseString2List(llList2String(varSet,count),["="],[]);
if(llList2String(var,0) == varName) return llList2String(var,1);
}
return "";
}
/////////////////////////////////////////////////////////////////////////////////////////////////
// PARSER ///////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
list the_wheel = ["?", "2", "14", "35", "23", "4", "16", "26", "21", "6", "18", "31", "19", "8", "12", "29", "25", "10", "27", "00", "1", "13", "36", "24", "3", "15", "34", "22", "5", "17", "7", "33", "30", "11", "32", "28", "9", "20", "0"];
float on_spin_time = 20.0;
integer time_counter;
integer wheel_busy; //must be higher than 18, or delay will fail
// MENU
integer menuChannel = -1;
integer menuListenId;
showMenu(string button)
{
menuChannel = -(integer)llFrand(10000000) - 1;
menuListenId = llListen(menuChannel,llKey2Name(llGetOwner()),llGetOwner(),"");
string strBetLimit = "BET LIMIT: (no limit)";
if((integer)getVar(llGetObjectDesc(),"betlimit")) strBetLimit = "BET LIMIT: " + getVar(llGetObjectDesc(),"betlimit") + "L$";
string text = "CHOOSE AN OPTION\n \n";
if(button != "") llDialog(llGetOwner(),text + "STATUS: enabled\n" + strBetLimit,[button] + ["BET LIMIT","<RESET>","[CLOSE]"],menuChannel);
else llDialog(llGetOwner(),text + "STATUS: disabled\n" + strBetLimit,["BET LIMIT","<RESET>","[CLOSE]"],menuChannel);
}
integer betListenId;
askBetLimit()
{
betListenId = llListen(0,llKey2Name(llGetOwner()),llGetOwner(),"");
osay("Please say the bet limit for this roulette machine (0 = no limit)...");
}
//Function ears (for listen)
string ears(integer channel, string name, key id, string msg)
{
if(id != llGetOwner()) return "";
if(channel == menuChannel)
{
llListenRemove(menuListenId);
if(msg == "ON") return "on";
else if(msg == "OFF") return "off";
else if(msg == "BET LIMIT") askBetLimit();
else if(msg == "<RESET>")
{
llMessageLinked(LINK_ALL_OTHERS, 1234512345, "resetscript", NULL_KEY);
llSleep(1.5);
llResetScript();
}
}
else if(channel == 0)
{
llListenRemove(betListenId);
llSetObjectDesc(putVar(llGetObjectDesc(),"betlimit",(string)((integer)msg)));
llMessageLinked(LINK_ALL_CHILDREN,(integer)getVar(llGetObjectDesc(),"betlimit"),"betlimit",NULL_KEY);
if((integer)getVar(llGetObjectDesc(),"betlimit") == 0) osay("Bet limit disabled. Any bet amount will be accepted.");
else osay("Bet limit changed to L$" + getVar(llGetObjectDesc(),"betlimit") + ".");
}
return "";
}
//Function osay (quick ownersay)
osay (string msg)
{
llOwnerSay("Oo. " + msg);
}
//this state decides the result, spins the ball, and plays the sound
spinme(){
llPlaySound("e87c6247-ed65-2ee0-0d73-8b2f6c83453b", 0.2);
//determine where the ball will stop
integer my_value = RandInt(1,38);
//0.1653 don't change these numbers
float len = (my_value * 0.1653) + 13.5664;
llWhisper(0, "Ball now in motion.");
// int int int float float float
// mode, side, x_frames, y_frames, start, length, rate);
// (PI * 4) + 1
// + s2nd_rate
llSetTextureAnim(ANIM_ON | ROTATE | SMOOTH, 0, 6, 1, 0, len, 6);
string call = llList2String(the_wheel, my_value);
string color;
if ((my_value % 2) == 0){color = "red";}
else{color = "black";}
//set 0 and 00 to house
if ((call == "0") || (call == "00")) color = "house";
llSleep(3.5);
llWhisper (0, call + " (" + color + ")");
integer call_num = (integer)call;
if ((call != "0") && (call != "00"))
{
//even odd
if ((call_num % 2) == 0)
{
//here message goes, what won, what won, blank
llMessageLinked(8, 8, "even", NULL_KEY);
}else{
llMessageLinked(5, 5, "odd", NULL_KEY);
}
//osay("analyze black red");
if (color == "red")
{
//osay("sending linked messages to red and black announcing RED won");
llMessageLinked(7, 7, "red", NULL_KEY);
}else{
//osay("sending linked messages to red and black announcing BLACK won");
llMessageLinked(6, 6, "black", NULL_KEY);
}
//osay("analyze row");
if ((call_num == 1) || (call_num == 4) || (call_num == 7) || (call_num == 10) || (call_num == 13) || (call_num == 16) || (call_num == 19) || (call_num == 22) || (call_num == 25) || (call_num == 28) || (call_num == 31) || (call_num == 34)){
llMessageLinked(13, 13, "lowrow", NULL_KEY); //low row
}else if((call_num == 2) || (call_num == 5) || (call_num == 8) || (call_num == 11) || (call_num == 14) || (call_num == 17) || (call_num == 20) || (call_num == 23) || (call_num == 26) || (call_num == 29) || (call_num == 32) || (call_num == 35)){
llMessageLinked(26, 26, "midrow", NULL_KEY); //mid row
}else if((call_num == 3) || (call_num == 6) || (call_num == 9) || (call_num == 12) || (call_num == 15) || (call_num == 18) || (call_num == 21) || (call_num == 24) || (call_num == 27) || (call_num == 30) || (call_num == 33) || (call_num == 36)){
llMessageLinked(27, 27, "highrow", NULL_KEY); //high row
}
//osay("analyze 18s");
if ((call_num >= 1) && (call_num <= 18)){
llMessageLinked(9, 9, "1-18", NULL_KEY); //1-18
}else if((call_num >= 19) && (call_num <= 36)){
llMessageLinked(4, 4, "19-36", NULL_KEY); //1-18
}
//osay("analyze 12s");
if ((call_num >= 1) && (call_num <= 12)){
llMessageLinked(12, 12, "1st 12", NULL_KEY); //1st12
}else if ((call_num >= 13) && (call_num <= 24)){
llMessageLinked(11, 11, "2nd 12", NULL_KEY); //2nd12
}else if ((call_num >= 24) && (call_num <= 36)){
llMessageLinked(10, 10, "3rd 12", NULL_KEY); //3rd12
}
//osay("analyze corners");
if ((call_num == 2) || (call_num == 3) || (call_num == 5) || (call_num == 6))
llMessageLinked(33, 33, "2 3 5 6", NULL_KEY); //2-3-5-6
if ((call_num == 8) || (call_num == 9) || (call_num == 11) || (call_num == 12))
llMessageLinked(32, 32, "8 9 11 12", NULL_KEY); //8-9-11-12
if ((call_num == 14) || (call_num == 15) || (call_num == 17) || (call_num == 18))
llMessageLinked(31, 31, "14 15 17 18", NULL_KEY); //14-15-17-18
if ((call_num == 20) || (call_num == 21) || (call_num == 23) || (call_num == 24))
llMessageLinked(30, 30, "20 21 23 24", NULL_KEY); //20-21-23-24
if ((call_num == 26) || (call_num == 27) || (call_num == 29) || (call_num == 30))
llMessageLinked(29, 29, "26 27 29 30", NULL_KEY); //26-27-29-30
if ((call_num == 32) || (call_num == 33) || (call_num == 35) || (call_num == 36))
llMessageLinked(28, 28, "32 33 35 36", NULL_KEY); //32-33-35-36
//osay("analyze straight bets");
if (call_num == 1) llMessageLinked(25, 25, "1", NULL_KEY); //one
if (call_num == 4) llMessageLinked(24, 24, "4", NULL_KEY); //four
if (call_num == 7) llMessageLinked(23, 23, "7", NULL_KEY); //seven
if (call_num == 10) llMessageLinked(22, 22, "10", NULL_KEY); //ten
if (call_num == 13) llMessageLinked(21, 21, "13", NULL_KEY); //thirteen
if (call_num == 16) llMessageLinked(20, 20, "16", NULL_KEY); //sixteen
if (call_num == 19) llMessageLinked(19, 19, "19", NULL_KEY); //nineteen
if (call_num == 22) llMessageLinked(18, 18, "22", NULL_KEY); //twentytwo
if (call_num == 25) llMessageLinked(17, 17, "25", NULL_KEY); //twentyfive
if (call_num == 28) llMessageLinked(16, 16, "28", NULL_KEY); //twentyeight
if (call_num == 31) llMessageLinked(15, 15, "31", NULL_KEY); //thirtyonehai
if (call_num == 34) llMessageLinked(14, 14, "34", NULL_KEY); //thirtyfour
}else
{
llWhisper (0, "House wins.");
}
llWhisper(0,"Paying winners. Please wait to reset...");
llSleep(1);
//below is to empty betting lists
//llMessageLinked(LINK_ALL_OTHERS, 0, "clear", NULL_KEY);
//llSleep(2.5);
//llWhisper(0, "Ready to be reset. Please wait...");
}
integer RandInt(integer lower, integer higher) {
integer Range = higher - lower;
integer Result = llFloor(llFrand(Range + 1)) + lower;
return Result;
}
reset()
{
llSetTextureAnim(ANIM_ON, 0, 0, 0, 0, 0, 0);
time_counter = 0;
wheel_busy = FALSE;
}
default
{
//all the code in default just shoves over to state off
state_entry ()
{
llSetText("ROULETTE OFF\n(do not bet)\n.\n.\n.\n.",<1,0,0>,1);
llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
}
run_time_permissions(integer perms)
{
if(!(perms & PERMISSION_DEBIT)) return;
osay("starting...");
state off;
}
touch_start(integer touchers)
{
if(llGetLinkName(llDetectedLinkNumber(0)) == "help")
{
llGiveInventory(llDetectedKey(0),"roulette_player_help");
return;
}
if(llDetectedKey(0) != llGetOwner()) return;
//showMenu("");
llResetScript();
}
listen( integer chan, string name, key id, string message )
{if(ears(chan, name, id, message) == "off") state off;}
on_rez(integer param)
{llResetScript();}
changed(integer change)
{if(change & CHANGED_OWNER) llResetScript();}
}
state off
{
state_entry ()
{
osay ("Off mode");
reset();
llSetText("ROULETTE OFF\n(do not bet)\n.\n.\n.\n.",<1,0,0>,1);
showMenu("ON");
}
touch_start(integer touchers)
{
if(llGetLinkName(llDetectedLinkNumber(0)) == "help")
{
llGiveInventory(llDetectedKey(0),"roulette_player_help");
return;
}
if(llDetectedKey(0) != llGetOwner()) return;
showMenu("ON");
}
listen( integer chan, string name, key id, string message )
{if(ears(chan, name, id, message) == "on") state on;}
on_rez(integer param)
{llResetScript();}
changed(integer change)
{if(change & CHANGED_OWNER) llResetScript();}
}
state on
{
state_entry ()
{
osay("On Mode");
reset();
llSetText("",<0,0,0>,0);
}
touch_start(integer touchers)
{
if(llGetLinkName(llDetectedLinkNumber(0)) == "help")
{
llGiveInventory(llDetectedKey(0),"roulette_player_help");
return;
}
if(llDetectedKey(0) != llGetOwner()) return;
showMenu("OFF");
}
listen( integer chan, string name, key id, string message)
{if(ears(chan, name, id, message) == "off") state off;}
link_message(integer sender, integer num, string str, key id)
{
if(str == "pay")
{
string av_name = llKey2Name(id);
llGiveMoney(id,llAbs(num));
if(num > 0) llWhisper(0, av_name + " won L$" + (string)num + " on " + llGetLinkName(sender) + "!");
}
else if(wheel_busy) return;
if(str == "gotL")
{
wheel_busy = TRUE;
llWhisper(0, "Wheel spins in " + (string)((integer)on_spin_time) + " seconds.");
llSetTimerEvent(on_spin_time - 15);
}
}
timer()
{
++time_counter;
if((time_counter % 2) == 1)
{
llWhisper(0, "Last chance to get your bet in, spinning in 10 seconds.");
llSetTimerEvent(10);
}
else
{
llSetTimerEvent(0);
spinme();
llSetTextureAnim(FALSE, 0, 0, 0, 0, 0, 0);
llSleep(1);
llMessageLinked(LINK_ALL_CHILDREN,1234512345,"resetscript",NULL_KEY);
wheel_busy = FALSE;
llWhisper (0, "Wheel reset. Ready for new bets.");
}
}
on_rez(integer param)
{llResetScript();}
changed(integer change)
{if(change & CHANGED_OWNER) llResetScript();}
}
PHP Code:
/////////////////////////////////////////////////////////////////////////////////////////////////
// PARSER ///////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
string sep = ";";
string putVar(string src,string varName,string varValue) {
list varSet = llParseString2List(llBase64ToString(src),[sep],[]);
integer count;
for(count=0;count<llGetListLength(varSet);count++) {
list var = llParseString2List(llList2String(varSet,count),["="],[]);
if(llList2String(var,0) == varName) {
varSet = llListReplaceList(varSet,[varName + "=" + varValue],count,count);
src = llDumpList2String(varSet,sep);
return llStringToBase64(src);
}
}
src = llDumpList2String(varSet + [varName + "=" + varValue],sep);
return llStringToBase64(src);
}
string getVar(string src,string varName) {
list varSet = llParseString2List(llBase64ToString(src),[sep],[]);
integer count;
for(count=0;count<llGetListLength(varSet);count++) {
list var = llParseString2List(llList2String(varSet,count),["="],[]);
if(llList2String(var,0) == varName) return llList2String(var,1);
}
return "";
}
/////////////////////////////////////////////////////////////////////////////////////////////////
// PARSER ///////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
list people_who_bet = [];
integer win;
start_up()
{
string name = llGetObjectName();
if( (name == "1")||(name == "4")||(name == "7")||(name == "10")||
(name == "13")||(name == "16")||(name == "19")||(name == "22")||
(name == "25")||(name == "28")||(name == "31")||(name == "34")) win = 36;
else if((name == "2 3 5 6")||(name == "8 9 11 12")||(name == "14 15 17 18")||
(name == "20 21 23 24")||(name == "26 27 29 30")||(name == "32 33 35 36")) win = 9;
else if((name == "even")||(name == "odd")||(name == "red")||(name == "black")||
(name == "1-18")||(name == "19-36")) win = 2;
else if((name == "1st 12")||(name == "2nd 12")||(name == "3rd 12")||
(name == "lowrow")||(name == "midrow")||(name == "highrow")) win = 3;
else win = 0;
}
pay(key av, integer prize)
{llMessageLinked(LINK_ROOT,prize,"pay",av);}
reset()
{people_who_bet = [];}
default
{
state_entry()
{
start_up();
reset();
}
on_rez(integer param)
{llResetScript();}
touch_start(integer total_number)
{llWhisper(0,"Pay me to bet.");}
money(key giver, integer amount)
{
integer betLimit = (integer)getVar(llGetObjectDesc(),"betlimit");
if((betLimit!=0)&&(amount > betLimit))
{
integer dif = amount - betLimit;
llWhisper(0,llKey2Name(giver) + ", the current bet limit on this machine is L$" + (string)betLimit + ". L$" + (string)dif + " change returned.");
pay(giver,-dif);
amount = betLimit;
}
people_who_bet += (string)amount + "^" + (string)giver;
llWhisper(0, llKey2Name(giver) + ", you bet L$" + (string)amount + " on " + llGetObjectName() + ".");
llMessageLinked(1, 0, "gotL", NULL_KEY);
}
link_message(integer sender_num, integer num, string str, key id)
{
if((str == llGetObjectName()) && (num == llGetLinkNumber()))
{
integer len = llGetListLength( people_who_bet );
integer x;
for (x = 0; x < len; x++)
{
string data = llList2String(people_who_bet, x);
string prize = llGetSubString( data, 0, (llSubStringIndex( data, "^" ) - 1) );
key av = llGetSubString( data, (llSubStringIndex( data, "^" ) + 1), -1 );
integer payout = win * (integer)prize;
pay(av,payout);
}
reset();
}
else if(str == "betlimit") llSetObjectDesc(putVar(llGetObjectDesc(),"betlimit",(string)num));
else if ((sender_num == 1) && (str == "resetscript") && (num == 1234512345)) llResetScript();
}
}