def get_user(raw_id_list): if raw_id_list != None: raw_ids = raw_id_list.split(',') user_lookup = {} ids = [] for id in raw_ids: id = util.parseInt(id) if id > 0: ids.append(str(id)) if len(ids) > 0: if len(ids) == 1: users_db = sql.query( "SELECT `name`, `user_id` FROM `user` WHERE `user_id` = %s LIMIT 1", (ids[0], )) else: users_db = sql.query( "SELECT `name`, `user_id` FROM `user` WHERE `user_id` IN (" + ', '.join(ids) + ")") output = [] for user in users_db: name = user['name'] id = user['user_id'] output.append((id, name)) return {'success': True, 'users': output} return {'success': False, 'message': "User ID list is blank"}
def award_bytes(user_id, attacked_id, num_bytes): attacked_id = util.parseInt(attacked_id) num_bytes = util.parseInt(num_bytes) if attacked_id <= 0 or num_bytes <= 0: return { 'success': False, 'message': "Invalid args" } user_exists = sql.query("SELECT `user_id` FROM `user` WHERE `user_id` = " + str(attacked_id) + " LIMIT 1") if len(user_exists) == 0: return { 'success': False, 'message': "User doesn't exist. Are you a l33t hax0r?" } sql.query("UPDATE `user` SET `research` = `research` + " + str(num_bytes) + " WHERE `user_id` = " + str(user_id) + " LIMIT 1") new_research = sql.query("SELECT `research` FROM `user` WHERE `user_id` = " + str(user_id) + " LIMIT 1") return { 'success': True, 'research': new_research[0]['research'] }
def do_build(user_id, client_token, last_id, sector, loc, type, poll_afterwards=True): sector = util.tsanitize(sector) loc = util.tsanitize(loc) last_id = util.parseInt(last_id) verify_position = sql.query("SELECT `hq_sector` FROM `user` WHERE `user_id` = " + str(user_id) + " LIMIT 1") if verify_position[0]["hq_sector"] == sector: if client_token: duplicate = sql.query("SELECT `client_token` FROM `event` WHERE `client_token` = %s", (client_token,)) if not duplicate and validate_building(type, sector, loc): error = verify_placement(type, sector, loc) if error == None: if type == "hq" or try_deplete_resources( user_id, settings.building_cost[type][0], settings.building_cost[type][1], settings.building_cost[type][2], settings.building_cost[type][3], settings.building_cost[type][4], settings.building_cost[type][5], ): data = "Build:%s,%s" % (type, loc) event_id = sql.insert( "INSERT INTO `event` (`client_token`, `sector_xy`, `user_id`, `data`) VALUES (%s, %s, %s, %s)", (client_token, sector, user_id, data), ) quarry_data = "" if type == "quarry": resources = "a c s".split(" ") distribution = [int(random.random() * 101)] rdist = int(random.random() * (100 - distribution[0] + 1)) distribution.append(rdist) distribution.append(100 - sum(distribution)) random.shuffle(distribution) quarry_data = ( "a" + str(distribution[0]) + "c" + str(distribution[1]) + "s" + str(distribution[2]) ) sql.insert( "INSERT INTO `structure` (`type`, `sector_xy`, `loc_xy`, `user_id`, `event_id`, `data`) VALUES (%s, %s, %s, %s, %s, %s)", (type, sector, loc, user_id, event_id, quarry_data), ) else: return {"success": False, "message": "Insufficient resources"} else: return {"success": False, "message": error} if poll_afterwards: return poll.do_poll(user_id, str(last_id) + "^" + sector) else: return {"success": False, "message": "missing client token"} else: return {"success": False, "message": "Cannot build this far from your HQ"}
def award_bytes(user_id, attacked_id, num_bytes): attacked_id = util.parseInt(attacked_id) num_bytes = util.parseInt(num_bytes) if attacked_id <= 0 or num_bytes <= 0: return {'success': False, 'message': "Invalid args"} user_exists = sql.query("SELECT `user_id` FROM `user` WHERE `user_id` = " + str(attacked_id) + " LIMIT 1") if len(user_exists) == 0: return { 'success': False, 'message': "User doesn't exist. Are you a l33t hax0r?" } sql.query("UPDATE `user` SET `research` = `research` + " + str(num_bytes) + " WHERE `user_id` = " + str(user_id) + " LIMIT 1") new_research = sql.query( "SELECT `research` FROM `user` WHERE `user_id` = " + str(user_id) + " LIMIT 1") return {'success': True, 'research': new_research[0]['research']}
def do_build(user_id, client_token, last_id, sector, loc, type, poll_afterwards=True): sector = util.tsanitize(sector) loc = util.tsanitize(loc) last_id = util.parseInt(last_id) verify_position = sql.query("SELECT `hq_sector` FROM `user` WHERE `user_id` = " + str(user_id) + " LIMIT 1") if verify_position[0]['hq_sector'] == sector: if client_token: duplicate = sql.query( 'SELECT `client_token` FROM `event` WHERE `client_token` = %s', (client_token,)) if not duplicate and validate_building(type, sector, loc): error = verify_placement(type, sector, loc) if error == None: if type == 'hq' or try_deplete_resources( user_id, settings.building_cost[type][0], settings.building_cost[type][1], settings.building_cost[type][2], settings.building_cost[type][3], settings.building_cost[type][4], settings.building_cost[type][5]): data = 'Build:%s,%s' % (type, loc) event_id = sql.insert( 'INSERT INTO `event` (`client_token`, `sector_xy`, `user_id`, `data`) VALUES (%s, %s, %s, %s)', (client_token, sector, user_id, data)) quarry_data = '' if type == 'quarry': resources = 'a c s'.split(' ') distribution = [int(random.random() * 101)] rdist = int(random.random() * (100 - distribution[0] + 1)) distribution.append(rdist) distribution.append(100 - sum(distribution)) random.shuffle(distribution) quarry_data = 'a' + str(distribution[0]) + 'c' + str(distribution[1]) + 's' + str(distribution[2]) sql.insert('INSERT INTO `structure` (`type`, `sector_xy`, `loc_xy`, `user_id`, `event_id`, `data`) VALUES (%s, %s, %s, %s, %s, %s)', (type, sector, loc, user_id, event_id, quarry_data)) else: return { 'success': False, 'message': "Insufficient resources" } else: return { 'success': False, 'message': error } if poll_afterwards: return poll.do_poll(user_id, str(last_id) + '^' + sector) else: return { 'success':False, 'message': "missing client token" } else: return { 'success': False, 'message': "Cannot build this far from your HQ" }