SA-MP Forums Archive
[Ajuda] Mysql - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Mysql (/showthread.php?tid=575453)



Mysql - LuisFerreira - 27.05.2015

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(ConexaoQuerysizeof(Query), "SELECT * FROM myserver WHERE Nome='%s'"Nome(playerid));
    
mysql_tquery(ConexaoQuery"Mysql_Verificar""d"playerid);
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    
SetPlayerInterior(playerid,0);
    
TogglePlayerClock(playerid,0);
    return 
1;
}
public 
OnPlayerRequestClass(playeridclassid)
{
      
SetPlayerInterior(playerid,14);
    
SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    
SetPlayerFacingAngle(playerid270.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(HostUsuarioDataBaseSenha);
    
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 
0MAX_PLAYERSi++)
    {
        
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(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Digite sua senha:""Vocк jб й um player registrado, digite uma senha abaixo para logar-se""Logar""Voltar");
    }
    else
    
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_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(playeridreason)
{
    
SalvarDados(playerid);
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    
PlayerInfo[playerid][Morreu]++;
    
PlayerInfo[killerid][Matou]++;
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    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) < || strlen(inputtext) > 16)
            {
                
SendClientMessage(playerid, -1"Sua senha deve conter entre 4 e 16 caracteres!!!");
                
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_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(ConexaoQuerysizeof(Query), "INSERT INTO `myserver` (`Nome`, `Senha`) VALUES ('%e','%e')"Nome(playerid), inputtext);
                
mysql_tquery(ConexaoQuery"DadosRegistrados""i"playerid);
                return 
1;
            }
            return 
1;
        }
        case 
DIALOG_LOGIN:
        {
            if(!
response) return ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Digite sua senha:""Vocк jб й um player registrado, digite uma senha abaixo para logar-se""Logar""Voltar");
            if(!
strcmp(PlayerInfo[playerid][pPassword], inputtexttrue129))
            {
                
DigitouLogin[playerid] = 1;
                } else {
                
SendClientMessage(playerid, -1"[ERRO] Senha incorreta !");
                
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_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) < || strlen(inputtext) > 16)
            {
                
SendClientMessage(playerid, -1"Sua senha deve conter entre 4 e 16 caracteres!!!");
                
ShowPlayerDialog(playeridDIALOG_SENHADIALOG_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(ConexaoQuerysizeof(Query), "UPDATE `myserver` SET `Senha`='%e' WHERE `ID`='%d'",inputtextPlayerInfo[playerid][ID]);
                
mysql_tquery(ConexaoQuery,"","");
                
format(Msg_formatsizeof(Msg_format), "Sua senha foi alterada com sucesso, nova senha: %s!!!"inputtext);
                
SendClientMessage(playerid, -1Msg_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(playeridDIALOG_NICKDIALOG_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(playeridinputtext);
                new 
Query[120];
                
mysql_format(ConexaoQuerysizeof(Query), "UPDATE `myserver` SET `Nome`='%e' WHERE `ID`='%d'"inputtextPlayerInfo[playerid][ID]);
                
mysql_tquery(ConexaoQuery,"","");
                
format(Msg_formatsizeof(Msg_format), "Seu nick foi alterado com sucesso, novo nick: %s!!!"inputtext);
                
SendClientMessage(playerid, -1Msg_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:XFloat:YFloat:ZQuery[320];
    
GetPlayerPos(playeridFloat:XFloat:YFloat:Z);
    
mysql_format(ConexaoQuerysizeof(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(ConexaoQuery,"DadosSalvos","d"playerid);
    return 
1;
}
stock CarregarDados(playerid)
{
    
SetPlayerScore(playeridPlayerInfo[playerid][Level]);
    
GivePlayerMoney(playeridPlayerInfo[playerid][Dinheiro]);
    
SetSpawnInfo(playerid0PlayerInfo[playerid][Skin], PlayerInfo[playerid][Pos][0], PlayerInfo[playerid][Pos][1], PlayerInfo[playerid][Pos][2], 269.15000000);
    
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(playeridnamesizeof(name)), name);
}
CMD:trocarsenha(playerid)
{
    
ShowPlayerDialog(playeridDIALOG_SENHADIALOG_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(playeridDIALOG_NICKDIALOG_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;




Re: Mysql - Mark009 - 27.05.2015

O que o log do MySQL ( mysql_log.txt ) mostra?


Re: Mysql - GustavoSouza - 27.05.2015

Oq aparece no log amigo?


Re: Mysql - LuisFerreira - 27.05.2015

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??


Re: Mysql - GabrielDias_Invision - 27.05.2015

ao inves de vc salvar por ID, voce salva pelo nome na query que atualiza os dados.


Re: Mysql - Smith. - 27.05.2015

Tenta desta maneira

pawn Код:
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, "", "");
    return 1;
}



Re: Mysql - LuisFerreira - 27.05.2015

Ainda nгo salva...


Re: Mysql - Smith. - 27.05.2015

pawn Код:
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 `Nome`='%s'",
    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,
    Nome(playerid));
    mysql_tquery(Conexao, Query, "", "");
    return 1;
}
Veja agora


Re: Mysql - Jimmmy - 27.05.2015

Arrumei aqui veja, se deu certo .

PHP код:
stock SalvarDados(playerid

    if(
PlayerInfo[playerid][Logado] == false) return 1
    new 
Float:XFloat:YFloat:ZQuery[320]; 
    
GetPlayerPos(playeridFloat:XFloat:YFloat:Z); 
    
mysql_format(ConexaoQuerysizeof(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:XFloat:YFloat:ZPlayerInfo[playerid][ID]); 
    
mysql_tquery(ConexaoQuery"""");
    return 
1




Re: Mysql - LuisFerreira - 28.05.2015

Nem um dos 2 deu.. ela tambйm nгo esta carregando certo, e nгo estou consguindo arrumar..