PRTech Roulette Table Scripts 9k - steadymobbin - 02-18-2013
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(); } }
|