Mysql Connection error
#1

hello.
i'm trying to install a mysql ban system in my script (https://sampforum.blast.hk/showthread.php?tid=429651),

but everytime i compile it, i get these errors:

Код:
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(23) : error 001: expected token: "-string end-", but found "-identifier-"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(23) : error 017: undefined symbol "mmrp_sampbans"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(23) : warning 215: expression has no effect
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(23) : error 001: expected token: "-string end-", but found "-identifier-"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(23) : fatal error 107: too many error messages on one line
this is my code:
pawn Код:
//Includes-------------

#include <a_samp>
#include <a_mysql>
#include <zcmd>

// -----------------database defines------------------
#define mysql_host            "HIDDEN"
#define mysql_user            "HIDDEN"
#define mysql_password     ""HIDDEN""
#define mysql_database     ""HIDDEN""

// ----------------color defines ---------------------
#define C_RED               0xFF0000FF
#define C_GREY              0xAFAFAFFF
#define C_BLUE              0x0000BBFF
#define C_WHITE             0xFFFFFFFF


//================Script ==============================
public OnFilterScriptInit()
{
    mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);

    mysql_query("CREATE TABLE IF NOT EXISTS bandata(admin VARCHAR(20), player VARCHAR(20), reason VARCHAR(50), IP VARCHAR(16), banned INT(10))");
    if(mysql_ping() == 1)
    {
        mysql_debug(1);
        printf("[MYSQL] Connection with the BAN database: SUCCESS!");
    }
    else
    {
        printf("[MYSQL] Connection with the BAN database: FAIL!");
    }
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    MySQL_BanCheck(playerid);
    return 1;
}



//======================Ban system Stocks=====================================
stock escpname(playerid)
{
    new escname[24], Pname[24];
    GetPlayerName(playerid, Pname, 24);
    mysql_real_escape_string(Pname, escname);
    return escname;
}
stock PlayerName(playerid)
{
  new name[MAX_PLAYER_NAME];
  GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  return name;
}
stock MySQL_BanCheck(playerid)
{
  new query[200], admin[50], pname[50], IP[16], string1[100];
  GetPlayerIp(playerid, IP, 16);
  format(query, sizeof(query),"SELECT * FROM `bandata` WHERE(`player`='%s' OR `IP`='%s') AND `banned`=1 LIMIT 1", escpname(playerid), IP);
  mysql_query(query);
  mysql_store_result();
  if(mysql_num_rows() != 0)
  {
     while(mysql_fetch_row(query))
     {
       mysql_fetch_field_row(admin, "admin");
       mysql_fetch_field_row(pname, "player");
       mysql_fetch_field_row(string1, "reason");
     }

     new string[50], str[50], str1[100];
     format(string, sizeof(string),"Admin: %s", admin);
     format(str, sizeof(str),"Player: %s", pname);
     format(str1, sizeof(str1),"Reason: %s", string1);
     SendClientMessage(playerid, C_RED,"You are banned from this server!");
     SendClientMessage(playerid, C_RED,"___________________");
     SendClientMessage(playerid, C_RED, str);
     SendClientMessage(playerid, C_RED, string);
     SendClientMessage(playerid, C_RED, str1);
     SendClientMessage(playerid, C_RED,"___________________");
     SendClientMessage(playerid, C_RED, "If you think that this BAN was a mistake, then post a screenshot(using F8) on our website");
     SendClientMessage(playerid, C_RED, "www.yourservername.com");
     Kick(playerid);
  }
  mysql_free_result();
  return 1;
}

