[Ajuda] MySQL setando errado
#1

Meu sistema de login/registro nгo estб definindo as coisas corretamente, quando eu defino na no phpmyadmin o level de admin de um jogador para 2 por exemplo, ele ganha ao invйs de 2 kills, 5 mortes, sempre da uns erros maroto..

pawn Код:
CarregarConta(playerid)
{
    new arquivo[150],result[150];

    format(arquivo,sizeof(arquivo),"SELECT * FROM `contas` WHERE `Username` = '%s'",nome(playerid));

    mysql_query(Mysql, arquivo);
    mysql_store_result();

    if(mysql_fetch_row(result))
    {
        sscanf
        (
            result, "p<|>s[25]s[100]s[16]iiiiiiiis[10]",
            nome(playerid),
            PlayerInfo[playerid][Password],
            PlayerInfo[playerid][PIP],
            PlayerInfo[playerid][Admin],
            PlayerInfo[playerid][Level],
            PlayerInfo[playerid][Kills],
            PlayerInfo[playerid][Deaths],
            PlayerInfo[playerid][MutedTime],
            PlayerInfo[playerid][WeaponSet],
            PlayerInfo[playerid][Banned],
            PlayerInfo[playerid][idgang],
            PlayerInfo[playerid][Lider]
        );
    }

    mysql_free_result();

    SetPlayerScore(playerid,PlayerInfo[playerid][Level]);
    return 1;
}

if(dialogid == D_Register)
    {
        new str[500];
        if(response)
        {
            if(strlen(inputtext) < 4 || strlen(inputtext) > 16)
            {
                SendClientMessage(playerid, Vermelho, "A senha deve conter de 4-16 caracteres.");
                return ShowPlayerDialog(playerid,D_Register,DIALOG_STYLE_PASSWORD,"Registro","Digita uma senha para se registrar","Registrar","Sair");
            }
           
            new ip[16];
            GetPlayerIp(playerid,ip,sizeof(ip));
           
            format(str, sizeof(str),"INSERT INTO `contas` (Username,Password,Ip,Admin,Level,Kills,Deaths,MutedTime,WeaponSet,Banned,Gangue_Id,Lider) VALUES ('%s','%s','%s','0','0','0','0','0','0','0','-1','false')",nome(playerid),inputtext,ip);
            mysql_query(Mysql, str);

            PlayerInfo[playerid][Logged] = 1;
       
            ShowRules(playerid);
        }
        else
        {
            SendClientMessage(playerid,Vermelho,"vocк foi kickado por nгo se registrar.");
            Kick(playerid);
        }
    }

enum PLAYER_INFO // Salvamento
{
    //Dados Pessoais
    Logged,
    Password,
    Admin,
    Level,
    Kills,
    Deaths,
    MutedTime,
    WeaponSet,
    Banned,
    idgang,
    bool:Lider,
    PIP[16],

    //Nгo Salva
    Float:P_ARMOUR,
    Float:P_HEALTH,
    P_SYNCALLOWED,
    P_INSYNC,
    P_SYNC_WEAP[MAX_WEAPON_SLOT],
    P_SYNC_AMMO[MAX_WEAPON_SLOT],
   
    //Missхes
    M_1KILL,
    M_10KILLS,
    M_100KILLS,
    M_1000KILLS,
   
    M_1DEATH,
    M_10DEATHS,
    M_100DEATHS,
    M_1000DEATHS,
   
    M_HEADSHOT,
    M_DOUBLEKILL,
    M_TRIPEKILL
}
Reply
#2

result, "p<|>s[25]s[100]s[16]iiiiiiiis[10]",

Enum:

precisa ser: 24
Password precisa ser Password[100]
Reply
#3

Nгo houve um resulta posisitvo.



Dei uma atualizada no code, mas sempre que defino algum valor pelo phpmyadmin, eu chego no servidor setб tudo o valor 0.

Vou deixar aqui todo o sistema.

pawn Код:
enum PLAYER_INFO // Salvamento
{
    //Dados Pessoais
    Logged,
    Password[100],
    Admin,
    Level,
    Kills,
    Deaths,
    MutedTime,
    WeaponSet,
    Banned,
    idgang,
    bool:Lider[10],
    PIP[16],

    //Nгo Salva
    Float:P_ARMOUR,
    Float:P_HEALTH,
    P_SYNCALLOWED,
    P_INSYNC,
    P_SYNC_WEAP[MAX_WEAPON_SLOT],
    P_SYNC_AMMO[MAX_WEAPON_SLOT],
   
    //Missхes
    M_1KILL,
    M_10KILLS,
    M_100KILLS,
    M_1000KILLS,
   
    M_1DEATH,
    M_10DEATHS,
    M_100DEATHS,
    M_1000DEATHS,
   
    M_HEADSHOT,
    M_DOUBLEKILL,
    M_TRIPEKILL
}


