27.05.2015, 02:59
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;
}