SetSpawnInfo still not working correctly.
#1

Would someone please be able to have a look at my script below? I'm having really bad problems with spawning the player with the correct skin id.

I can not get the players skin id to load at all, whatever I try. It just keeps spawning the player as Skin ID 0 (CJ).

I have switched my command from SetSpawnInfo to individual commands hoping it would cure it, but it has made it worse.
After changing to individual commands my SpawnPos isnt working at all. When a new player registers they spawn underneath the world and then after a few seconds they get positioned back on top.

I'm really getting frustrated with SetSpawnInfo and its really a shame to abandon all the work I've done just because I cant get the player to spawn with the correct skin id.

SetSpawnInfo seems to work for everything else when I tried it earlier, it loaded up the correct positions etc, even the correct players score and money was given to them.

pawn Код:
#include <a_samp>
#include <a_mysql>
#include <sscanf2>
#include <core>
#include <float>

//#include "../include/gl_spawns.inc"

#define green 0x33AA33AA
#define red 0xFF0000AA

#define mysql_host              "127.0.0.1"
#define mysql_user              "XXXXXXXXXXXX"
#define mysql_password          "XXXXXXXXXXXX"
#define mysql_database          "samp"

#pragma tabsize 0

main()
{
    print("\n----------------------------------");
    print("  Welcome to UK-RP GTA Server!\n");
    print("----------------------------------\n");
}

enum PlayerInfo
{
    Username[23],
    Password[24],
    SkinID,
    Money,
    Bank,
    Level,
    Float:PosX,
    Float:PosY,
    Float:PosZ,
    CarID1,
    CarID2,
    HouseID,
    GarageID
}
new PInfo[MAX_PLAYERS][PlayerInfo];

public OnGameModeInit()
{
    mysql_connect(mysql_host,mysql_user,mysql_database,mysql_password);
    mysql_debug(1);
    SetGameModeText("UK-RP v1.00 (June 09");
    ShowPlayerMarkers(0);
    ShowNameTags(1);
/*
    AddPlayerClass(1,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(2,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(3,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(4,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(5,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(6,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(7,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(8,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(9,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(10,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(11,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(12,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(13,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(14,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(15,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(16,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(17,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(18,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(19,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(20,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(21,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(22,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(23,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(24,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(25,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(26,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(27,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(28,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(29,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(30,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(31,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(178,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(230,0,0,0,0,0,0,0,0,0,0);
*/

    return 1;
}

public OnPlayerConnect(playerid)
{
    GameTextForPlayer(playerid,"UK-RP GTA Server",5000,5);
    new Query[80],pName[24],string[128];
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query),"SELECT `Username` FROM `Users` WHERE `Username` = '%s' LIMIT 1;",pName);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        format(string,sizeof(string),"Hey, %s! \nYour account is registered.\nPlease enter the password to log in!",pName);
        ShowPlayerDialog(playerid,0,DIALOG_STYLE_INPUT,"Log in",string,"Login","");
    }
    else
    {
        format(string,sizeof(string),"Hey, %s! \nYour account is not registered. \nPlease register to continue!",pName);
        ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Register",string,"Register","");
    }
    mysql_free_result();
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerInterior(playerid,0);
    TogglePlayerClock(playerid,0);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
  new Query[200],pName[24];
  new Float:X, Float:Y, Float:Z;
  GetPlayerPos(playerid, X, Y, Z);
  GetPlayerName(playerid, pName, sizeof(pName));
  format(Query,sizeof(Query),"UPDATE `Users` SET PosX='%f',PosY='%f',PosZ='%f',Money='%i',SkinID='%i' WHERE `Username` = '%s';",X,Y,Z,GetPlayerMoney(playerid),GetPlayerSkin(playerid),pName);
  mysql_query(Query);
  return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 1)
        {
            if(strlen(inputtext) == 0)
            {
                ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Register - Enter your password","You are about to register a new account! \nPlease choose the password for it! \n","Register!","");
            }
            else
            {
                new EscapedText[60], Query[300], pName[24];
                mysql_real_escape_string(inputtext, EscapedText);
                GetPlayerName(playerid,pName,24);
                format(Query,sizeof(Query),"INSERT INTO `Users` (Username,Password,SkinID,Money,BankMoney,Level,PosX,PosY,PosZ,CarID1,CarID2,HouseID,GarageID) VALUES ('%s','%s','230','5000','0','1','2499.0720','-1673.5278','12.5150','0','0','0','0');",pName,EscapedText);
                mysql_query(Query);
                SendClientMessage(playerid,green,"You have been successfully registered!");
                NewPlayerLoadStats(playerid);
            }
        }
    if(dialogid == 0)
    {
        LoginPlayer(playerid,inputtext);
    }
    return 1;
}

