Example #1
0
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" }