10.06.2012, 11:32
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.
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;
}