Ajuda [MySQL] -
Jason` - 18.01.2012
Bem estou querendo criar um gamemode mysql mas primeiro preciso concluir meu estudo sobre o uso do mesmo.
Estava criando um sistema de registro, e quando logo pela primeira vez, nao aparece pra eu me registrar, mas sim pra eu logar, eis o codigo abaixo
pawn Код:
#include <a_samp>
#include <a_mysql>
main(){}
public OnGameModeInit()
{
mysql_connect("localhost","root","Vortex RPG","");
mysql_query("CREATE TABLE IF NOT EXISTS pinfo (user VARCHAR(24), password VARCHAR(50), score INT(20), dinheiro INT(20) )");
return 1;
}
public OnPlayerConnect(playerid)
{
new escname[24];
new query[700];
mysql_real_escape_string(GetName(playerid),escname);
format(query,sizeof(query),"SELECT 'user' FROM 'pinfo' WHERE 'user' = '%s'",escname);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
}
else
{
ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
}
mysql_free_result();
return 1;
}
public OnPlayerDisconnect(playerid)
{
new query[700];
new escname[24];
mysql_real_escape_string(GetName(playerid),escname);
format(query,sizeof(query),"UPDATE 'pinfo' SET score = %d, dinheiro = %d WHERE user = %s",GetPlayerScore(playerid),GetPlayerMoney(playerid),escname);
mysql_query(query);
return 1;
}
public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{
if(dialogid == 1)
{
if(!response)
return Kick(playerid);
if(response)
{
if(!strlen(inputtext[0]))
return Kick(playerid);
new escname[24];
new escpass[50];
new query[700];
mysql_real_escape_string(GetName(playerid),escname);
mysql_real_escape_string(inputtext,escpass);
format(query,sizeof(query),"INSERT INTO 'pinfo' (user, password, score, dinheiro) VALUES('%s','%s',5,5000)",escname,escpass);
mysql_query(query);
return 1;
}
}
if(dialogid == 2)
{
if(!response)
return Kick(playerid);
if(response)
{
if(!strlen(inputtext[0]))
return Kick(playerid);
new escname[24];
new escpass[50];
mysql_real_escape_string(GetName(playerid),escname);
mysql_real_escape_string(inputtext,escpass);
new query[700];
format(query,sizeof(query),"SELECT 'password' FROM 'pinfo' WHERE user = '%s' AND password = '%s'",escname,escpass);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
format(query,sizeof(query),"SELECT * FROM 'pinfo' WHERE 'user' = '%s'",escname);
mysql_query(query);
mysql_store_result();
new string[128];
while(mysql_fetch_row_format(query,"|"))
{
mysql_fetch_field_row(string,"score");
SetPlayerScore(playerid,strval(string));
mysql_fetch_field_row(string,"dinheiro");
GivePlayerMoney(playerid,strval(string));
}
}
else
{
ShowPlayerDialog(playerid,2,1,"Login","Senha","Logar","Sair");
}
mysql_free_result();
return 1;
}
}
return 1;
}
stock GetName(playerid)
{
new n[24];
GetPlayerName(playerid,n,sizeof(n));
return n;
}
Queria saber se hб algum erro no cуdigo ou se o problema estб em outro lugar.
Re: Ajuda [MySQL] -
Jason` - 18.01.2012
Sorry o double post
Alguem?
Re: Ajuda [MySQL] -
Ricop522 - 18.01.2012
Amanhг te ajudo, flw
Re: Ajuda [MySQL] -
Jason` - 18.01.2012
Deixa msn ae se puder
Re: Ajuda [MySQL] -
BlackCoder - 18.01.2012
pawn Код:
public OnPlayerConnect(playerid)
{
new escname[24];
new query[700];
GetPlayerName(playerid,query,50);
format(query,sizeof(query),"SELECT user FROM pinfo WHERE user = '%s'",query);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows())
{
ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
}else{
ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
}
mysql_free_result();
return 1;
}
isto irб resolver seu problema quando o jogador conectar.
te +
Re: Ajuda [MySQL] -
Ricop522 - 18.01.2012
Vк se vai.
Dei uma pequena "arrumada"
pawn Код:
#include <a_samp>
#include <a_mysql>
main(){}
public OnGameModeInit()
{
mysql_connect("localhost","root","Vortex RPG","");
mysql_query("CREATE TABLE IF NOT EXISTS pinfo (user VARCHAR(24), password VARCHAR(50), score INT(20), dinheiro INT(20) )");
return 1;
}
public OnPlayerConnect(playerid)
{
new escname[24], query[128];
mysql_real_escape_string(GetName(playerid),escname);
format(query,sizeof(query),"SELECT user FROM pinfo WHERE user = '%s'", escname); // Sу precisa usar as aspas simples quando for formatar o nome %s
mysql_query(query);
mysql_store_result();
if(mysql_num_rows()) {
ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
}
else {
ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
}
mysql_free_result();
return 1;
}
public OnPlayerDisconnect(playerid)
{
new query[200], escname[24];
mysql_real_escape_string(GetName(playerid),escname);
format(query,sizeof(query),"UPDATE pinfo SET score = '%d', dinheiro = '%d' WHERE user = '%s'",GetPlayerScore(playerid),GetPlayerMoney(playerid),escname);
mysql_query(query);
return 1;
}
public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{
if(dialogid == 1)
{
if(!response)
return Kick(playerid);
if(response)
{
if(!strlen(inputtext[0]))
return Kick(playerid);
new escname[24];
new escpass[50];
new query[250];
mysql_real_escape_string(GetName(playerid),escname);
mysql_real_escape_string(inputtext,escpass);
format(query,sizeof(query),"INSERT INTO pinfo (user, password, score, dinheiro) VALUES('%s','%s',5,5000)", escname, escpass);
mysql_query(query);
return 1;
}
}
if(dialogid == 2)
{
if(!response)
return Kick(playerid);
if(response)
{
if(!strlen(inputtext[0]))
return Kick(playerid);
new escname[24];
new escpass[50];
mysql_real_escape_string(GetName(playerid),escname);
mysql_real_escape_string(inputtext,escpass);
new query[250];
format(query,sizeof(query),"SELECT * FROM pinfo WHERE user = '%s' AND password = '%s'",escname,escpass);
mysql_query(query); // Ele vai pesquinsar na database o usuario e a senha que o cara coloco, se nгo confirmar com o usuario e senha, vai dar num_rows 0
mysql_store_result();
if(mysql_num_rows())
{
format(query,sizeof(query),"SELECT * FROM pinfo WHERE user = '%s'",escname);
mysql_query(query);
mysql_store_result();
new string[128];
while(mysql_fetch_row_format(query,"|"))
{
mysql_fetch_field_row(string,"score");
SetPlayerScore(playerid,strval(string));
mysql_fetch_field_row(string,"dinheiro");
GivePlayerMoney(playerid,strval(string));
}
}
else
{
SendClientMessage(playerid, -1, "Senha e password nгo conferem!");
Kick(playerid);
}
mysql_free_result();
return 1;
}
}
return 1;
}
stock GetName(playerid)
{
new n[24];
GetPlayerName(playerid,n,sizeof(n));
return n;
}
/*stock GetName(playerid) // Vocк pode usar essa funзгo assim tambйm:
{
new n[24], escname[24];
GetPlayerName(playerid,n,sizeof(n));
mysql_real_escape_string(n, escname);
return escname;
}*/
Vocк tava usando 'user'
No correto seria, `user`
E cuidado com as querys grandes new query[700]; etc.
Nгo fica criando a database pelo script, faz uma logo no phpmyadmin.
Re: Ajuda [MySQL] -
Jason` - 18.01.2012
n funcinou ricop, aparece logo o dialog de login pra mim
Re: Ajuda [MySQL] -
Ricop522 - 18.01.2012
Troca:
pawn Код:
public OnPlayerConnect(playerid)
{
new escname[24], query[128];
mysql_real_escape_string(GetName(playerid),escname);
format(query,sizeof(query),"SELECT user FROM pinfo WHERE user = '%s'", escname); // Sу precisa usar as aspas simples quando for formatar o nome %s
mysql_query(query);
mysql_store_result();
if(mysql_num_rows()) {
ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
}
else {
ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
}
mysql_free_result();
return 1;
}
para
pawn Код:
public OnPlayerConnect(playerid)
{
new escname[24], query[128];
mysql_real_escape_string(GetName(playerid),escname);
format(query,sizeof(query),"SELECT * FROM pinfo WHERE user = '%s'", escname); // Sу precisa usar as aspas simples quando for formatar o nome %s
mysql_query(query);
mysql_store_result();
if(mysql_num_rows()) {
ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
}
else {
ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
}
mysql_free_result();
return 1;
}
Re: Ajuda [MySQL] -
Jason` - 18.01.2012
vlw ricop funcionou +rep