/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * 10-09-2008 0h57 by Vamps (vamps@alterinet.org) * * */ #include #include #include #include #include #include #include "include/struct.h" #include "include/log.h" /*#define DEBUG */ /* Check if player exist in the table teewars_player * Return positionned row * */ MYSQL_ROW CheckPlayerDB(MYSQL * mysql, char *buf) { char query[SIZE_BUFFER]; MYSQL_RES *res; MYSQL_ROW row; memset(query, 0, SIZE_BUFFER); sprintf(query, "SELECT * FROM teewars_player WHERE name = '%s'", buf); if (mysql_query(mysql, query) != 0) printf("Error in mysql request (SELECT)\n"); res = mysql_store_result(mysql); row = mysql_fetch_row(res); if (row == NULL) { mysql_free_result(res); return NULL; } mysql_free_result(res); return row; } /* Check if the player exist in the table teewars_stats * Return positionned row * */ MYSQL_ROW CheckPlayerStatsDB(MYSQL * mysql, int party_id, int id) { char query[SIZE_BUFFER]; MYSQL_RES *res; MYSQL_ROW row; memset(query, 0, SIZE_BUFFER); sprintf(query, "SELECT * FROM teewars_stats WHERE user = '%d' AND party = '%d'", id, party_id); if (mysql_query(mysql, query) != 0) printf("Error in mysql request (SELECT)\n"); res = mysql_store_result(mysql); row = mysql_fetch_row(res); if (row == NULL) { mysql_free_result(res); return NULL; } mysql_free_result(res); return row; } /* Find the winner * Return id's winner * */ int CheckPlayerWinnerStatsDB(MYSQL * mysql, int party_id) { char query[SIZE_BUFFER]; MYSQL_RES *res; MYSQL_ROW row; int i; int winner; int nb_joueurs; int id_depart; char buffer_tmp[SIZE_BUFFER]; memset(query, 0, SIZE_BUFFER); sprintf(query, "SELECT * FROM teewars_stats WHERE party = '%d'", party_id); if (mysql_query(mysql, query) != 0) printf("Error in mysql request (SELECT)\n"); res = mysql_store_result(mysql); row = mysql_fetch_row(res); nb_joueurs = mysql_num_rows(res); id_depart = atoi(row[0]); memset(buffer_tmp, 0, SIZE_BUFFER); sprintf(buffer_tmp, "%d have play the party %d", nb_joueurs, party_id); PutLog(buffer_tmp); winner = 0; for (i = 0; i < nb_joueurs; i++) { memset(query, 0, SIZE_BUFFER); sprintf(query, "SELECT * FROM teewars_stats WHERE party = '%d' and id='%d'", party_id, (id_depart + i)); if (mysql_query(mysql, query) != 0) printf("Error in mysql request (SELECT)\n"); res = mysql_store_result(mysql); row = mysql_fetch_row(res); if (atoi(row[4]) <= 0); else if (atoi(row[4]) > winner) winner = atoi(row[2]); mysql_free_result(res); } return winner; } /* Create a player in the table teewars_player */ int CreatePlayerDB(MYSQL * mysql, char *buf) { char query[SIZE_BUFFER]; memset(query, 0, SIZE_BUFFER); sprintf(query, "INSERT INTO teewars_player VALUES(NULL,'%s','0','0','0','0')", buf); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (INSERT)\n"); return 1; } return 0; } /* Add a point to a player (teewars_player) */ int AddPlayerKill(MYSQL * mysql, MYSQL_ROW row, char *buf) { char query[SIZE_BUFFER]; #ifdef DEBUG printf("AddPlayerKill(mysql,row,%s) row[2]+1 = %d \n", buf, (atoi(row[2]) + 1)); #endif memset(query, 0, SIZE_BUFFER); sprintf(query, "UPDATE teewars_player SET points='%d' WHERE name='%s'", (atoi(row[2]) + 1), buf); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (UPDATE)\n"); return 1; } return 0; } /* Add a death to a player (teewars_player) */ int AddPlayerDeath(MYSQL * mysql, MYSQL_ROW row, char *buf) { char query[SIZE_BUFFER]; #ifdef DEBUG printf("AddPlayerDeath(mysql,row,%s) row[3]+1 = %d \n", buf, (atoi(row[3]) + 1)); #endif memset(query, 0, SIZE_BUFFER); sprintf(query, "UPDATE teewars_player SET deaths='%d' WHERE name='%s'", (atoi(row[3]) + 1), buf); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (UPDATE)\n"); return 1; } return 0; } /* Add a point to a player (teewars_stats) */ int AddPlayerKillStats(MYSQL * mysql, MYSQL_ROW row, int party_id, int id) { char query[SIZE_BUFFER]; #ifdef DEBUG printf("AddPlayerKillStats(mysql,row,%d,%d) row[4]+1 = %d \n", party_id, id, (atoi(row[4]) + 1)); #endif memset(query, 0, SIZE_BUFFER); sprintf(query, "UPDATE teewars_stats SET points='%d' WHERE user='%d' AND party='%d'", (atoi(row[4]) + 1), id, party_id); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (UPDATE)\n"); return 1; } return 0; } /* Add playing duration to the table teewars_stats */ int AddPlayerPtimeStats(MYSQL * mysql, MYSQL_ROW row, int party_id, int id, int ptime) { char query[SIZE_BUFFER]; #ifdef DEBUG printf("AddPlayerKillStats(mysql,row,%d,%d) row[4]+1 = %d \n", party_id, id, (atoi(row[4]) + 1)); #endif memset(query, 0, SIZE_BUFFER); sprintf(query, "UPDATE teewars_stats SET ptime='%d' WHERE user='%d' AND party='%d'", (atoi(row[6]) + ptime), id, party_id); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (UPDATE)\n"); return 1; } return 0; } /* Remove a kill to a player (suicide) */ int RmPlayerKillStats(MYSQL * mysql, MYSQL_ROW row, int party_id, int id) { char query[SIZE_BUFFER]; #ifdef DEBUG printf("AddPlayerKillStats(mysql,row,%d,%d) row[4]+1 = %d \n", party_id, id, (atoi(row[4]) - 1)); #endif memset(query, 0, SIZE_BUFFER); sprintf(query, "UPDATE teewars_stats SET points='%d' WHERE user='%d' AND party='%d'", (atoi(row[4]) - 1), id, party_id); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (UPDATE)\n"); return 1; } return 0; } /* Add a death to a player (teewars_stats) */ int AddPlayerDeathStats(MYSQL * mysql, MYSQL_ROW row, int party_id, int id) { char query[SIZE_BUFFER]; #ifdef DEBUG printf("AddPlayerDeathStats(mysql,row,%d,%d) row[5]+1 = %d \n", party_id, id, (atoi(row[5]) + 1)); #endif memset(query, 0, SIZE_BUFFER); sprintf(query, "UPDATE teewars_stats SET deaths='%d' WHERE user='%d' AND party='%d'", (atoi(row[5]) + 1), id, party_id); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (UPDATE)\n"); return 1; } return 0; } /* Add player's playing duration */ int AddPlayerPtime(MYSQL * mysql, MYSQL_ROW row, char *buf, double ptime) { char query[SIZE_BUFFER]; memset(query, 0, SIZE_BUFFER); sprintf(query, "UPDATE teewars_player SET ptime='%d' WHERE name='%s'", ((int) (atoi((row[4])) + ptime)), buf); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (UPDATE)\n"); return 1; } return 0; } /* Add the id's winner */ int SetPartyWinner(MYSQL * mysql, int party_id, int id) { char query[SIZE_BUFFER]; memset(query, 0, SIZE_BUFFER); sprintf(query, "UPDATE teewars_party SET winner='%d' WHERE id='%d'", id, party_id); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (UPDATE)\n"); return 1; } return 0; } /* Create new party in the database */ int CreatePartyDB(MYSQL * mysql, struct game *game_t) { char query[SIZE_BUFFER]; PutLog("Create new party in the database"); memset(query, 0, SIZE_BUFFER); sprintf(query, "INSERT INTO teewars_party VALUES(NULL,'0','0','%s','%s','0','0')", game_t->type, game_t->map); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (INSERT)\n"); return 1; } return 0; } /* Add a player to the new party */ int AddPlayerStatsDB(MYSQL * mysql, int party_id, int id) { char query[SIZE_BUFFER]; memset(query, 0, SIZE_BUFFER); sprintf(query, "INSERT INTO teewars_stats VALUES(NULL,'%d','%d','0','0','0','0','0')", party_id, id); if (mysql_query(mysql, query) != 0) { printf("Error in mysql request (INSERT)\n"); return 1; } return 0; } /* Return id of the actual party */ int GetLastIdPartyDB(MYSQL * mysql) { char query[SIZE_BUFFER]; MYSQL_RES *res; MYSQL_ROW row; int i; memset(query, 0, SIZE_BUFFER); sprintf(query, "SELECT id FROM teewars_party ORDER BY id DESC LIMIT 1"); if (mysql_query(mysql, query) != 0) printf("Error in mysql request (SELECT)\n"); res = mysql_store_result(mysql); row = mysql_fetch_row(res); if (row == NULL) { mysql_free_result(res); return 0; } mysql_free_result(res); i = atoi(row[0]); return i; } /* Return id with the name */ int GetIdPlayerDB(MYSQL * mysql, char *buf) { char query[SIZE_BUFFER]; MYSQL_RES *res; MYSQL_ROW row; int i; memset(query, 0, SIZE_BUFFER); sprintf(query, "SELECT id FROM teewars_player WHERE name='%s'", buf); if (mysql_query(mysql, query) != 0) printf("Error in mysql request (SELECT)\n"); res = mysql_store_result(mysql); row = mysql_fetch_row(res); if (row == NULL) { mysql_free_result(res); return -1; } i = atoi(row[0]); mysql_free_result(res); return i; }