[Help] Sistem Mysql Bug
#1

Hi friends can anyone help me what is the error of this script in which I am begining mysql fucionarlo system then my server and all is apparently well I just do not want to save the data aca code

pawn Код:
#include <a_samp>
#include <a_mysql>

native WP_Hash(buffer[], len, const str[]);

#define WHITE 0xFFFFFFAA
#define GREY 0xAFAFAFAA
#define RED 0xFF0000AA
#define YELLOW 0xFFFF00AA
#define LIGHTBLUE 0x33CCFFAA

#define CHAT_WHITE "{FFFFFF}"
#define CHAT_GREY "{AFAFAF}"
#define CHAT_RED "{FF0000}"
#define CHAT_YELLOW "{FFFF00}"
#define CHAT_LIGHTBLUE "{33CCFF}"

forward OnPlayerDataLoaded(playerid, race_check);
forward OnPlayerRegister(playerid);


#define SQL_HOST "127.0.0.1"
#define SQL_DB "Database"
#define SQL_USER "root"
#define SQL_PASS ""

new g_SQL = -1;

enum E_PLAYERS
{
    ID,
    Name[MAX_PLAYER_NAME],
    Password[129],
    Money,
   
    bool:IsLoggedIn,
    bool:IsRegistered,
    LoginAttempts,
    LoginTimer
};
new PlayerInfo[MAX_PLAYERS][E_PLAYERS];

new g_MysqlRaceCheck[MAX_PLAYERS];

enum
{
    DIALOG_INVALID,
    DIALOG_UNUSED,
   
    DIALOG_LOGIN,
    DIALOG_REGISTER,
};

public OnGameModeInit()
{
    mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML);
    g_SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
   
    SetupPlayerTable();
    return 1;
}

public OnGameModeExit()
{
    for(new p=0; p < MAX_PLAYERS; ++p)
        if(IsPlayerConnected(p))
            UpdatePlayerData(p);

    mysql_close();
    return 1;
}

public OnPlayerConnect(playerid)
{
    g_MysqlRaceCheck[playerid]++;
    for(new E_PLAYERS:e; e < E_PLAYERS; ++e)
        PlayerInfo[playerid][e] = 0;

    new query[128];
    GetPlayerName(playerid, PlayerInfo[playerid][Name], MAX_PLAYER_NAME);
    mysql_format(g_SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", PlayerInfo[playerid][Name]);
    mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "dd", playerid, g_MysqlRaceCheck[playerid]);
    return 1;
}