stock sscanf(string[], format[], {Float,_}:...)
{
        #if defined isnull
                if (isnull(string))
        #else
                if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
        #endif
                {
                        return format[0];
                }
        #pragma tabsize 4
        new
                formatPos = 0,
                stringPos = 0,
                paramPos = 2,
                paramCount = numargs(),
                delim = ' ';
        while (string[stringPos] && string[stringPos] <= ' ')
        {
                stringPos++;
        }
        while (paramPos < paramCount && string[stringPos])
        {
                switch (format[formatPos++])
                {
                        case '\0':
                        {
                                return 0;
                        }
                        case 'i', 'd':
                        {
                                new
                                        neg = 1,
                                        num = 0,
                                        ch = string[stringPos];
                                if (ch == '-')
                                {
                                        neg = -1;
                                        ch = string[++stringPos];
                                }
                                do
                                {
                                        stringPos++;
                                        if ('0' <= ch <= '9')
                                        {
                                                num = (num * 10) + (ch - '0');
                                        }
                                        else
                                        {
                                                return -1;
                                        }
                                }
                                while ((ch = string[stringPos]) > ' ' && ch != delim);
                                setarg(paramPos, 0, num * neg);
                        }
                        case 'h', 'x':
                        {
                                new
                                        num = 0,
                                        ch = string[stringPos];
                                do
                                {
                                        stringPos++;
                                        switch (ch)
                                        {
                                                case 'x', 'X':
                                                {
                                                        num = 0;
                                                        continue;
                                                }
                                                case '0' .. '9':
                                                {
                                                        num = (num << 4) | (ch - '0');
                                                }
                                                case 'a' .. 'f':
                                                {
                                                        num = (num << 4) | (ch - ('a' - 10));
                                                }
                                                case 'A' .. 'F':
                                                {
                                                        num = (num << 4) | (ch - ('A' - 10));
                                                }
                                                default:
                                                {
                                                        return -1;
                                                }
                                        }
                                }
                                while ((ch = string[stringPos]) > ' ' && ch != delim);
                                setarg(paramPos, 0, num);
                        }
                        case 'c':
                        {
                                setarg(paramPos, 0, string[stringPos++]);
                        }
                        case 'f':
                        {

                                new changestr[16], changepos = 0, strpos = stringPos;
                                while(changepos < 16 && string[strpos] && string[strpos] != delim)
                                {
                                        changestr[changepos++] = string[strpos++];
                                }
                                changestr[changepos] = '\0';
                                setarg(paramPos,0,_:floatstr(changestr));
                        }
                        case 'p':
                        {
                                delim = format[formatPos++];
                                continue;
                        }
                        case '\'':
                        {
                                new
                                        end = formatPos - 1,
                                        ch;
                                while ((ch = format[++end]) && ch != '\'') {}
                                if (!ch)
                                {
                                        return -1;
                                }
                                format[end] = '\0';
                                if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
                                {
                                        if (format[end + 1])
                                        {
                                                return -1;
                                        }
                                        return 0;
                                }
                                format[end] = '\'';
                                stringPos = ch + (end - formatPos);
                                formatPos = end + 1;
                        }
                        case 'u':
                        {
                                new
                                        end = stringPos - 1,
                                        id = 0,
                                        bool:num = true,
                                        ch;
                                while ((ch = string[++end]) && ch != delim)
                                {
                                        if (num)
                                        {
                                                if ('0' <= ch <= '9')
                                                {
                                                        id = (id * 10) + (ch - '0');
                                                }
                                                else
                                                {
                                                        num = false;
                                                }
                                        }
                                }
                                if (num && IsPlayerConnected(id))
                                {
                                        setarg(paramPos, 0, id);
                                }
                                else
                                {
                                        #if !defined foreach
                                                #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
                                                #define __SSCANF_FOREACH__
                                        #endif
                                        string[end] = '\0';
                                        num = false;
                                        new
                                                name[MAX_PLAYER_NAME];
                                        id = end - stringPos;
                                        foreach (Player, playerid)
                                        {
                                                GetPlayerName(playerid, name, sizeof (name));
                                                if (!strcmp(name, string[stringPos], true, id))
                                                {
                                                        setarg(paramPos, 0, playerid);
                                                        num = true;
                                                        break;
                                                }
                                        }
                                        if (!num)
                                        {
                                                setarg(paramPos, 0, INVALID_PLAYER_ID);
                                        }
                                        string[end] = ch;
                                        #if defined __SSCANF_FOREACH__
                                                #undef foreach
                                                #undef __SSCANF_FOREACH__
                                        #endif
                                }
                                stringPos = end;
                        }
                        case 's', 'z':
                        {
                                new
                                        i = 0,
                                        ch;
                                if (format[formatPos])
                                {
                                        while ((ch = string[stringPos++]) && ch != delim)
                                        {
                                                setarg(paramPos, i++, ch);
                                        }
                                        if (!i)
                                        {
                                                return -1;
                                        }
                                }
                                else
                                {
                                        while ((ch = string[stringPos++]))
                                        {
                                                setarg(paramPos, i++, ch);
                                        }
                                }
                                stringPos--;
                                setarg(paramPos, i, '\0');
                        }
                        default:
                        {
                                continue;
                        }
                }
                while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
                {
                        stringPos++;
                }
                while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
                {
                        stringPos++;
                }
                paramPos++;
        }
        do
        {
                if ((delim = format[formatPos++]) > ' ')
                {
                        if (delim == '\'')
                        {
                                while ((delim = format[formatPos++]) && delim != '\'') {}
                        }
                        else if (delim != 'z')
                        {
                                return delim;
                        }
                }
        }
        while (delim > ' ');
        return 0;
}