stock LoginPlayer(playerid,const password[])
{
    new EscapedText[60], Query[128], pName[24];
    mysql_real_escape_string(password, EscapedText);
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query),"SELECT * FROM `Users` WHERE `Username` = '%s' AND `Password` = '%s';",pName,EscapedText);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        LoadStats(playerid);
    }
    else
    {
        SendClientMessage(playerid,red,"Wrong password!");
        Kick(playerid);
    }
    mysql_free_result();
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new idx;
    new cmd[256];
   
    cmd = strtok(cmdtext, idx);

    if(strcmp(cmd, "/stats", true) == 0) {
        new pName[24],Stats[256],Query[80];
   
        GetPlayerName(playerid,pName,24);
        format(Query,sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s';", pName);
        mysql_query(Query);
        mysql_store_result();
        mysql_fetch_row_format(Query, "|");
        sscanf(Query, "e<p<|>s[24]s[23]ddddfffdddd>", PInfo[playerid]);
        mysql_free_result();
       
        format(Stats,sizeof(Stats),"[Username: %s][Level: %d][Money: $%d][Bank: $%d][SkinID: %d]",pName,PInfo[playerid][Level],PInfo[playerid][Money],PInfo[playerid][Bank],PInfo[playerid][SkinID]);
        SendClientMessage(playerid,red,Stats);
        return 1;
    }

    return 0;
}

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

stock LoadStats(playerid)
{
    new pName[24],Query[80],WelcomeMsg[80];
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s';", pName);
    mysql_query(Query);
    mysql_store_result();
    mysql_fetch_row_format(Query, "|");
    sscanf(Query, "e<p<|>s[24]s[23]ddddfffdddd>", PInfo[playerid]);
    mysql_free_result();
    GivePlayerMoney(playerid,PInfo[playerid][Money]);
    SetPlayerSkin(playerid, PInfo[playerid][SkinID]);
    SetPlayerTeam(playerid, 0);
    SetPlayerPos(playerid, PInfo[playerid][PosX], PInfo[playerid][PosY], PInfo[playerid][PosZ]);
    //SetSpawnInfo(playerid, 0, PInfo[playerid][SkinID], PInfo[playerid][PosX], PInfo[playerid][PosY], PInfo[playerid][PosZ], 10, 0,0,0,0,0,0);
    SpawnPlayer(playerid);
    SetPlayerScore(playerid, PInfo[playerid][Level]);
   
    format(WelcomeMsg,sizeof(WelcomeMsg),"Welcome to UK-RP! You have been logged in as a Level %d Player!",PInfo[playerid][Level]);
    SendClientMessage(playerid,green,WelcomeMsg);
   
    return 1;
}

stock NewPlayerLoadStats(playerid)
{
    GivePlayerMoney(playerid,5000);
    SetPlayerSkin(playerid, 230);
    SetPlayerTeam(playerid, 0);
    SetPlayerPos(playerid, 2499.0720, -1673.5278, 12.5150);
    SpawnPlayer(playerid);
    SetPlayerScore(playerid, 1);
}

strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Reply
#2

