sábado, 25 de maio de 2013

0 [SQLite] Deathmatch (Básico)

Mais um script que desenvolvi explorando o SQLite.
Sem maiores explicações, aqui está.


Código:

pawn Code:
#include <a_samp> /* -----------------------------         Deathmatch 1.0             por Pedro Miranda     Skype: pedro.miranda91 ----------------------------- */ main(); new DB:main_database; enum {     DIALOG_REGISTER,     DIALOG_LOGIN,     DIALOG_RANKING } public OnGameModeInit() {     main_database = db_open("sqlite.db");     db_query(main_database, "CREATE TABLE IF NOT EXISTS `player_info` (`name`, `password`, `money`, `kills`, `deaths`)");     SendRconCommand("mapname Los Santos");     SendRconCommand("gamemodetext DM 1.0");     SendRconCommand("hostname Deathmatch 1.0");     for(new i; i < 300; ++i)         AddPlayerClass(i, 2232.2813, -1158.4985, 29.7969, 0.3858, 24, 9999, 25, 9999, 34, 9999);     UsePlayerPedAnims();     return true; } public OnGameModeExit() {     db_close(main_database);     return true; } public OnPlayerConnect(playerid) {     new         playername[25],         stringoutput[128],         DBResult:queryresult;     GetPlayerName(playerid, playername, sizeof playername);     format(stringoutput, sizeof stringoutput, "SELECT * FROM `player_info` WHERE `name` = '%s'", DB_Escape(playername));     queryresult = db_query(main_database, stringoutput);     if(db_num_rows(queryresult)) {         format(stringoutput, sizeof stringoutput, "{ffffff}Olá, {1e90ff}%s{ffffff}!\n\nDigite sua senha abaixo para logar.", playername);         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", stringoutput, "Login", "Sair");     }     else {         format(stringoutput, sizeof stringoutput, "{ffffff}Olá, {1e90ff}%s{ffffff}!\nVocê ainda não é registrado no servidor.\n\nDigite uma senha abaixo para se registrar.", playername);         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{ffffff}Registro", stringoutput, "Registrar", "Sair");     }     db_free_result(queryresult);     return true; } public OnPlayerDisconnect(playerid, reason) {     if(GetPVarInt(playerid, "playerLogged")) {         new playername[25], stringoutput[150];         GetPlayerName(playerid, playername, sizeof playername);         format(stringoutput, sizeof stringoutput, "UPDATE player_info SET money = %d, kills = %d, deaths = %d WHERE name = '%s'",             GetPlayerMoney(playerid),             GetPVarInt(playerid, "playerKills"),             GetPVarInt(playerid, "playerDeaths"),             DB_Escape(playername));         db_query(main_database, stringoutput);         format(stringoutput, 64, "Server: {ffffff}%s deixou o servidor.", playername);         SendClientMessageToAll(0xff0000ff, stringoutput);         TextDrawDestroy(Text:GetPVarInt(playerid, "playerkTD"));         TextDrawDestroy(Text:GetPVarInt(playerid, "playerdTD"));     }     return true; } public OnPlayerRequestClass(playerid, classid) {     SetPlayerVirtualWorld(playerid, (playerid + 1));     SetPlayerPos(playerid, 1025.5751, -2140.7637, 39.2032);     SetPlayerCameraPos(playerid, 1019.7552, -2141.0266, 37.7274);     SetPlayerCameraLookAt(playerid, 1021.9974, -2140.9907, 38.3012);     SetPlayerFacingAngle(playerid, 82.6125);     return true; } public OnPlayerDeath(playerid, killerid, reason) {     new         playername[25],         stringoutput[128];     GivePlayerMoney(playerid, 100); // Fix default money taking     SetPVarInt(playerid, "playerDeaths", (GetPVarInt(playerid, "playerDeaths") + 1));     if(killerid != 0xffff) {         if(reason < 42) {             new killername[25];             GetPlayerName(killerid, killername, sizeof killername);             SetPVarInt(killerid, "playerKills", (GetPVarInt(playerid, "playerKills") + 1));             format(stringoutput, sizeof stringoutput, "    Vish! %s te matou e levou toda sua grana!", killername);             SendClientMessage(playerid, 0xff0000ff, stringoutput);             format(stringoutput, sizeof stringoutput, "    Boa garoto!! Você matou %s e levou toda a grana do otário!!", playername);             SendClientMessage(playerid, 0xf6f600ff, stringoutput);             GivePlayerMoney(killerid, GetPlayerMoney(playerid));             ResetPlayerMoney(playerid);             format(stringoutput, sizeof stringoutput, "Kills: ~y~%02d", GetPVarInt(killerid, "playerKills"));             TextDrawSetString(Text:GetPVarInt(killerid, "playerkTD"), stringoutput);         }     }     format(stringoutput, sizeof stringoutput, "Mortes: ~y~%02d", GetPVarInt(playerid, "playerDeaths"));     TextDrawSetString(Text:GetPVarInt(playerid, "playerdTD"), stringoutput);     TextDrawHideForPlayer(playerid, Text:GetPVarInt(playerid, "playerkTD"));     TextDrawHideForPlayer(playerid, Text:GetPVarInt(playerid, "playerdTD"));     return true; } public OnPlayerRequestSpawn(playerid) {     return GetPVarInt(playerid, "playerLogged"); } public OnPlayerSpawn(playerid) {     SetPlayerVirtualWorld(playerid, 0);     TextDrawShowForPlayer(playerid, Text:GetPVarInt(playerid, "playerkTD"));     TextDrawShowForPlayer(playerid, Text:GetPVarInt(playerid, "playerdTD"));     return true; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {     new         playername[25],         stringoutput[150],         DBResult:queryresult;     GetPlayerName(playerid, playername, sizeof playername);     if(dialogid == DIALOG_REGISTER) {         if(!response)             return Kick(playerid);         if(!(4 < strlen(inputtext) < 33))             return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{ffffff}Registro", "{ffffff}Sua senha deve ter no mínimo 5 e no máximo 32 caracteres.\n\nPor favor, tente novamente.", "Registrar", "Sair");         format(stringoutput, sizeof stringoutput, "INSERT INTO player_info (name, password, money, kills, deaths) VALUES ('%s', '%s', 5000, 0, 0)", DB_Escape(playername), DB_Escape(inputtext));         db_query(main_database, stringoutput);         format(stringoutput, sizeof stringoutput, "{ffffff}Muito bem, {1e90ff}%s{ffffff}!\nVocê se registrou com sucesso.\n\nDigite sua senha abaixo para logar.", playername);         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", stringoutput, "Login", "Sair");     }     else if(dialogid == DIALOG_LOGIN) {         if(!response)             return Kick(playerid);         format(stringoutput, sizeof stringoutput, "SELECT * FROM player_info WHERE name = '%s' AND password = '%s'", DB_Escape(playername), DB_Escape(inputtext));         queryresult = db_query(main_database, stringoutput);         if(db_num_rows(queryresult)) {             SetPVarInt(playerid, "playerLogged", 1);             db_get_field_assoc(queryresult, "money", stringoutput, 32);             ResetPlayerMoney(playerid); GivePlayerMoney(playerid, strval(stringoutput));             db_get_field_assoc(queryresult, "kills", stringoutput, 32);             SetPVarInt(playerid, "playerKills", strval(stringoutput));             db_get_field_assoc(queryresult, "deaths", stringoutput, 32);             SetPVarInt(playerid, "playerDeaths", strval(stringoutput));             SetPVarInt(playerid, "playerkTD", _:TextDrawCreate(498.000000, 101.000000, "Kills:"));             TextDrawBackgroundColor(Text:GetPVarInt(playerid, "playerkTD"), 255);             TextDrawFont(Text:GetPVarInt(playerid, "playerkTD"), 1);             TextDrawLetterSize(Text:GetPVarInt(playerid, "playerkTD"), 0.500000, 1.000000);             TextDrawColor(Text:GetPVarInt(playerid, "playerkTD"), -1);             TextDrawSetOutline(Text:GetPVarInt(playerid, "playerkTD"), 1);             TextDrawSetProportional(Text:GetPVarInt(playerid, "playerkTD"), 1);             SetPVarInt(playerid, "playerdTD", _:TextDrawCreate(497.000000, 112.000000, "Mortes:"));             TextDrawBackgroundColor(Text:GetPVarInt(playerid, "playerdTD"), 255);             TextDrawFont(Text:GetPVarInt(playerid, "playerdTD"), 1);             TextDrawLetterSize(Text:GetPVarInt(playerid, "playerdTD"), 0.500000, 1.000000);             TextDrawColor(Text:GetPVarInt(playerid, "playerdTD"), -1);             TextDrawSetOutline(Text:GetPVarInt(playerid, "playerdTD"), 1);             TextDrawSetProportional(Text:GetPVarInt(playerid, "playerdTD"), 1);             format(stringoutput, sizeof stringoutput, "Kills: ~y~%02d", GetPVarInt(playerid, "playerKills"));             TextDrawSetString(Text:GetPVarInt(playerid, "playerkTD"), stringoutput);             format(stringoutput, sizeof stringoutput, "Mortes: ~r~%02d", GetPVarInt(playerid, "playerDeaths"));             TextDrawSetString(Text:GetPVarInt(playerid, "playerdTD"), stringoutput);             format(stringoutput, sizeof stringoutput, "Server: {ffffff}%s conectou-se!", playername);             SendClientMessageToAll(0x32cd32ff, stringoutput);         }         else {             ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", "{ffffff}Senha incorreta!\n\nPor favor, tente novamente.", "Login", "Sair");         }     }     return true; } public OnPlayerCommandText(playerid, cmdtext[]) {     if(!strcmp("ranking", cmdtext[1], true)) {         static             i,             result[32],             playerkills,             dialogstring[64 * 10],             DBResult:queryresult;         queryresult = db_query(main_database, "SELECT name, kills FROM player_info ORDER BY kills DESC LIMIT 10");         for(i = 0; i != db_num_rows(queryresult); ++i) {             db_get_field_assoc(queryresult, "kills", result, sizeof result);             playerkills = strval(result);             db_get_field_assoc(queryresult, "name", result, sizeof result);             format(dialogstring, sizeof dialogstring, "%s %02d. %s - %02d assassinatos\n", dialogstring, (i + 1), result, playerkills);             db_next_row(queryresult);         }         db_free_result(queryresult);         ShowPlayerDialog(playerid, DIALOG_RANKING, DIALOG_STYLE_LIST, "{ffffff}Ranking", dialogstring, "Fechar", "");         return true;     }     return SendClientMessage(playerid, 0x1e90ffff, "Server: {ffffff}Este comando não existe!"); } stock DB_Escape(text[]) {     new         ret[80 * 2],         ch,         i,         j;     while ((ch = text[i++]) && j < sizeof (ret))     {         if (ch == '\'')         {             if (j < sizeof (ret) - 2)             {                 ret[j++] = '\'';                 ret[j++] = '\'';             }         }         else if (j < sizeof (ret))         {             ret[j++] = ch;         }         else         {             j++;         }     }     ret[sizeof (ret) - 1] = '\0';     return ret; }


Download:
http://pastebin.com/f4WwxUwd


By Jason`

0 comentários: