echo json_encode($games); } elseif ($action == 'getGame') { $games = getGame($_GET['id']); echo json_encode($games); } elseif ($action == 'createGame') { $resultQuery = mysqli_query($link, "INSERT INTO game VALUES();"); $gameId = mysqli_insert_id($link); $resultQuery = mysqli_query($link, "INSERT INTO gamestatus (gameid, started) VALUES({$gameId}, false);"); if (isset($_GET['type'])) { $sql = "INSERT INTO gametype (gameid, gametype) VALUES({$gameId}, '" . mysqli_real_escape_string($link, $_GET['type']) . "');"; $resultQuery = mysqli_query($link, $sql); } echo json_encode($gameId); } elseif ($action == 'getGameType') { if (isset($_GET['gameid'])) { $gameType = getGameType($_GET['gameid']); echo json_encode($gameType); } else { echo json_encode('A gameid must be set'); } } elseif ($action == 'createUser') { if (isset($_GET['handle'])) { $resultQuery = mysqli_query($link, "SELECT count(*) as count FROM user WHERE handle = '" . mysqli_real_escape_string($link, $_GET['handle']) . "';"); while ($row = $resultQuery->fetch_object()) { $count = $row->count; } if ($count == '0') { $resultQuery = mysqli_query($link, "INSERT INTO user (handle) VALUES('" . mysqli_real_escape_string($link, $_GET['handle']) . "');"); $userId = mysqli_insert_id($link); echo json_encode($userId); } else {
function processServerQuit($key) { global $link; $ip = getenv("REMOTE_ADDR"); if (strlen($key) != 32) { writeError("Invalid data length"); } $sqlServerKey = mysql_escape_string($key); openDatabase(true); #Copy into the archived_game_server table $sql = "insert into archived_game_server (ags_key, ags_ip, ags_port, ags_mapname, ags_password, ags_numbases, ags_numpills, ags_mines, ags_freebases, ags_freepills, ags_numtanks, ags_starttime, ags_firstheard, ags_lastheard, ags_ai , ags_gametype, ags_version) select gs_key, gs_ip, gs_port, gs_mapname, gs_password, gs_numbases, gs_numpills, gs_mines, gs_freebases, gs_freepills, gs_numtanks, gs_starttime, gs_firstheard, gs_lastheard, gs_ai , gs_gametype, gs_version from game_server where gs_key='{$sqlServerKey}'"; $result = mysql_query($sql); if (mysql_affected_rows() != 1) { writeError("<br>Database error"); } $sql = "SELECT gs_gametype from game_server where gs_key = '{$sqlServerKey}'"; $result = mysql_query($sql); $gameType = getGameType(mysql_result($result, 0, "gs_gametype")); #Copy game events into archived_game_events table # Player A and Player B is null $sql = "insert into archived_game_event (age_serverkey, age_eventtype, age_timestamp) select g.ge_serverkey, g.ge_eventtype, g.ge_timestamp from game_event g where g.ge_playera is null and g.ge_playerb is null and g.ge_serverkey = '{$sqlServerKey}' "; $result = mysql_query($sql); # Player A is not null and Player B is null $sql = "insert into archived_game_event (age_serverkey, age_eventtype, age_playera, age_timestamp) select g.ge_serverkey, g.ge_eventtype, a.ap_pid, g.ge_timestamp from game_event g, active_player a where g.ge_playera = a.ap_key and g.ge_playerb is null and g.ge_serverkey = '{$sqlServerKey}'"; $result = mysql_query($sql); # Player A is null and Player B is not null $sql = "insert into archived_game_event (age_serverkey, age_eventtype, age_playerb, age_timestamp) select g.ge_serverkey, g.ge_eventtype, a.ap_pid, g.ge_timestamp from game_event g, active_player a where g.ge_playerb = a.ap_key and g.ge_playera is null and g.ge_serverkey = '{$sqlServerKey}'"; $result = mysql_query($sql); # Player A and Player B are not null $sql = "insert into archived_game_event (age_serverkey, age_eventtype, age_playera, age_playerb, age_timestamp) select g.ge_serverkey, g.ge_eventtype, a.ap_pid, a2.ap_pid, g.ge_timestamp from game_event g, active_player a, active_player a2 where g.ge_playera = a.ap_key and g.ge_playerb = a2.ap_key and g.ge_playerb is not null and g.ge_serverkey = '{$sqlServerKey}'"; $result = mysql_query($sql); # Do stats run # Update number of pill/base/tank takes $sql = "SELECT a.ap_pid, g.ge_eventtype, count(*) as total from game_event g, active_player a where g.ge_serverkey = '{$sqlServerKey}' and g.ge_playera = a.ap_key group by a.ap_pid, g.ge_eventtype"; $playersResult = mysql_query($sql); $rows = mysql_num_rows($playersResult); $count = 0; while ($count < $rows) { $type = mysql_result($playersResult, $count, "ge_eventtype"); $value = mysql_result($playersResult, $count, "total"); $pid = mysql_result($playersResult, $count, "ap_pid"); $proceed = false; if ($type == WINBOLO_NET_EVENT_BASE_CAPTURE || $type == WINBOLO_NET_EVENT_BASE_STEAL) { $event = $gameType . "_num_bases"; $proceed = true; } else { if ($type == WINBOLO_NET_EVENT_PILL_CAPTURE || $type == WINBOLO_NET_EVENT_PILL_STEAL) { $event = $gameType . "_num_pills"; $proceed = true; } else { if ($type == WINBOLO_NET_EVENT_TANK_KILL) { $event = $gameType . "_num_tanks"; $proceed = true; } } } if ($proceed == true) { $sql = "UPDATE stats_player set {$event} = {$event} + {$value} where pid = {$pid}"; $result = mysql_query($sql); } $count++; } #update number of games played $sql = "SELECT distinct ap_pid from active_player where ap_serverkey = '{$sqlServerKey}'"; $playersResult = mysql_query($sql); $rows = mysql_num_rows($playersResult); $count = 0; while ($count < $rows) { $pid = mysql_result($playersResult, $count, "ap_pid"); $fieldName = $gameType . "_num_games"; $sql = "UPDATE stats_player set {$fieldName} = {$fieldName} + 1 where pid = {$pid}"; $result = mysql_query($sql); $count++; } #Calculate Ranks calculateRanks($sqlServerKey); # Insert into the player journal table $sql = "insert into journal (j_key, j_pid) select distinct g.ge_serverkey, a.ap_pid from game_event g, active_player a where g.ge_serverkey = '{$sqlServerKey}' and g.ge_playera = a.ap_key and g.ge_playera is not null;"; $result = mysql_query($sql); # Lastly delete it from the active games list $sql = "delete from game_event where ge_serverkey = '{$sqlServerKey}'"; $result = mysql_query($sql); $sql = "delete from active_player where ap_serverkey = '{$sqlServerKey}'"; $result = mysql_query($sql); $sql = "delete from game_server where gs_key = '{$sqlServerKey}'"; $result = mysql_query($sql); $sql = "delete from active_team where at_serverkey = '{$sqlServerKey}'"; $result = mysql_query($sql); }