SalvarPlayer(playerid)
{
    new arquivo[170];

    format(arquivo,sizeof(arquivo),"UPDATE `contas` SET Admin = '%d', Level = '%d', Kills = '%d', Deaths = '%d', MutedTime = '%d', WeaponSet = '%d', Banned = '%d', Gangue_Id = '%d', Lider = '%s' WHERE `Username` = '%s'",

    PlayerInfo[playerid][Admin],
    GetPlayerScore(playerid),
    PlayerInfo[playerid][Kills],
    PlayerInfo[playerid][Deaths],
    PlayerInfo[playerid][MutedTime],
    PlayerInfo[playerid][WeaponSet],
    PlayerInfo[playerid][Banned],
    PlayerInfo[playerid][idgang],
    PlayerInfo[playerid][Lider],
    nome(playerid));
   
    mysql_query(Mysql, arquivo);
    mysql_debug(1);
    return 1;
}

CarregarPlayer(playerid)
{
    new arquivo[150],result[150];

    format(arquivo,sizeof(arquivo),"SELECT * FROM `contas` WHERE `Username` = '%s'",nome(playerid));

    mysql_query(Mysql, arquivo);
    mysql_store_result();

    if(mysql_fetch_row(result))
    {
        sscanf
        (
            result, "p<|>s[26]s[100]s[16]iiiiiiiis[10]",
            nome(playerid),
            PlayerInfo[playerid][Password],
            PlayerInfo[playerid][PIP],
            PlayerInfo[playerid][Admin],
            PlayerInfo[playerid][Level],
            PlayerInfo[playerid][Kills],
            PlayerInfo[playerid][Deaths],
            PlayerInfo[playerid][MutedTime],
            PlayerInfo[playerid][WeaponSet],
            PlayerInfo[playerid][Banned],
            PlayerInfo[playerid][idgang],
            PlayerInfo[playerid][Lider]
        );
        mysql_debug(1);
    }

    mysql_free_result();

    SetPlayerScore(playerid,PlayerInfo[playerid][Level]);
    return 1;
}


//Dialog de registro
    if(dialogid == D_Register)
    {
        new str[500];
        if(response)
        {
            if(strlen(inputtext) < 4 || strlen(inputtext) > 16)
            {
                SendClientMessage(playerid, Vermelho, "A senha deve conter de 4-16 caracteres.");
                return ShowPlayerDialog(playerid,D_Register,DIALOG_STYLE_PASSWORD,"Registro","Digita uma senha para se registrar","Registrar","Sair");
            }
           
            new ip[16];
            GetPlayerIp(playerid,ip,sizeof(ip));
           
            format(str, sizeof(str),"INSERT INTO `contas` (Username,Password,Ip,Admin,Level,Kills,Deaths,MutedTime,WeaponSet,Banned,Gangue_Id,Lider) VALUES ('%s','%s','%s','0','0','0','0','0','0','0','-1','false')",nome(playerid),inputtext,ip);
            mysql_query(Mysql, str);

            PlayerInfo[playerid][Logged] = 1;
       
            ShowRules(playerid);
        }
        else
        {
            SendClientMessage(playerid,Vermelho,"vocк foi kickado por nгo se registrar.");
            Kick(playerid);
        }
    }
    //Dialog de login
    if(dialogid == D_Login)
    {
        new str[150];
        if(response)
        {
            format(str, sizeof(str),"SELECT * FROM `contas` WHERE `Username` = '%s' AND `Password` = '%s'",nome(playerid),inputtext);
            mysql_query(Mysql, str);
            mysql_store_result();

            if(mysql_num_rows() == 0)
            {
                PasswordIncorret[playerid] ++;

                if(PasswordIncorret[playerid] == 5)
                {
                    SendClientMessage(playerid,Vermelho,"vocк foi kickado por errar a senha 5 vezes.");
                    Kick(playerid);
                    return 0;
                }
                return ShowPlayerDialog(playerid,D_Login,DIALOG_STYLE_PASSWORD,"{FF0000}Senha Incorreta","Digite a senha para conectar-se","Entrar","Sair");
            }
            else if(mysql_num_rows() > 0)
            {
                PlayerInfo[playerid][Logged] = 1;
                CarregarPlayer(playerid);
               
                ShowRules(playerid);

                new level[30];

                if(PlayerInfo[playerid][Admin] == 3) { level ="Owner"; }
                else if(PlayerInfo[playerid][Admin] == 2) { level = "Administrador"; }
                else if(PlayerInfo[playerid][Admin] == 1) { level = "Moderador"; }
                else if(PlayerInfo[playerid][Admin] == 0) { level = "Player"; }

                format(str,sizeof(str),"Vocк logou como %s",level);
                SendClientMessage(playerid,Verde,str);
               
                new ip[16];
                GetPlayerIp(playerid,ip,sizeof(ip));
               
                format(str,sizeof(str),"UPDATE `contas` SET Ip = '%s' WHERE `Username` = '%s'",ip,nome(playerid));
                mysql_query(Mysql, str);
            }
            mysql_free_result();
        }
        else
        {
            SendClientMessage(playerid,Vermelho,"vocк foi kickado por nao logar-se.");
            Kick(playerid);
        }
    }
Reply
#4

Vocк criou a db com todos os tipos e tamanhos de campos corretos? Varchar para strings, int para inteiros e float para floats...? Posta sua db que daqui a pouco dou uma olhada quando entrar no pc...
Reply
#5

Nomial obrigado pela ajuda, mas jб consegui.. lн aquele tуpico que vocк me mandou pelo ********.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)