Contract con_myluckynumber_v3


Contract Code


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

Byte Code

e3000000000000000000000000050000004000000073d6000000640064016c005a00640064016c015a01650264006402640364048d035a0365046402640564068d025a0565066a07830001006508650964079c026408640984045a0a650b640283016509640a9c01640b640c840483015a0c650b64028301650d640d9c01640e640f840483015a0e650b64028301650d640d9c0164106411840483015a0f650b640283016509650d64129c0264136414840483015a10650b640283016508650964159c0264166417840483015a11650b64028301650864189c016419641a840483015a12641b641c84005a1364015300291de9000000004eda14636f6e5f6d796c75636b796e756d6265725f7633da0467616d652903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da086f70657261746f722902720500000072060000002902da02766bda076a61636b706f74630200000000000000020000005000000043000000738601000074006a017c00830101007c01740264013c006402740264033c006404740264053c006406740264073c006404740264083c0064097402640a3c0064047402640b3c00640c7402640d3c00640e7402640f3c006410740264113c006412740264133c006414740264153c00640c740264163c006412740264173c006418740264193c0064107402641a3c00641b7402641c3c006418641864186418641864186418641864186418641864186418641864186418641864186418641864186418641864186418641864186418641864186418641864186418640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e640e641d641d641d641d641d641d641d641d641d641d641e641e641e641e64066406640664046404641f64146750740264203c006410641064106410641064216421642164226422640e670b740264233c00641064106410641064106410641064106421642164216421642164226422640e641d6711740264243c006400530029254e7209000000e946000000da04636f7374e964000000da06636f73745f32e932000000da06636f73745f33da06636f73745f346988130000da0f636f73745f67616d65315f676f6c64da11636f73745f67616d65315f676f6c645f6de907000000da036d5f31e905000000da036d5f32e902000000da036d5f33e919000000da036d5f3469f4010000da036d5f35da036d5f36da036d5f37e901000000da0672616e676531da0672616e676532e909000000da0672616e676533e90a000000e91e000000e9c8000000da0b747261737572655f626f78e903000000e904000000da1374726561737572655f6d756c7469706c696572da1874726561737572655f676f6c645f6d756c7469706c6965722903da0a5f5f6f70657261746f72da03736574da065f5f67616d65290272080000007209000000a900722e000000da00da045f5f5f5f08000000733400000000010a010801080108010801080108010801080108010801080108010801080108010801080120012e012c0120010e011e01160172300000002901da096d795f6e756d626572630100000000000000070000000900000043000000731002000074006a017d0164017d0274026a037c0183017404640219006b057324740564038301820174026a0674046402190074076a0883007c018303010074096a0a6404640583027d0374096a0a6404640583027d0474096a0a6404640583027d0564017d067c007c036b02727e7c0564066b00727e74096a0a6404640583027d03740b7c007c03180083017404640719006b0272c874046402190074046408190014007d027404640819007d0674026a067c027c0174076a088300830301007c0074047c01640966023c00740b7c007c03180083017404640a19006b02900172147404640219007404640b190014007d027404640b19007d0674026a067c027c0174076a088300830301007c0074047c01640966023c00740b7c007c03180083017404640a19006b0490017276740b7c007c03180083017404640c19006b00900172767404640219007404640d190014007d027404640d19007d0674026a067c027c0174076a088300830301007c0074047c01640966023c007c007c036b02900172b67404640219007404640e190014007d027404640e19007d0674026a067c027c0174076a088300830301007c0074047c01640966023c007c047c036b02900172f07c007c036b02900172f07404640f19007c0218007d027404641019007d0674026a067c027c0174076a088300830301007404640219007c027c007c037c067c04740b7c007c031800830164119c07530029124e7201000000720b0000007a1b4e6f7420656e6f7567682042616c616e636520746f20706c617921721e000000720c000000e933000000721f0000007214000000da116c6173745f6c75636b795f6e756d6265727220000000721600000072220000007218000000721a0000007209000000721b0000002907da03626574da0377696e7231000000da0b67616d655f6e756d626572da0a6d756c7469706c696572da076d797374657279da0464696666290cda03637478da0663616c6c6572da0863757272656e6379da0a62616c616e63655f6f66722d000000da0e417373657274696f6e4572726f72da0d7472616e736665725f66726f6d722b000000da03676574da0672616e646f6dda0772616e64696e74da0361627329077231000000723b000000da06616d6f756e747236000000da0e6d7973746572795f6e756d626572da0d7365636f6e645f6368616e6365da0f67616d655f6d756c7469706c696572722e000000722e000000722f000000da0c6c75636b795f6e756d6265722500000073520000000002060104011401060116010c010c010c010401080108010c0114011001080112010c0116011001080112010c011a0112011001080112010c010a011001080112010c010a010a010c01080112010a01040172480000002901da03626f786301000000000000000a0000000700000043000000733e01000074006a017d0164017d0274027c00830164026b01731e74036403830182017c006a046404830164056b027334740364068301820174056a067c0183017407640719006b05734e740364088301820174056a0874076407190074096a0a83007c01830301007407640919007d037407640a19007d04740b6a0c6401640b83027d0564017d0664017d07740b6a0d7c0383010100740b6a0d7c0483010100740b6a0e7c0483017d08786e7c0044005d667d097c0664026b0072ac7c0964046b0272dc7c0764056b0072dc7c027c037c06190017007d027c07640437007d077c057c066b026ff27c0964046b026ff27c0764056b009001720a7c027c037c0619007c0864041800140017007d027c06640437007d0671ac570074056a087c027c0174096a0a8300830301007407640719007c027c007c037c057c08640c9c065300290d4e7201000000e9500000007a134261642067616d652073656c656374696f6e21721e00000072150000007a11546f206d61792073656c656374696f6e2172100000007a1b4e6f7420656e6f7567682042616c616e636520746f20706c61792172260000007229000000e94f00000029067234000000723500000072490000007203000000da136d756c7469706c6965725f706f736974696f6e7237000000290f723a000000723b000000da036c656e723e000000da05636f756e74723c000000723d000000722d000000723f000000722b000000724000000072410000007242000000da0773687566666c65da0663686f696365290a7249000000723b0000007244000000da0c67616d65735f6e756d6265727237000000724c000000da07636f756e746572da0d636f756e7465725f7072697a657247000000da0178722e000000722e000000722f000000da0d74726561737572655f68756e7452000000733600000000020601040114011601140106011601080108010c01040104010a010a010a010a01080110010c0108011a0114010c0112010a01040172550000006301000000000000000a0000000800000043000000733a01000074006a017d0164017d0274027c00830164026b01731e74036403830182017c006a046404830164056b027334740364068301820174056a0674076407190074086a0983007c01830301007407640819007d037407640919007d04740a6a0b6401640a83027d0564017d0664017d07740a6a0c7c0383010100740a6a0c7c0483010100740a6a0d7c0483017d08787e7c0044005d767d097c0664026b0072927c0964046b0272ca7c0764056b0072ca7c027c037c0619007407640b1900140017007d027c07640437007d077c057c066b026fe07c0964046b026fe07c0764056b00900172007c027c037c0619007407640b190014007c0864041800140017007d027c06640437007d067192570074056a067c027c0174086a098300830301007407640719007407640b19007c027c007c037c057c08640c9c075300290d4e7201000000724a0000007a134261642067616d652073656c656374696f6e21721e00000072150000007a11546f206d61792073656c656374696f6e2172110000007226000000722a000000724b000000721200000029077234000000da04676f6c64723500000072490000007203000000724c0000007237000000290e723a000000723b000000724d000000723e000000724e000000da11636f6e5f676f6c645f636f6e7472616374723f000000722d000000722b000000724000000072410000007242000000724f0000007250000000290a7249000000723b000000724400000072510000007237000000724c0000007252000000725300000072470000007254000000722e000000722e000000722f000000da1274726561737572655f68756e745f676f6c6471000000733a0000000002060104011401160110010601080108010c01040104010a010a010a010a01080110010a010a0108011a0102011a010c01120108010801040172580000002902da066f7074696f6eda046265747363020000000000000009000000100000004300000073a002000074006a017d0264017d0364017d047c016401190064026b02732274026403830182017c016402190064016b02725e74036a047c0283017405640419006b057348740264058301820174036a0674056404190074076a0883007c02830301007c016402190064026b0272aa74036a047c02830174056404190074056406190017006b05738c740264058301820174036a06740564041900740564061900170074076a0883007c0283030100640764086409640a640b640c640d640e640f6410641164126413670d7d05640264026402640264076407640764076408640864086408640964096409640967107d0674096a0a7c058301010074096a0a7c068301010074096a0a7c05830174096a0a7c06830167027d0774096a0a7c05830174096a0a7c06830167027d087c0064026b02900172667c07640119007c08640119006b0490017266740564041900640714007d0364077d0474036a067c037c0274076a088300830301007c0064076b02900172a47c07640119007c08640119006b00900172a4740564041900640714007d0364077d0474036a067c037c0274076a088300830301007c07640119007c08640119006b02900172d8740564041900640214007d0364027d0474036a067c037c0274076a088300830301007c016402190064026b029002722a7c07640119007c08640119006b029002722a740564061900740564141900140074056404190017007d037405641419007d0474036a067c037c0274076a088300830301007c016402190064026b029002728e7c07640119007c08640119006b029002728e7c07640219007c08640219006b029002728e740564061900740564151900140074056404190017007d037405641519007d0474036a067c037c0274076a088300830301007c007c077c087c037c017c0464169c06530029174e7201000000721e0000007a074e6f2062657421720d0000007a1b4e6f7420656e6f7567682042616c616e636520746f20706c617921720f0000007217000000722700000072280000007215000000e9060000007213000000e90800000072210000007223000000e90b000000e90c000000e90d000000e90e000000721c000000721d00000029067259000000da06706c61796572da066465616c65727235000000725a0000007237000000290b723a000000723b000000723e000000723c000000723d000000722d000000723f000000722b00000072400000007241000000725000000029097259000000725a000000723b00000072440000007247000000da046465636bda046361726472610000007262000000722e000000722e000000722f000000da09626573745f6361726492000000735c000000000206010401040114010c011401060116010c011001120112010c011e0124010a010a01140114010a0112010c01040112010a0112010c010401120112010c01040112010e0112011801080112010e0112011201180108011201060172650000002902da056669656c64da0576616c756563020000000000000002000000030000004300000073120000007400830001007c0174017c003c006400530029014e2902da0e5f5f6173736572745f6f776e6572722d000000290272660000007267000000722e000000722e000000722f000000da0a7365745f76616c756573c4000000730400000000020601726900000029017208000000630100000000000000010000000200000043000000731400000074008300010074016a027c00830101006400530029014e29037268000000722b000000722c00000029017208000000722e000000722e000000722f000000da0f6368616e67655f6f70657261746f72ca000000730400000000020601726a000000630000000000000000000000000200000043000000731a00000074006a0174026a0383006b02731674046401830182016400530029024e7a174f6e6c79206f70657261746f722063616e2063616c6c212905723a000000723b000000722b0000007240000000723e000000722e000000722e000000722e000000722f0000007268000000d00000007302000000000172680000002914723c0000007257000000da0448617368722d000000da085661726961626c65722b0000007241000000da0473656564da03737472da03696e747230000000da085f5f6578706f72747248000000da046c6973747255000000725800000072650000007269000000726a0000007268000000722e000000722e000000722e000000722f000000da083c6d6f64756c653e010000007324000000080108010e010c010803101d0601102c0601101e06011020060112310601120506011005