25.10.2012, 16:47
(
Последний раз редактировалось glbracer; 25.10.2012 в 16:50.
Причина: I'm a derp sometimes.
)
Here's what's happening, some of the items under the OnPlayerConnect and OnPlayerDisconnect callbacks aren't working. Here's what I have under them.
Nothing works under either of the callbacks. Help would be sooo much appreciated.
(If needed here are the stock functions that are used.)
LoadUser & SaveUser
UserPath
RPName
Here's what I have under OnGameModeInIt
The only thing that works there is the CreatePickup for the buildingpicks, and it creates them at coordinates 0,0,0 (under Blueberry Acres.) I don't get any errors or warnings when I compile.
pawn Код:
public OnPlayerConnect(playerid)
{
new pname[MAX_PLAYER_NAME], string1[256], string2[256];
GetPlayerName(playerid, pname, sizeof(pname));
new namechk1 = strfind(pname, "_", true); new namechk2 = strfind(pname, "[", true); new namechk3 = strfind(pname, "]", true);
if(namechk1 == -1)
{
format(string2, sizeof(string2), "%s was kicked for having an invalid name!", pname);
SendClientMessage(playerid, error, "Please join with a valid role-play name!");
SendClientMessage(playerid, help, "Example: 'John_Doe' No clan [tags], no 'Hurr_Durr'; a realistic name.");
Kick(playerid);
}
if(!(namechk2 > -1 || namechk3 > -1))
{
format(string2, sizeof(string2), "%s was kicked for having a clan tag in their name!", pname);
SendClientMessage(playerid, error, "Please join with a valid role-play name!");
SendClientMessage(playerid, help, "Example: 'John_Doe' No clan [tags], no 'Hurr_Durr'; a realistic name.");
Kick(playerid);
}
format(string1, sizeof(string1), "%s (%d) has joined the server!", RPName(playerid), playerid);
SendClientMessageToAll(green, string1);
SendClientMessageToAll(error, string2);
SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 0);
SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL_SILENCED, 0);
SetPlayerSkillLevel(playerid, WEAPONSKILL_SPAS12_SHOTGUN, 0);
SetPlayerColor(playerid, white);
SetPlayerWeather(playerid, ServerWeather);
if(IsPlayerConnected(playerid) && !(IsPlayerInAnyVehicle(playerid)))
{
TextDrawHideForPlayer(playerid, dashtextdraw1);
TextDrawHideForPlayer(playerid, dashtextdraw2);
}
if(fexist(UserPath(playerid))) LoadUser(playerid);
if(!fexist(UserPath(playerid)))
{
SendClientMessage(playerid, yellow1, "Please wait while we guide you through class selection and registration.");
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register", "Please enter your desired account password.", "Accept", "Quit");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new string[256];
switch(reason)
{
case 0: format(string, sizeof(string), "%s has left the server. (Lost connection/Crashed)", RPName(playerid));
case 1: format(string, sizeof(string), "%s has left the server. (Leaving)", RPName(playerid));
case 2: format(string, sizeof(string), "%s has left the server. (Kicked/Banned)", RPName(playerid));
}
SendClientMessageToAll(col_message, string);
if(fexist(UserPath(playerid))) SaveUser(playerid);
return 1;
}
(If needed here are the stock functions that are used.)
LoadUser & SaveUser
pawn Код:
stock LoadUser(playerid)
{
new name[64], value[256];
SetPlayerHealth(playerid, PlayerInfo[playerid][pHealth]);
SetPlayerArmour(playerid, PlayerInfo[playerid][pArmour]);
SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
SetPlayerInterior(playerid, PlayerInfo[playerid][pInt]);
SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][pVW]);
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep1], PlayerInfo[playerid][pAmmo1]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep2], PlayerInfo[playerid][pAmmo2]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep3], PlayerInfo[playerid][pAmmo3]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep4], PlayerInfo[playerid][pAmmo4]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep5], PlayerInfo[playerid][pAmmo5]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep6], PlayerInfo[playerid][pAmmo6]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep7], PlayerInfo[playerid][pAmmo7]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep8], PlayerInfo[playerid][pAmmo8]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep9], PlayerInfo[playerid][pAmmo9]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep10], PlayerInfo[playerid][pAmmo10]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep11], PlayerInfo[playerid][pAmmo11]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][pWep12], PlayerInfo[playerid][pAmmo12]);
INI_Int("Password", PlayerInfo[playerid][pPassword]);
INI_Float("Health", PlayerInfo[playerid][pHealth]);
INI_Float("Armor", PlayerInfo[playerid][pArmour]);
INI_Float("X Coord", PlayerInfo[playerid][pX]);
INI_Float("Y Coord", PlayerInfo[playerid][pY]);
INI_Float("Z Coord", PlayerInfo[playerid][pZ]);
INI_Float("Facing Angle", PlayerInfo[playerid][pA]);
INI_Int("Skin", PlayerInfo[playerid][pSkin]);
INI_Int("Admin Level", PlayerInfo[playerid][pAdmin]);
INI_Int("Money", PlayerInfo[playerid][pMoney]);
INI_Int("Zom-bitch Kills", PlayerInfo[playerid][pZombieKills]);
INI_Int("Zom-bitch Deaths", PlayerInfo[playerid][pZombieDeaths]);
INI_Int("Human Kills", PlayerInfo[playerid][pHumanKills]);
INI_Int("Human Deaths", PlayerInfo[playerid][pHumanDeaths]);
INI_Int("Class", PlayerInfo[playerid][pClass]);
INI_Int("Interior", PlayerInfo[playerid][pInt]);
INI_Int("Virtual World", PlayerInfo[playerid][pVW]);
INI_Int("Weapon Slot 1", PlayerInfo[playerid][pWep1]);
INI_Int("Weapon Ammo 1", PlayerInfo[playerid][pAmmo1]);
INI_Int("Weapon Slot 2", PlayerInfo[playerid][pWep2]);
INI_Int("Weapon Ammo 2", PlayerInfo[playerid][pAmmo2]);
INI_Int("Weapon Slot 3", PlayerInfo[playerid][pWep3]);
INI_Int("Weapon Ammo 3", PlayerInfo[playerid][pAmmo3]);
INI_Int("Weapon Slot 4", PlayerInfo[playerid][pWep4]);
INI_Int("Weapon Ammo 4", PlayerInfo[playerid][pAmmo4]);
INI_Int("Weapon Slot 5", PlayerInfo[playerid][pWep5]);
INI_Int("Weapon Ammo 5", PlayerInfo[playerid][pAmmo5]);
INI_Int("Weapon Slot 6", PlayerInfo[playerid][pWep6]);
INI_Int("Weapon Ammo 6", PlayerInfo[playerid][pAmmo6]);
INI_Int("Weapon Slot 7", PlayerInfo[playerid][pWep7]);
INI_Int("Weapon Ammo 7", PlayerInfo[playerid][pAmmo7]);
INI_Int("Weapon Slot 8", PlayerInfo[playerid][pWep8]);
INI_Int("Weapon Ammo 8", PlayerInfo[playerid][pAmmo8]);
INI_Int("Weapon Slot 9", PlayerInfo[playerid][pWep9]);
INI_Int("Weapon Ammo 9", PlayerInfo[playerid][pAmmo9]);
INI_Int("Weapon Slot 10", PlayerInfo[playerid][pWep10]);
INI_Int("Weapon Ammo 10", PlayerInfo[playerid][pAmmo10]);
INI_Int("Weapon Slot 11", PlayerInfo[playerid][pWep11]);
INI_Int("Weapon Ammo 11", PlayerInfo[playerid][pAmmo11]);
INI_Int("Weapon Slot 12", PlayerInfo[playerid][pWep12]);
INI_Int("Weapon Ammo 12", PlayerInfo[playerid][pAmmo12]);
INI_Int("Walkie Talkie Channel", PlayerInfo[playerid][pWalkieCh]);
INI_Int("Police Radio Frequency", PlayerInfo[playerid][pPoliceFreq]);
INI_Bool("Is Muted", PlayerInfo[playerid][pMuted]);
INI_Bool("OOC On", PlayerInfo[playerid][pOOC]);
INI_Bool("PMs On", PlayerInfo[playerid][pPM]);
INI_Bool("Is Logged In", PlayerInfo[playerid][pLogged]);
INI_Bool("Is Registered", PlayerInfo[playerid][pRegistered]);
INI_Bool("Owns Walkie Talkie", PlayerInfo[playerid][pWalkie]);
INI_Bool("Owns Police Radio", PlayerInfo[playerid][pPoliceRadio]);
return 1;
}
stock SaveUser(playerid)
{
new INI:User = INI_Open(UserPath(playerid));
new Float:health, Float:armor, Float:x, Float:y, Float:z, Float:a, weapons[13][2];
GetPlayerHealth(playerid, health); GetPlayerArmour(playerid, armor);
GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a);
for(new i = 0; i < 13; i++)
{
GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
}
INI_WriteString(User, "Password", PlayerInfo[playerid][pPassword]);
INI_WriteFloat(User, "Health", health);
INI_WriteFloat(User, "Armor", armor);
INI_WriteFloat(User, "X Coord", z);
INI_WriteFloat(User, "Y Coord", y);
INI_WriteFloat(User, "Z Coord", z);
INI_WriteFloat(User, "Facing Angle", a);
INI_WriteInt(User, "Skin", PlayerInfo[playerid][pSkin]);
INI_WriteInt(User, "Admin Level", PlayerInfo[playerid][pAdmin]);
INI_WriteInt(User, "Money", GetPlayerMoney(playerid));
INI_WriteInt(User, "Zom-bitch Kills", PlayerInfo[playerid][pZombieKills]);
INI_WriteInt(User, "Zom-bitch Deaths", PlayerInfo[playerid][pZombieDeaths]);
INI_WriteInt(User, "Human Kills", PlayerInfo[playerid][pHumanKills]);
INI_WriteInt(User, "Human Deaths", PlayerInfo[playerid][pHumanDeaths]);
INI_WriteInt(User, "Class", PlayerInfo[playerid][pClass]);
INI_WriteInt(User, "Interior", GetPlayerInterior(playerid));
INI_WriteInt(User, "Virtual World", GetPlayerVirtualWorld(playerid));
INI_WriteInt(User, "Weapon Slot 1", weapons[1][0]);
INI_WriteInt(User, "Weapon Ammo 1", weapons[1][1]);
INI_WriteInt(User, "Weapon Slot 2", weapons[2][0]);
INI_WriteInt(User, "Weapon Ammo 2", weapons[2][1]);
INI_WriteInt(User, "Weapon Slot 3", weapons[3][0]);
INI_WriteInt(User, "Weapon Ammo 3", weapons[3][1]);
INI_WriteInt(User, "Weapon Slot 4", weapons[4][0]);
INI_WriteInt(User, "Weapon Ammo 4", weapons[4][1]);
INI_WriteInt(User, "Weapon Slot 5", weapons[5][0]);
INI_WriteInt(User, "Weapon Ammo 5", weapons[5][1]);
INI_WriteInt(User, "Weapon Slot 6", weapons[6][0]);
INI_WriteInt(User, "Weapon Ammo 6", weapons[6][1]);
INI_WriteInt(User, "Weapon Slot 7", weapons[7][0]);
INI_WriteInt(User, "Weapon Ammo 7", weapons[7][1]);
INI_WriteInt(User, "Weapon Slot 8", weapons[8][0]);
INI_WriteInt(User, "Weapon Ammo 8", weapons[8][1]);
INI_WriteInt(User, "Weapon Slot 9", weapons[9][0]);
INI_WriteInt(User, "Weapon Ammo 9", weapons[9][1]);
INI_WriteInt(User, "Weapon Slot 10", weapons[10][0]);
INI_WriteInt(User, "Weapon Ammo 10", weapons[10][1]);
INI_WriteInt(User, "Weapon Slot 11", weapons[11][0]);
INI_WriteInt(User, "Weapon Ammo 11", weapons[11][1]);
INI_WriteInt(User, "Weapon Slot 12", weapons[12][0]);
INI_WriteInt(User, "Weapon Ammo 12", weapons[12][1]);
INI_WriteInt(User, "Walkie Talkie Channel", PlayerInfo[playerid][pWalkieCh]);
INI_WriteInt(User, "Police Radio Frequency", PlayerInfo[playerid][pPoliceFreq]);
INI_WriteBool(User, "Is Muted", PlayerInfo[playerid][pMuted]);
INI_WriteBool(User, "OOC On", PlayerInfo[playerid][pOOC]);
INI_WriteBool(User, "PMs On", PlayerInfo[playerid][pPM]);
INI_WriteBool(User, "Is Logged In", false);
if(PlayerInfo[playerid][pRegistered] == true) INI_WriteBool(User, "Is Registered", true);
if(PlayerInfo[playerid][pRegistered] == false) INI_WriteBool(User, "Is Registered", false);
INI_WriteBool(User, "Owns Walkie Talkie", PlayerInfo[playerid][pWalkie]);
INI_WriteBool(User, "Owns Police Radio", PlayerInfo[playerid][pPoliceRadio]);
INI_Close(User);
return 1;
}
pawn Код:
stock UserPath(playerid)
{
new string[128], playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername,sizeof(playername));
format(string, sizeof(string), "/accounts/%s.ini", playername);
return string;
}
pawn Код:
stock RPName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
for(new i = 0; i < MAX_PLAYER_NAME; i++)
{
if(name[i] == '_') name[i] = ' ';
}
return name;
}
pawn Код:
public OnGameModeInit()
{
DisableInteriorEnterExits();
EnableStuntBonusForAll(0);
ShowPlayerMarkers(0);
SetNameTagDrawDistance(23.75);
ManualVehicleEngineAndLights();
for(new v = 1; v < MAX_VEHICLES; v++)
{
if(fexist(VehiclePath(v)))
{
new rand = random(sizeof(RandomPlates));
LoadVehicle(v);
new engine, lights, alarm, doors, hood, trunk, objective;
GetVehicleParamsEx(v, engine, lights, alarm, doors, hood, trunk, objective);
SetVehicleParamsEx(v, 0, 0, alarm, doors, 0, 0, objective);
LinkVehicleToInterior(v, VehicleInfo[v][vInt]);
SetVehiclePos(v, VehicleInfo[v][vX], VehicleInfo[v][vY], VehicleInfo[v][vZ]);
SetVehicleZAngle(v, VehicleInfo[v][vA]);
SetVehicleToRespawn(v);
AddStaticVehicle(VehicleInfo[v][vModel], VehicleInfo[v][vX], VehicleInfo[v][vY], VehicleInfo[v][vZ], VehicleInfo[v][vA], VehicleInfo[v][vColor1], VehicleInfo[v][vColor2]);
SetVehicleNumberPlate(v, RandomPlates[rand]);
print("Vehicles Loaded");
}
}
for(new b = 1; b < MAX_BUILDINGS; b++)
{
if(fexist(BuildingPath(b)))
{
LoadBuilding(b);
buildingpicks = CreatePickup(1318, 1, BuildingInfo[b][bOutsideX], BuildingInfo[b][bOutsideY], BuildingInfo[b][bOutsideZ], -1);
print("Buildings Loaded");
}
}
for(new l = 1; l < MAX_LADDERS; l++)
{
if(fexist(LadderPath(l)))
{
LoadBuilding(l);
print("Ladders Loaded");
}
}
SetTimer("WeatherRandom", 6000, true);
dashtimer = SetTimer("DashboardTimer", 150, true);
dashtextdraw1 = TextDrawCreate(145.500, 365.000, " ");
dashtextdraw2 = TextDrawCreate(145.500, 390.500, " ");
SetGameModeText("Zombipacolypse Role-Play");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 5, 1, 22, 68);
TextDrawBackgroundColor(dashtextdraw1, black);
TextDrawFont(dashtextdraw1, 2);
TextDrawLetterSize(dashtextdraw1, 0.480000, 1.800000);
TextDrawSetProportional(dashtextdraw1, 1);
TextDrawUseBox(dashtextdraw1, 1);
TextDrawTextSize(dashtextdraw1, 620.000000, 20.000000);
TextDrawSetOutline(dashtextdraw1,1);
TextDrawSetShadow(dashtextdraw1,0);
TextDrawBackgroundColor(dashtextdraw2, black);
TextDrawFont(dashtextdraw2, 2);
TextDrawLetterSize(dashtextdraw2, 0.480000, 1.800000);
TextDrawSetProportional(dashtextdraw2, 1);
TextDrawUseBox(dashtextdraw2, 1);
TextDrawTextSize(dashtextdraw2, 620.000000, 20.000000);
TextDrawSetOutline(dashtextdraw2,1);
TextDrawSetShadow(dashtextdraw2,0);
return 1;
}