public OnPlayerDataLoaded(playerid, race_check)
{
    if(race_check != g_MysqlRaceCheck[playerid])
        return Kick(playerid);
   
   
    new string[128];
    if(cache_num_rows() > 0)
    {
        AssignPlayerData(playerid);
       
        format(string, sizeof(string), CHAT_WHITE "This account (" CHAT_YELLOW "%s" CHAT_WHITE ") is registered. Please login by entering your password in the field below:", PlayerInfo[playerid][Name]);
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Login", "Abort");
        PlayerInfo[playerid][IsRegistered] = true;
    }
    else
    {
        format(string, sizeof(string), CHAT_WHITE "Welcome " CHAT_YELLOW "%s" CHAT_WHITE ", you can register by entering your password in the field below:", PlayerInfo[playerid][Name]);
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", string, "Register", "Abort");
        PlayerInfo[playerid][IsRegistered] = false;
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_INVALID || dialogid == DIALOG_UNUSED)
        return 1;

    switch(dialogid)
    {
        case DIALOG_LOGIN:
        {
            if(!response)
                return Kick(playerid);

            if(strlen(inputtext) <= 5)
                return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login",
                    CHAT_RED "Your password must be longer than 5 characters!\n" CHAT_WHITE "Please enter your password in the field below:",
                    "Login", "Abort");

            new hashed_pass[129];
            WP_Hash(hashed_pass, sizeof(hashed_pass), inputtext);
           
            if(strcmp(hashed_pass, PlayerInfo[playerid][Password]) == 0)
            {
                ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Login", "You have been successfully logged in.", "Okay", "");
                PlayerInfo[playerid][IsLoggedIn] = true;
               
                SetSpawnInfo(playerid, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
            }
            else
            {
                PlayerInfo[playerid][LoginAttempts]++;
                if(PlayerInfo[playerid][LoginAttempts] >= 3)
                {
                    ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Login", CHAT_RED "You have mistyped your password too often (3 times).", "Okay", "");
                    DelayedKick(playerid);
                }
                else
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", CHAT_RED "Wrong password!\n" CHAT_WHITE "Please enter your password in the field below:", "Login", "Abort");
            }
        }
       
        case DIALOG_REGISTER:
        {
            if(!response)
                return Kick(playerid);
               
            if(strlen(inputtext) <= 5)
                return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration",
                    CHAT_RED "Your password must be longer than 5 characters!\n" CHAT_WHITE "Please enter your password in the field below:",
                    "Register", "Abort");
                   
            new query[256];
            WP_Hash(PlayerInfo[playerid][Password], 129, inputtext);
            mysql_format(g_SQL, query, sizeof(query), "INSERT INTO `players` (`username`, `password`) VALUES ('%e', '%s')", PlayerInfo[playerid][Name], PlayerInfo[playerid][Password]);
            mysql_tquery(g_SQL, query, "OnPlayerRegister", "d", playerid);
        }
       
        default:
            return 0;
    }
    return 1;
}

public OnPlayerRegister(playerid)
{
    PlayerInfo[playerid][ID] = cache_insert_id();
   
    ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Registration", "Account successfully registered, you have been automatically logged in.", "Okay", "");
    PlayerInfo[playerid][IsLoggedIn] = true;
    PlayerInfo[playerid][IsRegistered] = true;
   
    SetSpawnInfo(playerid, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
    return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/kill", true))
    {
        SetPlayerHealth(playerid, 0.0);
        SendClientMessage(playerid, 0xFF0000FF, "Te has suicidado");
        return 1;
    }
    return 0;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    GivePlayerMoney(playerid, 1000);
    return 1;
}
public OnPlayerRequestSpawn(playerid)
{
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, PlayerInfo[playerid][Money]);
    return 1;
}
public OnPlayerSpawn(playerid)
{
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,325.35,2512.09,16.56);
    return 1;
}
public OnPlayerDisconnect(playerid,reason)
{
    g_MysqlRaceCheck[playerid]++;
    UpdatePlayerData(playerid);
    return 1;
}


/*
 * functions
 */


AssignPlayerData(playerid)
{
    PlayerInfo[playerid][ID] = cache_get_field_content_int(0, "id");
    cache_get_field_content(0, "password", PlayerInfo[playerid][Password], g_SQL, 129);
    PlayerInfo[playerid][Money] = cache_get_field_content_int(0, "money");
    return 1;
}

UpdatePlayerData(playerid)
{
    if(PlayerInfo[playerid][IsLoggedIn] == false)
        return 0;
       
    new query[128];
    mysql_format(g_SQL, query, sizeof(query), "UPDATE `players` SET `money` = '%d' WHERE `username` = '%e' LIMIT 1", PlayerInfo[playerid][Money], PlayerInfo[playerid][Name]);
    mysql_tquery(g_SQL, query);
    return 1;
}

SetupPlayerTable()
{
    mysql_query(g_SQL, "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL auto_increment PRIMARY KEY,`username` varchar(30) NOT NULL,`password` varchar(130) NOT NULL,`money` int(10) NOT NULL default '0')", false);
    return 1;
}


DelayedKick(playerid, time=500)
{
    SetTimerEx("_KickPlayerDelayed", time, false, "d", playerid);
    return 1;
}

forward _KickPlayerDelayed(playerid);
public _KickPlayerDelayed(playerid)
{
    Kick(playerid);
    return 1;
}

main() {}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)