what's the problem here?
Reply
#2

Код:
#define mysql_host            "HIDDEN"
#define mysql_user            "HIDDEN"
#define mysql_password     ""HIDDEN""
#define mysql_database     ""HIDDEN""
Remove the extra symbols marked with red color.
Reply
#3

Quote:
Originally Posted by Konstantinos
Посмотреть сообщение
Код:
#define mysql_host            "HIDDEN"
#define mysql_user            "HIDDEN"
#define mysql_password     ""HIDDEN""
#define mysql_database     ""HIDDEN""
Remove the extra symbols marked with red color.
yea i saw that short after.
now i get these errors:

Код:
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(25) : error 035: argument type mismatch (argument 1)
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(26) : error 017: undefined symbol "mysql_ping"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(28) : warning 206: redundant test: constant expression is non-zero
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(28) : warning 215: expression has no effect
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(70) : error 035: argument type mismatch (argument 1)
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(71) : error 017: undefined symbol "mysql_store_result"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(72) : error 017: undefined symbol "mysql_num_rows"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(74) : error 017: undefined symbol "mysql_fetch_row"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(76) : error 017: undefined symbol "mysql_fetch_field_row"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(77) : error 017: undefined symbol "mysql_fetch_field_row"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(78) : error 017: undefined symbol "mysql_fetch_field_row"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(95) : error 017: undefined symbol "mysql_free_result"
C:\Users\Jamie\Desktop\xd\Syndicate RP\filterscripts\bansystem.pwn(100) : error 021: symbol already defined: "sscanf"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


11 Errors.
Reply
#4

That system uses a very old version of the mysql plugin (R5 or R6) as well as the sscanf function written in PAWN. I would highly advise you to update it to R39-5 with threaded queries for faster performance and use the sscanf plugin too.

If your decision will be to update it, I'll post the appropriate links to read few tutorials and its usage and anything you don't understand just say it so I (or other users) can explain it to you. Otherwise, download the correct version of it.
Reply
#5

Quote:
Originally Posted by Konstantinos
Посмотреть сообщение
That system uses a very old version of the mysql plugin (R5 or R6) as well as the sscanf function written in PAWN. I would highly advise you to update it to R39-5 with threaded queries for faster performance and use the sscanf plugin too.

If your decision will be to update it, I'll post the appropriate links to read few tutorials and its usage and anything you don't understand just say it so I (or other users) can explain it to you. Otherwise, download the correct version of it.
Where can i find this version specificly?
Reply
#6

https://sampforum.blast.hk/showthread.php?tid=56564

At the bottom of the first post at "Downloads:" section.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)