MySQL help (Vehicle System)
#1

Hello, I haven't scripted in like a year, and have rarely used mysql. I was making a vehicle system, and for some reason, my public function isn't b eing called or something. I tested it to make sure nothing was getting cut off in the query, but it's all fine. So, can someone look at this code and see if I did something wrong (which I obviously did)?

pawn Код:
/*

    Author: venom.
    Script version: v1.3

*/

//
#include <a_samp>
#include <a_mysql>
#include <zcmd>
#include <sscanf2>
#include <streamer>
#include <crashdetect>
//
#define MYSQL_HOST    "localhost"
#define MYSQL_USER    "root"
#define MYSQL_BASE    "samp_db"
#define MYSQL_PASS    ""
//
#define NEW_SKIN          299
//
#define MAX_HOUSES      200
#undef MAX_VEHICLES
#define MAX_VEHICLES    400
//
#define SERVER_NAME     "Unknown RP"
#define COLOR_LIGHTRED        0xCC0404C8
#define COLOR_LIGHTBLUE       0x0080FFC8
#define COLOR_WHITE           0xFFFFFFC8
#define COLOR_GBLUE           0x8080FFC8
#define COLOR_ADMIN           0x008040C8
#define COLOR_RANGE1          0xBBBBBBC8
#define COLOR_RANGE2          0x909090C8
#define COLOR_PURPLE          0xFF80FFC8
//
main()
{
    print("\n");
    print(" Gamemode made by Steven ");
    print("\n");
}
//
#define LOGIN_DIALOG               400
#define REGISTER_DIALOG            800
#define DIALOG_BUYCAR              500
#define DIALOG_SURE                501
//
new PlayerText:buycarpreview;
new buycarid;
//
enum pInfo
{
    pSQLID,
    pName[24],
    pPass[24],
    pAdmin,
    pBanned,
    pPosX,
    pPosY,
    pPosZ,
    pAngle,
    pSkin,
    pFaction,
    pDivision,
    pRank
   
}
new PlayerInfo[MAX_PLAYERS][pInfo];
//
enum vInfo
{
    vID,
    vModel,
    vOwner[24],
    vColor[3],
    vPos[5],
    vLocked
}
new VehicleInfo[MAX_VEHICLES][vInfo];
new bool:vCreated[MAX_VEHICLES];
//
new sqldb, query[1000];
//
stock GetName(playerid)
{
    new AccName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, AccName, sizeof(AccName));
    return AccName;
}
//
stock ClearChat()
{
    new lines = 20;
    for(new i = 1; i != lines; i++) SendClientMessageToAll(COLOR_WHITE, "");
    return 1;
}
//
stock LoadPlayer(playerid)
{
    new temp[24];
    cache_get_row(0, 0, temp); PlayerInfo[playerid][pSQLID] = strval(temp);
    cache_get_row(0, 1, temp); PlayerInfo[playerid][pName] = temp;
    cache_get_row(0, 2, temp); PlayerInfo[playerid][pPass] = temp;
    cache_get_row(0, 3, temp); PlayerInfo[playerid][pAdmin] = strval(temp);
    cache_get_row(0, 4, temp); PlayerInfo[playerid][pBanned] = strval(temp);
    cache_get_row(0, 5, temp);  PlayerInfo[playerid][pPosX] = strval(temp);
    cache_get_row(0, 6, temp);  PlayerInfo[playerid][pPosY] = strval(temp);
    cache_get_row(0, 7, temp);  PlayerInfo[playerid][pPosZ] = strval(temp);
    cache_get_row(0, 8, temp);  PlayerInfo[playerid][pAngle] = strval(temp);
    cache_get_row(0, 9, temp); PlayerInfo[playerid][pSkin] = strval(temp);
    cache_get_row(0, 10, temp); PlayerInfo[playerid][pFaction] = strval(temp);
    cache_get_row(0, 11, temp); PlayerInfo[playerid][pDivision] = strval(temp);
    cache_get_row(0, 12, temp); PlayerInfo[playerid][pRank] = strval(temp);
    return 1;
}
//
stock SavePlayer(playerid)
{
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET adminlevel ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pAdmin], GetName(playerid));
    mysql_query(sqldb, query);
    //
    new Float: x, Float: y, Float: z, Float: angle;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, angle);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posx ='%f' WHERE accname ='%e'", x, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posy ='%f' WHERE accname ='%e'", y, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posz ='%f' WHERE accname ='%e'", z, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET angle ='%f' WHERE accname ='%e'", angle, GetName(playerid));
    mysql_query(sqldb, query);
    //
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET skin ='%d' WHERE accname ='%e'", GetPlayerSkin(playerid), GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET faction ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pFaction], GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET division ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pDivision], GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET rank ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pRank], GetName(playerid));
    mysql_query(sqldb, query);
    return 1;
}
//
stock GetRankName(faction, rank)
{
    new string[15];
    if(faction == 1)
    {
        if(rank < 0) format(string, sizeof(string), "N/A");
        if(rank == 0) format(string, sizeof(string), "Cadet");
        if(rank == 1) format(string, sizeof(string), "Officer");
        if(rank == 2) format(string, sizeof(string), "Sr. Officer");
        if(rank == 3) format(string, sizeof(string), "Sergeant");
        if(rank == 4) format(string, sizeof(string), "Captain");
        if(rank == 5) format(string, sizeof(string), "Deputy Chief");
        if(rank == 6) format(string, sizeof(string), "Chief");
        else format(string, sizeof(string), "N/A");
    }
    return string;
}
stock GetDivisionName(faction, division)
{
    new string[25];
    if(division == 1) format(string, sizeof(string), "Training and Recruitment");
    else format(string, sizeof(string), "N/A");
    return string;
}
stock GetAdminRank(level)
{
    new string[25];
    if(level <= 0) format(string, sizeof(string), "N/A");
    if(level == 1) format(string, sizeof(string), "Server  Moderator");
    if(level == 2) format(string, sizeof(string), "Administrator");
    if(level == 3) format(string, sizeof(string), "Senior Administrator");
    if(level == 4) format(string, sizeof(string), "Head Administrator");
    if(level == 5) format(string, sizeof(string), "Executive Administrator");
    else format(string, sizeof(string), "N/A");
    return string;
}
stock ProxDetector(playerid, col1, col2, col3, proxstring[])
{
    for(new i; i != MAX_PLAYERS; i++)
    {
        new Float: x, Float: y, Float: z;
        GetPlayerPos(playerid, x, y, z);
        if(IsPlayerInRangeOfPoint(i, 2.5, x, y, z))
        {
            SendClientMessage(i, col1, proxstring);
        }
        else if(IsPlayerInRangeOfPoint(i, 5.0, x, y, z))
        {
            SendClientMessage(i, col2, proxstring);
        }
        else if(IsPlayerInRangeOfPoint(i, 7.5, x, y, z))
        {
            SendClientMessage(i, col3, proxstring);
        }
    }
    return 1;
}
stock VehicleGetFreeSlot()
{
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
        if(!vCreated[i]) return i;
    }

    return -1;
}
//
forward InsertPlayer(playerid);
public InsertPlayer(playerid)
{
    PlayerInfo[playerid][pSQLID] = cache_insert_id(sqldb);
    return 1;
}
//
forward LogRegCheck(playerid);
public LogRegCheck(playerid)
{
    new rows = mysql_num_rows();
    if(!rows)
    {
        ClearChat();
        ShowPlayerDialog(playerid, REGISTER_DIALOG, DIALOG_STYLE_INPUT, "Register", "Welcome to "SERVER_NAME"\nThis account is not created, please register.", "Register", "Disconnect");
    }
    if(rows == 1)
    {
        LoadPlayer(playerid);
        if(PlayerInfo[playerid][pBanned] == 1)
        {
            SendClientMessage(playerid, COLOR_LIGHTRED, "This account is banned");
            Kick(playerid);
        }
        else
        {
            ClearChat();
            ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Login", "Welcome to "SERVER_NAME"\nThis account is created, please login.", "Login", "Disconnect");
        }
    }
    return 1;
}
//
forward VehicleCheck(playerid);
public VehicleCheck(playerid)
{
    new rows = mysql_num_rows();
    new vehicleid = VehicleGetFreeSlot();
    if(!rows) return 1;
    for(new i = 0; i < rows; i++)
    {
        new temp[24];
        cache_get_row(i, 0, temp); VehicleInfo[vehicleid][vModel] = strval(temp);
        cache_get_row(i, 1, temp); VehicleInfo[vehicleid][vPos][0] = strval(temp);
        cache_get_row(i, 2, temp); VehicleInfo[vehicleid][vPos][1] = strval(temp);
        cache_get_row(i, 3, temp); VehicleInfo[vehicleid][vPos][2] = strval(temp);
        cache_get_row(i, 4, temp); VehicleInfo[vehicleid][vPos][3] = strval(temp);
        cache_get_row(i, 5, temp); VehicleInfo[vehicleid][vOwner] = temp;
        cache_get_row(i, 6, temp); VehicleInfo[vehicleid][vColor][0] = strval(temp);
        cache_get_row(i, 7, temp); VehicleInfo[vehicleid][vColor][1] = strval(temp);
        cache_get_row(i, 8, temp); VehicleInfo[vehicleid][vLocked] = strval(temp);
        VehicleInfo[vehicleid][vID] = CreateVehicle(VehicleInfo[vehicleid][vModel], VehicleInfo[vehicleid][vPos][0], VehicleInfo[vehicleid][vPos][1], VehicleInfo[vehicleid][vPos][2], VehicleInfo[vehicleid][vPos][3], VehicleInfo[vehicleid][vColor][0], VehicleInfo[vehicleid][vColor][1], -1);
        vCreated[vehicleid] = true;
        format(query, sizeof(query), "%d || %f || %f || %f || %f || %s || %d || %d || %d", VehicleInfo[vehicleid][vModel], VehicleInfo[vehicleid][vPos][0], VehicleInfo[vehicleid][vPos][1], VehicleInfo[vehicleid][vPos][2], VehicleInfo[vehicleid][vPos][3], VehicleInfo[vehicleid][vOwner], VehicleInfo[vehicleid][vColor][0], VehicleInfo[vehicleid][vColor][1], VehicleInfo[vehicleid][vLocked]);
        print(query);
    }
    return 1;
}
//
forward BanExCB(playerid, giveplayername[], reason[]);
public BanExCB(playerid, giveplayername[], reason[])
{
    new rows = mysql_num_rows();
   
    if(!rows)
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, " That player doesn't exists!");
    }
    else if(rows == 1)
    {
        if(cache_get_row_int(0, 4, sqldb) == 1) return SendClientMessage(playerid, COLOR_LIGHTRED, " That player is allready banned!");
        else if(cache_get_row_int(0, 4, sqldb) == 0)
        {
            mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET banvar ='1' WHERE accname ='%e'", giveplayername);
            mysql_tquery(sqldb, query);

            new string[128];
            format(string, sizeof(string), " AdmCmd: Admin %s banned(Offline) %s Reason: %s", GetName(playerid), giveplayername, reason);
            SendClientMessageToAll(COLOR_LIGHTRED, string);
            printf(string);
        }
    }
    return 1;
}
//
forward UnbanPlayer(playerid, giveplayername[]);
public UnbanPlayer(playerid, giveplayername[])
{

    new rows = mysql_num_rows();
    if(!rows)
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, "That player doesn't exists in server's database!");
    }
    if(rows == 1)
    {
        new temp[24];
        cache_get_row(0, 4, temp);
        if(strval(temp) == 1)
        {
            mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET banvar ='0' WHERE accname ='%e'", giveplayername);
            mysql_tquery(sqldb, query);

            new string[64];
            format(string, sizeof(string), " AdmCmd: Admin %s unbanned %s!", GetName(playerid), giveplayername);
            printf(string);
            format(string, sizeof(string), " You have unbanned %s!", giveplayername);
            SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
        }
        else if(strval(temp) == 0)
        {
            SendClientMessage(playerid, COLOR_LIGHTRED, " That player isn't banned!");
        }
    }
    return 1;
}
//
forward TimerKick(playerid);
public TimerKick(playerid)
{
    Kick(playerid);
    return 1;
}
//
public OnGameModeInit()
{
    sqldb = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_BASE, MYSQL_PASS);
    SetGameModeText("URP v0.1");
    mysql_debug(1);
   
    CreateDynamicPickup(1239, 1, 2131.7590, -1151.3231, 24.0595, -1, -1, -1, 100.0);
    CreateDynamic3DTextLabel("Jefferson Dealership\nType /buycar to buy a car", 0xFFFF00FF, 2131.7590, -1151.3231, 24.0595, 50, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100.0);
    return 1;
}
//
public OnGameModeExit()
{
    mysql_close(sqldb);
    return 1;
}
//
public OnPlayerConnect(playerid)
{
    mysql_format(sqldb, query, sizeof(query), "SELECT * FROM accounts WHERE accname = '%e' LIMIT 0,1", GetName(playerid));
    mysql_tquery(sqldb, query, "LogRegCheck", "i", playerid);
    return 1;
}
//
public OnPlayerDisconnect(playerid, reason)
{
    SavePlayer(playerid);
    return 1;
}
//
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
    if(!success) return SendClientMessage(playerid, COLOR_LIGHTRED, " You have entered an unknown command! Use /help to see a list of available commands!");
    return 1;
}
//
public OnPlayerText(playerid, text[])
{
    new string[128];
    format(string, sizeof(string), " %s says: %s", GetName(playerid), text);
    ProxDetector(playerid, COLOR_WHITE, COLOR_RANGE1, COLOR_RANGE2, string);
    return 0;
}
//
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == LOGIN_DIALOG)
    {
        if(!response) return Kick(playerid);
        if(strcmp(inputtext, PlayerInfo[playerid][pPass], true) == 0)
        {
            SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pAngle], 0, 0, 0, 0, 0, 0);
            SpawnPlayer(playerid);

            new string[64];
            format(string, sizeof(string), "{8080FF}UnknownRP: {FFFFFF}Welcome back, %s!", GetName(playerid));
            SendClientMessage(playerid, COLOR_WHITE, string);
            mysql_format(sqldb, query, sizeof(query), "SELECT * FROM vehicles WHERE owner = '%e' LIMIT 2", GetName(playerid));
            mysql_tquery(sqldb, query, "VehicleCheck", "i", playerid);
        }
        else
        {
            ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Login", "Wrong password! Try again!", "Login", "Disconnect");
        }
        return 1;
    }
    if(dialogid == REGISTER_DIALOG)
    {
        if(!response) return Kick(playerid);
        if(strlen(inputtext) > 24) return ShowPlayerDialog(playerid, REGISTER_DIALOG, DIALOG_STYLE_INPUT, "Register", "Password should be from 8 to 24 charachters long!", "Register", "Disconnect");

        mysql_format(sqldb, query, sizeof(query), "INSERT INTO accounts (accname, accpass) VALUES ('%e', '%e')", GetName(playerid), inputtext);
        mysql_tquery(sqldb, query, "InsertPlayer", "i", playerid);

        SetSpawnInfo(playerid, 0, NEW_SKIN, 2101.7244, -1366.6266, 23.9844, 182.4922, 0, 0, 0, 0, 0, 0);
        SpawnPlayer(playerid);
       
        new string[64];
        format(string, sizeof(string), "{8080FF}UnknownRP: {FFFFFF}Welcome, %s!", GetName(playerid));
        SendClientMessage(playerid, COLOR_WHITE, string);
        return 1;
    }
    if(dialogid == DIALOG_BUYCAR)
    {
        if(!response) return 0;
        buycarpreview = CreatePlayerTextDraw(playerid, 320.0, 240.0, "_");
        PlayerTextDrawFont(playerid, buycarpreview, TEXT_DRAW_FONT_MODEL_PREVIEW);
        PlayerTextDrawUseBox(playerid, buycarpreview, 1);
        PlayerTextDrawBoxColor(playerid, buycarpreview, 0x000000FF);
        PlayerTextDrawTextSize(playerid, buycarpreview, 40.0, 40.0);
        switch(listitem)
        {
            case 0: buycarid = 400;
            case 1: buycarid = 401;
            case 2: buycarid = 405;
            case 3: buycarid = 412;
        }
        ShowPlayerDialog(playerid, DIALOG_SURE, DIALOG_STYLE_MSGBOX, "Vehicle", "Are you sure you want to buy this vehicle?\nPlease search the name of the vehicle online to see what it looks like", "Yes", "No");
        return 1;
    }
    if(dialogid == DIALOG_SURE)
    {
        if(!response) return 0;
        //Take Money here
        mysql_format(sqldb, query, sizeof(query), "INSERT INTO vehicles (model, posx, posy, posz, posa, owner, color1, color2, locked) VALUES ('%d', '%f', '%f', '%f', '%f', '%e', '%d', '%d', '%d')", buycarid, 2126.5962, -1142.9784, 24.8155, 4.8569, GetName(playerid), 0, 0, 1);
        mysql_tquery(sqldb, query);
        print(query);
       
        mysql_format(sqldb, query, sizeof(query), "SELECT * FROM vehicles WHERE owner = '%e' LIMIT 2", GetName(playerid));
        mysql_tquery(sqldb, query, "VehicleCheck", "i", playerid);
        return 1;
    }
    return 0;
}
//
command(help, playerid, params[])
{
    SendClientMessage(playerid, COLOR_LIGHTRED, "Help: Commands");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Chat: /b, /l(ocal), /me, /do");
    return 1;
}
command(buycar, playerid, params[])
{
    if(IsPlayerInRangeOfPoint(playerid, 5.0, 2131.7590, -1151.3231, 24.0595))
    {
        ShowPlayerDialog(playerid, DIALOG_BUYCAR, DIALOG_STYLE_LIST, "Vehicles", "Landstalker - $15,000\nBravura - $17,000\nSentinal - $16,000\nVoodoo - $20,000\n", "Buy", "Cancel");
    }
    else return SendClientMessage(playerid, COLOR_LIGHTRED, "You are not in range of a dealership!");
    return 1;
}
command(giverank, playerid, params[])
{
    if(PlayerInfo[playerid][pFaction] >= 5 || PlayerInfo[playerid][pDivision] == 1)
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, " You are not allowed to use this command!");
    }
    else
    {
        new giveplayerid, rank, string[128];
        if(sscanf(params, "ui", giveplayerid, rank)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /giverank [playerid] [rank]");
        if(PlayerInfo[playerid][pFaction] != PlayerInfo[giveplayerid][pFaction]) return SendClientMessage(playerid, COLOR_LIGHTRED, "You are not in the same faction as that person!");
        if(rank == PlayerInfo[giveplayerid][pRank]) return SendClientMessage(playerid, COLOR_LIGHTRED, "That person is already that rank!");
        if(PlayerInfo[playerid][pFaction] <= PlayerInfo[giveplayerid][pFaction]) return SendClientMessage(playerid, COLOR_LIGHTRED, "You are lower than or the same rank as that person!");
        else if(rank < PlayerInfo[giveplayerid][pRank])
        {
            format(string, sizeof(string), "You have demoted %s to %s", GetName(giveplayerid), GetRankName(PlayerInfo[playerid][pFaction], rank));
            SendClientMessage(playerid, COLOR_WHITE, string);
            format(string, sizeof(string), "You have been demoted to %s by %s", GetRankName(PlayerInfo[playerid][pFaction], rank), GetName(playerid));
            SendClientMessage(giveplayerid, COLOR_WHITE, string);
        }
        else if(rank > PlayerInfo[giveplayerid][pRank])
        {
            format(string, sizeof(string), "You have promoted %s to %s", GetName(giveplayerid), GetRankName(PlayerInfo[playerid][pFaction], rank));
            SendClientMessage(playerid, COLOR_WHITE, string);
            format(string, sizeof(string), "You have been promoted to %s by %s", GetRankName(PlayerInfo[playerid][pFaction], rank), GetName(playerid));
            SendClientMessage(giveplayerid, COLOR_WHITE, string);
        }
        PlayerInfo[giveplayerid][pRank] = rank;
    }
    return 1;
}
command(setdivision, playerid, params[])
{
    if(PlayerInfo[playerid][pFaction] >= 5)
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, " You are not allowed to use this command!");
    }
    else
    {
        new giveplayerid, division, string[128];
        if(sscanf(params, "ui", giveplayerid, division))
        {
            SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setdiv(ision) [playerid] [division]");
            SendClientMessage(playerid, COLOR_WHITE, "Available Divisions: [1] TnR");
            return 1;
        }
        if(PlayerInfo[playerid][pFaction] != PlayerInfo[giveplayerid][pFaction]) return SendClientMessage(playerid, COLOR_LIGHTRED, "You are not in the same faction as that person!");
        if(division == PlayerInfo[giveplayerid][pDivision]) return SendClientMessage(playerid, COLOR_LIGHTRED, "That person is already in that division!");
        format(string, sizeof(string), "You've put %s in the %s division", GetName(giveplayerid), GetDivisionName(PlayerInfo[playerid][pFaction], division));
        SendClientMessage(playerid, COLOR_WHITE, string);
        format(string, sizeof(string), "You've been put in the %s division by %s", GetDivisionName(PlayerInfo[playerid][pFaction], division), GetName(playerid));
        SendClientMessage(giveplayerid, COLOR_WHITE, string);
        PlayerInfo[giveplayerid][pDivision] = division;
    }
    return 1;
}
command(makeadmin, playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] != 5)
    {
        return 0;
    }
    else
    {
        new level, giveplayerid, string[128];
        if(sscanf(params, "ui", giveplayerid, level)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /makeadmin [playerid] [level]");

        format(string, sizeof(string), " You have made %s a level %d admin!", GetName(giveplayerid), level);
        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
        format(string, sizeof(string), " %s promoted you to level %d admin!", GetName(playerid), level);

        mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET adminlevel = '%d' WHERE accname = '%e'", level, GetName(giveplayerid));
        mysql_tquery(sqldb, query);
        PlayerInfo[playerid][pAdmin] = level;
    }
    return 1;
}
//
command(kick, playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] != 1)
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, " You are not allowed to use this command!");
    }
    else
    {
        new giveplayerid, reason[32], kickstring[128];
        if(sscanf(params, "us[32]", giveplayerid, reason)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE: /kick [playerid] [reason]");
        format(kickstring, sizeof(kickstring), " AdmCmd: Admin %s kicked %s, Reason: %s", GetName(playerid), GetName(giveplayerid), reason);
        SendClientMessageToAll(COLOR_LIGHTRED, kickstring);
        printf(kickstring);
        Kick(giveplayerid);
    }
    return 1;
}
//
command(ban, playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] != 2)
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, " You are not allowed to use this command!");
    }
    else
    {
        new giveplayerid, reason[32], banstring[128];
        if(sscanf(params, "us[32]", giveplayerid, reason)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE: /ban [playerid] [reason]");
        if(!IsPlayerConnected(giveplayerid))
        {
            SendClientMessage(playerid, COLOR_LIGHTRED, " That player is not connected! Use /banex!");
        }
        else
        {
            format(banstring, sizeof(banstring), " AdmCmd: Admin %s banned %s, Reason: %s", GetName(playerid), GetName(giveplayerid), reason);
            SendClientMessageToAll(COLOR_LIGHTRED, banstring);
            printf(banstring);
            mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET banvar ='1' WHERE accname ='%e'", GetName(giveplayerid));
            mysql_tquery(sqldb, query);
        }
    }
    return 1;
}
//
command(banex, playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] != 4)
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, " You are not allowed to use this command!");
    }
    else
    {
        new giveplayername[24], reason[32];
        if(sscanf(params, "s[24]s[32]", giveplayername, reason)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE: /banex [player name] [reason]");
       
        mysql_format(sqldb, query, sizeof(query), "SELECT * FROM accounts WHERE accname ='%e' LIMIT 0, 1", giveplayername);
        mysql_tquery(sqldb, query, "BanExCB", "iss", playerid, giveplayername, reason);
    }
    return 1;
}
//
command(unban, playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] != 3)
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, " You are not allowed to use this command!");
    }
    else
    {
        new giveplayername[24];
        if(sscanf(params, "s[24]", giveplayername)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE: /unban [player name]");

        mysql_format(sqldb, query, sizeof(query), "SELECT * FROM accounts WHERE accname ='%e'", giveplayername);
        mysql_tquery(sqldb, query, "UnbanPlayer", "is", playerid, giveplayername);
    }
    return 1;
}
//
command(admin, playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, " You are not allowed to use this command!");
    else
    {
        new string[128],
        level = PlayerInfo[playerid][pAdmin];
        if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE: /(a)dmin [chat]");
        format(string, sizeof(string), " %d Admin %s: %s", GetAdminRank(level), GetName(playerid), params);
        for(new i; i != MAX_PLAYERS; i++)
        {
            if(PlayerInfo[i][pAdmin] != 0)
            {
                SendClientMessage(i, COLOR_ADMIN, string);
            }
            else
            {
                // Nothing
            }
        }
    }
    return 1;
}
//
command(a, playerid, params[])
{
    return cmd_admin(playerid, params);
}
//
CMD:changepassword(playerid, params[])
{
    new oldpw[24], newpw[24];
    if(sscanf(params, "s[24]s[24]", oldpw, newpw)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE: /changepassword [current pw] [new pw]");
    if(strcmp(oldpw, PlayerInfo[playerid][pPass], true) == 0)
    {
        if(strlen(newpw) > 24 || strlen(newpw) < 8)
        {
            SendClientMessage(playerid, COLOR_LIGHTRED, " New password must be between 8 and 24 charachters long!");
        }
        else
        {
            mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET accpass = '%e' WHERE accname = '%e'", newpw, GetName(playerid));
            mysql_tquery(sqldb, query);

            SendClientMessage(playerid, COLOR_LIGHTBLUE, " You have succesfully changed your password! Please relog to continue!");

            SetTimerEx("TimerKick", 1000, false, "i", playerid);

        }
    }
    else
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, " Wrong current password!");
    }
    return 1;
}
//
CMD:me(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE:/me [emote]");
    new string[128];
    format(string, sizeof(string), " * %s %s", GetName(playerid), params);
    ProxDetector(playerid, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, string);
    return 1;
}
//
CMD:do(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE:/do [action]");
    new string[128];
    format(string, sizeof(string), " * %s (( %s ))", params, GetName(playerid));
    ProxDetector(playerid, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, string);
    return 1;
}
//
CMD:b(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE:/b [OOC Chat]");
    new string[128];
    format(string, sizeof(string), " (( %s [%d]: %s ))", GetName(playerid), playerid, params);
    ProxDetector(playerid, COLOR_WHITE, COLOR_RANGE1, COLOR_RANGE2, string);
    return 1;
}
//
CMD:local(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, " USAGE:/(l)ocal [IC Chat]");
    new string[128];
    format(string, sizeof(string), " %s says: %s", GetName(playerid), params);
    ProxDetector(playerid, COLOR_WHITE, COLOR_RANGE1, COLOR_RANGE2, string);
    return 1;
}
//
CMD:l(playerid, params[])
{
    return cmd_local(playerid, params);
}
I posted the entire gamemode since it doesn't have much right now. The vehicle system is obvious (VehicleCheck function, VehicleInfo enumerator, etc).
Reply
#2

