예제 #1
0
def moved_players_with_powers(cursor):
	player_list = _players_that_moved_team(cursor)
	player_dict = player_q.get_all_players(cursor)
	
	output = []
	
	query = """SELECT p.id, w.name
		FROM players p, powers w
			WHERE p.id = w.player
				AND p.id in ({players})
				AND w.type = {standard}""".format(
		players = ",".join(player_list),
		standard=power.power_types.index("Standard"),
	)
	try: cursor.execute(query)
	except Exception as e:
		raise Exception("Database error: %s\nQuery: %s" % (str(e.args[0]).replace("\n",""), query))
	for row in cursor:
		output.append("%s (%s): %s" % (player_dict[row['id']].name, row['id'], row['name']))
	
	if output != []:
		output.insert(0, "[r]Players with powers that moved team[/r]")
		output.append("")
	
	return "\n".join(output)
예제 #2
0
def _players_that_moved_team(cursor):
	player_history = {}
	player_dict = player_q.get_all_players(cursor)
	
	# Get last two turns of data
	query = """SELECT * FROM player_history WHERE turn >= %d""" % (common.current_turn()-2)
	try: cursor.execute(query)
	except Exception as e:
		raise Exception("Database error: %s\nQuery: %s" % (str(e.args[0]).replace("\n",""), query))
	for row in cursor:
		if row['player'] not in player_dict: continue
		if player_dict[row['player']].last_posted <= common.current_turn()-6: continue
		
		if row['player'] not in player_history:
			player_history[row['player']] = {}
		player_history[row['player']][row['turn']] = row['team']
	
	# import pprint
	# pprint.pprint(player_history)
	
	# Now find players that don't match up
	t1 = common.current_turn()-2
	t2 = common.current_turn()-1
	moved_players = []
	for p, d in player_history.items():
		if d.get(t1, 0) != d.get(t2, -1):
			# print("%s moved from %s to %s" % (player_dict[p].name, d.get(t1, 0), d.get(t2, -1)))
			moved_players.append(str(p))
	
	return moved_players
예제 #3
0
def main(cursor):
	player_dict = player_q.get_all_players(cursor)
	
	getter_data = "p=%s&mode=surplus_accounts" % (common.data['getterPass'])
	surplus_list = urllib.request.urlopen(common.data['getter_url'], getter_data).read().strip()
	surplus_list = surplus_list.decode('utf-8').split("\n")
	surplus_list = [int(s) for s in surplus_list]
	
	output = ["""<div style='padding:5px;'>
	<table border="0" cellspacing="0" cellpadding="5">
		<tr class="row2">
			<th>Player</th>
			<th>Edit</th>
		</tr>
	"""]
	
	i = -1
	for s in surplus_list:
		if s not in player_dict: continue
		p = player_dict[s]
		
		if p.ir or p.not_surplus: continue
		
		i += 1
		
		# Equipment output
		output.append("""
		<tr class="row{r}">
			<td><a href="http://woarl.com/board/memberlist.php?mode=viewprofile&amp;u={id}">{name}</a></td>
			<td style="padding:0px;"><a href="web.py?mode=edit_player&amp;player={id}" class="block_link">Edit</a></td>
		</tr>
		""".format(
			r = i % 2,
			id = s,
			name = p.name,
		))
	
	output.append('</table></div>')
	
	return "".join(output)