It's working correctly but i think it can't get Skin data from database.
Try that:
pawn Код:
format(Query,sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s';", pName);
It get's all data for username from database.Try to do them single by single.
etc:
pawn Код:
format(Query,sizeof(Query), "SELECT level FROM `Users` WHERE `Username` = '%s';", pName);
format(Query,sizeof(Query), "SELECT skin FROM `Users` WHERE `Username` = '%s';", pName);
Reply
#3

It picks up all the skin data etc fine because when I run the /stats command I get

Quote:

[Username: Test][Level: 1][Money: $5000][Bank: $0][SkinID: 230]

But upon exiting the game with /q, it updates the database and changes the Skin ID to 0 and totally messes up the co-ords.

However, when I used SetSpawnInfo instead, it spawns the player in the correct location but ignores my choice of skin id.
Reply
#4

Change what you have in OnPlayerConnect to OnPlayerRequestClass.
And block the "Spawn" button which appears there.
pawn Код:
#include <a_samp>
#include <a_mysql>
#include <sscanf2>
#include <core>
#include <float>

//#include "../include/gl_spawns.inc"

#define green 0x33AA33AA
#define red 0xFF0000AA

#define mysql_host              "127.0.0.1"
#define mysql_user              "XXXXXXXXXXXX"
#define mysql_password          "XXXXXXXXXXXX"
#define mysql_database          "samp"

#pragma tabsize 0

main()
{
    print("\n----------------------------------");
    print("  Welcome to UK-RP GTA Server!\n");
    print("----------------------------------\n");
}

enum PlayerInfo
{
    Username[23],
    Password[24],
    SkinID,
    Money,
    Bank,
    Level,
    Float:PosX,
    Float:PosY,
    Float:PosZ,
    CarID1,
    CarID2,
    HouseID,
    GarageID
}
new PInfo[MAX_PLAYERS][PlayerInfo];

public OnGameModeInit()
{
    mysql_connect(mysql_host,mysql_user,mysql_database,mysql_password);
    mysql_debug(1);
    SetGameModeText("UK-RP v1.00 (June 09");
    ShowPlayerMarkers(0);
    ShowNameTags(1);
/*
    AddPlayerClass(1,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(2,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(3,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(4,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(5,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(6,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(7,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(8,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(9,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(10,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(11,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(12,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(13,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(14,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(15,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(16,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(17,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(18,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(19,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(20,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(21,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(22,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(23,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(24,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(25,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(26,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(27,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(28,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(29,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(30,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(31,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(178,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(230,0,0,0,0,0,0,0,0,0,0);
*/

    return 1;
}

public OnPlayerConnect(playerid)
{
    GameTextForPlayer(playerid,"UK-RP GTA Server",5000,5);
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    new Query[80],pName[24],string[128];
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query),"SELECT `Username` FROM `Users` WHERE `Username` = '%s' LIMIT 1;",pName);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        format(string,sizeof(string),"Hey, %s! \nYour account is registered.\nPlease enter the password to log in!",pName);
        ShowPlayerDialog(playerid,0,DIALOG_STYLE_INPUT,"Log in",string,"Login","");
    }
    else
    {
        format(string,sizeof(string),"Hey, %s! \nYour account is not registered. \nPlease register to continue!",pName);
        ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Register",string,"Register","");
    }
    mysql_free_result();
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    if(IsPlayerAdmin(playerid) || !IsPlayerAdmin(playerid)) return 0; //Block "Spawn" button. ;)
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerInterior(playerid,0);
    TogglePlayerClock(playerid,0);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
  new Query[200],pName[24];
  new Float:X, Float:Y, Float:Z;
  GetPlayerPos(playerid, X, Y, Z);
  GetPlayerName(playerid, pName, sizeof(pName));
  format(Query,sizeof(Query),"UPDATE `Users` SET PosX='%f',PosY='%f',PosZ='%f',Money='%i',SkinID='%i' WHERE `Username` = '%s';",X,Y,Z,GetPlayerMoney(playerid),GetPlayerSkin(playerid),pName);
  mysql_query(Query);
  return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 1)
        {
            if(strlen(inputtext) == 0)
            {
                ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Register - Enter your password","You are about to register a new account! \nPlease choose the password for it! \n","Register!","");
            }
            else
            {
                new EscapedText[60], Query[300], pName[24];
                mysql_real_escape_string(inputtext, EscapedText);
                GetPlayerName(playerid,pName,24);
                format(Query,sizeof(Query),"INSERT INTO `Users` (Username,Password,SkinID,Money,BankMoney,Level,PosX,PosY,PosZ,CarID1,CarID2,HouseID,GarageID) VALUES ('%s','%s','230','5000','0','1','2499.0720','-1673.5278','12.5150','0','0','0','0');",pName,EscapedText);
                mysql_query(Query);
                SendClientMessage(playerid,green,"You have been successfully registered!");
                NewPlayerLoadStats(playerid);
            }
        }
    if(dialogid == 0)
    {
        LoginPlayer(playerid,inputtext);
    }
    return 1;
}

