MYSQL help REP+
#1

Whenever I run my server based on SQL and MYSQL DB , Its run and everything fine
But the players can't login it says "function MYSQL_QUERY called when not connected to any database


It was working fine but something happened
My MYSQL is installed well , do you know how to fix it?
Reply
#2

Are you opening your connection to the database before trying to query it?
Reply
#3

This is what I use, it will be different then yours but it'll be close enough.
I use R7 so if you're not threading your queries some things will differ.
I'm also modulating my gamemode so this is all hooked to my main script, so if yours is part of the main gamemode
It will not look the same(Hook replaces public, in basic terms.)

pawn Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <a_mysql>
#include <YSI\y_hooks>


#define C_YELLOW 0xFFFF00FF
#define C_WHITE 0xFFFFFFAA

     //    LOCAL DATABASE

#define HOST        "localhost"
#define USER        "root"
#define DATABASE    "sampdata"
#define PASS        ""

#define DIALOG_REGISTER (1000)
#define DIALOG_LOGIN    (2000)

#define PF:%0(%1)   forward %0(%1); \
                    public %0(%1)


#define SCM SendClientMessage
#define SCMToAll SendClientMessageToAll


enum PlayerStats
{
    N_Pass[129],
    N_Cash,
    N_Admin,
    N_Kills,
    N_Deaths,
    N_Rank,
    N_Score,
    N_Vehicle,
    N_Rounds,
    N_Gun,
    Float:N_Health,
    Float:N_Armour,
    Text3D:Nametag,
    N_Robberies,
    Float:LastX,
    Float:LastY,
    Float:LastZ,
    pID,
    N_Class,
    N_WLevel,
    N_Donor,
    N_Banned
};
new P_Info[MAX_PLAYERS][PlayerStats];


// mySQL
static
    mysql,
    myName[MAX_PLAYERS][24]
    ;

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

hook OnGameModeInit()
{
    mysql_log(LOG_ERROR | LOG_WARNING | LOG_DEBUG);
    mysql = mysql_connect(HOST, USER, DATABASE, PASS);
    if(mysql_errno(mysql) != 0) print("ERROR: MySQL Database unsucessfully connected.");

}

