Contract con_myluckynumber_v2


Contract Code


  
1 import currency
2
3 game = Hash(default_value=0)
4 operator = Variable()
5 random.seed()
6
7 @construct
8 def seed(vk: str, jackpot:int):
9 operator.set(vk)
10 game['jackpot'] = jackpot
11 game['cost'] = 70
12 game['cost_2'] = 100
13 game['cost_3'] = 50
14 game['cost_4'] = 100
15 game['m_1'] = 7
16 game['m_2'] = 5
17 game['m_3'] = 2
18 game['m_4'] = 25
19 game['m_5'] = 500
20 game['m_6'] = 7
21 game['m_7'] = 25
22 game['range1'] = 1
23 game['range2'] = 2
24 game['range3'] = 9
25 game['trasure_box'] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 30, 30, 30, 30, 50, 50, 50, 100, 100, 200, 500]
26 game['treasure_multiplier'] = [2,2,2,2,2,3,3,3,4,4,5]
27
28 @export
29 def lucky_number(my_number: int):
30 caller = ctx.caller
31 amount = 0
32 assert currency.balance_of(caller
33 ) >= game['cost'], 'Not enough Balance to play!'
34
35 currency.transfer_from(game['cost'], operator.get(), caller)
36
37 game_number = random.randint(1, 100)
38 mystery_number = random.randint(1, 100)
39 second_chance = random.randint(1, 100)
40
41 game_multiplier = 0
42
43 if my_number == game_number:
44 if second_chance < 51:
45 game_number = random.randint(1, 100)
46
47 if abs(my_number-game_number) == game['range1']:
48 amount = game['cost'] * game['m_1']
49 game_multiplier = game['m_1']
50 currency.transfer_from(amount, caller, operator.get())
51 game[caller, 'last_lucky_number'] = my_number
52
53 if abs(my_number-game_number) == game['range2']:
54 amount = game['cost'] * game['m_2']
55 game_multiplier = game['m_2']
56 currency.transfer_from(amount, caller, operator.get())
57 game[caller, 'last_lucky_number'] = my_number
58
59 if abs(my_number-game_number) > game['range2'] and abs(my_number-game_number) < game['range3']:
60 amount = game['cost'] * game['m_3']
61 game_multiplier = game['m_3']
62 currency.transfer_from(amount, caller, operator.get())
63 game[caller, 'last_lucky_number'] = my_number
64
65 if my_number == game_number:
66 amount = game['cost'] * game['m_4']
67 game_multiplier = game['m_4']
68 currency.transfer_from(amount, caller, operator.get())
69 game[caller, 'last_lucky_number'] = my_number
70
71 if mystery_number == game_number:
72 if my_number == game_number:
73 amount = game['jackpot'] - amount
74 game_multiplier = game['m_5']
75 currency.transfer_from(amount, caller, operator.get())
76
77 return {'bet': game['cost'], 'win': amount, 'my_number': my_number, 'game_number': game_number, 'multiplier': game_multiplier, 'mystery': mystery_number, 'diff': abs(my_number-game_number)}
78
79 @export
80 def treasure_hunt(box: list):
81 caller = ctx.caller
82 amount = 0
83
84 assert len(box) <= 80, 'Bad game selection!'
85 assert box.count(1) == 5, 'To may selection!'
86
87 assert currency.balance_of(caller
88 ) >= game['cost_4'], 'Not enough Balance to play!'
89
90 currency.transfer_from(game['cost_4'], operator.get(), caller)
91
92 games_number = game['trasure_box']
93 multiplier = game['treasure_multiplier']
94 multiplier_position = random.randint(0, 79)
95 counter = 0
96 counter_prize = 0
97
98 random.shuffle(games_number)
99 random.shuffle(multiplier)
100 game_multiplier = random.choice(multiplier)
101
102 for x in box:
103 if counter < 80:
104 if x == 1 and counter_prize < 5:
105 amount = amount + games_number[counter]
106 counter_prize += 1
107
108 if multiplier_position == counter and x == 1 and counter_prize < 5:
109 amount = amount + (games_number[counter] * (game_multiplier - 1))
110
111 counter +=1
112
113 currency.transfer_from(amount, caller, operator.get())
114
115 return {'bet': game['cost_4'], 'win': amount, 'box': box, 'game': games_number, 'multiplier_position': multiplier_position, 'multiplier': game_multiplier}
116
117
118 @export
119 def best_card(option: int, bets: list):
120 caller = ctx.caller
121 amount = 0
122 game_multiplier = 0
123
124 assert bets[0] == 1, 'No bet!'
125
126 if bets[1] == 0:
127 assert currency.balance_of(caller
128 ) >= game['cost_2'], 'Not enough Balance to play!'
129 currency.transfer_from(game['cost_2'], operator.get(), caller)
130
131 if bets[1] == 1:
132 assert currency.balance_of(caller
133 ) >= game['cost_2'] + game['cost_3'], 'Not enough Balance to play!'
134 currency.transfer_from(game['cost_2'] + game['cost_3'], operator.get(), caller)
135
136 deck = [2,3,4,5,6,7,8,9,10,11,12,13,14]
137 card = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]
138
139 random.choice(deck)
140 random.choice(card)
141
142 player = [random.choice(deck),random.choice(card)]
143 dealer = [random.choice(deck),random.choice(card)]
144
145 if option == 1:
146 if player[0] > dealer[0]:
147 amount = game['cost_2'] * 2
148 game_multiplier = 2
149 currency.transfer_from(amount, caller, operator.get())
150
151 if option == 2:
152 if player[0] < dealer[0]:
153 amount = game['cost_2'] * 2
154 game_multiplier = 2
155 currency.transfer_from(amount, caller, operator.get())
156
157 if player[0] == dealer[0]:
158 amount = game['cost_2'] * 1
159 game_multiplier = 1
160 currency.transfer_from(amount, caller, operator.get())
161
162 if bets[1] == 1:
163 if player[0] == dealer[0]:
164 amount = (game['cost_3'] * game['m_6']) + game['cost_2']
165 game_multiplier = game['m_6']
166 currency.transfer_from(amount, caller, operator.get())
167
168 if bets[1] == 1:
169 if player[0] == dealer[0]:
170 if player[1] == dealer[1]:
171 amount = (game['cost_3'] * game['m_7']) + game['cost_2']
172 game_multiplier = game['m_7']
173 currency.transfer_from(amount, caller, operator.get())
174
175 return {'option': option, 'player': player, 'dealer': dealer, 'win': amount, 'bets': bets, 'multiplier': game_multiplier}
176
177
178 @export
179 def set_values(field: str, value: int):
180 assert_owner()
181 game[field] = value
182
183 @export
184 def change_operator(vk: str):
185 assert_owner()
186 operator.set(vk)
187
188 def assert_owner():
189 assert ctx.caller == operator.get(), 'Only operator can call!'
190
191
192
193
194