stock LoginPlayer(playerid,const password[])
{
    new EscapedText[60], Query[128], pName[24];
    mysql_real_escape_string(password, EscapedText);
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query),"SELECT * FROM `Users` WHERE `Username` = '%s' AND `Password` = '%s';",pName,EscapedText);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        LoadStats(playerid);
    }
    else
    {
        SendClientMessage(playerid,red,"Wrong password!");
        Kick(playerid);
    }
    mysql_free_result();
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new idx;
    new cmd[256];
   
    cmd = strtok(cmdtext, idx);

    if(strcmp(cmd, "/stats", true) == 0) {
        new pName[24],Stats[256],Query[80];
   
        GetPlayerName(playerid,pName,24);
        format(Query,sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s';", pName);
        mysql_query(Query);
        mysql_store_result();
        mysql_fetch_row_format(Query, "|");
        sscanf(Query, "e<p<|>s[24]s[23]ddddfffdddd>", PInfo[playerid]);
        mysql_free_result();
       
        format(Stats,sizeof(Stats),"[Username: %s][Level: %d][Money: $%d][Bank: $%d][SkinID: %d]",pName,PInfo[playerid][Level],PInfo[playerid][Money],PInfo[playerid][Bank],PInfo[playerid][SkinID]);
        SendClientMessage(playerid,red,Stats);
        return 1;
    }

    return 0;
}

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

stock LoadStats(playerid)
{
    new pName[24],Query[80],WelcomeMsg[80];
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s';", pName);
    mysql_query(Query);
    mysql_store_result();
    mysql_fetch_row_format(Query, "|");
    sscanf(Query, "e<p<|>s[24]s[23]ddddfffdddd>", PInfo[playerid]);
    mysql_free_result();
    GivePlayerMoney(playerid,PInfo[playerid][Money]);
    SetPlayerSkin(playerid, PInfo[playerid][SkinID]);
    SetPlayerTeam(playerid, 0);
    SetPlayerPos(playerid, PInfo[playerid][PosX], PInfo[playerid][PosY], PInfo[playerid][PosZ]);
    //SetSpawnInfo(playerid, 0, PInfo[playerid][SkinID], PInfo[playerid][PosX], PInfo[playerid][PosY], PInfo[playerid][PosZ], 10, 0,0,0,0,0,0);
    SpawnPlayer(playerid);
    SetPlayerScore(playerid, PInfo[playerid][Level]);
   
    format(WelcomeMsg,sizeof(WelcomeMsg),"Welcome to UK-RP! You have been logged in as a Level %d Player!",PInfo[playerid][Level]);
    SendClientMessage(playerid,green,WelcomeMsg);
   
    return 1;
}

stock NewPlayerLoadStats(playerid)
{
    GivePlayerMoney(playerid,5000);
    SetPlayerSkin(playerid, 230);
    SetPlayerTeam(playerid, 0);
    SetPlayerPos(playerid, 2499.0720, -1673.5278, 12.5150);
    SpawnPlayer(playerid);
    SetPlayerScore(playerid, 1);
}

strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Should work.
Reply
#5

thanks that appears to work!

One more question regarding saving/loading the position, is there a brief explanation on how to do it when you are inside a building?
Reply
#6

