#include <a_samp>
#include <a_mysql>
#define mysql_host "127.0.0.1" //Serб na verdade o IP da database do host que o samp irб conectar;
#define mysql_user "root" //Usъario da database
#define mysql_password "" //Nгo possui senha caso seja o wamp.
#define mysql_database "sa-mp" //DATABASE QUE VOCК CRIOU ACIMA!
public OnGameModeInit()
{
mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password); //Usando as definiзхes acima..
mysql_query("CREATE TABLE IF NOT EXISTS pinfo(user VARCHAR(24), password VARCHAR(40), score INT(20), dinheiro INT(20), IP VARCHAR(16) )");
//CAMPOS:
//-- Nome - Use - Tipo -------
//USER - Nome do usuario - String!
//password- Senha do usuario - String!
//score - score(auto explicativo) - int
//dinheiro - dinheiro do jogador - int
//IP - ip do cara - int
return 1;
}
new pRegistrado[MAX_PLAYERS];
//Usado para checar se o jogador estб registrado
new pDinheiro[MAX_PLAYERS]; //Usado apra dar o dnheiro do jogador.
public OnPlayerConnect(playerid)
{
pDinheiro[playerid] = 0x0; //Reseta a variavel pDinheiro.
new query[200], pname[24]; //Cria-se nossas variaveis para serem usadas.
GetPlayerName(playerid, pname, 24); //Recebe o nome do jogador
format(query, sizeof(query), "SELECT IP FROM `pinfo` WHERE user = '%s' LIMIT 1", pname); //Formata a QUERY para serem usadas %s, %i, %d, (basico do basico do pawn.)
mysql_query(query); //Essa й a funзгo da query
mysql_store_result(); //Armazena os resultados
new rows = mysql_num_rows(); //Iremos getar quantas rows a query retornou.
if(!rows)
{
//Se a rows for 0, nгo encontrou nada
//Entгo iremos pedir o registro do jogador no banco de dados.
ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_INPUT, "Registrar","Vocк nгo ta registrado, registra aew campeгo!","Registrar","Cancelar");
}
if(rows) //SENГO
{
//Rows = 1 , existe na database
//AUTO LOGIN
new IP[2][16]; //Uma para o IP do banco de dados e uma para o IP do jogador!
mysql_fetch_field_row(IP[0],"IP");
GetPlayerIp(playerid, IP[1], 16);
if(strlen(IP[0]) != 0 && !strcmp(IP[0], IP[1], true)) //Checa se os ips sгo iguais
{
MySQL_Login(playerid);
}
else if(!strlen(IP[0]) || strcmp(IP[0], IP[1], true))
{
ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_INPUT, "Logar","Tu ta registrado manolo loga eww!","Logar","Cancelar");
pRegistrado[playerid] = 1; //Sets the registered variable to 1 (Shows that the player is registered).
}
}
mysql_free_result();
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 15000)
{
if(response) // Clicou no botгo de registrar
{
if(!strlen(inputtext) || strlen(inputtext) > 100) {//Senha nula ou maior que 100 caractйres
return SendClientMessage(playerid, 0xFF0000, "You must insert a password between 1-100 characters!"), ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_INPUT, "Registrar","Use uma senha de 1-100 caractйres!","Registrar","Cancelar");
}
else
{
new escpass[100];
mysql_real_escape_string(inputtext, escpass);
MySQL_Register(playerid, escpass);
}
//Registra o player na funзгo MYSQL_Register
}
if(!response)
{
return SendClientMessage(playerid, 0xFF0000, "You must register before logging in!"),
ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_INPUT, "Registrar","Insira uma senha manolo","Registrar","Cancelar");
}
}
if(dialogid == 15500)
{
if(!response)
{
return SendClientMessage(playerid, 0xFF0000, "You must login before you spawn!"),
ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_INPUT, "Login","Vocк em que logar antes de jogar cara!!","Logar","Cancelar");
}
if(response) //Clicou em Login
{
new query[200], pname[24], escapepass[100]; //
GetPlayerName(playerid, pname, 24);
mysql_real_escape_string(inputtext, escapepass); //Contra HACKERS! (RE: MySQL Injections
format(query, sizeof(query), "SELECT `user` FROM pinfo WHERE user = '%s' AND password = SHA1('%s')", pname, escapepass);
mysql_query(query);
mysql_store_result();
new numrows = mysql_num_rows();
if(numrows == 1) MySQL_Login(playerid);
//senha do jogador e da database sгo iguais/\
if(!numrows)
{
//senha errada
SendClientMessage(playerid, 0xFF0000, "Senha errada noob!");
}
mysql_free_result(); //LEMBRE-SE DE DAR SEMPRE FREE RESULT PARA LIBERAR O QUERY;
}
}
return 1;
}
new pLogado[MAX_PLAYERS];
stock MySQL_Register(playerid, passwordstring[])
{
new query[200], pname[24], IP[16];
GetPlayerName(playerid, pname, 24);
GetPlayerIp(playerid, IP, 16);
format(query, sizeof(query), "INSERT INTO pinfo (user, password, score, dinheiro, IP) VALUES('%s', SHA1('%s'), 0, 0, '%s')", pname, passwordstring, IP);
mysql_query(query);
SendClientMessage(playerid, -1, "Registrado e Logado.");
pLogado[playerid] = 1; //Logado
return 1;
}
stock MySQL_Login(playerid)
{
new query[300], pname[24], savingstring[20];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "SELECT * FROM pinfo WHERE user = '%s'", pname);
//Selecionamos apenas a variavel que й importante.
mysql_query(query);
mysql_store_result();//ARMAZENA O QUERY PARA USARMOS DEPOIS, POIS USAMOS SELECT PARA SELECIONAR, OU SEJA, TEMOS QUE ARMAZENAR O QUE SELECIONAMOS EM ALGUMA COISA NЙ.
while(mysql_fetch_row_format(query,"|"))
{
//WHILE EM APENAS UMA UNICA QUERY!
//Especialmente quando temos varias variaveis
//Pode-se usar sscanf tmb.
mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring));
mysql_fetch_field_row(savingstring, "dinheiro"); GivePlayerMoney(playerid, strval(savingstring));
}
mysql_free_result();
SendClientMessage(playerid, -1, "Logou!");
pLogado[playerid] = 1;
return 1;
}
UPDATE table_name SET column1=valor, column2='valor',... WHERE algumacoisa=algumvalor
public OnPlayerDisconnect(playerid, reason)
{
if(pLogado[playerid] == 1)
{
new score = GetPlayerScore(playerid); //Armazena o score em uma variavel
new grana = GetPlayerMoney(playerid); //armazena o $$ em uma ' '
new query[200], pname[24]; //Cria as variaveis necessarias..
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "UPDATE pinfo SET score=%d, dinheiro=%d WHERE user='%s'", score, grana, pname);
mysql_query(query);
//NГO NECESSITA-SE DE UM FREE_RESULT EM UMA QUERY DE UPDATE
}
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
if(!Logged[playerid]) //Caso nгo esteje logado e tente spawnar....
{
if(!pRegistrado[playerid]) //Caso nгo esteje registrado
{
ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_INPUT, "Registrar","Registra antes de jogar manolo!","Registrar","Cancelar"); //Mostra nosso dialog
return 0; //Retorna a falso, para q elee nao spawne..
}
if(pRegistrado[playerid] == 1) //.....
{
ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_INPUT, "Logar","Loga ante sde jogar man...!","Logar","Cancelar");
return 0; // ' '
}
}
return 1;
}
Parabйns Ricop
![]() Eu to programando PHP + MySQL agora ![]() Й bem legal fazer esses sistemas! Depois que minhas provas acabarem vou me aprofundar mais e comeзar fazer sistemas para vender! Eu prefiro Php do que o pawn rs, muito mais ilimitado ![]() Vou ver esse tutorial depois, e jб vou te dar Rep. Porque tenho certeza que estб foda. @Duvida Esse seu server Interactive RolePlay vai ser lanзado mesmo? Se for vou jogar lб, estou procurando um RP Br mas nгo tem nenhum que preste. |