Alguem pode por favor olhar oque tem de errado no meu code de registro em mysql, ele nгo esta salvando tudo corretamente e ao player desconectar ele nгo salva a conta.. (Base pega do FS de Cleyson.)
PHP код:
#include <a_samp>
#include <a_mysql>
#include <zcmd>
#include <udb>
#include <dof2>
#include <sscanf>
// Configuraзгo MySQL.
#define Host "IP"
#define Usuario "NOME"
#define DataBase "DB"
#define Senha "SEnha"
// Cores
#define COL_RED "{FF0000}"
#define COL_VERDE "{00FF00}"
#define COL_CINZA "{a9c4e4}"
#define COL_BRANCO "{FFFFFF}"
// Definiзхes.
new Conexao;
new DigitouSenha[MAX_PLAYERS];
new DigitouLogin[MAX_PLAYERS];
new nome[10][MAX_PLAYER_NAME];
new dinheiro[10];
// Configuraзхes Login.
#define DIALOG_REGISTRO 100
#define DIALOG_LOGIN 200
#define DIALOG_SENHA 103
#define DIALOG_NICK 104
#define DIALOG_SKINS 876
enum pInfo
{
ID,
pPassword[129],
Sexo,
Idade,
Dinheiro,
Skin,
Matou,
Morreu,
Level,
Admin,
Float:Pos[3],
bool:Logado
};
new PlayerInfo[MAX_PLAYERS][pInfo];
main ()
{
print("\n-------------------------------------");
print("2015.\n");
print("-------------------------------------\n");
return 1;
}
public OnPlayerConnect(playerid)
{
new Query[70];
mysql_format(Conexao, Query, sizeof(Query), "SELECT * FROM myserver WHERE Nome='%s'", Nome(playerid));
mysql_tquery(Conexao, Query, "Mysql_Verificar", "d", playerid);
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerInterior(playerid,0);
TogglePlayerClock(playerid,0);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerInterior(playerid,14);
SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
SetPlayerFacingAngle(playerid, 270.0);
SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
return 1;
}
public OnGameModeInit()
{
CarregarRanking();
Conexao = mysql_connect(Host, Usuario, DataBase, Senha);
mysql_query(Conexao, "CREATE TABLE IF NOT EXISTS `myserver`(`Nome` varchar(24) NOT NULL, `Senha` varchar(129) NOT NULL, `Admin` int(11) NOT NULL, `Sexo` int(11) NOT NULL, `Idade` int(11) NOT NULL, `Dinheiro` int(11) NOT NULL, `Skin` int(11) NOT NULL, `Matou` int(11) NOT NULL, `Morreu` int(11) NOT NULL, `PosX` float NOT NULL,`PosY` float NOT NULL,`PosZ` float NOT NULL)", false);
return 1;
}
public OnGameModeExit()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SalvarDados(i);
}
SalvarRanking();
mysql_close(Conexao);
return 1;
}
forward Mysql_Verificar(playerid);
public Mysql_Verificar(playerid)
{
if(cache_get_row_count(Conexao) == 1)
{
new tmp[129];
cache_get_field_content(0, "Senha", tmp); format(PlayerInfo[playerid][pPassword], 129, "%s", tmp);
PlayerInfo[playerid][ID] = cache_get_field_content_int(0, "ID");
PlayerInfo[playerid][Skin] = cache_get_field_content_int(0, "Skin");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Vocк jб й um player registrado, digite uma senha abaixo para logar-se", "Logar", "Voltar");
}
else
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Digite uma senha:", "Digite uma senha abaixo para registrar-se.\n\nObs: Ela deve conter no mнnimo 4 e no mбximo 16 caracteres.", "Registrar", "Voltar");
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SalvarDados(playerid);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[playerid][Morreu]++;
PlayerInfo[killerid][Matou]++;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new Msg_format[128];
switch(dialogid)
{
case DIALOG_REGISTRO:
{
if(!response) return SendClientMessage(playerid, -1, "Vocк nгo quis digitar uma senha");
if(strlen(inputtext) < 4 || strlen(inputtext) > 16)
{
SendClientMessage(playerid, -1, "Sua senha deve conter entre 4 e 16 caracteres!!!");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Digite uma senha:", "Digite uma senha abaixo para registrar-se.\n\nObs: Ela deve conter no mнnimo 4 e no mбximo 16 caracteres.", "Registrar", "Voltar");
return 1;
}
if(response)
{
DigitouSenha[playerid] = 1;
new Query[200];
mysql_format(Conexao, Query, sizeof(Query), "INSERT INTO `myserver` (`Nome`, `Senha`) VALUES ('%e','%e')", Nome(playerid), inputtext);
mysql_tquery(Conexao, Query, "DadosRegistrados", "i", playerid);
return 1;
}
return 1;
}
case DIALOG_LOGIN:
{
if(!response) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Vocк jб й um player registrado, digite uma senha abaixo para logar-se", "Logar", "Voltar");
if(!strcmp(PlayerInfo[playerid][pPassword], inputtext, true, 129))
{
DigitouLogin[playerid] = 1;
} else {
SendClientMessage(playerid, -1, "[ERRO] Senha incorreta !");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Vocк jб й um player registrado, digite uma senha abaixo para logar-se", "Logar", "Voltar");
}
return 1;
}
case DIALOG_SENHA:
{
if(!response) return SendClientMessage(playerid, -1, "Vocк nгo quis digitar uma senha");
if(strlen(inputtext) < 4 || strlen(inputtext) > 16)
{
SendClientMessage(playerid, -1, "Sua senha deve conter entre 4 e 16 caracteres!!!");
ShowPlayerDialog(playerid, DIALOG_SENHA, DIALOG_STYLE_PASSWORD, "Digite uma senha:", "Digite sua nova senha abaixo\n\nObs: Ela deve conter no mнnimo 4 e no mбximo 16 caracteres.", "Trocar", "Voltar");
return 1;
}
if(response)
{
new Query[120];
mysql_format(Conexao, Query, sizeof(Query), "UPDATE `myserver` SET `Senha`='%e' WHERE `ID`='%d'",inputtext, PlayerInfo[playerid][ID]);
mysql_tquery(Conexao, Query,"","");
format(Msg_format, sizeof(Msg_format), "Sua senha foi alterada com sucesso, nova senha: %s!!!", inputtext);
SendClientMessage(playerid, -1, Msg_format);
return 1;
}
return 1;
}
case DIALOG_NICK:
{
if(!response) return SendClientMessage(playerid, -1, "Vocк nгo quis digitar uma senha");
if(strlen(inputtext) > 25)
{
SendClientMessage(playerid, -1, "Seu novo nick name deve conter ate 25 caracteres!!!");
ShowPlayerDialog(playerid, DIALOG_NICK, DIALOG_STYLE_PASSWORD, "Digite um novo nick:", "Digite seu novo nick abaixo\n\nObs: Ele deve conter no mбximo 25 caracteres.", "Trocar", "Voltar");
return 1;
}
if(response)
{
SetPlayerName(playerid, inputtext);
new Query[120];
mysql_format(Conexao, Query, sizeof(Query), "UPDATE `myserver` SET `Nome`='%e' WHERE `ID`='%d'", inputtext, PlayerInfo[playerid][ID]);
mysql_tquery(Conexao, Query,"","");
format(Msg_format, sizeof(Msg_format), "Seu nick foi alterado com sucesso, novo nick: %s!!!", inputtext);
SendClientMessage(playerid, -1, Msg_format);
return 1;
}
return 1;
}
}
return 1;
}
forward Mysql_Carregar(playerid);
public Mysql_Carregar(playerid)
{
PlayerInfo[playerid][Admin] = cache_get_field_content_int(0, "Admin");
PlayerInfo[playerid][Sexo] = cache_get_field_content_int(0, "Sexo");
PlayerInfo[playerid][Idade] = cache_get_field_content_int(0, "Idade");
PlayerInfo[playerid][Dinheiro] = cache_get_field_content_int(0, "Dinheiro");
PlayerInfo[playerid][Skin] = cache_get_field_content_int(0, "Skin");
PlayerInfo[playerid][Matou] = cache_get_field_content_int(0, "Matou");
PlayerInfo[playerid][Morreu] = cache_get_field_content_int(0, "Morreu");
PlayerInfo[playerid][Pos][0] = cache_get_field_content_int(0, "PosX");
PlayerInfo[playerid][Pos][1] = cache_get_field_content_int(0, "PosY");
PlayerInfo[playerid][Pos][2] = cache_get_field_content_int(0, "PosZ");
CarregarDados(playerid);
return 1;
}
stock SalvarDados(playerid)
{
if(PlayerInfo[playerid][Logado] == false) return 1;
new Float:X, Float:Y, Float:Z, Query[320];
GetPlayerPos(playerid, Float:X, Float:Y, Float:Z);
mysql_format(Conexao, Query, sizeof(Query), "UPDATE `myserver` SET `Admin`='%d', `Sexo`='%d', `Idade`='%d', `Dinheiro`='%d', `Skin`='%d', `Matou`='%d', `Morreu`='%d', `PosX`=%.1f, `PosY`=%.1f, `PosZ`=%.1f WHERE `ID`='%d'",
PlayerInfo[playerid][Admin],
PlayerInfo[playerid][Sexo],
PlayerInfo[playerid][Idade],
GetPlayerMoney(playerid),
PlayerInfo[playerid][Skin],
PlayerInfo[playerid][Matou],
PlayerInfo[playerid][Morreu],
Float:X,
Float:Y,
Float:Z,
PlayerInfo[playerid][ID]);
mysql_tquery(Conexao, Query,"DadosSalvos","d", playerid);
return 1;
}
stock CarregarDados(playerid)
{
SetPlayerScore(playerid, PlayerInfo[playerid][Level]);
GivePlayerMoney(playerid, PlayerInfo[playerid][Dinheiro]);
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][Skin], PlayerInfo[playerid][Pos][0], PlayerInfo[playerid][Pos][1], PlayerInfo[playerid][Pos][2], 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SendClientMessage(playerid, -1, "Sua conta foi carregada com sucesso!");
PlayerInfo[playerid][Logado] = true;
return 1;
}
forward DadosRegistrados(playerid);
public DadosRegistrados(playerid)
{
PlayerInfo[playerid][ID] = cache_insert_id();
printf("-> Nova conta registrada ID: %d", PlayerInfo[playerid][ID]);
return 1;
}
forward DadosSalvos(playerid);
public DadosSalvos(playerid)
{
printf("-> Conta salva ID: %d", PlayerInfo[playerid][ID]);
return 1;
}
stock Nome(playerid)
{
new name[MAX_PLAYER_NAME];
return(GetPlayerName(playerid, name, sizeof(name)), name);
}
CMD:trocarsenha(playerid)
{
ShowPlayerDialog(playerid, DIALOG_SENHA, DIALOG_STYLE_PASSWORD, "Digite uma senha:", "Digite sua nova senha abaixo\n\nObs: Ela deve conter no mнnimo 4 e no mбximo 16 caracteres.", "Trocar", "Voltar");
return 1;
}
CMD:trocarnick(playerid)
{
ShowPlayerDialog(playerid, DIALOG_NICK, DIALOG_STYLE_PASSWORD, "Digite um novo nick:", "Digite seu novo nick abaixo\n\nObs: Ele deve conter no mбximo 25 caracteres.", "Trocar", "Voltar");
return 1;
}
Nгo mostra nada, parece estar tudo correto, mais ele so fica salvo a senha e quando sair do servidor nгo os dados qui ja conseguiu.. Alguem??
ao inves de vc salvar por ID, voce salva pelo nome na query que atualiza os dados.
Arrumei aqui veja, se deu certo .
Nem um dos 2 deu.. ela tambйm nгo esta carregando certo, e nгo estou consguindo arrumar..