예제 #4
0
def main(cursor):
	player_id	= int(common.get_val('player', 0))
	killer		= int(common.get_val('killer', 0))
	victim		= int(common.get_val('victim', 0))
	battle_id	= int(common.get_val('battle', 0))
	ajax		= bool(common.get_val('ajax', False))
	
	battle_dict = battle_q.get_all_battles(cursor)
	player_dict = player_q.get_all_players(cursor)
	active_dict = player_q.get_active_players(cursor)
	
	battle_dict[0] = battle.Battle({"name":"None"})
	
	if killer > 0:
		kill_list = player_q.get_kills(cursor, killer=killer)
	elif victim > 0:
		kill_list = player_q.get_kills(cursor, victim=victim)
	elif battle_id > 0:
		kill_list = player_q.get_kills(cursor, battle=battle_id)
	else:
		kill_list = player_q.get_kills(cursor)
	
	output = []
	
	output.append("""
	<table border="0" cellspacing="0" cellpadding="5" style="width: 100%;">
		<tr class="row2">
			<th>Killer</th>
			<th>Victim</th>
			<th>Battle</th>
			<th>Turn</th>
			<th>&nbsp;</th>
		</tr>""")
	
	count = -1
	for kill in kill_list:
		count += 1
		
		output.append("""
		<tr class="row%(row)d">
			<td><a href="web.py?mode=edit_player&amp;player=%(k_id)s">%(killer)s</a></td>
			<td><a href="web.py?mode=edit_player&amp;player=%(v_id)s">%(victim)s</a></td>
			<td>%(battle)s <em>(%(c_id)s)</em></td>
			<td>%(turn)s</td>
			
			<td style="padding: 0px;"><a class="block_link" href="exec.py?mode=remove_kill&amp;victim=%(v_id)s&amp;killer=%(k_id)s&amp;turn=%(turn)s&amp;battle=%(c_id)s%(p_id)s">Remove</a></td>
		</tr>
		""" % {	'row': (count % 2),
				
				'v_id':			kill['victim'],
				'k_id':			kill['killer'],
				'c_id':			kill['battle'],
				'p_id':			("&amp;player=%d" % player_id if player_id > 0 else ""),
				
				'killer':		player_dict[kill['killer']].name,
				'victim':		player_dict[kill['victim']].name,
				"battle":		battle_dict[kill['battle']].name,
				
				'turn':			kill['turn'],
			})
	
	# Add new power
	names = {}
	for p, the_p in active_dict.items():
		names[p] = the_p.name
	
	if not ajax:
		onload = common.onload("$('#killer').focus();")
	else:
		onload = ""
	
	count += 1
	output.append("""
	<tr class="row%(row)d">
		<form action="exec.py" id="add_kill_form" method="post" accept-charset="utf-8">
		<td style="padding: 1px;">%(killer)s</td>
		<td style="padding: 1px;">%(victim)s</td>
		<td style="padding: 0px;">%(battle)s</td>
		<td style="padding: 0px;">%(turn)s</td>
		
		<td style="padding: 1px;">
			<input type="hidden" name="mode" value="add_kill" />
			%(player_id)s
			<input type="submit" value="Add" />
		</td>
		</form>
		%(onload)s
	</tr>
	""" % {	'row': (count % 2),
			'killer':	common.option_box(
				name='killer',
				elements=names,
				element_order=active_dict.keys(),
				selected = killer if killer > 0 else "",
			),
			'victim':	common.option_box(
				name='victim',
				elements=names,
				element_order=active_dict.keys(),
				selected = victim if victim > 0 else "",
			),
			"turn":		'<input type="text" name="turn" id="turn" value="%d" />' % common.current_turn(),
			"battle":	'<input type="text" name="battle" id="battle" value="%d" />' % battle_id,
			"onload":	onload,
			"player_id": ('<input type="hidden" name="player" value="%d" />' % player_id if player_id > 0 else ""),
			})
	
	output.append("</table>")
	return "".join(output)
예제 #5
0
def main(cursor):
	team_id = int(common.get_val('team', 0))
	
	if team_id < 1:
		player_dict = player_q.get_all_players(cursor)
	else:
		player_dict = player_q.get_players_from_team(cursor, team_id)
	
	team_dict = team_q.get_all_teams(cursor)
	
	last_turn_count = 0
	last_three_turns_count = 0
	
	output = [""]# That's later swapped out for something else
	output.append('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="web.py?mode=get_players">Get new players</a>')
	
	output.append("""
	<table border="0" cellspacing="0" cellpadding="5" style="width: 100%;">
		<tr class="row2">
			<th>Player name</th>
			<th>Team</th>
			<th>Last posted</th>
			<th>Daemonic</th>
			<th colspan="2">&nbsp;</th>
		</tr>""")
	
	current_turn = common.current_turn()
	count = -1
	if len(player_dict) > 0:
		for player_id, the_player in player_dict.items():
			if the_player.last_posted >= current_turn:
				last_turn_count += 1
			if the_player.last_posted >= current_turn-3:
				last_three_turns_count += 1
			
			count += 1
			
			if the_player.team in team_dict:
				team_name = team_dict[the_player.team].name
			else:
				team_name = "None"
			
			output.append("""
			<tr class="row%(row)d" id="%(player_id)d">
				<td>%(name)s</td>
				<td>%(team)s</td>
				<td>%(daemon)s</td>
				<td>%(last_posted)s</td>
				<td style="padding:0px;"><a href="http://woarl.com/board/ucp.php?i=pm&mode=compose&u=%(player_id)s" class="block_link">PM</a></td>
				<td style="padding: 0px;"><a class="block_link" href="web.py?mode=edit_player&amp;player=%(player_id)d">Edit</a></td>
			</tr>
			""" % { 'row': (count % 2),
				
					'player_id':		the_player.id,
					'name':		the_player.name,
					'team':				team_name,
					'last_posted':		the_player.last_posted,
					"daemon":			"%s, %s" % (player.progressions[the_player.progression], player.daemon_types[the_player.daemon_type]),
				})

	output.append("</table>")
	
	output[0] = "Last turn: %s, Last 3 turns: %s" % (last_turn_count, last_three_turns_count)

	return "".join(output)