hook OnPlayerConnect(playerid)
{
    new query[144];
    GetPlayerName(playerid, myName[playerid], 24);
    mysql_format(mysql, query, sizeof(query),"SELECT `Password`, `ID` FROM `players` WHERE `Username` = '%e' LIMIT 1", myName[playerid]);
    mysql_tquery(mysql, query, "OnAccountCheck", "i", playerid);
    DeletePVar(playerid, #JustLogged);
}
PF: OnAccountCheck(playerid)
{
    new rows, fields;
    cache_get_data(rows, fields, mysql);
    new str[500];
    if(rows)
    {
        cache_get_field_content(0, "Password", P_Info[playerid][N_Pass], mysql, 129);

        P_Info[playerid][pID] = cache_get_field_content_int(0, "ID");

        format(str, sizeof(str), "{FFFFFF}SERVER RULES\n * Do not Carpark\n{FFFFFF}* Do not hack\n{FFFFFF}* Do not Crackshot(Cbug)\n* Do not use any exploits of any kind\n{FFFFFF}* Do not Flame or bully members\
        \n{FFFFFF}* Do not server advertise\n{FFFFFF}* Public chat is ENGLISH only.\n{3399FF}Neptune Gaming: TDM\n{FFFFFF}Welcome back {3399FF}%s\n{FFFFFF}Login Below"
, mySQL_Name(playerid));
        ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{3399FF}System Login",str,"Login","Quit");
    }
    else
    {
        format(str, sizeof(str), "{FFFFFF}SERVER RULES\n * Do not Carpark\n{FFFFFF}* Do not hack\n{FFFFFF}* Do not Crackshot(Cbug)\n* Do not use any exploits of any kind\n{FFFFFF}* Do not Flame or bully members\
        \n{FFFFFF}* Do not server advertise\n{FFFFFF}* Public chat is ENGLISH only.\n{3399FF}Neptune Gaming: TDM\n{FFFFFF}Welcome {3399FF}%s\n{FFFFFF}Please Register below"
, mySQL_Name(playerid));
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"{3399FF}System Register", str,"Register","Quit");

    }
    return 1;
}
PF:SaveAcct(playerid)
{
    Save_Account(playerid);
    SCM(playerid, C_YELLOW, " >> Player account saved automatically.");
}
PF:Save_Account(playerid)
{
    new query[2000];
    P_Info[playerid][N_Cash] = GetPlayerMoney(playerid);
    mysql_format(mysql, query, sizeof(query),"UPDATE `players` SET `Cash`=%d, `Admin`=%d,`Kills`=%d,`Deaths`=%d,`Rank`=%d,\
    `Vehicle`=%d, `Robberies`=%d, `Score`=%d, `Donor`=%d, `Banned`=%d WHERE `ID`=%d"
, P_Info[playerid][N_Cash], P_Info[playerid][N_Admin], P_Info[playerid][N_Kills], P_Info[playerid][N_Deaths],
    P_Info[playerid][N_Rank], P_Info[playerid][N_Vehicle], P_Info[playerid][N_Robberies], P_Info[playerid][N_Score], P_Info[playerid][N_Donor], P_Info[playerid][N_Banned], P_Info[playerid][pID]);
    mysql_tquery(mysql, query, "", "");
    return true;
}
CMD:oban(playerid, params[])
{
    if(P_Info[playerid][N_Admin] >= 3)
    {
        new id[24];

        if(sscanf(params,"s[24]",id)) return SendClientMessage (playerid,C_WHITE,"SYNTAX: {3399FF}/oban [PlayerName]");
        else {
            if(cache_get_row_count() > 0) //This is offline-ban. It grabs the IP from the user (offline), and inserts it into ban database.
            {
                new query[144];
                mysql_format(mysql, query, sizeof(query),"UPDATE `players` SET `Banned`=1 WHERE `Username` = '%e'", id);
                mysql_tquery(mysql, query, "", "");
            }
            else //DOESNT EXIST
            {

                SCM(playerid, C_WHITE, "{F81414}ERROR{FFFFFF}: Could not find anyone with that username");
                return 1;
            }
        }
    }
    return 1;
}
hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTER)
    {
        if(!response) return Kick(playerid);
        if(strlen(inputtext) < 6) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "{3399FF}System Register", "{3399FF}Neptune Gaming: TDM\n{FFFFFF}Please type Password\n{FFFFFF}Atleast {3399FF}6 {FFFFFF}Characters long.", "Register", "Quit");
        new query[2000];
        WP_Hash(P_Info[playerid][N_Pass], 129, inputtext);

        mysql_format(mysql, query, sizeof(query), "INSERT INTO `players` (`Username`, `Password`, `Cash`, `Admin`, `Kills`, `Deaths`, `Rank`,\
        `Vehicle`, `Robberies`, `Score`, `Donor`) VALUES ('%e', '%s',0,0,0,0,0,0,0,0,0)"
,
        myName[playerid], P_Info[playerid][N_Pass]);
        mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
    }
    if(dialogid == DIALOG_LOGIN)
    {
        if(!response) Kick(playerid);
        new hpass[129];
        new query[100];
        WP_Hash(hpass, 129, inputtext);
        if(!strcmp(hpass, P_Info[playerid][N_Pass]))
        {
            mysql_format(mysql, query, sizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e' LIMIT 1", myName[playerid]);
            mysql_tquery(mysql, query, "OnAccountLoad", "i", playerid);
        }
        else
        {
            ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{3399FF}System Login","{3399FF}Neptune Gaming: TDM\n{FFFFFF}ERROR: {F81414}Incorrect Password\n{FFFFFF}Please fix it below.","Login","Quit");
        }
    }
    return 1;
}
stock mySQL_Name(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    strreplaceee(name, '_', ' ');
    return name;
}
stock strreplaceee(string[], find, replace)
{
    for(new i=0; string[i]; i++)
    {
        if(string[i] == find)
        {
            string[i] = replace;
        }
    }
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)