Yes, GetPlayerInterior and save it. And when you load data SetPlayerInterior.
Same for positions. And you can use Get/SetPlayerVirtualWorld for virtual words.
pawn Код:
#include <a_samp>
#include <a_mysql>
#include <sscanf2>
#include <core>
#include <float>

//#include "../include/gl_spawns.inc"

#define green 0x33AA33AA
#define red 0xFF0000AA

#define mysql_host              "127.0.0.1"
#define mysql_user              "XXXXXXXXXXXX"
#define mysql_password          "XXXXXXXXXXXX"
#define mysql_database          "samp"

#pragma tabsize 0

main()
{
    print("\n----------------------------------");
    print("  Welcome to UK-RP GTA Server!\n");
    print("----------------------------------\n");
}

enum PlayerInfo
{
    Username[23],
    Password[24],
    SkinID,
    Money,
    Bank,
    Level,
    Float:PosX,
    Float:PosY,
    Float:PosZ,
    Int, //Interior
    VW, //Virtual World
    CarID1,
    CarID2,
    HouseID,
    GarageID
}
new PInfo[MAX_PLAYERS][PlayerInfo];

new bool:FirstSpawn[MAX_PLAYERS];

public OnGameModeInit()
{
    mysql_connect(mysql_host,mysql_user,mysql_database,mysql_password);
    mysql_debug(1);
    SetGameModeText("UK-RP v1.00 (June 09");
    ShowPlayerMarkers(0);
    ShowNameTags(1);
/*
    AddPlayerClass(1,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(2,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(3,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(4,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(5,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(6,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(7,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(8,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(9,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(10,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(11,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(12,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(13,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(14,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(15,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(16,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(17,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(18,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(19,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(20,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(21,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(22,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(23,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(24,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(25,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(26,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(27,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(28,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(29,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(30,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(31,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(178,0,0,0,0,0,0,0,0,0,0);
    AddPlayerClass(230,0,0,0,0,0,0,0,0,0,0);
*/

    return 1;
}

public OnPlayerConnect(playerid)
{
    FirstSpawn[playerid] = true;
    GameTextForPlayer(playerid,"UK-RP GTA Server",5000,5);
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    new Query[80],pName[24],string[128];
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query),"SELECT `Username` FROM `Users` WHERE `Username` = '%s' LIMIT 1;",pName);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        format(string,sizeof(string),"Hey, %s! \nYour account is registered.\nPlease enter the password to log in!",pName);
        ShowPlayerDialog(playerid,0,DIALOG_STYLE_INPUT,"Log in",string,"Login","");
    }
    else
    {
        format(string,sizeof(string),"Hey, %s! \nYour account is not registered. \nPlease register to continue!",pName);
        ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Register",string,"Register","");
    }
    mysql_free_result();
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    if(IsPlayerAdmin(playerid) || !IsPlayerAdmin(playerid)) return 0; //Block "Spawn" button. ;)
    return 1;
}

public OnPlayerSpawn(playerid)
{
    //SetPlayerInterior(playerid,0);  --- Incorrect, don't do that if you want save position inside buildings/interiors.
    TogglePlayerClock(playerid,0);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
  new Query[200],pName[24];
  new Float:X, Float:Y, Float:Z;
  GetPlayerPos(playerid, X, Y, Z);
  GetPlayerName(playerid, pName, sizeof(pName));
  format(Query,sizeof(Query),"UPDATE `Users` SET PosX='%f',PosY='%f',PosZ='%f',Int='%d',VW='%d',Money='%i',SkinID='%i' WHERE `Username` = '%s';",X,Y,Z,GetPlayerInterior(playerid),GetPlayerVirtualWorld(playerid),GetPlayerMoney(playerid),GetPlayerSkin(playerid),pName);
  mysql_query(Query);
  return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 1)
        {
            if(strlen(inputtext) == 0)
            {
                ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Register - Enter your password","You are about to register a new account! \nPlease choose the password for it! \n","Register!","");
            }
            else
            {
                new EscapedText[60], Query[300], pName[24];
                mysql_real_escape_string(inputtext, EscapedText);
                GetPlayerName(playerid,pName,24);
                format(Query,sizeof(Query),"INSERT INTO `Users` (Username,Password,SkinID,Money,BankMoney,Level,PosX,PosY,PosZ,Int,VW,CarID1,CarID2,HouseID,GarageID) VALUES ('%s','%s','230','5000','0','1','2499.0720','-1673.5278','12.5150','0','0','0','0','0','0');",pName,EscapedText);
                mysql_query(Query);
                SendClientMessage(playerid,green,"You have been successfully registered!");
                NewPlayerLoadStats(playerid);
            }
        }
    if(dialogid == 0)
    {
        LoginPlayer(playerid,inputtext);
    }
    return 1;
}

