Working with pwn for a server and getting thesse errors

107 Views Asked by At

so I'm working on a server base for sa-mp using pwn and have finished the script guide I followed they are all really old so they come with issues, I tried to fix them but have no clue what I'm doing lol.these are the errors I am getting

This is the code that's giving the error

#include <a_samp>
#include <zcmd>
#include <a_mysql>
#include <sscanf2>
#include <bcrypt>


#undef        MAX_PLAYERS
#define       MAX_PLAYERS         50

#define       BCRYPT_COST         12


#define       MYSQL_HOST          " "
#define       MYSQL_USER          " "
#define       MYSQL_PASSWORD      " "
#define       MYSQL_DATABASE      " "

#define       SECONDS_TO_LOGIN    60 


//Default Spawn
#define       DEFAULT_POS_X       1958.3783
#define       DEFAULT_POS_Y       1343.1572
#define       DEFAULT_POS_Z      15.3746
#define       DEFAULT_POS_A       240.1425

forward       OnPlayerDataLoaded(playerid);
forward       OnLoginTimeout(playerid);
forward       _KickPlayerDelayed(playerid);
forward       OnPasswordHashed(playerid);
forward       OnPasswordChecked(playerid);
forward       OnPlayerRegister(playerid);

new MySQL:    g_SQL;

enum E_PLAYERINFO  {
   ID,
   Name[MAX_PLAYER_NAME],   
   Password[65],
   Kills,
   Deaths,
   Float: X_Pos,
   Float: Y_Pos,
   Float: Z_Pos,
   Float: A_Pos,
   Interior,
   Virtualworld,

   Cache: Cache_ID,
   boll: IsLoggedIn,
   LoginAttemtps,
   LoginTimer
}
new PlayerInfo[MAX_PLAYERS][E_PLAYERINFO];

enum {
    DIALOG_UNUSED,

    DIALOG_LOGIN,
    DIALOG_REGISTER,
}


main(){ } //Keep this or the gamemode will break retard :]//

public OnGameModeInit()// server starts
{
    SetGameModeText("Roleplay");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

    new MySQLOpt: option_id = mysql_init_options();
    mysql_set_option(option_id, AUTO_RECONNECT, true);

    g_SQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);

    if(g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) !=-) {
        print("[SERVER][MySQL] Connection could not be established. The server is shutting down.");
        SendRconCommand("exit");
        return 1;
    }
    print("[SERVER][MySQL] Connection could not be established.");

    SetupPlayerTable();
    return 1;
}
//CallBacks
public OnGameModeExit()
{
    mysql_close(g_SQL);
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
}

public OnPlayerConnect(playerid)
{
    static const empty_player[E_PLAYERINFO];
    PlayerInfo[playerid] = empty_player;

    GetPlayerName(playerid, PlayerInfo[playerid][Name], MAX_PLAYERS_NAME);

    new query[103];

    mysql_format(g_SQL, query, sizeof(query), "SELECT * 'players' WHERE 'username' = '%e' LIMIT 1", PlayerInfo[playerid][Name]);
    mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "d", playerid);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    UpdatePlayerData(playerid, reason);

    if(cache_is_valid(PlayerInfo[playerid][Cache_ID])) {
        cache_delete(PlayerInfo[playerid][Cache_ID]);
    }

    if(PlayerInfo[playerid][LoginTimer]) {
        KillTimer(PlayerInfo[playerid][LoginTimer]);
        PlayerInfo[playerid][LoginTimer] = 0;
    }
    PlayerInfo[playerid][IsLoggedIn] = false;
    return 1;
}