예제 #6
0
파일: edit_power.py 프로젝트: Teifion/Rob3
def main(cursor):
	power_id	= int(common.get_val('power', 0))
	
	if power_id < 1:
		return "No power selected"
	
	the_power = power_q.get_one_power(cursor, power_id)
	
	output = ["<div style='padding: 5px;'>"]
	
	# Used for the player select menu
	player_dict = player_q.get_all_players(cursor)
	recent_dict = player_q.get_active_players(cursor)
	
	names = {}
	for p in recent_dict.keys():
		names[p] = player_dict[p].name
	
	if the_power.player not in names:
		# recent_dict[the_power.id] = the_power.player
		names[the_power.player] = player_dict[the_power.player].name
	
	
	output.append("""
	<form action="exec.py" method="post" accept-charset="utf-8">
		<input type="hidden" name="mode" id="mode" value="edit_power_commit" />
		<input type="hidden" name="id" id="id" value="%(power_id)s" />
	
		<table border="0" cellspacing="5" cellpadding="5">
			<tr>
				<td><label for="name">Name:</label></td>
				<td>%(name_text)s</td>
			
				<td width="5">&nbsp;</td>
			
				<td><label for="player">Player:</label></td>
				<td>%(player_select)s</td>
			</tr>
			<tr>
				<td><label for="type">Type:</label></td>
				<td>%(type)s</td>
			
				<td width="5">&nbsp;</td>
			
				<td>&nbsp;</td>
				<td>&nbsp;</td>
			</tr>
			<tr>
				<td colspan="5"><label for="description">Description:</label><br />
				<textarea name="description" rows="4" cols="60">%(description)s</textarea></td>
			</tr>
		</table>
		<br />
		<input type="submit" value="Perform edit" />
	</form>
	<br /><br />""" % {
		"power_id":			power_id,
		"name":		the_power.name,
		"description":		the_power.description,
		"name_text":	common.text_box("name", the_power.name, size=20),
		"player_select":	common.option_box(
			name='player',
			elements=names,
			element_order=recent_dict.keys(),
			selected=the_power.player,
			custom_id="",
		),
		"type":	common.option_box(
			name='type',
			elements=power.power_types,
			selected=power.power_types[the_power.type],
		),
	})


	# End of padding
	output.append("</div>")

	return "".join(output)
예제 #7
0
파일: list_powers.py 프로젝트: Teifion/Rob3
def main(cursor):
	player_id	= int(common.get_val('player', 0))
	ajax		= bool(common.get_val('ajax', False))
	
	if player_id < 1:
		power_dict = power_q.get_all_powers(cursor)
	else:
		power_dict = power_q.get_powers_from_player(cursor, player_id)
	
	player_dict	= player_q.get_all_players(cursor)
	
	player_dict[0] = player.Player()
	player_dict[0].name = "None"
	
	output = []
	
	output.append("""
	<table border="0" cellspacing="0" cellpadding="5" style="width: 100%;">
		<tr class="row2">
			<th>Power name</th>
			<th>Player</th>
			<th>Type</th>
			<th>Description</th>
			<th>&nbsp;</th>
		</tr>""")
	
	count = -1
	if len(power_dict) > 0:
		for power_id, the_power in power_dict.items():
			count += 1
			
			output.append("""
			<tr class="row%(row)d" id="%(power_id)d">
				<td>%(name)s</td>
				<td>%(player_name)s</td>
				<td>%(type)s</td>
				<td>%(description)s</td>
				
				<td style="padding: 0px;"><a class="block_link" href="web.py?mode=edit_power&amp;power=%(power_id)d">Edit</a></td>
			</tr>
			""" % {	'row': (count % 2),
				
					'power_id':		the_power.id,
					'name':			the_power.name,
					"type":			power.power_types[the_power.type],
					'player_name':	player_dict[the_power.player].name,
					'description':	the_power.description,
				})
	
	# Add new power
	names = {}
	for p, the_p in player_dict.items():
		names[p] = the_p.name
	
	# players_order.insert(0, 2)
	# names[2] = "Teifion"
	
	# ajax = bool(common.get_val('ajax', False))
	if not ajax:
		onload = common.onload("$('#new_name').focus();")
	else:
		onload = ""
	
	count += 1
	output.append("""
	<tr class="row%(row)d">
		<form action="exec.py" id="add_power_form" method="post" accept-charset="utf-8">
		<input type="hidden" name="mode" value="add_power" />
		<td style="padding: 1px;"><input type="text" name="name" id="new_name" value="" size="12"/></td>
		<td style="padding: 1px;">%(player_menu)s</td>
		<td style="padding: 1px;">%(type)s</td>
		<td style="padding: 1px;"><input type="text" name="power_description" value="" style="width: 98%%;" /></td>
	
		<td style="padding: 1px;"><input type="submit" value="Continue &rarr;" /></td>
		</form>
		%(onload)s
	</tr>
	""" % {	'row': (count % 2),
			'player_menu':	common.option_box(
				name='player',
				elements=names,
				element_order=player_dict.keys(),
				custom_id="",
			),
			"type":	common.option_box(
				"type",
				power.power_types,
			),
			"onload":	onload,
			})
	
	output.append("</table>")
	return "".join(output)