Byte Code

e3000000000000000000000000050000004000000073b8000000640064016c005a00650164006402640364048d035a0265036402640564068d025a0465056a06830001006507650864079c026408640984045a09650a640283016508640a9c01640b640c840483015a0b650a64028301650c640d9c01640e640f840483015a0d650a640283016508650c64109c0264116412840483015a0e650a640283016507650864139c0264146415840483015a0f650a64028301650764169c0164176418840483015a106419641a84005a1164015300291be9000000004eda14636f6e5f6d796c75636b796e756d6265725f7632da0467616d652903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da086f70657261746f722902720500000072060000002902da02766bda076a61636b706f74630200000000000000020000005000000043000000734c01000074006a017c00830101007c01740264013c006402740264033c006404740264053c006406740264073c006404740264083c0064097402640a3c00640b7402640c3c00640d7402640e3c00640f740264103c006411740264123c006409740264133c00640f740264143c006415740264163c00640d740264173c006418740264193c006415641564156415641564156415641564156415641564156415641564156415641564156415641564156415641564156415641564156415641564156415641564156415640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b640b641a641a641a641a641a641a641a641a641a641a641b641b641b641b64066406640664046404641c641167507402641d3c00640d640d640d640d640d641e641e641e641f641f640b670b740264203c006400530029214e7209000000e946000000da04636f7374e964000000da06636f73745f32e932000000da06636f73745f33da06636f73745f34e907000000da036d5f31e905000000da036d5f32e902000000da036d5f33e919000000da036d5f3469f4010000da036d5f35da036d5f36da036d5f37e901000000da0672616e676531da0672616e676532e909000000da0672616e676533e90a000000e91e000000e9c8000000da0b747261737572655f626f78e903000000e904000000da1374726561737572655f6d756c7469706c6965722903da0a5f5f6f70657261746f72da03736574da065f5f67616d65290272080000007209000000a900722b000000da00da045f5f5f5f07000000732c00000000010a0108010801080108010801080108010801080108010801080108010801080120012e012c0120010e01722d0000002901da096d795f6e756d626572630100000000000000070000000900000043000000731002000074006a017d0164017d0274026a037c0183017404640219006b057324740564038301820174026a0674046402190074076a0883007c018303010074096a0a6404640583027d0374096a0a6404640583027d0474096a0a6404640583027d0564017d067c007c036b02727e7c0564066b00727e74096a0a6404640583027d03740b7c007c03180083017404640719006b0272c874046402190074046408190014007d027404640819007d0674026a067c027c0174076a088300830301007c0074047c01640966023c00740b7c007c03180083017404640a19006b02900172147404640219007404640b190014007d027404640b19007d0674026a067c027c0174076a088300830301007c0074047c01640966023c00740b7c007c03180083017404640a19006b0490017276740b7c007c03180083017404640c19006b00900172767404640219007404640d190014007d027404640d19007d0674026a067c027c0174076a088300830301007c0074047c01640966023c007c007c036b02900172b67404640219007404640e190014007d027404640e19007d0674026a067c027c0174076a088300830301007c0074047c01640966023c007c047c036b02900172f07c007c036b02900172f07404640f19007c0218007d027404641019007d0674026a067c027c0174076a088300830301007404640219007c027c007c037c067c04740b7c007c031800830164119c07530029124e7201000000720b0000007a1b4e6f7420656e6f7567682042616c616e636520746f20706c617921721c000000720c000000e933000000721d0000007212000000da116c6173745f6c75636b795f6e756d626572721e0000007214000000722000000072160000007218000000720900000072190000002907da03626574da0377696e722e000000da0b67616d655f6e756d626572da0a6d756c7469706c696572da076d797374657279da0464696666290cda03637478da0663616c6c6572da0863757272656e6379da0a62616c616e63655f6f66722a000000da0e417373657274696f6e4572726f72da0d7472616e736665725f66726f6d7228000000da03676574da0672616e646f6dda0772616e64696e74da036162732907722e0000007238000000da06616d6f756e747233000000da0e6d7973746572795f6e756d626572da0d7365636f6e645f6368616e6365da0f67616d655f6d756c7469706c696572722b000000722b000000722c000000da0c6c75636b795f6e756d6265722000000073520000000002060104011401060116010c010c010c010401080108010c0114011001080112010c0116011001080112010c011a0112011001080112010c010a011001080112010c010a010a010c01080112010a01040172450000002901da03626f786301000000000000000a0000000700000043000000733e01000074006a017d0164017d0274027c00830164026b01731e74036403830182017c006a046404830164056b027334740364068301820174056a067c0183017407640719006b05734e740364088301820174056a0874076407190074096a0a83007c01830301007407640919007d037407640a19007d04740b6a0c6401640b83027d0564017d0664017d07740b6a0d7c0383010100740b6a0d7c0483010100740b6a0e7c0483017d08786e7c0044005d667d097c0664026b0072ac7c0964046b0272dc7c0764056b0072dc7c027c037c06190017007d027c07640437007d077c057c066b026ff27c0964046b026ff27c0764056b009001720a7c027c037c0619007c0864041800140017007d027c06640437007d0671ac570074056a087c027c0174096a0a8300830301007407640719007c027c007c037c057c08640c9c065300290d4e7201000000e9500000007a134261642067616d652073656c656374696f6e21721c00000072130000007a11546f206d61792073656c656374696f6e2172100000007a1b4e6f7420656e6f7567682042616c616e636520746f20706c61792172240000007227000000e94f00000029067231000000723200000072460000007203000000da136d756c7469706c6965725f706f736974696f6e7234000000290f72370000007238000000da036c656e723b000000da05636f756e747239000000723a000000722a000000723c0000007228000000723d000000723e000000723f000000da0773687566666c65da0663686f696365290a724600000072380000007241000000da0c67616d65735f6e756d62657272340000007249000000da07636f756e746572da0d636f756e7465725f7072697a657244000000da0178722b000000722b000000722c000000da0d74726561737572655f68756e744d000000733600000000020601040114011601140106011601080108010c01040104010a010a010a010a01080110010c0108011a0114010c0112010a01040172520000002902da066f7074696f6eda046265747363020000000000000009000000100000004300000073a002000074006a017d0264017d0364017d047c016401190064026b02732274026403830182017c016402190064016b02725e74036a047c0283017405640419006b057348740264058301820174036a0674056404190074076a0883007c02830301007c016402190064026b0272aa74036a047c02830174056404190074056406190017006b05738c740264058301820174036a06740564041900740564061900170074076a0883007c0283030100640764086409640a640b640c640d640e640f6410641164126413670d7d05640264026402640264076407640764076408640864086408640964096409640967107d0674096a0a7c058301010074096a0a7c068301010074096a0a7c05830174096a0a7c06830167027d0774096a0a7c05830174096a0a7c06830167027d087c0064026b02900172667c07640119007c08640119006b0490017266740564041900640714007d0364077d0474036a067c037c0274076a088300830301007c0064076b02900172a47c07640119007c08640119006b00900172a4740564041900640714007d0364077d0474036a067c037c0274076a088300830301007c07640119007c08640119006b02900172d8740564041900640214007d0364027d0474036a067c037c0274076a088300830301007c016402190064026b029002722a7c07640119007c08640119006b029002722a740564061900740564141900140074056404190017007d037405641419007d0474036a067c037c0274076a088300830301007c016402190064026b029002728e7c07640119007c08640119006b029002728e7c07640219007c08640219006b029002728e740564061900740564151900140074056404190017007d037405641519007d0474036a067c037c0274076a088300830301007c007c077c087c037c017c0464169c06530029174e7201000000721c0000007a074e6f2062657421720d0000007a1b4e6f7420656e6f7567682042616c616e636520746f20706c617921720f0000007215000000722500000072260000007213000000e9060000007211000000e908000000721f0000007221000000e90b000000e90c000000e90d000000e90e000000721a000000721b00000029067253000000da06706c61796572da066465616c6572723200000072540000007234000000290b72370000007238000000723b0000007239000000723a000000722a000000723c0000007228000000723d000000723e000000724d000000290972530000007254000000723800000072410000007244000000da046465636bda0463617264725b000000725c000000722b000000722b000000722c000000da09626573745f636172646c000000735c000000000206010401040114010c011401060116010c011001120112010c011e0124010a010a01140114010a0112010c01040112010a0112010c010401120112010c01040112010e0112011801080112010e01120112011801080112010601725f0000002902da056669656c64da0576616c756563020000000000000002000000030000004300000073120000007400830001007c0174017c003c006400530029014e2902da0e5f5f6173736572745f6f776e6572722a000000290272600000007261000000722b000000722b000000722c000000da0a7365745f76616c7565739e000000730400000000020601726300000029017208000000630100000000000000010000000200000043000000731400000074008300010074016a027c00830101006400530029014e290372620000007228000000722900000029017208000000722b000000722b000000722c000000da0f6368616e67655f6f70657261746f72a40000007304000000000206017264000000630000000000000000000000000200000043000000731a00000074006a0174026a0383006b02731674046401830182016400530029024e7a174f6e6c79206f70657261746f722063616e2063616c6c212905723700000072380000007228000000723d000000723b000000722b000000722b000000722b000000722c0000007262000000aa00000073020000000001726200000029127239000000da0448617368722a000000da085661726961626c657228000000723e000000da0473656564da03737472da03696e74722d000000da085f5f6578706f72747245000000da046c6973747252000000725f000000726300000072640000007262000000722b000000722b000000722b000000722c000000da083c6d6f64756c653e01000000731e00000008010e010c01080310190601102c0601101e060112310601120506011005