Bump. Still need help.
Reply
#3

at which part should the function be called? I didn't find a line that actually calls the function
Reply
#4

pawn Код:
stock SavePlayer(playerid)
{
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET adminlevel ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pAdmin], GetName(playerid));
    mysql_query(sqldb, query);
    //
    new Float: x, Float: y, Float: z, Float: angle;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, angle);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posx ='%f' WHERE accname ='%e'", x, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posy ='%f' WHERE accname ='%e'", y, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posz ='%f' WHERE accname ='%e'", z, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET angle ='%f' WHERE accname ='%e'", angle, GetName(playerid));
    mysql_query(sqldb, query);
    //
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET skin ='%d' WHERE accname ='%e'", GetPlayerSkin(playerid), GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET faction ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pFaction], GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET division ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pDivision], GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET rank ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pRank], GetName(playerid));
    mysql_query(sqldb, query);
    return 1;
}
Just why? You can run just 1 query. Use strcat to append the other parts of the query.
Would be nice if you also showed us the MySQL debug log.
Reply
#5

Quote:
Originally Posted by Sascha
Посмотреть сообщение
at which part should the function be called? I didn't find a line that actually calls the function
Under OnDialogResponse. Right here
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == LOGIN_DIALOG)
    {
        if(!response) return Kick(playerid);
        if(strcmp(inputtext, PlayerInfo[playerid][pPass], true) == 0)
        {
            SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pAngle], 0, 0, 0, 0, 0, 0);
            SpawnPlayer(playerid);

            new string[64];
            format(string, sizeof(string), "{8080FF}UnknownRP: {FFFFFF}Welcome back, %s!", GetName(playerid));
            SendClientMessage(playerid, COLOR_WHITE, string);
            mysql_format(sqldb, query, sizeof(query), "SELECT * FROM vehicles WHERE owner = '%e' LIMIT 2", GetName(playerid));
            mysql_tquery(sqldb, query, "VehicleCheck", "i", playerid);
        }
        else
        {
            ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Login", "Wrong password! Try again!", "Login", "Disconnect");
        }
        return 1;
    }
