/* ================== G_WriteSessionData ================== */ void G_WriteSessionData(void) { char map[ MAX_STRING_CHARS ]; int i; //int record = 0; int gameid = 0; char data[ 255 ]; trap_Cvar_VariableStringBuffer("mapname", map, sizeof ( map)); //TA: ? trap_Cvar_Set("session", va("%i", 0)); if(g_survival.integer && level.survivalRecordsBroke[0] > 0 && level.survivalRecordTime > 0 && !level.mysqlupdated) { if(trap_mysql_runquery(va("INSERT HIGH_PRIORITY INTO games (map,time) VALUES (\"%s\",\"%d\")", map, level.survivalRecordTime)) == qtrue) { trap_mysql_finishquery(); if(trap_mysql_runquery("SELECT id FROM games ORDER BY id desc LIMIT 1") == qtrue) { if(trap_mysql_fetchrow() == qtrue) { trap_mysql_fetchfieldbyName("id", data, sizeof(data)); gameid = atoi(data); } } } trap_mysql_finishquery(); } //trap_SendServerCommand( -1, va("print \"^5Game id: %d\n\"",gameid) ); for (i = 0; i < level.maxclients; i++) { if (level.clients[ i ].pers.connected == CON_CONNECTED) G_WriteClientSessionData(&level.clients[ i ]); if(!g_survival.integer) continue; if(level.clients[i].pers.mysqlid > 0 && gameid > 0 && !level.mysqlupdated) { if(trap_mysql_runquery(va("UPDATE players set lasttime=NOW() WHERE id = \"%d\" LIMIT 1", level.clients[i].pers.mysqlid)) == qtrue) { // trap_SendServerCommand( -1, va("print \"^5Update player date %d\n\"",gameid) ); trap_mysql_finishquery(); } if(trap_mysql_runquery(va("INSERT HIGH_PRIORITY INTO players_game (idgame,idplayer,timealive) VALUES (%d,%d,%d)", gameid, level.clients[i].pers.mysqlid, level.clients[i].pers.lastdeadtime)) == qtrue) { //trap_SendServerCommand( -1, va("print \"^5Insert players_game relation %d\n\"",gameid) ); trap_mysql_finishquery(); } } } if(g_survival.integer && level.survivalRecordTime > 0 && !level.mysqlupdated) { trap_SendServerCommand( -1, "print \"^5Records stored on the server.\n\"" ); } level.mysqlupdated = 1; }
//WHITELIST FUNCTIONS void G_globalAddToWhitelist(gentity_t *ent, gentity_t *victim, char *who, char *reason, char *ip, char *guid) { whitelist_t *temp = G_Alloc(sizeof(whitelist_t)); char data[255]; G_Printf("Add whitelist called\n"); Q_strncpyz(temp->adminName, (G_isPlayerConnected(ent)) ? ent->client->pers.netname : "console", sizeof(temp->adminName)); Q_strncpyz(temp->playerName, (G_isPlayerConnected(victim)) ? victim->client->pers.netname : "UnnamedPlayer", sizeof(temp->playerName)); Q_strncpyz(temp->guid, (guid) ? guid : "", sizeof(temp->guid)); Q_strncpyz(temp->ip, (ip) ? ip : "", sizeof(temp->ip)); Q_strncpyz(temp->reason, (reason) ? reason : "", sizeof(temp->reason)); if (trap_mysql_runquery(va("INSERT HIGH_PRIORITY INTO whitelist" " (ip,guid,playerid,playername,adminid,adminname,reason) " " VALUES (\"%s\",\"%s\",\"%d\",\"%s\",\"%d\",\"%s\",\"%s\") ", temp->ip, temp->guid, (G_isPlayerConnected(victim) ? victim->client->pers.mysqlid : -1), (G_isPlayerConnected(victim) ? victim->client->pers.netname : "UnnamedPlayer"), (G_isPlayerConnected(ent) ? ent->client->pers.mysqlid : -1), (G_isPlayerConnected(ent) ? ent->client->pers.netname : "console"), temp->reason)) == qtrue) { trap_mysql_finishquery(); AP( va( "print \"^3%s:^7 have been added to white list by %s reason: %s \n\"", (G_isPlayerConnected(victim) ? victim->client->pers.netname : ip), (G_isPlayerConnected(ent)) ? ent->client->pers.netname : "console", reason)); G_LogPrintf("^3%s:^7 have been added to white list by %s reason: %s \n", (G_isPlayerConnected(victim) ? victim->client->pers.netname : ip), (G_isPlayerConnected(ent)) ? ent->client->pers.netname : "console", reason); if (trap_mysql_runquery(va("SELECT HIGH_PRIORITY id FROM whitelist ORDER BY id DESC LIMIT 1")) == qtrue) { if (trap_mysql_fetchrow() == qtrue) { trap_mysql_fetchfieldbyName("id", data, sizeof(data)); trap_mysql_finishquery(); temp->id = atoi(data); } else { G_LogPrintf("WARNING: Couldnt insert whitelist to database\n"); if (level.whitelist) { temp->id = level.globals->id + 1; } else { temp->id = 1; } } } } temp->next = level.whitelist; level.whitelist = temp; }
void G_globalInit() { char data[255]; global_t *temp = NULL; whitelist_t *whitelisttemp = NULL; level.globals = NULL; level.whitelist = NULL; if (trap_mysql_runquery(va("SELECT HIGH_PRIORITY * FROM globals ORDER BY id ASC")) == qtrue) { while (trap_mysql_fetchrow() == qtrue) { temp = G_Alloc(sizeof(global_t)); trap_mysql_fetchfieldbyName("id", data, sizeof(data)); temp->id = atoi(data); trap_mysql_fetchfieldbyName("adminname", temp->adminName, sizeof(temp->adminName)); trap_mysql_fetchfieldbyName("ip", temp->ip, sizeof(temp->ip)); trap_mysql_fetchfieldbyName("guid", temp->guid, sizeof(temp->guid)); trap_mysql_fetchfieldbyName("name", temp->playerName, sizeof(temp->playerName)); trap_mysql_fetchfieldbyName("reason", temp->reason, sizeof(temp->reason)); trap_mysql_fetchfieldbyName("server", temp->server, sizeof(temp->server)); trap_mysql_fetchfieldbyName("subnet", data, sizeof(data)); temp->subnet = atoi(data); trap_mysql_fetchfieldbyName("type", data, sizeof(data)); temp->type = atoi(data); temp->next = level.globals; level.globals = temp; } trap_mysql_finishquery(); } else { G_LogPrintf("Query Failed on GlobalInit, data base is probably disconnected, try !reconnectdb\n"); } if (trap_mysql_runquery(va("SELECT HIGH_PRIORITY * FROM whitelist ORDER BY id ASC")) == qtrue) { while (trap_mysql_fetchrow() == qtrue) { whitelisttemp = G_Alloc(sizeof(whitelist_t)); trap_mysql_fetchfieldbyName("id", data, sizeof(data)); whitelisttemp->id = atoi(data); trap_mysql_fetchfieldbyName("adminname", whitelisttemp->adminName, sizeof(whitelisttemp->adminName)); trap_mysql_fetchfieldbyName("ip", whitelisttemp->ip, sizeof(whitelisttemp->ip)); trap_mysql_fetchfieldbyName("guid", whitelisttemp->guid, sizeof(whitelisttemp->guid)); trap_mysql_fetchfieldbyName("playername", whitelisttemp->playerName, sizeof(whitelisttemp->playerName)); trap_mysql_fetchfieldbyName("reason", whitelisttemp->reason, sizeof(whitelisttemp->reason)); whitelisttemp->next = level.whitelist; level.whitelist = whitelisttemp; } trap_mysql_finishquery(); } }
int G_globalAdd(gentity_t *adminEnt, gentity_t *victimEnt, char *guid, char *ip, char *playerName, char *reason, int subnet, char *date, globalType_t type) { global_t *temp = G_Alloc(sizeof(global_t)); char newDate[11]; char newPlayerName[MAX_NAME_LENGTH]; char newGuid[33]; char data[255]; //DATE if (date == NULL) { qtime_t qt; int t; t = trap_RealTime(&qt); Q_strncpyz(newDate, va("%04i-%02i-%02i", qt.tm_year + 1900, qt.tm_mon + 1, qt.tm_mday), 11); } else { Q_strncpyz(newDate, date, 11); } //PLAYERNAME if (playerName == NULL) { Q_strncpyz(newPlayerName, va("%s", "UnnamedPlayer"), MAX_NAME_LENGTH); } else { Q_strncpyz(newPlayerName, playerName, MAX_NAME_LENGTH); } //GUID if (guid == NULL) { Q_strncpyz(newGuid, va("%s", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"), 33); } else { Q_strncpyz(newGuid, guid, 33); } //Setting Q_strncpyz(temp->guid, newGuid, 33); Q_strncpyz(temp->ip, ip, 16); Q_strncpyz(temp->playerName, newPlayerName, MAX_NAME_LENGTH); Q_strncpyz(temp->server, va("%s","z"), 2); Q_strncpyz(temp->adminName, (G_isPlayerConnected(adminEnt)) ? adminEnt->client->pers.netname : "console", MAX_NAME_LENGTH); Q_strncpyz(temp->reason, reason, MAX_STRING_CHARS); temp->subnet = subnet; temp->type = type; if (trap_mysql_runquery(va("INSERT HIGH_PRIORITY INTO globals" " (playerid,adminid,adminname,ip,guid,name,reason,subnet,type,server) " " VALUES (\"%d\",\"%d\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%d\",\"%d\",\"x\") ", (G_isPlayerConnected(victimEnt) ? victimEnt->client->pers.mysqlid : -1), (G_isPlayerConnected(adminEnt) ? adminEnt->client->pers.mysqlid : -1), (G_isPlayerConnected(adminEnt) ? adminEnt->client->pers.netname : "console"), temp->ip, temp->guid, temp->playerName, temp->reason, temp->subnet, temp->type)) == qtrue) { trap_mysql_finishquery(); if (trap_mysql_runquery(va("SELECT HIGH_PRIORITY id FROM globals ORDER BY id DESC LIMIT 1")) == qtrue) { if (trap_mysql_fetchrow() == qtrue) { trap_mysql_fetchfieldbyName("id", data, sizeof(data)); trap_mysql_finishquery(); temp->id = atoi(data); } else { G_LogPrintf("Couldnt insert global to database\n");//va("Hacked client tried to connect guid: %s ip: %s\n", guid, ip) ); if (level.globals) { temp->id = level.globals->id + 1; } else { temp->id = 1; } } } } temp->next = level.globals; level.globals = temp; return temp->id; }
/* ================== G_WriteSessionData ================== */ void G_WriteSessionData(void) { char map[ MAX_STRING_CHARS ]; int i; //int record = 0; int gameid = 0; int j; char data[ 255 ]; trap_Cvar_VariableStringBuffer("mapname", map, sizeof ( map)); //TA: ? trap_Cvar_Set("session", va("%i", 0)); trap_SendServerCommand( -1, "print \"^2Syncing with database\n\"" ); for( i = 0 ; i < level.maxclients ; i++ ) { if( level.clients[ i ].pers.connected == CON_CONNECTED ) { G_WriteClientSessionData( &level.clients[ i ] ); //Update mysql stuff here to. if(level.clients[ i ].pers.mysqlid > 1) { //level.clients[ i ].pers.playerlevel = G_EvalPlayerLevel( (level.clients[ i ].pers.statscounters.kills + level.clients[ i ].pers.totalkills), (level.clients[ i ].pers.statscounters.deaths + level.clients[ i ].pers.totaldeaths)); if (!level.clients[ i ].pers.playerlevel) level.clients[ i ].pers.playerlevel= 0; level.clients[ i ].pers.timeplayed += (level.time - level.clients[ i ].pers.enterTime) / 60000; //Minutes played level.clients[ i ].pers.structsbuilt += level.clients[ i ].pers.statscounters.structsbuilt; //level.clients[ i ].pers.structskilled += level.clients[ i ].pers.statscounters.structskilled; don't count anything but nodes if(level.clients[ i ].pers.teamSelection == PTE_HUMANS) { level.clients[ i ].pers.credits+=level.clients[ i ].ps.persistant[ PERS_CREDIT ]; } if(level.clients[ i ].pers.teamSelection == PTE_ALIENS) { level.clients[ i ].pers.evos = 0; } /* Badge related stuff */ if(level.clients[ i ].pers.teamSelection == level.lastWin) { level.clients[ i ].pers.gameswin += 1; } /************************IF MAZE for BADGES************************************/ //16 Zombie Bait Die 200 times if ( (level.clients[ i ].pers.badges[ 16 ] != 1) && ((level.clients[ i ].pers.totaldeaths + level.clients[ i ].pers.statscounters.deaths) >= 200) ) { level.clients[ i ].pers.badgeupdate[16] = 1; level.clients[ i ].pers.badges[16] = 1; } //17 Champion Win 500 games if ( (level.clients[ i ].pers.badges[ 17 ] != 1) && (level.clients[ i ].pers.gameswin >= 500) ) { level.clients[ i ].pers.badgeupdate[17] = 1; level.clients[ i ].pers.badges[17] = 1; } //19 Axe Me a Question Only get axe kills for an entire round if ( (level.clients[ i ].pers.badges[ 19 ] != 1) && (level.clients[ i ].pers.statscounters.kills > 0) && (level.clients[ i ].pers.statscounters.kills == level.clients[ i ].pers.axekills) ) { level.clients[ i ].pers.badgeupdate[19] = 1; level.clients[ i ].pers.badges[19] = 1; } //26 Eradication Kill 200 zombie nodes if ( (level.clients[ i ].pers.badges[ 26 ] != 1) && (level.clients[ i ].pers.structskilled >= 200) ) { level.clients[ i ].pers.badgeupdate[26] = 1; level.clients[ i ].pers.badges[26] = 1; } //30 Wingman Get 200 assists in one round if ( (level.clients[ i ].pers.badges[ 30 ] != 1) && (level.clients[ i ].pers.statscounters.assists >= 200) ) { level.clients[ i ].pers.badgeupdate[30] = 1; level.clients[ i ].pers.badges[30] = 1; } //31 Humanitarian Make it the first 10 minutes in a survival round without killing a single zombie if ( (level.clients[ i ].pers.badges[ 31 ] != 1) && (level.time >= 600000) && (level.clients[ i ].pers.statscounters.kills = 0)) { level.clients[ i ].pers.badgeupdate[31] = 1; level.clients[ i ].pers.badges[31] = 1; } //38 Flawless Make it an entire round without being hurt, and get at least 20 kills (so we know you aren't just hanging around base. =]) if ((level.clients[ i ].pers.badges[ 38 ] != 1) && (level.clients[ i ].pers.statscounters.kills >= 20) && !level.clients[ i ].pers.lastDamaged) { level.clients[ i ].pers.badgeupdate[38] = 1; level.clients[ i ].pers.badges[38] = 1; } /*************************************************************/ //Would be better if i runquery just one time instead of one per client. if( trap_mysql_runquery( va("UPDATE zplayers SET kills=\"%d\",deaths=\"%d\",pistolkills=\"%d\",timeplayed=\"%d\",adminlevel=\"%d\",playerlevel=\"%d\",lasttime=NOW(),gameswin=\"%d\",structsbuilt=\"%d\",structskilled=\"%d\" WHERE id=\"%d\" LIMIT 1",(level.clients[ i ].pers.statscounters.kills + level.clients[ i ].pers.totalkills), (level.clients[ i ].pers.statscounters.deaths + level.clients[ i ].pers.totaldeaths), level.clients[ i ].pers.pistolkills, level.clients[ i ].pers.timeplayed, level.clients[ i ].pers.adminlevel, level.clients[ i ].pers.playerlevel, level.clients[ i ].pers.gameswin, level.clients[ i ].pers.structsbuilt, level.clients[ i ].pers.structskilled, level.clients[ i ].pers.mysqlid ) ) == qtrue ) { trap_mysql_finishquery(); //Lets update the badges. //FIX ME: WTF LOL DOUBLE LOOPED UNECESARY for(j=1;j<49;j++) { if(level.clients[ i ].pers.badgeupdate[j] == 1) { if(trap_mysql_runquery( va("INSERT HIGH_PRIORITY INTO zbadges_player (idplayer,idbadge) VALUES (\"%d\",\"%d\")", level.clients[ i ].pers.mysqlid, j ) ) == qtrue) { trap_mysql_finishquery(); } else { trap_mysql_finishquery(); } } } } else { trap_mysql_finishquery(); } } } } trap_SendServerCommand( -1, "print \"^5Data updated\n\"" ); if(g_survival.integer && level.survivalRecordsBroke[0] > 0 && level.survivalRecordTime > 0 && !level.mysqlupdated) { if(trap_mysql_runquery(va("INSERT HIGH_PRIORITY INTO zgames (map,time) VALUES (\"%s\",\"%d\")", map, level.survivalRecordTime)) == qtrue) { trap_mysql_finishquery(); if(trap_mysql_runquery("SELECT id FROM zgames ORDER BY id desc LIMIT 1") == qtrue) { if(trap_mysql_fetchrow() == qtrue) { trap_mysql_fetchfieldbyName("id", data, sizeof(data)); gameid = atoi(data); } } } trap_mysql_finishquery(); } //trap_SendServerCommand( -1, va("print \"^5Game id: %d\n\"",gameid) ); for (i = 0; i < level.maxclients; i++) { if (level.clients[ i ].pers.connected == CON_CONNECTED) G_WriteClientSessionData(&level.clients[ i ]); if(!g_survival.integer) continue; if(level.clients[i].pers.mysqlid > 0 && gameid > 0 && !level.mysqlupdated) { if(trap_mysql_runquery(va("UPDATE zplayers set lasttime=NOW() WHERE id = \"%d\" LIMIT 1", level.clients[i].pers.mysqlid)) == qtrue) { // trap_SendServerCommand( -1, va("print \"^5Update player date %d\n\"",gameid) ); trap_mysql_finishquery(); } if(trap_mysql_runquery(va("INSERT HIGH_PRIORITY INTO zplayers_game (idgame,idplayer,timealive) VALUES (%d,%d,%d)", gameid, level.clients[i].pers.mysqlid, level.clients[i].pers.lastdeadtime)) == qtrue) { //trap_SendServerCommand( -1, va("print \"^5Insert players_game relation %d\n\"",gameid) ); trap_mysql_finishquery(); } } } if(g_survival.integer && level.survivalRecordTime > 0 && !level.mysqlupdated) { trap_SendServerCommand( -1, "print \"^5Records stored on the server.\n\"" ); } level.mysqlupdated = 1; }