public OnPlayerDataLoaded(playerid) {
    new string[240];
    if(cache_num_rows() > 0) {
        cache_get_value(0, "password", PlayerInfo[playerid][password], 65);

       PlayerInfo[playerid][Cache_ID] = cache_save();

       format(string, sizeof(string), "This account (%s) already exists. Log in!", PlayerInfo[playerid][Name]);
       ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Login", "Interrupt");

       PlayerInfo[playerid][LoginTimer] = SetTimerEx("OnLoginTimeout", SECONDS_TO_LOGIN * 1000, false, "d", playerid);
    } else {
         format(string, sizeof(string), "This account (%s) does not exist. Please register.", PlayerInfo[playerid][Name]);
       ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", string, "Login", "Interrupt");
    }
    return 1;
}


AssignPlayerData(playerid) {
    cache_get_value_int (0, "id", PlayerInfo[playerid][ID]);
    cache_get_value_int (0, "kills", PlayerInfo[playerid][Kills]);
    cache_get_value_int (0, "deaths", PlayerInfo[playerid][Deaths]);

    cache_get_value_float(0, "x", PlayerInfo[playerid][X_Pos]);
    cache_get_value_float(0, "y", PlayerInfo[playerid][Y_Pos]);
    cache_get_value_float(0, "z", PlayerInfo[playerid][Z_Pos]);
    cache_get_value_float(0, "a", PlayerInfo[playerid][A_Pos]);

    cache_get_value_int (0, "interior", PlayerInfo[playerid][Interior]);
    cache_get_value_int (0, "virtualworld", PlayerInfo[playerid][Virtualworld]);
}

UpdatePlayerData(playerid, reason) {
    if(!PlayerInfo[playerid][IsLoggedIn]) return 1;

    if(reason == 1) {
        GetPlayerPos(playerid, PlayerInfo[playerid][X_Pos], PlayerInfo[playerid][Y_Pos], PlayerInfo[playerid][Z_Pos]);
        GetPlayerFacingAngle(playerid, PlayerInfo[playerid][A_Pos]);
    }
    new query[145];
    mysql_format(g_SQL, query, sizeof(query), "UPDATE 'players' SET 'x' = '%f', 'y' = '%f', 'z' = '%f', 'a' = '%f', 'interior' = %d, 'virtualworld' = %d WHERE 'id' = %d LIMIT 1",
    PlayerInfo[playerid][X_Pos], PlayerInfo[playerid][Y_Pos], PlayerInfo[playerid][Z_Pos], PlayerInfo[playerid][A_Pos],
    PlayerInfo[playerid][Interior], PlayerInfo[playerid][Virtualworld], PlayerInfo[playerid][ID]);
    mysql_tquery(g_SQL, query);
    return 1;
}

public OnPlayerRegister(playerid) {
   PlayerInfo[playerid][ID] = cache_insert_id();

   ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Registration", "Your account has been successfully registered!", "Okay", "");

   PlayerInfo[playerid][IsLoggedIn] = true;

   PlayerInfo[playerid][X_Pos] = DEFAULT_POS_X;
   PlayerInfo[playerid][Y_Pos] = DEFAULT_POS_Y;
   PlayerInfo[playerid][Z_Pos] = DEFAULT_POS_Z;
   PlayerInfo[playerid][A_Pos] = DEFAULT_POS_A;

   SetSpawnInfo(playerid, NO_TEAM, 0, PlayerInfo[playerid][X_Pos], PlayerInfo[playerid][Y_Pos], PlayerInfo[playerid][Z_Pos], PlayerInfo[playerid][A_Pos], 0, 0, 0, 0, 0, 0);
   SpawnPlayer(playerid);
   return 1;
}

SetupPlayerTable() {
    mysql_tquery(g_SQL, "CREATE TABLE IF NOT EXISTS 'players' (\
                        'id' int(11) NOT NULL AUTO_INCREMENT, \
                        'username' varchar(24) NOT NULL, \
                        'password' char(64) NOT NULL, \
                        'kills' mediumint(8) NOT NULL DEFAULT '0',\
                        'deaths' mediumint(8) NOT NULL DEFAULT '0',\
                        'x' float NOT NULL DEFAULT '0', \
                        'y' float NOT NULL DEFAULT '0', \
                        'z' float NOT NULL DEFAULT '0', \
                        'a' float NOT NULL DEFAULT '0', \
                        'interior' tinyint(3) NOT NULL DEFAULT '0', \
                        'virtualworld' tinyint(3) NOT NULL DEFAULT '0', \
                         PRIMARY KEY('id'), UNIQUE KEY 'unsername'('username'))");
    return 1;   
}