Quote:
Originally Posted by gtakillerIV
Посмотреть сообщение
pawn Код:
stock SavePlayer(playerid)
{
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET adminlevel ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pAdmin], GetName(playerid));
    mysql_query(sqldb, query);
    //
    new Float: x, Float: y, Float: z, Float: angle;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, angle);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posx ='%f' WHERE accname ='%e'", x, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posy ='%f' WHERE accname ='%e'", y, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET posz ='%f' WHERE accname ='%e'", z, GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET angle ='%f' WHERE accname ='%e'", angle, GetName(playerid));
    mysql_query(sqldb, query);
    //
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET skin ='%d' WHERE accname ='%e'", GetPlayerSkin(playerid), GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET faction ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pFaction], GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET division ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pDivision], GetName(playerid));
    mysql_query(sqldb, query);
   
    mysql_format(sqldb, query, sizeof(query), "UPDATE accounts SET rank ='%d' WHERE accname ='%e'", PlayerInfo[playerid][pRank], GetName(playerid));
    mysql_query(sqldb, query);
    return 1;
}
Just why? You can run just 1 query. Use strcat to append the other parts of the query.
Would be nice if you also showed us the MySQL debug log.
I haven't used mysql in a while and wanted to learn how to do it differently (with the newest releases and features). I downloaded a basic script and edited it myself a little. However, understand what you are talking about.
Reply
#6

