Tweak the stats database so that tying stats data to a player is much easier
This commit is contained in:
parent
d87d362d23
commit
61cf387d0d
36
var.py
36
var.py
@ -189,7 +189,14 @@ with conn:
|
|||||||
'teamwins SMALLINT, individualwins SMALLINT, totalgames SMALLINT, '+
|
'teamwins SMALLINT, individualwins SMALLINT, totalgames SMALLINT, '+
|
||||||
'UNIQUE(playerid, roleid))'))
|
'UNIQUE(playerid, roleid))'))
|
||||||
|
|
||||||
c.execute("CREATE TABLE IF NOT EXISTS players (id INTEGER PRIMARY KEY AUTOINCREMENT, cloak TEXT)")
|
|
||||||
|
# create the players table
|
||||||
|
c.execute("CREATE TABLE IF NOT EXISTS players (id INTEGER PRIMARY KEY AUTOINCREMENT, nick TEXT, cloak TEXT, "+
|
||||||
|
"UNIQUE(nick, cloak))")
|
||||||
|
|
||||||
|
|
||||||
|
# create nick change table
|
||||||
|
c.execute("CREATE TABLE IF NOT EXISTS nick_changes (old INTEGER, new INTEGER)")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -202,19 +209,38 @@ def add_away(clk):
|
|||||||
c.execute('INSERT into away VALUES (?)', (clk,))
|
c.execute('INSERT into away VALUES (?)', (clk,))
|
||||||
|
|
||||||
|
|
||||||
|
def record_nick_change(from_nick, to_nick, cloak):
|
||||||
|
with conn:
|
||||||
|
c.execute('SELECT id FROM players WHERE nick=? AND cloak=?', (from_nick, cloak))
|
||||||
|
row = c.fetchone()
|
||||||
|
if not row:
|
||||||
|
return # No records for this player
|
||||||
|
old_plid = row[0]
|
||||||
|
c.execute('INSERT OR IGNORE INTO players (nick, cloak) VALUES (?,?)', (to_nick, cloak))
|
||||||
|
|
||||||
def update_role_stats(clk, role, won, iwon):
|
# create a new entry in the players table for this nick
|
||||||
|
c.execute('SELECT id FROM players WHERE nick=? AND cloak=?', (to_nick, cloak))
|
||||||
|
new_plid = c.fetchone()[0]
|
||||||
|
|
||||||
|
c.execute('SELECT * FROM nick_changes WHERE old=? AND new=?', (new_plid, old_plid))
|
||||||
|
|
||||||
|
if not c.fetchone(): # not recorded yet
|
||||||
|
c.execute('INSERT OR IGNORE INTO nick_changes (old, new) VALUES (?, ?)', (old_plid, new_plid))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def update_role_stats(nick, clk, role, won, iwon):
|
||||||
|
|
||||||
with conn:
|
with conn:
|
||||||
wins, iwins, totalgames = 0, 0, 0
|
wins, iwins, totalgames = 0, 0, 0
|
||||||
|
|
||||||
c.execute('SELECT id FROM players WHERE cloak=?', (clk,))
|
c.execute('SELECT id FROM players WHERE nick=? AND cloak=?', (nick, clk))
|
||||||
row = c.fetchone()
|
row = c.fetchone()
|
||||||
if row:
|
if row:
|
||||||
plid = row[0]
|
plid = row[0]
|
||||||
else:
|
else:
|
||||||
c.execute('INSERT INTO players (cloak) VALUES (?)', (clk,))
|
c.execute('INSERT INTO players (nick, cloak) VALUES (?,?)', (nick, clk))
|
||||||
c.execute('SELECT id FROM players WHERE cloak=?', (clk,))
|
c.execute('SELECT id FROM players WHERE nick=? AND cloak=?', (nick, clk))
|
||||||
plid = c.fetchone()[0]
|
plid = c.fetchone()[0]
|
||||||
|
|
||||||
c.execute('SELECT id FROM roles WHERE role=?', (role,))
|
c.execute('SELECT id FROM roles WHERE role=?', (role,))
|
||||||
|
@ -712,7 +712,7 @@ def stop_game(cli, winner = ""):
|
|||||||
|
|
||||||
iwon = won and plr in var.list_players() # survived, team won = individual win
|
iwon = won and plr in var.list_players() # survived, team won = individual win
|
||||||
|
|
||||||
var.update_role_stats(clk, rol, won, iwon)
|
var.update_role_stats(plr, clk, rol, won, iwon)
|
||||||
|
|
||||||
reset(cli)
|
reset(cli)
|
||||||
|
|
||||||
@ -998,6 +998,8 @@ def on_nick(cli, prefix, nick):
|
|||||||
if prefix == var.ADMIN_TO_PING:
|
if prefix == var.ADMIN_TO_PING:
|
||||||
var.ADMIN_TO_PING = nick
|
var.ADMIN_TO_PING = nick
|
||||||
|
|
||||||
|
var.record_nick_change(prefix, nick, cloak)
|
||||||
|
|
||||||
for k,v in var.ORIGINAL_ROLES.items():
|
for k,v in var.ORIGINAL_ROLES.items():
|
||||||
if prefix in v:
|
if prefix in v:
|
||||||
var.ORIGINAL_ROLES[k].remove(prefix)
|
var.ORIGINAL_ROLES[k].remove(prefix)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user