stock LoginPlayer(playerid,const password[])
{
    new EscapedText[60], Query[128], pName[24];
    mysql_real_escape_string(password, EscapedText);
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query),"SELECT * FROM `Users` WHERE `Username` = '%s' AND `Password` = '%s';",pName,EscapedText);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        LoadStats(playerid);
    }
    else
    {
        SendClientMessage(playerid,red,"Wrong password!");
        Kick(playerid);
    }
    mysql_free_result();
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new idx;
    new cmd[256];
   
    cmd = strtok(cmdtext, idx);

    if(strcmp(cmd, "/stats", true) == 0) {
        new pName[24],Stats[256],Query[80];
   
        GetPlayerName(playerid,pName,24);
        format(Query,sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s';", pName);
        mysql_query(Query);
        mysql_store_result();
        mysql_fetch_row_format(Query, "|");
        sscanf(Query, "e<p<|>s[24]s[23]ddddfffdddd>", PInfo[playerid]);
        mysql_free_result();
       
        format(Stats,sizeof(Stats),"[Username: %s][Level: %d][Money: $%d][Bank: $%d][SkinID: %d]",pName,PInfo[playerid][Level],PInfo[playerid][Money],PInfo[playerid][Bank],PInfo[playerid][SkinID]);
        SendClientMessage(playerid,red,Stats);
        return 1;
    }

    return 0;
}

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

stock LoadStats(playerid)
{
    new pName[24],Query[80],WelcomeMsg[80];
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s';", pName);
    mysql_query(Query);
    mysql_store_result();
    mysql_fetch_row_format(Query, "|");
    sscanf(Query, "e<p<|>s[24]s[23]ddddfffdddddd>", PInfo[playerid]);
    mysql_free_result();
    GivePlayerMoney(playerid,PInfo[playerid][Money]);
    SetPlayerSkin(playerid, PInfo[playerid][SkinID]);
    SetPlayerTeam(playerid, 0);
    SetSpawnInfo(playerid, 0, PInfo[playerid][SkinID], PInfo[playerid][PosX], PInfo[playerid][PosY], PInfo[playerid][PosZ], 10, 0,0,0,0,0,0);
    SpawnPlayer(playerid);
    if(FirstSpawn[playerid] == true)
    {
        SetPlayerPos(playerid, PInfo[playerid][PosX], PInfo[playerid][PosY], PInfo[playerid][PosZ]);
        SetPlayerInterior(playerid,PInfo[playerid][Int]);
        SetPlayerVirtualWorld(playerid,PInfo[playerid][VW]);
        FirstSpawn[playerid] = false;
    }
    SetPlayerScore(playerid, PInfo[playerid][Level]);
   
    format(WelcomeMsg,sizeof(WelcomeMsg),"Welcome to UK-RP! You have been logged in as a Level %d Player!",PInfo[playerid][Level]);
    SendClientMessage(playerid,green,WelcomeMsg);
   
    return 1;
}

stock NewPlayerLoadStats(playerid)
{
    GivePlayerMoney(playerid,5000);
    SetPlayerSkin(playerid, 230);
    SetPlayerTeam(playerid, 0);
    SetPlayerPos(playerid, 2499.0720, -1673.5278, 12.5150);
    SpawnPlayer(playerid);
    SetPlayerScore(playerid, 1);
}

strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)