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:
Postar um comentário