Exemplo n.º 1
0
     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 {
Exemplo n.º 2
0
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);
}