We must see the logs to be able to identify the problem(logs are there for a reason!). In your server directory there should be a text file called "Debug". If there isn't, then make sure that you've enabled MySQL debugging.
Reply
#7

Can't post the entire thing.
However, I think I found it:
Код:
[23:39:33] [ERROR] CMySQLQuery::Execute[VehicleCheck] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2' at line 1
[23:39:33] [DEBUG] CMySQLQuery::Execute[VehicleCheck] - error will be triggered in OnQueryError
Any idea what's wrong with my syntax?
Reply
#8

Above those 2 lines in the error log should be the complete query. Show us that.
Reply
#9

Woops, thought I posted the error already. I guess I didn't.

Код:
[23:39:33] [DEBUG] mysql_format - connection: 1, len: 1000, format: "SELECT * FROM vehicles WHERE owner = '%e' LIMIT 0,1,2"
[23:39:33] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM vehicles WHERE owner = 'Kurt_Sidman' LIMIT 0,1,2", callback: "VehicleCheck", format: "i"
[23:39:33] [DEBUG] CMySQLQuery::Execute[VehicleCheck] - starting query execution
[23:39:33] [ERROR] CMySQLQuery::Execute[VehicleCheck] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2' at line 1
[23:39:33] [DEBUG] CMySQLQuery::Execute[VehicleCheck] - error will be triggered in OnQueryError
Reply
#10

It should be a string, not an enumerator. It should be '%s' (including the ' ' )
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)