public OnLoginTimeout(playerid){
    PlayerInfo[playerid][LoginTimer] = 0;
    ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Login", "You were kicked because you took too long to log in!", "Okay", "");
    DelayedKick(playerid);
    return 1;
}

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

public OnPlayerSpawn(playerid)
{
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
        // Do something here
        return 1;
    }
    return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
    return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 1;
}

public OnRconCommand(cmd[])
{
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    return 1;
}

public OnObjectMoved(objectid)
{
    return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
    return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
    return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
    return 1;
}

public OnPlayerExitedMenu(playerid)
{
    return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
    return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
    return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(diaglogid) {
        case DIALOG_UNUSED: return 1;

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

            bcrypt_check(inputtext, PlayerInfo[playerid][password], "OnPasswordChecked", "d", playerid);
            return 1;
        }

        case DIALOG_REGISTER: {
            if(!response) return Kick(playerid);

            if(strlen(inputtext) <= 5) {
                format(string, sizeof(string), "This account (%s) does not exist. Please register.\nYour password is too short.", PlayerInfo[playerid][pName]);
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", string, "Login", "Interrupt");
                return 1;
            }
            bcrypt_hash(inputtext, BCRYPT_COST, 'OnPasswordHashed', "d", playerid);
            return 1;
        }
    }
    return 1; 
}

public OnPasswordHashed(playerid) {
    bcrypt_get_hash(PlayerInfo[playerid][Password]);
    new query[128];
    mysql_format(g_SQL, query, sizeof(query), "INSERT INTO 'players' ('username', 'password') VALUES ('%e', '%e')", PlayerInfo[playerid][Name], PlayerInfo[playerid][Password]);
    mysql_tquery(g_SQL, query, "OnPlayerRegister", "d", playerid);
    return 1;
}

public OnPasswordChecked(playerid) {
new query[128];
    if (bcrypt_is_equal()) {
        ShowPlayerDialog(playerid, DIALOG_UNUSED,  DIALOG_STYLE_MSGBOX, "Login", "You have been successfully logged in.", "Okay", "");
        cache_set_active(PlayerInfo[playerid][Cache_ID]);

        AssignPlayerData(playerid);

        KillTimer(PlayerInfo[playerid][LoginTimer]);

        PlayerInfo[playerid][LoginTimer] = 0;
        PlayerInfo[playerid][IsLoggedIn] =  true;

        SetSpawnInfo(playerid, NO_TEAM, 0, PlayerInfo[playerid][X_Pos], PlayerInfo[playerid][Y_Pos], PlayerInfo[playerid][Z_Pos], PlayerInfo[playerid][A_Pos], 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", "You have entered your password incorrectly too many times!", "Okay", "");
             DelayedKick(playerid):
        }  else {
            format(string, sizeof(string), "This account (%s) already exists. Log in!\nPassword is Correct", PlayerInfo[playerid][Name]);
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Login", "Interrupt");
        }
    }
   return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}
//Functions

I haven't touched the errors that I have no clue about I fixed so easy things like not defining specific things ect, the only thing I have scripted is a login/register system I followed a tutorial but they are all outdated it just supposed to show a text box to register and a text box to input the details u made on registration to login

1

There are 1 best solutions below

0
On

Looks like you are using old libraries/plugins

First update samp-stdlib and pawn-stdlib (https://github.com/pawn-lang/samp-stdlib - https://github.com/pawn-lang/pawn-stdlib)

Upgrade MySQL plugin to MySQL R41-4 (https://github.com/pBlueG/SA-MP-MySQL/releases)

If the issue still occurs get help from open.mp Discord server. A community for sa-mp scripters.