Advertisement
Guest User

Proteus Casino, Casino, Dice, Dice Script, Casino Script

a guest
Jul 5th, 2014
3,918
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 74.59 KB | None | 0 0
  1. BETS = {
  2. --[[ HIGH/LOW = 123 OR 456 ]]--
  3.   HL_MODE = true,
  4.   HL_MIN = 30000,
  5.   HL_MAX = 500000,
  6.   HL_PAYOUT = 80,
  7.  
  8. --[[ ODD/EVEN = 135 OR 246 ]]--
  9.   OE_MODE = true,
  10.   OE_MIN = 30000,
  11.   OE_MAX = 500000,
  12.   OE_PAYOUT = 80,
  13.  
  14. --[[ BLACKJACK ]]--
  15.   BJ_MODE = true,
  16.   BJ_MIN = 30000,
  17.   BJ_MAX = 500000,
  18.   BJ_PAYOUT = 120,
  19.  
  20. --[[ SINGLE NUMBERS = 1, 2, 3, 4, 5 OR 6 ]]--
  21.   NUMBERS_MODE = true,
  22.   NUMBERS_MIN = 30000,
  23.   NUMBERS_MAX = 500000,
  24.   NUMBERS_PAYOUT = 150,
  25.  
  26. --[[ FIRST/SECOND/LAST = 12, 34 OR 56 ]]--
  27.   FSL_MODE = true,
  28.   FSL_MIN = 30000,
  29.   FSL_MAX = 500000,
  30.   FSL_PAYOUT = 80
  31. }
  32.  
  33. CONFIG = {
  34.  
  35.   CHECK_MONEY_BACKPACK = "Purple Backpack",
  36.   CRYSTAL_COINS_BACKPACK = "Brocade Backpack",
  37.   PLATINUM_COINS_BACKPACK = "Red Backpack",
  38.   EXTRA_PLATINUM_COINS_BACKPACK = "Backpack",
  39.   ITEMS_BACKPACK = "Beach Backpack",
  40.  
  41.   PING_COMPENSATION = 100,
  42.  
  43.   SAY_ADVERTISEMENT = true,
  44.   SAY_TIME = 45,
  45.  
  46.   YELL_ADVERTISEMENT = true,
  47.   YELL_TIME = 120,
  48.  
  49.   CUSTOM_MESSAGES = true,
  50.   CUSTOM_MESSAGES_RAND = 4,
  51.  
  52.   INFO_MESSAGES = true,
  53.  
  54.   WON_BET_ITEM = "none",
  55.   LOST_BET_ITEM = "none",
  56.   FIRST_DECORATION_ITEM = "Die",
  57.   SECOND_DECORATION_ITEM = "none",
  58.  
  59.   PARTY_HAT = true,
  60.   PARTY_HAT_TIME = 1.5,
  61.   SERVER_SAVE_TIME = "09:55:00",
  62.  
  63.   SHOW_HUD = true,
  64.   LOGS = true,
  65.  
  66.   SAFE_EXIT = false,
  67.   AMOUNT_CC_TO_EXIT = 3, --[[3 IS 3CC]]--
  68.   AMOUNT_PL_TO_EXIT = 10, --[[10 IS 1K]]--
  69.  
  70.   ANTI_IDLE_TIME = 3,
  71.  
  72.   SS_EXIT = false,
  73.   SAFE_BET = true,
  74.    
  75.   SERVER = "OTS"
  76. }
  77.  
  78. AD_SAY_MSG = {
  79.   "|SELF|'s Casino - Try your luck with the fastest game!",
  80.   "Become a millionaire in a second at |SELF|'s Casino!",
  81.   "Come and play the fastest game!",
  82.   "Feeling lucky? The best payrate in all Tibia!",
  83.   "Tired of slow games? Come and play at |SELF|'s Casino!"
  84. }
  85.  
  86. AD_YELL_MSG = {
  87.   "|SELF|'s Casino - Try your luck with the fastest game!",
  88.   "Become a millionaire in a second at |SELF|'s Casino!",
  89.   "Come and play the fastest game!",
  90.   "Feeling lucky? The best payrate in all Tibia!",
  91.   "Tired of slow games? Come and play at |SELF|'s Casino!"
  92. }
  93.  
  94. INFO_MSG = {
  95.   "Bets: H/L - |HLP|% | ODD/EVEN - |OEP|% | BLACKJACK - |BJP|% | NUMBERS - |NUMBERSP|% | FIRST/SECOND/LAST - |FSLP|%. Also I accepting ITEMS! If you don't know value of items ask me about 'price ItemName'."
  96. }
  97.  
  98. MIN_MAX_MSG = {
  99.   "Minimum: |MIN|K, Maximum: |MAX|K.",
  100.   "Hello! Minumum is |MIN|K, and Maximum is |MAX|K."
  101. }
  102.  
  103. ADVANCED_MIN_MAX = {
  104.   "H/L - [|HLMIN|K ~ |HLMAX|K ~ |HLP|%] | ODD/EVEN - [|OEMIN|K ~ |OEMAX|K ~ |OEP|%] | BLACKJACK - [|BJMIN|K ~ |BJMAX|K ~ |BJP|%] | NUMBERS - [|NUMBERSMIN|K ~ |NUMBERSMAX|K ~ |NUMBERSP|%] | FIRST/SECOND/LAST - [|FSLMIN|K ~ |FSLMAX|K ~ |FSLP|%]."
  105. }
  106.  
  107. GAMES_MSG = {
  108.   "HIGH / LOW ~ ODD / EVEN ~ BLACKJACK ~ FIRST / SECOND / LAST ~ LUCKY NUMBER - {1, 2, 3, 4, 5 or 6}."
  109. }
  110.  
  111. CHEAT_MSG = "Dude what you doing? Do you wanna cheat your boss?"
  112. ROLL_MSG = "" .. Self.Name() .. " rolled a"
  113. NOT_ENOUGH_GOLD = "I'm very sorry, but your bet is too high for my current money."
  114.  
  115. BJ_OVER = {
  116.   "Your count was |GAMBLER| and mine |PLAYER|. We were both above 21 and you lose |MONEY|K",
  117.   "Looks like we both were over 21 with |PLAYER| vs. |GAMBLER|. You lose |MONEY|K"
  118. }
  119.  
  120. BJ_TIE = {
  121.   "It's a tie! We both got a total of |GAMBLER|, here are your |MONEY|K!",
  122.   "We are tied. Both counts were |GAMBLER|. Here are your |MONEY|K back!"
  123. }
  124.  
  125. BJ_WON = {
  126.   "Congratulations! You rolled a |GAMBLER|, the house rolled |PLAYER|. You won |MONEY|K!",
  127.   "Congratulations! Your count is |GAMBLER| and mine |PLAYER|. You have won |MONEY|K!",
  128.   "Gratz! The counts were |PLAYER| vs. |GAMBLER|. Here you are, |MONEY|K!",
  129.   "Aaaand we have a winner! The counts were |PLAYER| vs. |GAMBLER|. You have won |MONEY|K!",
  130.   "Today must be your lucky day! Your count was |GAMBLER| and mine |PLAYER|. You won |MONEY|K!"
  131. }
  132.  
  133. BJ_LOSE = {
  134.  "The house wins: |PLAYER| versus |GAMBLER|. You lost |MONEY|K.",
  135.  "Rough day, huh? The house wins: |PLAYER| versus |GAMBLER| You lost |MONEY|K.",
  136.   "I'm sorry, maybe another time. The counts were |PLAYER| vs. |GAMBLER|",
  137.   "Oh well, that's |PLAYER| vs. |GAMBLER|. I guess you can't always win..."
  138. }
  139.  
  140. WELCOME = {
  141.   "Welcome, |GAMBLER|! Do you want to try your luck?",
  142.   "Hello, |GAMBLER|! I feel you want to become millionaire!",
  143.   "Hello, |GAMBLER|! Are you curious about my games? Say 'info' or 'games'.",
  144.   "Hi, |GAMBLER|! Are you feeling lucky today?"
  145. }
  146.  
  147. WIN = {
  148.   "Congratulations! You won |MONEY|K!",
  149.   "Gratz! Here you are, |MONEY|K!",
  150.   "Aaaand we have a winner! You have won |MONEY|K!",
  151.   "Today must be your lucky day! You won |MONEY|K!"
  152. }
  153.  
  154. LOSE = {
  155.   "I'm sorry, maybe another time, btw. you lose |MONEY|K!",
  156.   "Oh well you can't always win... You lose |MONEY|K!"
  157. }
  158.  
  159. ITEMS = {
  160.  
  161. --[[ BLUE DJINN ]]--
  162.   {id = 7436, name = "angelic axe", value = 5000},
  163.   {id = 3567, name = "blue robe", value = 10000},
  164.   {id = 3418, name = "bonelord shield", value = 1200},
  165.   {id = 3079, name = "boots of haste", value = 30000},
  166.   {id = 7412, name = "butcher's axe", value = 18000},
  167.   {id = 3381, name = "crown armor", value = 12000},
  168.   {id = 3382, name = "crown legs", value = 12000},
  169.   {id = 3419, name = "crown shield", value = 8000},
  170.   {id = 3385, name = "crown helmet", value = 2500},
  171.   {id = 3391, name = "crusader helmet", value = 6000},
  172.   {id = 3302, name = "dragon lance", value = 9000},
  173.   {id = 3416, name = "dragon shield", value = 4000},
  174.   {id = 3320, name = "fire axe", value = 8000},
  175.   {id = 3280, name = "fire sword", value = 4000},
  176.   {id = 7454, name = "glorious axe", value = 3000},
  177.   {id = 3415, name = "guardian shield", value = 2000},
  178.   {id = 3439, name = "phoenix shield", value = 16000},
  179.   {id = 7410, name = "queen's sceptre", value = 20000},
  180.   {id = 3392, name = "royal helmet", value = 30000},
  181.   {id = 7451, name = "shadow sceptre", value = 10000},
  182.   {id = 7391, name = "thaian sword", value = 16000},
  183.   {id = 3279, name = "war hammer", value = 1200},
  184.   {id = 3071, name = "wand of inferno", value = 3000},
  185.   {id = 3073, name = "wand of cosmic energy", value = 2000},
  186.   {id = 8092, name = "wand of starstorm", value = 3600},
  187.   {id = 8093, name = "wand of draconia", value = 1500},
  188.   {id = 8094, name = "wand of voodoo", value = 4400},
  189.   {id = 16096, name = "wand of defiance", value = 6500},
  190.   {id = 16115, name = "wand of everblazing", value = 6000},
  191.  
  192. --[[ GREEN DJINN ]]--
  193.   {id = 7428, name = "bonebreaker", value = 10000},
  194.   {id = 3322, name = "dragon hammer", value = 2000},
  195.   {id = 7419, name = "dreaded cleaver", value = 15000},
  196.   {id = 3281, name = "giant sword", value = 17000},
  197.   {id = 7407, name = "haunted blade", value = 8000},
  198.   {id = 3370, name = "knight armor", value = 5000},
  199.   {id = 3371, name = "knight legs", value = 5000},
  200.   {id = 3318, name = "knight axe", value = 2000},
  201.   {id = 7421, name = "onyx flail", value = 22000},
  202.   {id = 7411, name = "ornamented axe", value = 20000},
  203.   {id = 3324, name = "skull staff", value = 6000},
  204.   {id = 7413, name = "titan axe", value = 4000},
  205.   {id = 3428, name = "tower shield", value = 8000},
  206.   {id = 3434, name = "vampire shield", value = 15000},
  207.   {id = 3369, name = "warrior helmet", value = 5000},
  208.   {id = 3067, name = "hailstorm rod", value = 3000},
  209.   {id = 16117, name = "muck rod", value = 6000},
  210.   {id = 3065, name = "terra rod", value = 2000},
  211.   {id = 8082, name = "underworld rod", value = 4400},
  212.   {id = 8083, name = "northwind rod", value = 1500},
  213.   {id = 8084, name = "springsprout rod", value = 3600},
  214.   {id = 16118, name = "glacial rod", value = 20000},
  215.  
  216. --[[ RASHID ]]--
  217.   {id = 7414, name = "abyss hammer", value = 20000},
  218.   {id = 7426, name = "amber staff", value = 8000},
  219.   {id = 7404, name = "assassin dagger", value = 20000},
  220.   {id = 3344, name = "beastslayer axe", value = 1500},
  221.   {id = 10457, name = "beetle necklace", value = 1500},
  222.   {id = 7403, name = "berserker", value = 40000},
  223.   {id = 7406, name = "blacksteel sword", value = 6000},
  224.   {id = 7429, name = "blessed sceptre", value = 40000},
  225.   {id = 3408, name = "bonelord helmet", value = 7500},
  226.   {id = 7379, name = "brutetamer's staff", value = 1500},
  227.   {id = 17829, name = "buckle", value = 7000},
  228.   {id = 3435, name = "castle shield", value = 5000},
  229.   {id = 8022, name = "chain bolter", value = 40000},
  230.   {id = 7427, name = "chaos mace", value = 9000},
  231.   {id = 11674, name = "cobra crown", value = 50000},
  232.   {id = 8027, name = "composite hornbow", value = 25000},
  233.   {id = 7415, name = "cranial basher", value = 30000},
  234.   {id = 16163, name = "crystal crossbow", value = 35000},
  235.   {id = 3333, name = "crystal mace", value = 9000},
  236.   {id = 8050, name = "crystalline armor", value = 16000},
  237.   {id = 3420, name = "demon shield", value = 30000},
  238.   {id = 3019, name = "demonbone amulet", value = 32000},
  239.   {id = 7382, name = "demonrage sword", value = 36000},
  240.   {id = 7387, name = "diamond sceptre", value = 3000},
  241.   {id = 3339, name = "djinn blade", value = 15000},
  242.   {id = 3386, name = "dragon scale mail", value = 40000},
  243.   {id = 7402, name = "dragon slayer", value = 15000},
  244.   {id = 7430, name = "dragonbone staff", value = 3000},
  245.   {id = 7419, name = "dreaded cleaver", value = 15000},
  246.   {id = 3397, name = "dwarven armor", value = 30000},
  247.   {id = 7438, name = "elvish bow", value = 2000},
  248.   {id = 3326, name = "epee", value = 8000},
  249.   {id = 7457, name = "fur boots", value = 2000},
  250.   {id = 823, name = "glacier kilt", value = 11000},
  251.   {id = 829, name = "glacier mask", value = 2500},
  252.   {id = 824, name = "glacier robe", value = 11000},
  253.   {id = 819, name = "glacier shoes", value = 2500},
  254.   {id = 3063, name = "gold ring", value = 8000},
  255.   {id = 3360, name = "golden armor", value = 20000},
  256.   {id = 3364, name = "golden legs", value = 30000},
  257.   {id = 3315, name = "guardian halberd", value = 11000},
  258.   {id = 3332, name = "hammer of wrath", value = 30000},
  259.   {id = 7380, name = "headchopper", value = 6000},
  260.   {id = 3340, name = "heavy mace", value = 50000},
  261.   {id = 12683, name = "heavy trident", value = 2000},
  262.   {id = 17852, name = "helmet of the lost", value = 2000},
  263.   {id = 7389, name = "heroic axe", value = 30000},
  264.   {id = 8045, name = "hibiscus dress", value = 3000},
  265.   {id = 7422, name = "jade hammer", value = 25000},
  266.   {id = 8049, name = "lavos armor", value = 16000},
  267.   {id = 820, name = "lightning boots", value = 2500},
  268.   {id = 816, name = "lightning pendant", value = 1500},
  269.   {id = 822, name = "lightning legs", value = 11000},
  270.   {id = 828, name = "lightning headband", value = 2500},
  271.   {id = 825, name = "lightning robe", value = 11000},
  272.   {id = 7424, name = "lunar staff", value = 5000},
  273.   {id = 3366, name = "magic plate armor", value = 90000},
  274.   {id = 818, name = "magma boots", value = 2500},
  275.   {id = 826, name = "magma coat", value = 11000},
  276.   {id = 821, name = "magma legs", value = 11000},
  277.   {id = 827, name = "magma monocle", value = 2500},
  278.   {id = 7463, name = "mammoth fur cape", value = 6000},
  279.   {id = 3414, name = "mastermind shield", value = 50000},
  280.   {id = 3436, name = "medusa shield", value = 9000},
  281.   {id = 7386, name = "mercenary sword", value = 12000},
  282.   {id = 7384, name = "mystic blade", value = 30000},
  283.   {id = 3314, name = "naginata", value = 2000},
  284.   {id = 7418, name = "nightmare blade", value = 35000},
  285.   {id = 7456, name = "noble axe", value = 10000},
  286.   {id = 7460, name = "norse shield", value = 1500},
  287.   {id = 7392, name = "orcish maul", value = 6000},
  288.   {id = 17828, name = "pair of iron fists", value = 4000},
  289.   {id = 8063, name = "paladin armor", value = 15000},
  290.   {id = 3550, name = "patched boots", value = 2000},
  291.   {id = 3334, name = "pharaoh sword", value = 23000},
  292.   {id = 5461, name = "pirate boots", value = 3000},
  293.   {id = 3055, name = "platinum amulet", value = 2500},
  294.   {id = 7383, name = "relic sword", value = 25000},
  295.   {id = 3006, name = "ring of the sky", value = 30000},
  296.   {id = 7434, name = "royal axe", value = 40000},
  297.   {id = 3016, name = "ruby necklace", value = 2000},
  298.   {id = 6553, name = "ruthless axe", value = 45000},
  299.   {id = 7437, name = "sapphire hammer", value = 7000},
  300.   {id = 3440, name = "scarab shield", value = 2000},
  301.   {id = 5741, name = "skull helmet", value = 40000},
  302.   {id = 8061, name = "skullcracker armor", value = 18000},
  303.   {id = 7452, name = "spiked squelcher", value = 5000},
  304.   {id = 3554, name = "steel boots", value = 30000},
  305.   {id = 8052, name = "swamplair armor", value = 16000},
  306.   {id = 3442, name = "tempest shield", value = 35000},
  307.   {id = 812, name = "terra legs", value = 11000},
  308.   {id = 813, name = "terra boots", value = 2500},
  309.   {id = 830, name = "terra hood", value = 2500},
  310.   {id = 811, name = "terra mantle", value = 11000},
  311.   {id = 7390, name = "the justice seeker", value = 40000},
  312.   {id = 7388, name = "vile axe", value = 30000},
  313.   {id = 3342, name = "war axe", value = 12000},
  314.   {id = 2958, name = "war horn", value = 8000},
  315.   {id = 9653, name = "witch hat", value = 5000},
  316.   {id = 7408, name = "wyvern fang", value = 1500},
  317.   {id = 3549, name = "pair of soft boots", value = 300000},
  318.   {id = 6529, name = "pair of soft boots", value = 300000},
  319.   {id = 8026, name = "warsinger bow", value = 350000},
  320.   {id = 8023, name = "royal crossbow", value = 350000},
  321.   {id = 8090, name = "spellbook of dark mysteries", value = 750000},
  322.   {id = 8096, name = "hellforged axe", value = 350000},
  323.   {id = 8102, name = "emerald sword", value = 350000},
  324.   {id = 8100, name = "obsidian truncheon", value = 50000},
  325.   {id = 8060, name = "master archer's armor", value = 350000},
  326.   {id = 16109, name = "prismatic helmet", value = 40000},
  327.   {id = 16110, name = "prismatic armor", value = 40000},
  328.   {id = 16111, name = "prismatic legs", value = 40000},
  329.   {id = 16112, name = "prismatic boots", value = 40000},
  330.   {id = 11686, name = "royal draken mail", value = 500000},
  331.   {id = 11689, name = "elite draken helmet", value = 500000},
  332.   {id = 11688, name = "shield of corruption", value = 500000},
  333.   {id = 11691, name = "snake god's wristguard", value = 50000},
  334.   {id = 11687, name = "royal scale robe", value = 800000},
  335.   {id = 16164, name = "mycological bow", value = 35000},
  336.   {id = 16162, name = "mycological mace", value = 15000},
  337.   {id = 8864, name = "yalahari mask", value = 110000},
  338.   {id = 8863, name = "yalahari leg piece", value = 110000},
  339.   {id = 8862, name = "yalahari armor", value = 50000},
  340.   {id = 9018, name = "firewalker boots", value = 80000},
  341.   {id = 9019, name = "firewalker boots", value = 80000},
  342.   {id = 9020, name = "worn firewalker boots", value = 80000},
  343.   {id = 6530, name = "worn soft boots", value = 300000},
  344.  
  345. --[[ ERSIK ]]--
  346.   {id = 11651, name = "elite draken mail", value = 50000},
  347.   {id = 10384, name = "zaoan armor", value = 14000},
  348.   {id = 10385, name = "zaoan helmet", value = 45000},
  349.   {id = 10386, name = "zaoan shoes", value = 5000},
  350.   {id = 10387, name = "zaoan legs", value = 14000},
  351.   {id = 4033, name = "draken boots", value = 40000},
  352.   {id = 10323, name = "guardian boots", value = 35000},
  353.   {id = 10390, name = "zaoan sword", value = 30000},
  354.   {id = 11657, name = "twiceslicer", value = 28000},
  355.   {id = 10389, name = "sais", value = 16500},
  356.   {id = 10388, name = "drakinata", value = 10000},
  357.   {id = 10391, name = "drachaku", value = 10000},
  358.   {id = 10412, name = "wailing widow's necklace", value = 3000},
  359.  
  360. --[[ WARZONE ]]--
  361.   {id = 5803, name = "arbalest", value = 42000},
  362.   {id = 3341, name = "arcane staff", value = 42000},
  363.   {id = 11693, name = "blade of corruption", value = 60000},
  364.   {id = 7416, name = "bloody edge", value = 30000},
  365.   {id = 645, name = "blue legs", value = 15000},
  366.   {id = 3295, name = "bright sword", value = 6000},
  367.   {id = 6162, name = "ceremonial ankh", value = 20000},
  368.   {id = 9394, name = "claw of 'the noxious spawn'", value = 15000},
  369.   {id = 3068, name = "crystal wand", value = 10000},
  370.   {id = 3387, name = "demon helmet", value = 40000},
  371.   {id = 10439, name = "dragon robe", value = 50000},
  372.   {id = 3398, name = "dwarven legs", value = 40000},
  373.   {id = 9606, name = "egg of the many", value = 15000},
  374.   {id = 7453, name = "executioner", value = 55000},
  375.   {id = 3249, name = "frozen starlight", value = 20000},
  376.   {id = 8041, name = "greenwood coat", value = 50000},
  377.   {id = 902, name = "marlin trophy", value = 5000},
  378.   {id = 8021, name = "modified crossbow", value = 10000},
  379.   {id = 5080, name = "panda teddy", value = 30000},
  380.   {id = 7417, name = "runed sword", value = 45000},
  381.   {id = 9613, name = "sea serpent trophy", value = 10000},
  382.   {id = 8029, name = "silkweaver bow", value = 12000},
  383.   {id = 11679, name = "souleater trophy", value = 7500},
  384.   {id = 5791, name = "stuffed dragon", value = 6000},
  385.   {id = 6527, name = "the avenger", value = 42000},
  386.   {id = 8025, name = "the ironworker", value = 50000},
  387.   {id = 6103, name = "unholy book", value = 30000},
  388.   {id = 8055, name = "windborn colossus armor", value = 50000},
  389.  
  390. --[[ PRODUCTS ]]--
  391.   {id = 5904, name = "magic sulphur", value = 8000},
  392.   {id = 5919, name = "dragon claw", value = 300000},
  393.   {id = 5809, name = "soul stone", value = 500000},
  394.   {id = 5879, name = "spider silk", value = 4000},
  395.   {id = 6546, name = "dracola's eye", value = 50000},
  396.   {id = 5911, name = "red piece of cloth", value = 20000},
  397.   {id = 5885, name = "flask of warrior's sweat", value = 10000},
  398.   {id = 6537, name = "mr. punish's handcuffs", value = 50000},
  399.   {id = 6540, name = "piece of massacre's shell", value = 50000},
  400.   {id = 6525, name = "skeleton decoration", value = 3000},
  401.   {id = 5875, name = "sniper gloves", value = 2000},
  402.   {id = 5884, name = "spirit container", value = 40000},
  403.   {id = 11666, name = "tentacle piece", value = 5000},
  404.   {id = 6535, name = "the plasmother's remains", value = 50000},
  405.   {id = 6499, name = "demonic essence", value = 1000}
  406. }
  407.  
  408. -----------------------------------------------
  409. --[[ DO NOT EDIT ANYTHING BELOW THIS LINE ]] --
  410. -----------------------------------------------
  411. CONTAINERS = {COUNTER_BROWSE_FIELD = nil, LOCKER_BROWSE_FIELD = nil, CHECK_MONEY_BACKPACK = nil, CRYSTAL_COINS_BACKPACK = nil, DEPOT_LOCKER = nil, PLATINUM_COINS_BACKPACK = nil, EXTRA_PLATINUM_COINS_BACKPACK = nil, ITEMS_BACKPACK = nil}
  412. CASH = {PLATINUM_COIN = 3035, CRYSTAL_COIN = 3043}
  413. CASH_ID = {CASH.PLATINUM_COIN, CASH.CRYSTAL_COIN}
  414. COUNTER_ID = {2323, 2317, 2318, 2320, 2321, 2343, 2345, 17385, 17389, 17392}
  415. LOCKER_ID = {3497, 3498, 3499, 3500}
  416. LOCKER = {X = 0, Y = 0, Z = 0}
  417. COUNTER = {X = 0, Y = 0, Z = 0}
  418. GAMBLE_OPTION = {LAST = 8, SECOND = 7, FIRST = 6, BJ = 5, EVEN = 4, ODD = 3, HIGH = 2, LOW = 1, NONE = 0, ONE = 10, TWO = 20, THREE = 30, FOUR = 40, FIVE = 50, SIX = 60}
  419. PLAYER = {WELCOMED = false, DETECTED = false, BALANCE = 0, OPTION = GAMBLE_OPTION.NONE, SPOT = {X = 0, Y = 0, Z = 0, TURN_G = -1, TURN_L = -1}}
  420. TABLE = {NAMES = {}, ITEMS = {}, GAMES = {}, INFO = {}, MIN_MAX = {}, PRICE = {}}
  421. FIRST_DECORATION_ITEM_ID = Item.GetID(CONFIG.FIRST_DECORATION_ITEM)
  422. SECOND_DECORATION_ITEM_ID = Item.GetID(CONFIG.SECOND_DECORATION_ITEM)
  423. WON_BET_ITEM_ID = Item.GetID(CONFIG.WON_BET_ITEM)
  424. LOST_BET_ITEM_ID = Item.GetID(CONFIG.LOST_BET_ITEM)
  425. THROW_POS = {x = Self.Position().x, y = Self.Position().y, z = Self.Position().z}
  426. LOADING_COMPLETED = false
  427. COUNTER_INDEX = nil
  428. DEPOT_INDEX = nil
  429. MAIN_TIME = os.time()
  430. BET_TIME = os.time()
  431. BET_OPTION = {MIN = 0, MAX = 0, PAYOUT = 0, PROFIT = 0}
  432.  
  433. WORDS = {
  434.   L = {"l", "low", "123"},
  435.   H = {"h", "high", "456"},
  436.   O = {"odd", "o", "135"},
  437.   E = {"even", "e", "246"},
  438.   BJ = {"bj", "blackjack"},
  439.   NUM = {"1", "2", "3", "4", "5", "6"},
  440.   FSL = {"first", "second", "last"}
  441. }
  442.  
  443. function onSpeak(CZANEL, message)
  444. CZANEL:SendYellowMessage("You", message)
  445. message = message:lower()
  446. local SET, VALUE = message:match("^/([a-z]+) (.+)$")
  447.   if (SET == "hlmin") then
  448.     if (VALUE) then
  449.       BETS.HL_MIN = tonumber(VALUE)
  450.       CZANEL:SendOrangeMessage("[BOT]", "Minimum H/L bet is: " .. VALUE / 1000 .. "K.")
  451.       if (CONFIG.SHOW_HUD) then
  452.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. VALUE / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  453.       end
  454.     else
  455.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  456.     end
  457.   elseif (SET == "hlmax") then
  458.     if (VALUE) then
  459.       BETS.HL_MAX = tonumber(VALUE)
  460.       CZANEL:SendOrangeMessage("[BOT]", "Maximum H/L bet is: " .. VALUE / 1000 .. "K.")
  461.       if (CONFIG.SHOW_HUD) then
  462.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. VALUE / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  463.       end
  464.     else
  465.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  466.     end
  467.   elseif (SET == "oemin") then
  468.     if (VALUE) then
  469.       BETS.OE_MIN = tonumber(VALUE)
  470.       CZANEL:SendOrangeMessage("[BOT]", "Minimum ODD/EVEN bet is: " .. VALUE / 1000 .. "K.")
  471.       if (CONFIG.SHOW_HUD) then
  472.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. VALUE / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  473.       end
  474.     else
  475.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  476.     end
  477.   elseif (SET == "oemax") then
  478.     if (VALUE) then
  479.       BETS.OE_MAX = tonumber(VALUE)
  480.       CZANEL:SendOrangeMessage("[BOT]", "Maximum ODD/EVEN bet is: " .. VALUE / 1000 .. "K.")
  481.       if (CONFIG.SHOW_HUD) then
  482.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. VALUE / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  483.       end
  484.     else
  485.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  486.     end
  487.   elseif (SET == "bjmin") then
  488.     if (VALUE) then
  489.       BETS.BJ_MIN = tonumber(VALUE)
  490.       CZANEL:SendOrangeMessage("[BOT]", "Mininum BLACKJACK bet is: " .. VALUE / 1000 .. "K.")
  491.       if (CONFIG.SHOW_HUD) then
  492.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. VALUE / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  493.       end
  494.     else
  495.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  496.     end
  497.   elseif (SET == "bjmax") then
  498.     if (VALUE) then
  499.       BETS.BJ_MAX = tonumber(VALUE)
  500.       CZANEL:SendOrangeMessage("[BOT]", "Maximum BLACKJACK bet is: " .. VALUE / 1000 .. "K.")
  501.       if (CONFIG.SHOW_HUD) then
  502.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. VALUE / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  503.       end
  504.     else
  505.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  506.     end
  507.   elseif (SET == "nummin") then
  508.     if (VALUE) then
  509.       BETS.NUMBERS_MIN = tonumber(VALUE)
  510.       CZANEL:SendOrangeMessage("[BOT]", "Minumum NUMBERS bet is: " .. VALUE / 1000 .. "K.")
  511.       if (CONFIG.SHOW_HUD) then
  512.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. VALUE / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  513.       end
  514.     else
  515.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  516.     end
  517.   elseif (SET == "nummax") then
  518.     if (VALUE) then
  519.       BETS.NUMBERS_MAX = tonumber(VALUE)
  520.       CZANEL:SendOrangeMessage("[BOT]", "Maximum NUMBERS bet is: " .. VALUE / 1000 .. "K.")
  521.       if (CONFIG.SHOW_HUD) then
  522.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. VALUE / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  523.       end
  524.     else
  525.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  526.     end
  527.   elseif (SET == "fslmin") then
  528.     if (VALUE) then
  529.       BETS.FSL_MIN = tonumber(VALUE)
  530.       CZANEL:SendOrangeMessage("[BOT]", "Minumum F/S/L bet is: " .. VALUE / 1000 .. "K.")
  531.       if (CONFIG.SHOW_HUD) then
  532.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. VALUE / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].")
  533.       end
  534.     else
  535.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  536.     end
  537.   elseif (SET == "fslmax") then
  538.     if (VALUE) then
  539.       BETS.FSL_MAX = tonumber(VALUE)
  540.       CZANEL:SendOrangeMessage("[BOT]", "Maximum F/S/L bet is: " .. VALUE / 1000 .. "K.")
  541.       if (CONFIG.SHOW_HUD) then
  542.         HUD.MIN_MAX_BET.VALUE:SetText("[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. VALUE / 1000 .. "K].")
  543.       end
  544.     else
  545.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  546.     end
  547.   elseif (SET == "hlp") then
  548.     if (VALUE) then
  549.       BETS.HL_PAYOUT = tonumber(VALUE)
  550.       CZANEL:SendOrangeMessage("[BOT]", "Payout H/L is: " .. VALUE .. "%.")
  551.       if (CONFIG.SHOW_HUD) then
  552.         HUD.PAYOUTS.VALUE:SetText("" .. VALUE .. " ~ " .. BETS.OE_PAYOUT .. " ~ " .. BETS.BJ_PAYOUT .. " ~ " .. BETS.NUMBERS_PAYOUT .. " ~ " .. BETS.FSL_PAYOUT .. "%")
  553.       end
  554.     else
  555.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  556.     end
  557.   elseif (SET == "oep") then
  558.     if (VALUE) then
  559.       BETS.OE_PAYOUT = tonumber(VALUE)
  560.       CZANEL:SendOrangeMessage("[BOT]", "Payout H/L is: " .. VALUE .. "%.")
  561.       if (CONFIG.SHOW_HUD) then
  562.         HUD.PAYOUTS.VALUE:SetText("" .. BETS.HL_PAYOUT .. " ~ " .. VALUE .. " ~ " .. BETS.BJ_PAYOUT .. " ~ " .. BETS.NUMBERS_PAYOUT .. " ~ " .. BETS.FSL_PAYOUT .. "%")
  563.       end
  564.     else
  565.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  566.     end
  567.   elseif (SET == "bjp") then
  568.     if (VALUE) then
  569.       BETS.BJ_PAYOUT = tonumber(VALUE)
  570.       CZANEL:SendOrangeMessage("[BOT]", "Payout H/L is: " .. VALUE .. "%.")
  571.       if (CONFIG.SHOW_HUD) then
  572.         HUD.PAYOUTS.VALUE:SetText("" .. BETS.HL_PAYOUT .. " ~ " .. BETS.OE_PAYOUT .. " ~ " .. VALUE .. " ~ " .. BETS.NUMBERS_PAYOUT .. " ~ " .. BETS.FSL_PAYOUT .. "%")
  573.       end
  574.     else
  575.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  576.     end
  577.   elseif (SET == "nump") then
  578.     if (VALUE) then
  579.       BETS.NUMBERS_PAYOUT = tonumber(VALUE)
  580.       CZANEL:SendOrangeMessage("[BOT]", "Payout H/L is: " .. VALUE .. "%.")
  581.       if (CONFIG.SHOW_HUD) then
  582.         HUD.PAYOUTS.VALUE:SetText("" .. BETS.HL_PAYOUT .. " ~ " .. BETS.OE_PAYOUT .. " ~ " .. BETS.BJ_PAYOUT .. " ~ " .. VALUE .. " ~ " .. BETS.FSL_PAYOUT .. "%")
  583.       end
  584.     else
  585.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  586.     end
  587.   elseif (SET == "fslp") then
  588.     if (VALUE) then
  589.       BETS.FSL_PAYOUT = tonumber(VALUE)
  590.       CZANEL:SendOrangeMessage("[BOT]", "Payout H/L is: " .. VALUE .. "%.")
  591.       if (CONFIG.SHOW_HUD) then
  592.         HUD.PAYOUTS.VALUE:SetText("" .. BETS.HL_PAYOUT .. " ~ " .. BETS.OE_PAYOUT .. " ~ " .. BETS.BJ_PAYOUT .. " ~ " .. BETS.NUMBERS_PAYOUT .. " ~ " .. VALUE .. "%")
  593.       end
  594.     else
  595.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  596.     end
  597.   elseif (message == "/hlmode") then
  598.     if (BETS.HL_MODE) then
  599.       BETS.HL_MODE= false
  600.       CZANEL:SendOrangeMessage("[BOT]", "H/L turned off.")
  601.     else
  602.       BETS.HL_MODE = true
  603.       CZANEL:SendOrangeMessage("[BOT]", "H/L turned on.")
  604.     end
  605.   elseif (message == "/oemode") then
  606.     if (BETS.OE_MODE) then
  607.       BETS.OE_MODE= false
  608.       CZANEL:SendOrangeMessage("[BOT]", "ODD/EVEN turned off.")
  609.     else
  610.       BETS.OE_MODE = true
  611.       CZANEL:SendOrangeMessage("[BOT]", "ODD/EVEN turned on.")
  612.     end
  613.   elseif (message == "/bjmode") then
  614.     if (BETS.BJ_MODE) then
  615.       BETS.BJ_MODE= false
  616.       CZANEL:SendOrangeMessage("[BOT]", "BLACKJACK turned off.")
  617.     else
  618.       BETS.BJ_MODE = true
  619.       CZANEL:SendOrangeMessage("[BOT]", "BLACKJACK turned on.")
  620.     end
  621.   elseif (message == "/nummode") then
  622.     if (BETS.NUMBERS_MODE) then
  623.       BETS.NUMBERS_MODE= false
  624.       CZANEL:SendOrangeMessage("[BOT]", "NUMBERS turned off.")
  625.     else
  626.       BETS.NUMBERS_MODE = true
  627.       CZANEL:SendOrangeMessage("[BOT]", "NUMBERS turned on.")
  628.     end
  629.   elseif (message == "/fslmode") then
  630.     if (BETS.FSL_MODE) then
  631.       BETS.FSL_MODE= false
  632.       CZANEL:SendOrangeMessage("[BOT]", "F/S/L turned off.")
  633.     else
  634.       BETS.FSL_MODE = true
  635.       CZANEL:SendOrangeMessage("[BOT]", "F/S/L turned on.")
  636.     end
  637.   elseif (SET == "ping") then
  638.     if (VALUE) then
  639.       CONFIG.PING_COMPENSATION = tonumber(VALUE)
  640.       CZANEL:SendOrangeMessage("[BOT]", "Ping is: " .. VALUE .. ".")
  641.       if (CONFIG.SHOW_HUD) then
  642.         HUD.PING_COMPENSATION.VALUE:SetText(tostring(VALUE))
  643.       end
  644.     else
  645.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  646.     end
  647.   elseif (SET == "ptime") then
  648.     if (VALUE) then
  649.       CONFIG.PARTY_HAT_TIME = tonumber(VALUE)
  650.       CZANEL:SendOrangeMessage("[BOT]", "PartyHat exhaust is: " .. VALUE .. ".")
  651.     else
  652.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  653.     end
  654.   elseif (SET == "counter") then
  655.     if (VALUE) then
  656.       COUNTER_INDEX = tonumber(VALUE - 1)
  657.       CZANEL:SendOrangeMessage("[BOT]", "Counter set: " .. VALUE .. ".")
  658.     else
  659.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  660.     end
  661.    
  662.   elseif (SET == "depot") then
  663.     if (VALUE) then
  664.       DEPOT_INDEX = tonumber(VALUE - 1)
  665.       CZANEL:SendOrangeMessage("[BOT]", "Depot set: " .. VALUE .. ".")
  666.     else
  667.       CZANEL:SendOrangeMessage("[BOT]", "Oppps. Something Wrong!")
  668.     end
  669.    
  670.   elseif (message == "/pause") then
  671.     LOADING_COMPLETED = false
  672.     CZANEL:SendOrangeMessage("[BOT]", "Script paused.")
  673.    
  674.   elseif (message == "/resume") then
  675.     LOADING_COMPLETED = true
  676.     CZANEL:SendOrangeMessage("[BOT]", "Script resumed.")
  677.  
  678.   elseif (message == "/start") then
  679.     if (CONFIG.SERVER == "OTS" and COUNTER_INDEX == nil or DEPOT_INDEX == nil) then
  680.       CZANEL:SendOrangeMessage("[BOT]", "You need to setup counter and depot indexes!")
  681.     else
  682.       Casino_Start:Start()
  683.       CZANEL:SendOrangeMessage("[BOT]", "Script starting.")
  684.     end
  685.   elseif (message == "/stop") then
  686.     Casino_Stop()
  687.     CZANEL:SendOrangeMessage("[BOT]", "Script stopping.")
  688.   elseif (message == "/ad") then
  689.     if (CONFIG.SAY_ADVERTISEMENT) then
  690.       CONFIG.SAY_ADVERTISEMENT = false
  691.       CZANEL:SendOrangeMessage("[BOT]", "Ads turned off.")
  692.     else
  693.       CONFIG.SAY_ADVERTISEMENT = true
  694.       CZANEL:SendOrangeMessage("[BOT]", "Ads turned on.")
  695.     end
  696.   elseif (message == "/party hat") then
  697.     if (CONFIG.PARTY_HAT) then
  698.       CONFIG.PARTY_HAT = false
  699.       CZANEL:SendOrangeMessage("[BOT]", "Party Hat turned off.")
  700.     else
  701.       CONFIG.PARTY_HAT = true
  702.       CZANEL:SendOrangeMessage("[BOT]", "Party Hat turned on.")
  703.     end
  704.     if (CONFIG.SHOW_HUD) then
  705.       HUD.USE_PARTY_HAT.VALUE:SetText(tostring(CONFIG.PARTY_HAT))
  706.     end
  707.   elseif (message == "/logs") then
  708.     if (CONFIG.LOGS) then
  709.       CONFIG.LOGS = false
  710.       CZANEL:SendOrangeMessage("[BOT]", "Logs turned off.")
  711.     else
  712.       CONFIG.LOGS = true
  713.       CZANEL:SendOrangeMessage("[BOT]", "Logs turned on.")
  714.     end
  715.     if (CONFIG.SHOW_HUD) then
  716.       HUD.WRITE_LOGS.VALUE:SetText(tostring(CONFIG.LOGS))
  717.     end
  718.   elseif (message == "/reset") then
  719.     if (CONFIG.SHOW_HUD) then
  720.       HUD.BETS.WON.AMOUNT:SetText("0 (0 GP)")
  721.       HUD.BETS.WON.AMOUNT_RAW = 0
  722.       HUD.BETS.WON.AMOUNT_CASH = 0
  723.      
  724.       HUD.BETS.LOST.AMOUNT:SetText("0 (0 GP)")
  725.       HUD.BETS.LOST.AMOUNT_RAW = 0
  726.       HUD.BETS.LOST.AMOUNT_CASH = 0
  727.    
  728.       HUD.BETS.OUTCOME.AMOUNT:SetText("0 (0 GP)")
  729.       HUD.BETS.OUTCOME.AMOUNT_RAW = 0
  730.       HUD.BETS.OUTCOME.AMOUNT_CASH = 0
  731.       HUD.BETS.OUTCOME.AMOUNT:SetTextColor(255, 255, 255)
  732.       CZANEL:SendOrangeMessage("[BOT]", "HUD Cleaned.")
  733.     end
  734.   elseif (message == "/help") then
  735.     commands = {"start", "stop", "hlmin", "hlmax", "oemin", "oemax", "bjmin", "bjmax", "nummin", "nummax", "fslmin", "fslmax", "hlp", "oep", "bjp", "nump", "fslp", "hlmode", "oemode", "bjmode", "nummode", "fslmode", "ping", "ptime", "ad", "party hat", "logs", "reset", "counter", "depot"}
  736.     CZANEL:SendOrangeMessage("[BOT]", "Available commands:\n/" .. table.concat(commands, "\n/") .. "")
  737.   end
  738. end
  739.  
  740. CZANEL = Channel.Open("[BOT_LOG]", onSpeak, onClose)
  741. CZANEL:SendYellowMessage("[BOT]", "Write /help for more info.")
  742.  
  743. if (CONFIG.SHOW_HUD) then
  744. HUD = {
  745.   MAIN_HEADER = HUD.New(10, 25, "" .. Self.Name() .. "'s Casino (" .. getUserName() .. ").", 154, 205, 50),
  746.   STATISTICS = HUD.New(10, 44, "STATISTICS", 124, 254, 139),
  747.   BETS = HUD.New(10, 124, "BETS INFO", 124, 254, 139),
  748.   SETTINGS = HUD.New(10, 188, "SETTINGS", 124, 254, 139),
  749. AMOUNT_CASH = {
  750.   DISPLAY_CRYSTAL = {
  751.     TEXT = HUD.New(10, 60, "Crystal Coins", 199, 199, 199),
  752.     AMOUNT = HUD.New(140, 60, "0 GP", 255, 255, 255)},
  753.   DISPLAY_PLATINUM = {
  754.     TEXT = HUD.New(10, 76, "Platinum Coins", 199, 199, 199),
  755.     AMOUNT = HUD.New(140, 76, "0 GP", 255, 255, 255)},
  756.   DISPLAY_ITEMS = {
  757.     TEXT = HUD.New(10, 92, "Items Value", 199, 199, 199),
  758.     AMOUNT = HUD.New(140, 92, "0 GP", 255, 255, 255)},
  759.   ALL_CASH = {
  760.     TEXT = HUD.New(10, 108, "Whole Money", 199, 199, 199),
  761.     AMOUNT = HUD.New(140, 108, "0 GP", 255, 255, 255)}},
  762. BETS = {
  763.   WON = {
  764.     TEXT = HUD.New(10, 140, "Bets Won", 199, 199, 199),
  765.     AMOUNT = HUD.New(140, 140, "0 (0 GP)", 255, 255, 255),
  766.     AMOUNT_RAW = 0,
  767.     AMOUNT_CASH = 0},
  768.   LOST = {
  769.     TEXT = HUD.New(10, 156, "Bets Lost", 199, 199, 199),
  770.     AMOUNT = HUD.New(140, 156, "0 (0 GP)", 255, 255, 255),
  771.     AMOUNT_RAW = 0,
  772.     AMOUNT_CASH = 0},
  773.   OUTCOME = {
  774.     TEXT = HUD.New(10, 172, "OUTCOME", 254, 215, 0),
  775.     AMOUNT = HUD.New(140, 172, "0 (0 GP)", 255, 255, 255),
  776.     AMOUNT_RAW = 0,
  777.     AMOUNT_CASH = 0}},
  778.    
  779. PAYOUTS = {
  780.   TEXT = HUD.New(10, 204, "PAYOUTS", 199, 199, 199),
  781.   VALUE = HUD.New(140, 204, "" .. BETS.HL_PAYOUT .. " ~ " .. BETS.OE_PAYOUT .. " ~ " .. BETS.BJ_PAYOUT .. " ~ " .. BETS.NUMBERS_PAYOUT .. " ~ " .. BETS.FSL_PAYOUT .. "%", 255, 255, 255)},
  782. PING_COMPENSATION = {
  783.   TEXT = HUD.New(10, 220, "PING EXHAUST", 199, 199, 199),
  784.   VALUE = HUD.New(140, 220, tostring(CONFIG.PING_COMPENSATION), 255, 255, 255)},
  785. MIN_MAX_BET = {
  786.   TEXT = HUD.New(10, 236, "MIN / MAX BETS", 199, 199, 199),
  787.   VALUE = HUD.New(140, 236, "[" .. BETS.HL_MIN / 1000 .. "K - " .. BETS.HL_MAX / 1000 .. "K] [" .. BETS.OE_MIN / 1000 .. "K - " .. BETS.OE_MAX / 1000 .. "K] [" .. BETS.BJ_MIN / 1000 .. "K - " .. BETS.BJ_MAX / 1000 .. "K] [" .. BETS.NUMBERS_MIN / 1000 .. "K - " .. BETS.NUMBERS_MAX / 1000 .. "K] [" .. BETS.FSL_MIN / 1000 .. "K - " .. BETS.FSL_MAX / 1000 .. "K].", 255, 255, 255)},
  788. USE_PARTY_HAT = {
  789.   TEXT = HUD.New(10, 252, "PARTY HAT STATUS", 199, 199, 199),
  790.   VALUE = HUD.New(140, 252, tostring(CONFIG.PARTY_HAT), 255, 255, 255)},
  791. WINNING_ITEM = {
  792.   TEXT = HUD.New(10, 268, "WIN ITEM", 199, 199, 199),
  793.   VALUE = HUD.New(140, 268, CONFIG.WON_BET_ITEM, 255, 255, 255)},
  794. LOSING_ITEM ={
  795.   TEXT = HUD.New(10, 284, "LOST ITEM", 199, 199, 199),
  796.   VALUE = HUD.New(140, 284, CONFIG.LOST_BET_ITEM, 255, 255, 255)},
  797. FIRST_DECORATION_ITEM = {
  798.   TEXT = HUD.New(10, 300, "1ST DECORATION", 199, 199, 199),
  799.   VALUE = HUD.New(140, 300, CONFIG.FIRST_DECORATION_ITEM, 255, 255, 255)},
  800. SECOND_DECORATION_ITEM = {
  801.   TEXT = HUD.New(10, 316, "2ND DECORATION", 199, 199, 199),
  802.   VALUE = HUD.New(140, 316, CONFIG.SECOND_DECORATION_ITEM, 255, 255, 255)},
  803. WRITE_LOGS = {
  804.   TEXT = HUD.New(10, 332, "WRITE LOGS", 199, 199, 199),
  805.   VALUE = HUD.New(140, 332, tostring(CONFIG.LOGS), 255, 255, 255)},
  806. SAVE_TIME = {
  807.   TEXT = HUD.New(10, 348, "SERVER SAVE TIME", 199, 199, 199),
  808.   VALUE = HUD.New(140, 348, CONFIG.SERVER_SAVE_TIME, 255, 255, 255)},
  809. MAIN_TIME = {
  810.   TEXT = HUD.New(10, 364, "RUNNING TIME", 199, 199, 199),
  811.   VALUE = HUD.New(140, 364, "00:00:00", 255, 255, 255)},
  812. BET_TIME = {
  813.   TEXT = HUD.New(10, 380, "LAST BET", 199, 199, 199),
  814.   VALUE = HUD.New(140, 380, "00:00:00", 255, 255, 255)}
  815. } end
  816.  
  817. function Casino_UpdateHUD(TYPE, DOLCE)
  818. if (CONFIG.SHOW_HUD) then
  819.   if (TYPE == "LOST") then
  820.     HUD.BETS.LOST.AMOUNT_RAW = HUD.BETS.LOST.AMOUNT_RAW + 1
  821.     HUD.BETS.LOST.AMOUNT_CASH = HUD.BETS.LOST.AMOUNT_CASH + DOLCE
  822.     HUD.BETS.LOST.AMOUNT:SetText(tostring(HUD.BETS.LOST.AMOUNT_RAW) .. " (" .. tostring(HUD.BETS.LOST.AMOUNT_CASH) .. "K)")
  823.     HUD.BETS.OUTCOME.AMOUNT_RAW = HUD.BETS.OUTCOME.AMOUNT_RAW + 1
  824.   end
  825.   if (TYPE == "WON") then
  826.     HUD.BETS.WON.AMOUNT_RAW = HUD.BETS.WON.AMOUNT_RAW + 1
  827.     HUD.BETS.WON.AMOUNT_CASH = HUD.BETS.WON.AMOUNT_CASH + DOLCE
  828.     HUD.BETS.WON.AMOUNT:SetText(tostring(HUD.BETS.WON.AMOUNT_RAW) .. " (" .. tostring(HUD.BETS.WON.AMOUNT_CASH) .. "K)")
  829.     HUD.BETS.OUTCOME.AMOUNT_RAW = HUD.BETS.OUTCOME.AMOUNT_RAW + 1
  830.   end
  831.  
  832.   OUTCOME = HUD.BETS.WON.AMOUNT_CASH - HUD.BETS.LOST.AMOUNT_CASH
  833.  
  834.   if (OUTCOME > 0) then
  835.     HUD.BETS.OUTCOME.AMOUNT:SetTextColor(106, 141, 34)
  836.   elseif (OUTCOME == 0) then
  837.     HUD.BETS.OUTCOME.AMOUNT:SetTextColor(255, 255, 255)
  838.   else
  839.     HUD.BETS.OUTCOME.AMOUNT:SetTextColor(177, 33, 33)
  840.   end
  841.  
  842.     HUD.BETS.OUTCOME.AMOUNT:SetText(tostring(HUD.BETS.OUTCOME.AMOUNT_RAW) .. " (" .. tostring(OUTCOME) .. "K)")
  843.     HUD.AMOUNT_CASH.DISPLAY_CRYSTAL.AMOUNT:SetText(tonumber(Casino_CountMoney(CONTAINERS.CRYSTAL_COINS_BACKPACK, CASH.CRYSTAL_COIN) / 1000) .. "K")
  844.     HUD.AMOUNT_CASH.DISPLAY_PLATINUM.AMOUNT:SetText(tonumber((Casino_CountMoney(CONTAINERS.PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) + Casino_CountMoney(CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN)) / 1000) .. "K")
  845.     HUD.AMOUNT_CASH.DISPLAY_ITEMS.AMOUNT:SetText(tonumber(Casino_GetValueOfItems(CONTAINERS.ITEMS_BACKPACK) / 1000) .. "K")
  846.     HUD.AMOUNT_CASH.ALL_CASH.AMOUNT:SetText(tonumber((Casino_CountMoney(CONTAINERS.CRYSTAL_COINS_BACKPACK, CASH.CRYSTAL_COIN) + Casino_CountMoney(CONTAINERS.PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) + Casino_CountMoney(CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) + Casino_GetValueOfItems(CONTAINERS.ITEMS_BACKPACK)) / 1000) .. "K")
  847.   end
  848. end
  849.  
  850. function Casino_Normal(ROLLED_NUMBER, OPTION)
  851.   if (OPTION ~= GAMBLE_OPTION.NONE and ROLLED_NUMBER) then
  852.   local WON, SAID = false, false
  853.   repeat wait(CONFIG.PING_COMPENSATION) Self.Say("".. ROLL_MSG .. " " .. ROLLED_NUMBER .. ".")
  854.   SAID = true until SAID
  855.  
  856.   CZANEL:SendOrangeMessage("[BOT]", "Script Rolled: " .. ROLLED_NUMBER .. ".")
  857.  
  858.   if (OPTION == GAMBLE_OPTION.LOW) then
  859.     if (ROLLED_NUMBER >= 1 and ROLLED_NUMBER <= 3) then
  860.       WON = true
  861.     end
  862.   elseif (OPTION == GAMBLE_OPTION.HIGH) then
  863.     if (ROLLED_NUMBER >= 4 and ROLLED_NUMBER <= 6) then
  864.       WON = true
  865.     end
  866.   elseif (OPTION == GAMBLE_OPTION.ODD) then
  867.     if (table.contains(({1, 3, 5}), ROLLED_NUMBER)) then
  868.       WON = true
  869.     end
  870.   elseif (OPTION == GAMBLE_OPTION.EVEN) then
  871.     if (table.contains(({2, 4, 6}), ROLLED_NUMBER)) then
  872.       WON = true
  873.     end
  874.   elseif (OPTION == GAMBLE_OPTION.ONE) then
  875.     if (ROLLED_NUMBER == 1) then
  876.       WON = true
  877.     end
  878.   elseif (OPTION == GAMBLE_OPTION.TWO) then
  879.     if (ROLLED_NUMBER == 2) then
  880.       WON = true
  881.     end
  882.   elseif (OPTION == GAMBLE_OPTION.THREE) then
  883.     if (ROLLED_NUMBER == 3) then
  884.       WON = true
  885.     end
  886.   elseif (OPTION == GAMBLE_OPTION.FOUR) then
  887.     if (ROLLED_NUMBER == 4) then
  888.       WON = true
  889.     end
  890.   elseif (OPTION == GAMBLE_OPTION.FIVE) then
  891.     if (ROLLED_NUMBER == 5) then
  892.       WON = true
  893.     end
  894.   elseif (OPTION == GAMBLE_OPTION.SIX) then
  895.     if (ROLLED_NUMBER == 6) then
  896.       WON = true
  897.     end
  898.   end
  899.  
  900.   if (WON) then
  901.     Casino_PlayerWon()
  902.   else
  903.     Casino_PlayerLose()
  904.     end
  905.   end
  906. end
  907.  
  908. function Casino_BlackJack(OPTION)
  909. if (OPTION ~= GAMBLE_OPTION.NONE) then
  910. local MY_NUM, G_NUM, WON = 0, 0, 0
  911.   for i = 1, 5 do
  912.     G_NUM = G_NUM + Casino_RollRandom()
  913.     MY_NUM = MY_NUM + Casino_RollRandom()
  914.   end
  915.  
  916.   CZANEL:SendOrangeMessage("[BOT]", "Script Rolled BJ Numbers: " .. MY_NUM .. " and " .. G_NUM .. ".")
  917.   if (MY_NUM > 21 and G_NUM > 21) then
  918.     WON = 3 --[[OVER]]--
  919.   elseif (MY_NUM == G_NUM) then
  920.     BET_OPTION.PAYOUT = 0
  921.     WON = 2 --[[TIE]]--
  922.   elseif (G_NUM == 21 or (MY_NUM <= G_NUM and MY_NUM ~= 21 and G_NUM <= 21)) then
  923.     WON = 1
  924.   elseif (G_NUM <= 21 and (MY_NUM < G_NUM)) then
  925.     WON = 1
  926.   else
  927.     WON = 0
  928.   end
  929.   if (WON == 1) then
  930.     Casino_PlayerWon()
  931.     Casino_BJ_MSG(BJ_WON, (PLAYER.BALANCE + (BET_OPTION.PAYOUT * PLAYER.BALANCE / 100)) / 1000, G_NUM, MY_NUM)
  932.   elseif (WON == 2) then
  933.     Casino_PlayerWon(true)
  934.     Casino_BJ_MSG(BJ_TIE, PLAYER.BALANCE / 1000, G_NUM, MY_NUM)
  935.   elseif (WON == 3) then
  936.     Casino_PlayerLose()
  937.     Casino_BJ_MSG(BJ_OVER, PLAYER.BALANCE / 1000, G_NUM, MY_NUM)
  938.   else
  939.     Casino_PlayerLose()
  940.     Casino_BJ_MSG(BJ_LOSE, PLAYER.BALANCE / 1000, G_NUM, MY_NUM)
  941.     end
  942.   end
  943. end
  944.  
  945. function Casino_BJ_MSG(TABLE, MONEY, G_NUM, MY_NUM)
  946. replacements = {
  947.   ["|GAMBLER|"] = G_NUM,
  948.   ["|PLAYER|"] = MY_NUM,
  949.   ["|MONEY|"] = MONEY
  950. }
  951.   tmp = string.gsub(tostring(TABLE[math.random(1, table.getn(TABLE))]), "|%a+|",
  952.   function (str) return replacements [str] or str end)
  953.   local SAID = false
  954.     repeat wait(CONFIG.PING_COMPENSATION) Self.Say(tmp)
  955.   SAID = true until SAID
  956. end
  957.  
  958. function Casino_FirstSecondLast(OPTION)
  959.  
  960. if (OPTION ~= GAMBLE_OPTION.NONE) then
  961. local FIRST, SECOND, WON, SAID = 0, 0, false, false
  962.   FIRST, SECOND = Casino_RollRandom(), Casino_RollRandom()
  963.  
  964.   repeat wait(CONFIG.PING_COMPENSATION) Self.Say("Numbers: " .. FIRST .. " and " .. SECOND .. ".")
  965.   SAID = true until SAID
  966.   CZANEL:SendOrangeMessage("[BOT]", "Script Rolled Numbers: " .. FIRST .. " and " .. SECOND .. ".")
  967.  
  968.   if (OPTION == GAMBLE_OPTION.FIRST) then
  969.     if (FIRST == 1 and SECOND == 2) then
  970.       WON = true
  971.     end
  972.   elseif (OPTION == GAMBLE_OPTION.SECOND) then
  973.     if (FIRST == 3 and SECOND == 4) then
  974.       WON = true
  975.     end
  976.   elseif (OPTION == GAMBLE_OPTION.LAST) then
  977.     if (FIRST == 5 and SECOND == 6) then
  978.       WON = true
  979.     end
  980.   end
  981.   if (WON) then
  982.     Casino_PlayerWon()
  983.   else
  984.     Casino_PlayerLose()
  985.     end
  986.   end
  987. end
  988.  
  989. function Casino_GetDirection(TYPE, X, Y, DIR)
  990. if (TYPE == "GAMBLER") then
  991.   if (DIR ~= PLAYER.SPOT.TURN_G) then
  992.     Self.Turn(PLAYER.SPOT.TURN_G)
  993.     Casino_Messages(MSGW)
  994.     PLAYER.WELCOMED = true
  995.   end
  996. elseif (TYPE == "LOCKER") then
  997.   if (DIR ~= PLAYER.SPOT.TURN_L) then
  998.     Self.Turn(PLAYER.SPOT.TURN_L)
  999.     PLAYER.WELCOMED = false
  1000.     end
  1001.   end
  1002. end
  1003.  
  1004. function Casino_Messages(TBL)
  1005.   for name, creature in Creature.iPlayers(2) do
  1006.   if (creature:Position().x == PLAYER.SPOT.X and creature:Position().y == PLAYER.SPOT.Y and creature:Position().z == PLAYER.SPOT.Z) then
  1007.     if (CONFIG.CUSTOM_MESSAGES and not PLAYER.WELCOMED and not table.contains(TABLE.NAMES, name)) then
  1008.       tmp = string.gsub(tostring(WELCOME[math.random(1, table.getn(WELCOME))]), "|GAMBLER|", name)
  1009.       Self.Say(tmp)
  1010.       table.insert(TABLE.NAMES, name)
  1011.       end
  1012.     end
  1013.   end
  1014. end
  1015.  
  1016. function Casino_GetValueOfItems(CONTAINER)
  1017. local tmp = 0
  1018.   for i = 1, #ITEMS do
  1019.     tmp = tmp + CONTAINER:CountItemsOfID(ITEMS[i].id) * ITEMS[i].value
  1020.   end
  1021. return tmp
  1022. end
  1023.  
  1024. function Casino_MoveExtra(FROM, TO)
  1025.   for SPOT = FROM:ItemCount() - 1, 0, -1 do
  1026.     local tmp = FROM:GetItemData(SPOT)
  1027.     if (tmp.id == CASH.PLATINUM_COIN) then
  1028.       FROM:MoveItemToContainer(SPOT, TO:Index(), TO:ItemCapacity() - 1)
  1029.       break
  1030.     end
  1031.   end
  1032. end
  1033.  
  1034. function Casino_MoveMoney(FROM, TO)
  1035.   while (Casino_CountMoney(FROM, "all") > 0) do
  1036.     for SPOT = FROM:ItemCount() - 1, 0, -1 do
  1037.     local tmp = FROM:GetItemData(SPOT)
  1038.       if (table.contains(CASH_ID, tmp.id)) then
  1039.       if (TO:Name() == "Browse Field") then
  1040.         FROM:MoveItemToGround(SPOT, COUNTER.X, COUNTER.Y, COUNTER.Z, tmp.count)
  1041.       else
  1042.         FROM:MoveItemToContainer(SPOT, TO:Index(), TO:ItemCapacity() - 1)
  1043.         end
  1044.       end
  1045.     end
  1046.   end
  1047. end
  1048.  
  1049. function Casino_SortMoney()
  1050.   while (Casino_CountMoney(CONTAINERS.CHECK_MONEY_BACKPACK, "all") > 0) do
  1051.   for SPOT = CONTAINERS.CHECK_MONEY_BACKPACK:ItemCount() - 1, 0, - 1 do
  1052.     local tmp = CONTAINERS.CHECK_MONEY_BACKPACK:GetItemData(SPOT)
  1053.       if (tmp.id == CASH.PLATINUM_COIN) then
  1054.         if (CONTAINERS.PLATINUM_COINS_BACKPACK:isFull()) then
  1055.           CONTAINERS.CHECK_MONEY_BACKPACK:MoveItemToContainer(SPOT, CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK:Index(), CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK:ItemCapacity() - 1)
  1056.         else
  1057.           CONTAINERS.CHECK_MONEY_BACKPACK:MoveItemToContainer(SPOT, CONTAINERS.PLATINUM_COINS_BACKPACK:Index(), CONTAINERS.PLATINUM_COINS_BACKPACK:ItemCapacity() - 1)
  1058.         end
  1059.       elseif (tmp.id == CASH.CRYSTAL_COIN) then
  1060.         CONTAINERS.CHECK_MONEY_BACKPACK:MoveItemToContainer(SPOT, CONTAINERS.CRYSTAL_COINS_BACKPACK:Index(), CONTAINERS.CRYSTAL_COINS_BACKPACK:ItemCapacity() - 1)
  1061.       end
  1062.     end
  1063.   end
  1064. end
  1065.  
  1066. function Casino_MoveItems(FROM, TO)
  1067.   while (Casino_GetValueOfItems(FROM) > 0) do
  1068.     for SPOT = FROM:ItemCount() - 1, 0, -1 do
  1069.     local tmp = FROM:GetItemData(SPOT)
  1070.     if (CONTAINERS.ITEMS_BACKPACK:isFull()) then
  1071.       CONTAINERS.ITEMS_BACKPACK:UseItem(CONTAINERS.ITEMS_BACKPACK:ItemCapacity() - 1, true)
  1072.     end
  1073.     for i = 1, #ITEMS do
  1074.       if (tmp.id == ITEMS[i].id) then
  1075.         if (TO:Name() == "Browse Field") then
  1076.           FROM:MoveItemToGround(SPOT, COUNTER.X, COUNTER.Y, COUNTER.Z, tmp.count)
  1077.         else
  1078.           FROM:MoveItemToContainer(SPOT, TO:Index(), TO:ItemCapacity() - 1)
  1079.           end
  1080.         end
  1081.       end
  1082.     end
  1083.   end
  1084. end
  1085.  
  1086. function Casino_MoveWonPlatinum(FROM, AMOUNT)
  1087.   for SPOT = FROM:ItemCount() - 1, 0, -1 do
  1088.   local tmp = FROM:GetItemData(SPOT)
  1089.     if (tmp.id == CASH.PLATINUM_COIN) then
  1090.     local MOVED = 0
  1091.       while (MOVED == 0) do
  1092.         MOVED = FROM:MoveItemToGround(SPOT, COUNTER.X, COUNTER.Y, COUNTER.Z, AMOUNT)
  1093.       end
  1094.       break
  1095.     end
  1096.   end
  1097. end
  1098.  
  1099.  
  1100. function Casino_MoveWonCrystal(FROM, AMOUNT)
  1101.   for SPOT = FROM:ItemCount() - 1, 0, -1 do
  1102.   local tmp = FROM:GetItemData(SPOT)
  1103.     if (tmp.id == CASH.CRYSTAL_COIN) then
  1104.     local MOVED = 0
  1105.       while (MOVED == 0) do
  1106.         MOVED = FROM:MoveItemToGround(SPOT, COUNTER.X, COUNTER.Y, COUNTER.Z, AMOUNT)
  1107.       end
  1108.       break
  1109.     end
  1110.   end
  1111. end
  1112.  
  1113. function Casino_Decorations()
  1114. if (LOADING_COMPLETED) then
  1115.   if (FIRST_DECORATION_ITEM_ID > 0) then
  1116.     if (CONTAINERS.LOCKER_BROWSE_FIELD:CountItemsOfID(FIRST_DECORATION_ITEM_ID) < 1) then
  1117.       if (CONTAINERS.DEPOT_LOCKER:CountItemsOfID(FIRST_DECORATION_ITEM_ID) > 0) then
  1118.       for FirstItem = CONTAINERS.DEPOT_LOCKER:ItemCount() - 1, 0, -1 do
  1119.         if (FIRST_DECORATION_ITEM_ID == CONTAINERS.DEPOT_LOCKER:GetItemData(FirstItem).id) then
  1120.           wait(CONFIG.PING_COMPENSATION * 5)
  1121.           CONTAINERS.DEPOT_LOCKER:MoveItemToGround(FirstItem, LOCKER.X, LOCKER.Y, LOCKER.Z)
  1122.           wait(CONFIG.PING_COMPENSATION * 5)
  1123.         end
  1124.       end
  1125.     end
  1126.   end
  1127. end
  1128.  
  1129.   if (SECOND_DECORATION_ITEM_ID > 0) then
  1130.     if (CONTAINERS.LOCKER_BROWSE_FIELD:CountItemsOfID(SECOND_DECORATION_ITEM_ID) < 1) then
  1131.       if (CONTAINERS.DEPOT_LOCKER:CountItemsOfID(SECOND_DECORATION_ITEM_ID) > 0) then
  1132.         for SecondItem = CONTAINERS.DEPOT_LOCKER:ItemCount() - 1, 0, -1 do
  1133.           if (SECOND_DECORATION_ITEM_ID == CONTAINERS.DEPOT_LOCKER:GetItemData(SecondItem).id) then
  1134.             wait(CONFIG.PING_COMPENSATION * 5)
  1135.             CONTAINERS.DEPOT_LOCKER:MoveItemToGround(SecondItem, LOCKER.X, LOCKER.Y, LOCKER.Z)
  1136.             wait(CONFIG.PING_COMPENSATION * 5)
  1137.             end
  1138.           end
  1139.         end
  1140.       end
  1141.     end
  1142.   end
  1143. end
  1144.  
  1145. function Casino_CountMoney(CONTAINER, ID)
  1146. local tmp = 0
  1147.   if (type(ID) == "string") then
  1148.     tmp = tmp + (CONTAINER:CountItemsOfID(CASH.CRYSTAL_COIN) * 10000)
  1149.     tmp = tmp + (CONTAINER:CountItemsOfID(CASH.PLATINUM_COIN) * 100)
  1150.   else
  1151.   if (ID == CASH.CRYSTAL_COIN) then
  1152.     tmp = tmp + (CONTAINER:CountItemsOfID(CASH.CRYSTAL_COIN) * 10000)
  1153.   elseif (ID == CASH.PLATINUM_COIN) then
  1154.     tmp = tmp + (CONTAINER:CountItemsOfID(CASH.PLATINUM_COIN) * 100)
  1155.     end
  1156.   end
  1157. return tmp
  1158. end
  1159.  
  1160. function Casino_PlayerWon(TIE)
  1161. local MONEY, PL_A, CC_A, HUD = PLAYER.BALANCE + (BET_OPTION.PAYOUT * PLAYER.BALANCE / 100), 0, 0, 0, 0
  1162.  
  1163. if (MONEY > 0) then
  1164.   while (MONEY >= 10000) do
  1165.     CC_A = CC_A + 1
  1166.     MONEY = MONEY - 10000
  1167.   end
  1168.   while (MONEY >= 100) do
  1169.     PL_A = PL_A + 1
  1170.     MONEY = MONEY - 100
  1171.   end
  1172. end
  1173.  
  1174.   if (PL_A > 0) then
  1175.     Casino_MoveWonPlatinum(CONTAINERS.PLATINUM_COINS_BACKPACK, PL_A)
  1176.   end
  1177.      
  1178.   if (CC_A > 0) then
  1179.     Casino_MoveWonCrystal(CONTAINERS.CRYSTAL_COINS_BACKPACK, CC_A)
  1180.   end
  1181.  
  1182.     HUD = (PL_A * 100 + CC_A * 10000)
  1183.     Casino_UseItem(WON_BET_ITEM_ID, CONTAINERS.DEPOT_LOCKER)
  1184.     CZANEL:SendOrangeMessage("[BOT]", "Player Won: " .. HUD / 1000 .. "K.")
  1185.     doWriteLog("Player Won: " .. HUD / 1000 .. "K.\nYour Balance is " .. ((Casino_CountMoney(CONTAINERS.CRYSTAL_COINS_BACKPACK, CASH.CRYSTAL_COIN) + Casino_CountMoney(CONTAINERS.PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) + Casino_CountMoney(CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) + Casino_GetValueOfItems(CONTAINERS.ITEMS_BACKPACK)) / 1000) .. "K\n")
  1186.    if (CONFIG.CUSTOM_MESSAGES and math.random(4) < CONFIG.CUSTOM_MESSAGES_RAND and PLAYER.OPTION ~= GAMBLE_OPTION.BJ) then
  1187.     tmp = string.gsub(tostring(WIN[math.random(1, table.getn(WIN))]), "|MONEY|", HUD / 1000)
  1188.     Self.Say(tmp)
  1189.   end
  1190.   PLAYER.OPTION = GAMBLE_OPTION.NONE
  1191.   TIE = TIE or false
  1192.   if (not TIE) then
  1193.     Casino_UpdateHUD("LOST", (HUD - PLAYER.BALANCE) / 1000)
  1194.     BET_OPTION.PROFIT = BET_OPTION.PROFIT + (HUD - PLAYER.BALANCE)
  1195.   end
  1196. end
  1197.  
  1198. function Casino_PlayerLose()
  1199.   Casino_UseItem(LOST_BET_ITEM_ID, CONTAINERS.DEPOT_LOCKER)
  1200.   CZANEL:SendOrangeMessage("[BOT]", "Player Lost: " .. PLAYER.BALANCE / 1000 .. "K.")
  1201.   BET_OPTION.PROFIT = BET_OPTION.PROFIT - PLAYER.BALANCE
  1202.   doWriteLog("Player Lost: " .. PLAYER.BALANCE / 1000 .. "K.\nYour Balance is " .. ((Casino_CountMoney(CONTAINERS.CRYSTAL_COINS_BACKPACK, CASH.CRYSTAL_COIN) + Casino_CountMoney(CONTAINERS.PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) + Casino_CountMoney(CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) + Casino_GetValueOfItems(CONTAINERS.ITEMS_BACKPACK)) / 1000) .. "K\n")
  1203.    if (CONFIG.CUSTOM_MESSAGES and math.random(4) < CONFIG.CUSTOM_MESSAGES_RAND and PLAYER.OPTION ~= GAMBLE_OPTION.BJ) then
  1204.     tmp = string.gsub(tostring(LOSE[math.random(1, table.getn(LOSE))]), "|MONEY|", PLAYER.BALANCE / 1000)
  1205.     Self.Say(tmp)
  1206.   end
  1207.   PLAYER.OPTION = GAMBLE_OPTION.NONE
  1208.   Casino_UpdateHUD("WON", PLAYER.BALANCE / 1000)
  1209. end
  1210.  
  1211. function Casino_UseItem(ITEM, CONTAINER)
  1212. if (ITEM > 0) then
  1213.   for SPOT = CONTAINER:ItemCount() - 1, 0, -1 do
  1214.   local tmp = CONTAINER:GetItemData(SPOT)
  1215.     if (tmp.id == ITEM) then
  1216.     local USED = 0
  1217.       while (USED == 0) do
  1218.         wait(CONFIG.PING_COMPENSATION)
  1219.         USED = CONTAINER:UseItem(SPOT, true)
  1220.         wait(CONFIG.PING_COMPENSATION)
  1221.         end
  1222.       end
  1223.     end
  1224.   end
  1225. end
  1226.  
  1227. function Casino_GetPositions()
  1228. local POS = Self.Position()
  1229.  
  1230. for x = -1, 1 do
  1231.   for y = -1, 1 do
  1232.     if (table.contains(LOCKER_ID, Map.GetTopUseItem(POS.x + x, POS.y + y, POS.z).id)) then
  1233.       LOCKER.X = POS.x + x
  1234.       LOCKER.Y = POS.y + y
  1235.       LOCKER.Z = POS.z
  1236.       break
  1237.     end
  1238.   end
  1239. end
  1240.  
  1241. for x = -1, 1 do
  1242.   for y = -1, 1 do
  1243.     if (table.contains(COUNTER_ID, Map.GetTopUseItem(POS.x + x, POS.y + y, POS.z).id)) then
  1244.       COUNTER.X = POS.x + x
  1245.       COUNTER.Y = POS.y + y
  1246.       COUNTER.Z = POS.z
  1247.       break
  1248.     end
  1249.   end
  1250. end
  1251.  
  1252. if (POS.x + 1 == LOCKER.X or POS.x - 1 == LOCKER.X) and POS.y + 1 == COUNTER.Y then
  1253.   PLAYER.SPOT = {X = POS.x, Y = POS.y + 2, Z = POS.z, TURN_G = SOUTH}
  1254. elseif (POS.x + 1 == LOCKER.X or POS.x - 1 == LOCKER.X) and POS.y - 1 == COUNTER.Y then
  1255.   PLAYER.SPOT = {X = POS.x, Y = POS.y - 2, Z = POS.z, TURN_G = NORTH}
  1256. elseif (POS.y + 1 == LOCKER.Y or POS.y - 1 == LOCKER.Y) and POS.x + 1 == COUNTER.X then
  1257.   PLAYER.SPOT = {X = POS.x + 2, Y = POS.y, Z = POS.z, TURN_G = EAST}
  1258. elseif (POS.y + 1 == LOCKER.Y or POS.y - 1 == LOCKER.Y) and POS.x - 1 == COUNTER.X then
  1259.   PLAYER.SPOT = {X = POS.x - 2, Y = POS.y, Z = POS.z, TURN_G = WEST}
  1260. end
  1261.  
  1262. PLAYER.SPOT.TURN_L = Self.LookDirection()
  1263.  
  1264. local POSITIONS = {
  1265.   {x = PLAYER.SPOT.X - 1, y = PLAYER.SPOT.Y, z = PLAYER.SPOT.Z},
  1266.   {x = PLAYER.SPOT.X + 1, y = PLAYER.SPOT.Y, z = PLAYER.SPOT.Z},
  1267.   {x = PLAYER.SPOT.X, y = PLAYER.SPOT.Y - 1, z = PLAYER.SPOT.Z},
  1268.   {x = PLAYER.SPOT.X, y = PLAYER.SPOT.Y + 1, z = PLAYER.SPOT.Z}
  1269. }
  1270.  
  1271.   for i = 1, #POSITIONS do
  1272.     if (table.contains(LOCKER_ID, Map.GetTopUseItem(POSITIONS[i].x, POSITIONS[i].y, POSITIONS[i].z).id)) then
  1273.       THROW_POS = ({x = POSITIONS[i].x, y = POSITIONS[i].y, z = POSITIONS[i].z})
  1274.       break
  1275.     end
  1276.   end
  1277. CZANEL:SendOrangeMessage("[BOT]", "Locker Position: {x = " .. LOCKER.X .. ", y = " .. LOCKER.Y .. ", z = " .. LOCKER.Z .. "}")
  1278. CZANEL:SendOrangeMessage("[BOT]", "Counter Position: {x = " .. COUNTER.X .. ", y = " .. COUNTER.Y .. ", z = " .. COUNTER.Z .. "}")
  1279. CZANEL:SendOrangeMessage("[BOT]", "Gambler Position: {x = " .. PLAYER.SPOT.X .. ", y = " .. PLAYER.SPOT.Y .. ", z = " .. PLAYER.SPOT.Z .. "}")
  1280. CZANEL:SendOrangeMessage("[BOT]", "Throw Position: {x = " .. THROW_POS.x .. ", y = " .. THROW_POS.y .. ", z = " .. THROW_POS.z .. "}")
  1281. end
  1282.  
  1283. function doWriteLog(TEXT)
  1284. if (CONFIG.LOGS) then
  1285.   PATH = "../" .. Self.Name() .. " - [" .. getUserName() .. "] Casino.txt"
  1286.   F = io.open(PATH, "a+")
  1287.   if(not F) then
  1288.     return false
  1289.   end
  1290.     F:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. TEXT .. "\n")
  1291.     F:close()
  1292.   end
  1293. end
  1294.  
  1295. function Casino_PickupItems(ID, FROM, TO)
  1296. if (ID > 0) then
  1297.   for SPOT = FROM:ItemCount() - 1, 0, -1 do
  1298.   local tmp = FROM:GetItemData(SPOT)
  1299.     if (ID == tmp.id) then
  1300.     local PICKED = 0
  1301.       while (PICKED == 0) do
  1302.         wait(CONFIG.PING_COMPENSATION * 6)
  1303.         PICKED = FROM:MoveItemToContainer(SPOT, TO:Index(), TO:ItemCapacity() - 1)
  1304.         wait(CONFIG.PING_COMPENSATION * 6)
  1305.         end
  1306.       end
  1307.     end
  1308.   end
  1309. end
  1310.  
  1311. function Casino_AntiIdle()
  1312. local TRUN, LD = 0, Self.LookDirection()
  1313.   if (LD < 2) then
  1314.     TURN = LD + 1
  1315.   else
  1316.     TURN = LD - 1
  1317.   end
  1318. return TURN
  1319. end
  1320.  
  1321. function Casino_FormatValue(n)
  1322. local left, num, right = string.match(n,"^([^%d]*%d)(%d*)(.-)$")
  1323.   return left .. (num:reverse():gsub("(%d%d%d)","%1,"):reverse()) .. right
  1324. end
  1325.  
  1326. function Casino_Stop()
  1327.   if (CONFIG.SS_EXIT) then
  1328.     screenshot("" .. Self.Name() .. " Casino " .. os.date("%d.%m.%Y %H'%M'%S") .. "")
  1329.   end
  1330.   Casino_PickupItems(FIRST_DECORATION_ITEM_ID, CONTAINERS.LOCKER_BROWSE_FIELD, CONTAINERS.DEPOT_LOCKER)
  1331.   Casino_PickupItems(SECOND_DECORATION_ITEM_ID, CONTAINERS.LOCKER_BROWSE_FIELD, CONTAINERS.DEPOT_LOCKER)
  1332.   for i = 0, 15 do
  1333.     Container.New(i):Close()
  1334.   end
  1335.   LOADING_COMPLETED = false
  1336.   Casino_Start:Stop()
  1337. end
  1338.  
  1339. function Casino_InfoMessages(TABLE)
  1340. replacements = {
  1341.   ["|SELF|"] = Self.Name(),
  1342.  
  1343.   ["|HLMIN|"] = BETS.HL_MIN / 1000,
  1344.   ["|HLMAX|"] = BETS.HL_MAX / 1000,
  1345.   ["|OEMIN|"] = BETS.OE_MIN / 1000,
  1346.   ["|OEMAX|"] = BETS.OE_MAX / 1000,
  1347.   ["|BJMIN|"] = BETS.BJ_MIN / 1000,
  1348.   ["|BJMAX|"] = BETS.BJ_MAX / 1000,
  1349.   ["|NUMBERSMIN|"] = BETS.NUMBERS_MIN / 1000,
  1350.   ["|NUMBERSMAX|"] = BETS.NUMBERS_MAX / 1000,
  1351.   ["|FSLMIN|"] = BETS.FSL_MIN / 1000,
  1352.   ["|FSLMAX|"] = BETS.FSL_MAX / 1000,
  1353.  
  1354.   ["|MIN|"] = BET_OPTION.MIN / 1000,
  1355.   ["|MAX|"] = BET_OPTION.MAX / 1000,
  1356.  
  1357.   ["|HLP|"] = BETS.HL_PAYOUT,
  1358.   ["|OEP|"] = BETS.OE_PAYOUT,
  1359.   ["|BJP|"] = BETS.BJ_PAYOUT,
  1360.   ["|NUMBERSP|"] = BETS.NUMBERS_PAYOUT,
  1361.   ["|FSLP|"] = BETS.FSL_PAYOUT            
  1362. }
  1363.   if (CONFIG.INFO_MESSAGES) then
  1364.     tmp = string.gsub(tostring(TABLE[math.random(1, table.getn(TABLE))]), "|%a+|",
  1365.       function (str) return replacements [str] or str end)
  1366.     return tmp
  1367.   end
  1368. end
  1369.  
  1370. function Casino_RollRandom()
  1371.   return math.random(6)
  1372. end
  1373.  
  1374. Casino_GetHours = function(t, c)
  1375.   local seconds = (c) and os.difftime(os.time(), t) or t
  1376.   return (math.floor(os.difftime(os.time(), t) / 3600))
  1377. end
  1378.  
  1379. Casino_GetMinutes = function(t, c)
  1380.   local seconds = (c) and os.difftime(os.time(), t) or t
  1381.   return math.floor((seconds - (Casino_GetHours(t, c) * 3600)) / 60)
  1382. end
  1383.  
  1384. Casino_GetSeconds = function(t, c)
  1385.   local seconds = (c) and os.difftime(os.time(), t) or t
  1386.   return math.floor(seconds - (Casino_GetHours(t, c) * 3600) - (Casino_GetMinutes(t, c) * 60))
  1387. end
  1388.  
  1389. Casino_GetTime = function(t, current)
  1390.   local c = current or true
  1391.   return string.format("%02.f", Casino_GetHours(t, c))..':'..string.format("%02.f", Casino_GetMinutes(t, c))..':'..string.format("%02.f", Casino_GetSeconds(t, c))
  1392. end
  1393.  
  1394. function getArticle(str)
  1395.    return string.sub(str:reverse(), str:len())
  1396. end
  1397.  
  1398. function setArticle(str)
  1399.   if (table.contains(({"a", "e", "i", "o", "u", "y"}), getArticle(str))) then
  1400.     return "an " .. str .. ""
  1401.   elseif (string.sub(str, 1, 4) == "the ") then
  1402.     return "" .. str .. ""
  1403.   else
  1404.     return "a " .. str .. ""
  1405.   end
  1406. end
  1407.  
  1408. function mTable(t1, t2)
  1409. tmp = {}
  1410.   for k, v in pairs(t1) do
  1411.     table.insert(tmp, v)
  1412.   end
  1413.   for k, v in pairs(t2) do
  1414.     table.insert(tmp, v)
  1415.   end
  1416. return tmp
  1417. end
  1418.  
  1419. function Casino_GetProfit(tbl)
  1420.   if (tbl > 0) then
  1421.     Self.Say("Your profit is " .. Casino_FormatValue(tbl) .. " GP in this session!")
  1422.   elseif (tbl < 0) then
  1423.     Self.Say("aKAOksokAOSKaoskAOSK! You lose " .. Casino_FormatValue(math.abs(tbl)) .. " GP in this session!")
  1424.   else
  1425.     Self.Say("C'mon play with me! Don't be shy.")
  1426.   end
  1427. end
  1428.  
  1429. function Casino_SafeBet(data)
  1430. tmp = false
  1431. local FORMULA, PL_A, CC_A, CC, PL = PLAYER.BALANCE + (BET_OPTION.PAYOUT * PLAYER.BALANCE / 100), 0, 0, Casino_CountMoney(CONTAINERS.CRYSTAL_COINS_BACKPACK, CASH.CRYSTAL_COIN), Casino_CountMoney(CONTAINERS.PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN)
  1432.   while (FORMULA >= 10000) do
  1433.     CC_A = CC_A + 1
  1434.     FORMULA = FORMULA - 10000
  1435.   end
  1436.   while (FORMULA >= 100) do
  1437.     PL_A = PL_A + 1
  1438.     FORMULA = FORMULA - 100
  1439.   end
  1440.   if ((CC_A * 10000 - CC) > Casino_CountMoney(CONTAINERS.COUNTER_BROWSE_FIELD, CASH.CRYSTAL_COIN) or (PL_A * 100 - PL) > Casino_CountMoney(CONTAINERS.COUNTER_BROWSE_FIELD, CASH.PLATINUM_COIN)) then
  1441.     if (not table.contains(TABLE.MIN_MAX, data)) then
  1442.       table.insert(TABLE.MIN_MAX, data)
  1443.       Self.Say(NOT_ENOUGH_GOLD)
  1444.     end
  1445.     tmp = true
  1446.     PLAYER.OPTION = GAMBLE_OPTION.NONE
  1447.   end
  1448.   return tmp
  1449. end
  1450.  
  1451. Casino_Start = Module("Casino_PROJECT: MAIN MODULE", function(moduleObject)
  1452.   if (#Container.GetAll() ~= 8) then
  1453.   for i = 0, 15 do
  1454.     closeContainer(i)
  1455.   end
  1456.  
  1457.   Client.HideEquipment()
  1458.   Casino_GetPositions()
  1459.   if Self.BrowseField(COUNTER.X, COUNTER.Y, COUNTER.Z) then
  1460.     wait(CONFIG.PING_COMPENSATION * 4)
  1461.     if (CONFIG.SERVER == "OTS") then
  1462.       CONTAINERS.COUNTER_BROWSE_FIELD = Container.New(COUNTER_INDEX)
  1463.     else
  1464.       CONTAINERS.COUNTER_BROWSE_FIELD = Container.New(0)
  1465.     end
  1466.   end
  1467.   if Self.BrowseField(LOCKER.X, LOCKER.Y, LOCKER.Z) then
  1468.     wait(CONFIG.PING_COMPENSATION * 4)
  1469.     if (CONFIG.SERVER == "OTS") then
  1470.       CONTAINERS.LOCKER_BROWSE_FIELD = Container.New(DEPOT_INDEX)
  1471.     else
  1472.       CONTAINERS.LOCKER_BROWSE_FIELD = Container.New(1)
  1473.     end
  1474.   end
  1475.  
  1476.   CONTAINERS.LOCKER_BROWSE_FIELD:UseItem(0, false)
  1477.   wait(CONFIG.PING_COMPENSATION * 4)
  1478.   if (CONFIG.SERVER == "OTS") then
  1479.     CONTAINERS.DEPOT_LOCKER = Container.New(0)
  1480.   else
  1481.     CONTAINERS.DEPOT_LOCKER = Container.New(2)
  1482.   end
  1483.   CONTAINERS.DEPOT_LOCKER:UseItem(0, true)
  1484.   wait(CONFIG.PING_COMPENSATION * 4)
  1485.  
  1486.   CONTAINERS.DEPOT_LOCKER:OpenChildren({CONFIG.CHECK_MONEY_BACKPACK, true})
  1487.   if (CONFIG.SERVER == "OTS") then
  1488.     CONTAINERS.CHECK_MONEY_BACKPACK = Container.New(1)
  1489.   else
  1490.     CONTAINERS.CHECK_MONEY_BACKPACK = Container.New(3)
  1491.   end
  1492.   wait(CONFIG.PING_COMPENSATION * 4)
  1493.  
  1494.   CONTAINERS.DEPOT_LOCKER:OpenChildren({CONFIG.CRYSTAL_COINS_BACKPACK, true})
  1495.   if (CONFIG.SERVER == "OTS") then
  1496.     CONTAINERS.CRYSTAL_COINS_BACKPACK = Container.New(2)
  1497.   else
  1498.     CONTAINERS.CRYSTAL_COINS_BACKPACK = Container.New(4)
  1499.   end
  1500.   wait(CONFIG.PING_COMPENSATION * 4)
  1501.  
  1502.   CONTAINERS.DEPOT_LOCKER:OpenChildren({CONFIG.PLATINUM_COINS_BACKPACK, true})
  1503.   if (CONFIG.SERVER == "OTS") then
  1504.     CONTAINERS.PLATINUM_COINS_BACKPACK = Container.New(3)
  1505.   else
  1506.     CONTAINERS.PLATINUM_COINS_BACKPACK = Container.New(5)
  1507.   end
  1508.   wait(CONFIG.PING_COMPENSATION * 4)
  1509.  
  1510.   CONTAINERS.DEPOT_LOCKER:OpenChildren({CONFIG.EXTRA_PLATINUM_COINS_BACKPACK, true})
  1511.   if (CONFIG.SERVER == "OTS") then
  1512.     CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK = Container.New(4)
  1513.   else
  1514.     CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK = Container.New(6)
  1515.   end
  1516.   wait(CONFIG.PING_COMPENSATION * 4)
  1517.  
  1518.   CONTAINERS.DEPOT_LOCKER:OpenChildren({CONFIG.ITEMS_BACKPACK, true})
  1519.   if (CONFIG.SERVER == "OTS") then
  1520.     CONTAINERS.ITEMS_BACKPACK = Container.New(5)
  1521.   else
  1522.     CONTAINERS.ITEMS_BACKPACK = Container.New(7)
  1523.   end
  1524.   wait(CONFIG.PING_COMPENSATION * 4)
  1525.  
  1526.     if (#Container.GetAll() >= 8 and not LOADING_COMPLETED) then
  1527.       LOADING_COMPLETED = true
  1528.       for i = 1, #ITEMS do
  1529.         table.insert(TABLE.ITEMS, ITEMS[i].id)
  1530.       end
  1531.       Casino_Decorations()
  1532.       Casino_UpdateHUD()
  1533.     end
  1534.   end
  1535. end, false)
  1536.  
  1537. Module.New("Casino_PROJECT: TURN_TO_GAMBLER", function(moduleObject)
  1538. local POS, LD = Self.Position(), Self.LookDirection()
  1539. if (LOADING_COMPLETED) then
  1540.   PLAYER.DETECTED = false
  1541.   for name, creature in Creature.iPlayers(2) do
  1542.     if (creature:Position().x == PLAYER.SPOT.X and creature:Position().y == PLAYER.SPOT.Y and creature:Position().z == PLAYER.SPOT.Z) then
  1543.       PLAYER.DETECTED = true
  1544.     end
  1545.   end
  1546.     if (PLAYER.DETECTED) then
  1547.       Casino_GetDirection("GAMBLER", POS.x, POS.y, LD)
  1548.     else
  1549.       Casino_GetDirection("LOCKER", POS.x, POS.y, LD)
  1550.     end
  1551.   end
  1552.   moduleObject:Delay(CONFIG.PING_COMPENSATION)
  1553. end)
  1554.  
  1555. Module.New("Casino_PROJECT: Extra Backpacks", function(moduleObject)
  1556. if (LOADING_COMPLETED) then
  1557.   if (CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK:isFull() or CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK:isEmpty()) then
  1558.     CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK:UseItem(CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK:ItemCapacity() - 1, true)
  1559.   end
  1560.     if (CONTAINERS.PLATINUM_COINS_BACKPACK:EmptySlots() < 7) then
  1561.       Casino_MoveExtra(CONTAINERS.PLATINUM_COINS_BACKPACK, CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK)
  1562.     elseif (CONTAINERS.PLATINUM_COINS_BACKPACK:EmptySlots() > 7 and Casino_CountMoney(CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) > 0) then
  1563.       Casino_MoveExtra(CONTAINERS.EXTRA_PLATINUM_COINS_BACKPACK, CONTAINERS.PLATINUM_COINS_BACKPACK)
  1564.     end
  1565.   end
  1566.   moduleObject:Delay(CONFIG.PING_COMPENSATION)
  1567. end)
  1568.  
  1569. Module.New("Casino_PROJECT: PARTY_HAT", function(moduleObject)
  1570. if (CONFIG.PARTY_HAT) then
  1571.   if (LOADING_COMPLETED) then
  1572.     if (not PLAYER.DETECTED) then
  1573.       if (Self.Head().id == Item.GetID("party hat")) then
  1574.         Self.UseItemFromEquipment("head")
  1575.         end
  1576.       end
  1577.     end
  1578.   end
  1579.   moduleObject:Delay(CONFIG.PARTY_HAT_TIME * 1000)
  1580. end)
  1581.  
  1582. Module.New("Casino_PROJECT: RESTACK MONEY", function(moduleObject)
  1583. if (LOADING_COMPLETED) then
  1584.   if (CONTAINERS.PLATINUM_COINS_BACKPACK:ItemCount() > 1) then
  1585.   for SPOT = CONTAINERS.PLATINUM_COINS_BACKPACK:ItemCount() - 1, 0, -1 do
  1586.     if (SPOT ~= 0) then
  1587.     local tmp = CONTAINERS.PLATINUM_COINS_BACKPACK:GetItemData(SPOT)
  1588.       if (tmp.count < 100) then
  1589.         CONTAINERS.PLATINUM_COINS_BACKPACK:MoveItemToContainer(SPOT, CONTAINERS.PLATINUM_COINS_BACKPACK:Index())
  1590.         wait(CONFIG.PING_COMPENSATION)
  1591.       end
  1592.     end
  1593.   end
  1594. end
  1595.  
  1596.   if(CONTAINERS.CRYSTAL_COINS_BACKPACK:ItemCount() > 1) then
  1597.     for SPOT = CONTAINERS.CRYSTAL_COINS_BACKPACK:ItemCount() - 1, 0, -1 do
  1598.       if (SPOT ~= 0) then
  1599.       local tmp = CONTAINERS.CRYSTAL_COINS_BACKPACK:GetItemData(SPOT)
  1600.         if(tmp.count < 100) then
  1601.           CONTAINERS.CRYSTAL_COINS_BACKPACK:MoveItemToContainer(SPOT, CONTAINERS.CRYSTAL_COINS_BACKPACK:Index())
  1602.           wait(CONFIG.PING_COMPENSATION)
  1603.           end
  1604.         end
  1605.       end
  1606.     end
  1607.   end
  1608.   moduleObject:Delay(CONFIG.PING_COMPENSATION)
  1609. end)
  1610.  
  1611. Module.New("Casino_PROJECT: NORMAL BROADCASTER", function(moduleObject)
  1612. if (CONFIG.SAY_ADVERTISEMENT) then
  1613.   if (LOADING_COMPLETED) then
  1614.     if (not PLAYER.DETECTED) then
  1615.         Self.Say(Casino_InfoMessages(AD_SAY_MSG))
  1616.       end
  1617.     end
  1618.   end
  1619.   moduleObject:Delay(CONFIG.SAY_TIME * 1000)
  1620. end)
  1621.  
  1622. Module.New("Casino_PROJECT: YELL BROADCASTER", function(moduleObject)
  1623. if (CONFIG.YELL_ADVERTISEMENT) then
  1624.   if (LOADING_COMPLETED) then
  1625.     if (not PLAYER.DETECTED) then
  1626.         Self.Yell(Casino_InfoMessages(AD_YELL_MSG))
  1627.       end
  1628.     end
  1629.   end
  1630.   moduleObject:Delay(CONFIG.YELL_TIME * 1000)
  1631. end)
  1632.  
  1633. Module.New("Casino_PROJECT: ANTI-TRASHER", function(moduleObject)
  1634.   if (LOADING_COMPLETED) then
  1635.     for SPOT = CONTAINERS.COUNTER_BROWSE_FIELD:ItemCount() - 1, 0, -1 do
  1636.   local tmp = CONTAINERS.COUNTER_BROWSE_FIELD:GetItemData(SPOT)
  1637.     if not table.contains(CASH_ID, tmp.id) and not table.contains(TABLE.ITEMS, tmp.id) then
  1638.       Map.MoveItem(COUNTER.X, COUNTER.Y, THROW_POS.x, THROW_POS.y)
  1639.     end
  1640.   end
  1641.  
  1642.     for SPOT = CONTAINERS.LOCKER_BROWSE_FIELD:ItemCount() - 1, 0, -1 do
  1643.   local tmp = CONTAINERS.LOCKER_BROWSE_FIELD:GetItemData(SPOT)
  1644.       if not table.contains(LOCKER_ID, tmp.id) and not table.contains(({FIRST_DECORATION_ITEM_ID, SECOND_DECORATION_ITEM_ID}), tmp.id) then
  1645.         Map.MoveItem(LOCKER.X, LOCKER.Y, THROW_POS.x, THROW_POS.y)
  1646.       end
  1647.     end
  1648.   end
  1649.   moduleObject:Delay(CONFIG.PING_COMPENSATION)
  1650. end)
  1651.  
  1652. Module.New("Casino_PROJECT: CLEAN_TABLE", function(moduleObject)
  1653.   if (LOADING_COMPLETED) then
  1654.     table.remove(TABLE.NAMES, 1)
  1655.     table.remove(TABLE.INFO, 1)
  1656.     table.remove(TABLE.GAMES, 1)
  1657.     table.remove(TABLE.MIN_MAX, 1)
  1658.     table.remove(TABLE.PRICE, 1)
  1659.   end
  1660. moduleObject:Delay(5 * 1000)
  1661. end)
  1662.  
  1663. Module.New("Casino_PROJECT: PICK_WHEN_SS", function(moduleObject)
  1664. if (LOADING_COMPLETED) then
  1665.   if (os.date("%H:%M") == CONFIG.SERVER_SAVE_TIME) then
  1666.       Casino_Stop()
  1667.     end
  1668.   end
  1669.   moduleObject:Delay(CONFIG.PING_COMPENSATION)
  1670. end)
  1671.  
  1672.  
  1673. Module.New("Casino_PROJECT: ANTI-IDLE", function(moduleObject)
  1674.   if (LOADING_COMPLETED) then
  1675.     if (PLAYER.OPTION == GAMBLE_OPTION.NONE) then
  1676.       Self.Turn(Casino_AntiIdle())
  1677.     end
  1678.   end
  1679. moduleObject:Delay(CONFIG.ANTI_IDLE_TIME * 60 * 1000)
  1680. end)
  1681.  
  1682. Module.New("Casino_PROJECT: SAFE_LOGOUT", function(moduleObject)
  1683.   if (LOADING_COMPLETED) then
  1684.     if (CONFIG.SAFE_EXIT and (Casino_CountMoney(CONTAINERS.CRYSTAL_COINS_BACKPACK, CASH.CRYSTAL_COIN) / 10000 < CONFIG.AMOUNT_CC_TO_EXIT or Casino_CountMoney(CONTAINERS.PLATINUM_COINS_BACKPACK, CASH.PLATINUM_COIN) / 100 < CONFIG.AMOUNT_PL_TO_EXIT)) then
  1685.       Casino_Stop()
  1686.       end
  1687.     end
  1688.   moduleObject:Delay(CONFIG.PING_COMPENSATION)
  1689. end)
  1690.  
  1691. Module.New("Casino_PROJECT: SET_TIME_TICKS", function(moduleObject)
  1692.   if (CONFIG.SHOW_HUD) then
  1693.     HUD.MAIN_TIME.VALUE:SetText(Casino_GetTime(MAIN_TIME))
  1694.     HUD.BET_TIME.VALUE:SetText(Casino_GetTime(BET_TIME))
  1695.   end
  1696. moduleObject:Delay(500)
  1697. end)
  1698.  
  1699. Signal.OnReceive("SignalListener", function(signal, data)
  1700. for name, creature in Creature.iPlayers(2) do
  1701.   if (LOADING_COMPLETED and name == data.creature and creature:Position().x == PLAYER.SPOT.X and creature:Position().y == PLAYER.SPOT.Y and creature:Position().z == PLAYER.SPOT.Z) then
  1702.   local MSG = data.message:lower()
  1703.  
  1704.   if (table.contains((mTable(WORDS.L, WORDS.L)), MSG) and not BETS.HL_MODE or table.contains((mTable(WORDS.O, WORDS.E)), MSG) and not BETS.OE_MODE or table.contains((WORDS.NUM), MSG) and not BETS.NUMBERS_MODE or table.contains((WORDS.BJ), MSG) and not BETS.BJ_MODE or table.contains((WORDS.FSL), MSG) and not BETS.FSL_MODE) then
  1705.     Self.Say("I'm sorry but this game is disabled right now.")
  1706.     return false
  1707.   end
  1708.  
  1709.   if (table.contains((WORDS.L), MSG)) then
  1710.     PLAYER.OPTION = GAMBLE_OPTION.LOW
  1711.   elseif (table.contains((WORDS.H), MSG)) then
  1712.     PLAYER.OPTION = GAMBLE_OPTION.HIGH
  1713.   end
  1714.   if (table.contains((WORDS.O), MSG)) then
  1715.     PLAYER.OPTION = GAMBLE_OPTION.ODD
  1716.   elseif (table.contains((WORDS.E), MSG)) then
  1717.     PLAYER.OPTION = GAMBLE_OPTION.EVEN
  1718.   end
  1719.   if (MSG == WORDS.NUM[1]) then
  1720.     PLAYER.OPTION = GAMBLE_OPTION.ONE
  1721.   elseif (MSG == WORDS.NUM[2]) then
  1722.     PLAYER.OPTION = GAMBLE_OPTION.TWO
  1723.   elseif (MSG == WORDS.NUM[3]) then
  1724.     PLAYER.OPTION = GAMBLE_OPTION.THREE
  1725.   elseif (MSG == WORDS.NUM[4]) then
  1726.     PLAYER.OPTION = GAMBLE_OPTION.FOUR
  1727.   elseif (MSG == WORDS.NUM[5]) then
  1728.     PLAYER.OPTION = GAMBLE_OPTION.FIVE
  1729.   elseif (MSG == WORDS.NUM[6]) then
  1730.     PLAYER.OPTION = GAMBLE_OPTION.SIX
  1731.   end
  1732.   if (table.contains((WORDS.NUM), MSG)) then
  1733.     PLAYER.OPTION = GAMBLE_OPTION.BJ
  1734.   end
  1735.   if (MSG == WORDS.FSL[1]) then
  1736.     PLAYER.OPTION = GAMBLE_OPTION.FIRST
  1737.   elseif (MSG == WORDS.FSL[2]) then
  1738.     PLAYER.OPTION = GAMBLE_OPTION.SECOND
  1739.   elseif (MSG == WORDS.FSL[3]) then
  1740.     PLAYER.OPTION = GAMBLE_OPTION.LAST
  1741.   end
  1742.  
  1743.   for i = 1, #ITEMS do
  1744.     if (not table.contains(TABLE.PRICE, data.creature) and MSG == "price " .. ITEMS[i].name .. "") then
  1745.       table.insert(TABLE.PRICE, data.creature)
  1746.       Self.Say("I accept " .. setArticle(ITEMS[i].name) .. " as bet for " .. Casino_FormatValue(ITEMS[i].value) .. " GP.")
  1747.     end
  1748.   end
  1749.  
  1750.   if (MSG == "info" and not table.contains(TABLE.INFO, data.creature)) then
  1751.     table.insert(TABLE.INFO, data.creature)
  1752.     Self.Say(Casino_InfoMessages(INFO_MSG))
  1753.   elseif (table.contains(({"min", "max", "bid"}), MSG) and not table.contains(TABLE.MIN_MAX, data.creature)) then
  1754.     table.insert(TABLE.MIN_MAX, data.creature)
  1755.     Self.Say(Casino_InfoMessages(ADVANCED_MIN_MAX))
  1756.   elseif (MSG == "profit" and not table.contains(TABLE.INFO, data.creature)) then
  1757.     table.insert(TABLE.INFO, data.creature)
  1758.     Casino_GetProfit(BET_OPTION.PROFIT)
  1759.  
  1760.   elseif (MSG == "games" and not table.contains(TABLE.GAMES, data.creature)) then
  1761.     table.insert(TABLE.GAMES, data.creature)
  1762.     Self.Say(Casino_InfoMessages(GAMES_MSG))
  1763.   elseif (MSG == "counter" and not table.contains(TABLE.INFO, data.creature)) then
  1764.     COUNTER_MONEY = Casino_CountMoney(CONTAINERS.COUNTER_BROWSE_FIELD, "all") + Casino_GetValueOfItems(CONTAINERS.COUNTER_BROWSE_FIELD)
  1765.     if (COUNTER_MONEY) > 0 then
  1766.       table.insert(TABLE.INFO, data.creature)
  1767.       Self.Say("The value of items on counter is " .. Casino_FormatValue(COUNTER_MONEY) .. " GP.")
  1768.     end
  1769.   end
  1770.  
  1771.   if (table.contains(({GAMBLE_OPTION.ONE, GAMBLE_OPTION.TWO, GAMBLE_OPTION.THREE, GAMBLE_OPTION.FOUR, GAMBLE_OPTION.FIVE, GAMBLE_OPTION.SIX}), PLAYER.OPTION)) then
  1772.     BET_OPTION.PAYOUT = BETS.NUMBERS_PAYOUT
  1773.     BET_OPTION.MIN = BETS.NUMBERS_MIN
  1774.     BET_OPTION.MAX = BETS.NUMBERS_MAX
  1775.   elseif (PLAYER.OPTION == GAMBLE_OPTION.BJ) then
  1776.     BET_OPTION.PAYOUT = BETS.BJ_PAYOUT
  1777.     BET_OPTION.MIN = BETS.BJ_MIN
  1778.     BET_OPTION.MAX = BETS.BJ_MAX
  1779.   elseif (table.contains(({GAMBLE_OPTION.LOW, GAMBLE_OPTION.HIGH}), PLAYER.OPTION)) then
  1780.     BET_OPTION.PAYOUT = BETS.HL_PAYOUT
  1781.     BET_OPTION.MIN = BETS.HL_MIN
  1782.     BET_OPTION.MAX = BETS.HL_MAX
  1783.   elseif (table.contains(({GAMBLE_OPTION.ODD, GAMBLE_OPTION.EVEN}), PLAYER.OPTION)) then
  1784.     BET_OPTION.PAYOUT = BETS.OE_PAYOUT
  1785.     BET_OPTION.MIN = BETS.OE_MIN
  1786.     BET_OPTION.MAX = BETS.OE_MAX
  1787.   elseif (table.contains(({GAMBLE_OPTION.FIRST, GAMBLE_OPTION.SECOND, GAMBLE_OPTION.LAST}), PLAYER.OPTION)) then
  1788.     BET_OPTION.PAYOUT = BETS.FSL_PAYOUT
  1789.     BET_OPTION.MIN = BETS.FSL_MIN
  1790.     BET_OPTION.MAX = BETS.FSL_MAX
  1791.   end
  1792.  
  1793.   if (PLAYER.OPTION ~= GAMBLE_OPTION.NONE) then
  1794.     PLAYER.BALANCE = Casino_CountMoney(CONTAINERS.COUNTER_BROWSE_FIELD, "all") + Casino_GetValueOfItems(CONTAINERS.COUNTER_BROWSE_FIELD)
  1795.   if (PLAYER.BALANCE >= BET_OPTION.MIN and PLAYER.BALANCE <= BET_OPTION.MAX) then
  1796.     if (CONFIG.SAFE_BET) then
  1797.       if (Casino_SafeBet(data.creature)) then
  1798.         return false
  1799.       end
  1800.     end
  1801.       CZANEL:SendOrangeMessage("[BOT]", "" .. data.creature .. " chose: " .. string.upper(MSG) .. " option.")
  1802.       doWriteLog("" .. data.creature .. " chosen: " .. string.upper(MSG) .. " option.")
  1803.       Casino_MoveMoney(CONTAINERS.COUNTER_BROWSE_FIELD, CONTAINERS.CHECK_MONEY_BACKPACK)
  1804.       Casino_MoveItems(CONTAINERS.COUNTER_BROWSE_FIELD, CONTAINERS.CHECK_MONEY_BACKPACK)
  1805.     if (PLAYER.BALANCE == Casino_CountMoney(CONTAINERS.CHECK_MONEY_BACKPACK, "all") + Casino_GetValueOfItems(CONTAINERS.CHECK_MONEY_BACKPACK)) then
  1806.       CZANEL:SendOrangeMessage("[BOT]", "" .. data.creature .. "'s amount of MONEY: " .. Casino_CountMoney(CONTAINERS.CHECK_MONEY_BACKPACK, "all") / 1000 .. "K, ITEMS: " .. Casino_GetValueOfItems(CONTAINERS.CHECK_MONEY_BACKPACK) / 1000 .. "K.")
  1807.       doWriteLog("" .. data.creature .. "'s amount of MONEY: " .. Casino_CountMoney(CONTAINERS.CHECK_MONEY_BACKPACK, "all") / 1000 .. "K, ITEMS: " .. Casino_GetValueOfItems(CONTAINERS.CHECK_MONEY_BACKPACK) / 1000 .. "K.")
  1808.       Casino_SortMoney()
  1809.       Casino_MoveItems(CONTAINERS.CHECK_MONEY_BACKPACK, CONTAINERS.ITEMS_BACKPACK)
  1810.       BET_TIME = os.time()
  1811.       if (PLAYER.OPTION == GAMBLE_OPTION.BJ) then
  1812.         Casino_BlackJack(PLAYER.OPTION)
  1813.       elseif (table.contains(({GAMBLE_OPTION.FIRST, GAMBLE_OPTION.SECOND, GAMBLE_OPTION.LAST}), PLAYER.OPTION)) then
  1814.         Casino_FirstSecondLast(PLAYER.OPTION)
  1815.       else
  1816.         Casino_Normal(Casino_RollRandom(), PLAYER.OPTION)
  1817.       end
  1818.     else
  1819.       Casino_MoveItems(CONTAINERS.CHECK_MONEY_BACKPACK, CONTAINERS.COUNTER_BROWSE_FIELD)
  1820.       Casino_MoveMoney(CONTAINERS.CHECK_MONEY_BACKPACK, CONTAINERS.COUNTER_BROWSE_FIELD)
  1821.       Self.Say(CHEAT_MSG)
  1822.       doWriteLog("" .. data.creature .. " wants to cheat Casino")
  1823.       PLAYER.OPTION = GAMBLE_OPTION.NONE
  1824.     end
  1825.   else
  1826.     if (PLAYER.BALANCE > 0 and (PLAYER.BALANCE < BET_OPTION.MIN or PLAYER.BALANCE > BET_OPTION.MAX)) then
  1827.       if (not table.contains(TABLE.MIN_MAX, data.creature)) then
  1828.         table.insert(TABLE.MIN_MAX, data.creature)
  1829.           Self.Say(Casino_InfoMessages(MIN_MAX_MSG))
  1830.             PLAYER.OPTION = GAMBLE_OPTION.NONE
  1831.             end
  1832.           end
  1833.         end
  1834.       end
  1835.     end
  1836.   end
  1837. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement