Spaces:
Paused
Paused
File size: 3,237 Bytes
7837518 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
import random
import time
import base64
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
def encrypt(text, key):
iv = get_random_bytes(12)
iv_base64 = base64.b64encode(iv).decode("utf-8")
cipher = AES.new(key, AES.MODE_CBC, iv_base64[:16].encode("utf-8"))
def pad(s):
block_size = AES.block_size
return s + (block_size - len(s) % block_size) * chr(
block_size - len(s) % block_size
)
padded_text = pad(text).encode("utf-8")
encrypted = cipher.encrypt(padded_text)
encrypted_base64 = base64.b64encode(encrypted).decode("utf-8")
return iv_base64 + encrypted_base64
def get_game_data(game_response):
start_time = int(time.time() * 1000)
end_time = start_time + 45000 # 45 seconds in milliseconds
game_tag = game_response["data"]["gameTag"]
item_settings = game_response["data"]["cryptoMinerConfig"]["itemSettingList"]
current_time = start_time
score = 100
game_events = []
while current_time < end_time:
# Generate random time increment
time_increment = random.randint(1500, 2500)
current_time += time_increment
if current_time >= end_time:
break
# Generate random hook positions and angles
hook_pos_x = round(random.uniform(75, 275), 3)
hook_pos_y = round(random.uniform(199, 251), 3)
hook_shot_angle = round(random.uniform(-1, 1), 3)
hook_hit_x = round(random.uniform(100, 400), 3)
hook_hit_y = round(random.uniform(250, 700), 3)
# Determine item type, size, and points
item_type, item_size, points = 0, 0, 0
random_value = random.random()
if random_value < 0.6:
# Select a reward item
reward_items = [item for item in item_settings if item["type"] == "REWARD"]
selected_reward = random.choice(reward_items)
item_type = 1
item_size = selected_reward["size"]
points = min(selected_reward["rewardValueList"][0], 10)
score = min(score + points, 200)
elif random_value < 0.8:
# Select a trap item
trap_items = [item for item in item_settings if item["type"] == "TRAP"]
selected_trap = random.choice(trap_items)
item_type = 1
item_size = selected_trap["size"]
points = min(abs(selected_trap["rewardValueList"][0]), 20)
score = max(100, score - points)
else:
# Select a bonus item
bonus_item = next(
(item for item in item_settings if item["type"] == "BONUS"), None
)
if bonus_item:
item_type = 2
item_size = bonus_item["size"]
points = min(bonus_item["rewardValueList"][0], 15)
score = min(score + points, 200)
# Create event data string
event_data = f"{current_time}|{hook_pos_x}|{hook_pos_y}|{hook_shot_angle}|{hook_hit_x}|{hook_hit_y}|{item_type}|{item_size}|{points}"
game_events.append(event_data)
payload = ";".join(game_events)
encrypted_payload = encrypt(payload, game_tag.encode("utf-8"))
return encrypted_payload, score
|