Код:
public OnPlayerDisconnect(playerid, reason)
{
// Crash Fix
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(!strcmp(name, "InvalidNick", true)) return 1;
if(!strcmp(name, "BannedPlayer", true)) return 1;
if(playerid == MAX_PLAYERS) return 1;
if(pTazer[playerid] == 1) GivePlayerValidWeapon(playerid,pTazerReplace[playerid],60000);
if(GetPVarInt(playerid, "SpeedRadar") == 1) GivePlayerValidWeapon(playerid, GetPVarInt(playerid, "RadarReplacement"), 60000);
if(GetPVarInt(playerid, "MovingStretcher") != -1) {
KillTimer(GetPVarInt(playerid, "TickEMSMove"));
DeletePVar(GetPVarInt(playerid, "MovingStretcher"), "OnStretcher");
SetPVarInt(playerid, "MovingStretcher", -1);
}
if(IsValidDynamicObject(PlayerInfo[playerid][pWeedObject]))
{
DestroyDynamicObject(PlayerInfo[playerid][pWeedObject]);
}
if(IsValidDynamicObject(BoomboxInfo[playerid][bbObject]))
{
DestroyDynamicObject(BoomboxInfo[playerid][bbObject]);
foreach(Player, i)
{
if(IsPlayerInRangeOfPoint(i,150.0,BoomboxInfo[playerid][bbPosX],BoomboxInfo[playerid][bbPosY],BoomboxInfo[playerid][bbPosZ]) && GetPlayerInterior(i) == BoomboxInfo[playerid][bbInt] && GetPlayerVirtualWorld(i) == BoomboxInfo[playerid][bbVW])
{
StopAudioStreamForPlayer(i);
}
}
}
if(GetPVarInt(playerid, "PBM") < 1) {
if(GetPVarInt(playerid, "Hospital") > 0) {
PlayerInfo[playerid][pHospital] = 1;
}
if(GetPVarInt(playerid, "Injured") == 1) {
PlayerInfo[playerid][pHospital] = 1;
KillEMSQueue(playerid);
ResetPlayerWeaponsEx(playerid);
}
} else {
new
szMessage[64];
format(szMessage, sizeof(szMessage), "%s has left the paintball game (disconnect).", GetPlayerNameEx(playerid));
foreach(Player, i) {
if(GetPVarInt(i, "PBM") == GetPVarInt(playerid, "PBM") && i != playerid)
SendClientMessage(i, COLOR_RED, szMessage);
}
}
if(PlayerInfo[playerid][pLockCar] != INVALID_VEHICLE_ID)
vehicle_unlock_doors(PlayerInfo[playerid][pLockCar]);
if(PlayerInfo[playerid][pVehicleKeysFrom] != INVALID_PLAYER_ID)
PlayerVehicleInfo[PlayerInfo[playerid][pVehicleKeysFrom]][PlayerInfo[playerid][pVehicleKeys]][pvAllowedPlayerId] = INVALID_PLAYER_ID;
InsideShamal[playerid] = INVALID_VEHICLE_ID;
PlayerInfo[playerid][pInt] = GetPlayerInterior(playerid);
GetPlayerPos(playerid, PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]);
GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPos_r]);
if(GetPlayerSkin(playerid) == 155)
PlayerInfo[playerid][pSkin] = GetPVarInt(playerid, "NPS");
if(InsideShamal[playerid] != INVALID_VEHICLE_ID) {
if(InsideShamal[playerid] == INVALID_VEHICLE_ID || GetVehicleModel(InsideShamal[playerid]) != 519)
{
GivePlayerValidWeapon(playerid, 46, 60000);
PlayerInfo[playerid][pPos_x] = 0.000000;
PlayerInfo[playerid][pPos_y] = 0.000000;
PlayerInfo[playerid][pPos_z] = 420.000000;
}
else
{
new Float:X, Float:Y, Float:Z;
GetVehiclePos(InsideShamal[playerid], X, Y, Z);
PlayerInfo[playerid][pPos_x] = X;
PlayerInfo[playerid][pPos_y] = Y;
PlayerInfo[playerid][pPos_z] = Z;
new Float:XB, Float:YB, Float:ZB;
GetVehiclePos(InsideShamal[playerid], XB, YB, ZB);
if(ZB > 50.0)
{
GivePlayerValidWeapon(playerid, 46, 60000);
}
}
PlayerInfo[playerid][pVW] = 0;
SetPlayerVirtualWorld(playerid, 0);
PlayerInfo[playerid][pInt] = 0;
SetPlayerInterior(playerid, 0);
InsideShamal[playerid] = INVALID_VEHICLE_ID;
}
UnloadPlayerVehicles(playerid);
ResetPlayerWeapons(playerid);
for(new i = 0; i < MAX_REPORTS; i++)
{
if(Reports[i][ReportFrom] == playerid)
{
Reports[i][ReportFrom] = 999;
Reports[i][BeingUsed] = 0;
Reports[i][TimeToExpire] = 0;
}
}
foreach(Player, i)
{
if(TaxiAccepted[i] == playerid)
{
TaxiAccepted[i] = 999;
GameTextForPlayer(i, "~w~Taxi Caller~n~~r~Left the game", 5000, 1);
TaxiCallTime[i] = 0;
DisablePlayerCheckpoint(i);
}
if(EMSAccepted[i] == playerid)
{
EMSAccepted[i] = 999;
GameTextForPlayer(i, "~w~EMS Caller~n~~r~Left the game", 5000, 1);
EMSCallTime[i] = 0;
DisablePlayerCheckpoint(i);
}
if(BusAccepted[i] == playerid)
{
BusAccepted[i] = 999;
GameTextForPlayer(i, "~w~Bus Caller~n~~r~Left the game", 5000, 1);
BusCallTime[i] = 0;
DisablePlayerCheckpoint(i);
}
if(MedicAccepted[i] == playerid)
{
TaxiAccepted[playerid] = 999; BusAccepted[playerid] = 999; MedicAccepted[playerid] = 999;
GameTextForPlayer(i, "~w~Medic Caller~n~~r~Left the game", 5000, 1);
MedicCallTime[i] = 0;
DisablePlayerCheckpoint(i);
}
}
if(Spectate[playerid] < 553)
{
PlayerInfo[playerid][pInt] = GetPVarInt(playerid, "SpecInt");
PlayerInfo[playerid][pVW] = GetPVarInt(playerid, "SpecVW");
PlayerInfo[playerid][pPos_x] = GetPVarFloat(playerid, "SpecPosX");
PlayerInfo[playerid][pPos_y] = GetPVarFloat(playerid, "SpecPosY");
PlayerInfo[playerid][pPos_z] = GetPVarFloat(playerid, "SpecPosZ");
GettingSpectated[Spectate[playerid]] = 999;
Spectate[playerid] = 999;
}
if(GetPVarInt(playerid, "gpsonoff") == 1) TextDrawDestroy(GPS[playerid]);
if(PlayerBoxing[playerid] > 0)
{
if(Boxer1 == playerid)
{
if(IsPlayerConnected(Boxer2))
{
if(IsPlayerInRangeOfPoint(PlayerBoxing[Boxer2], 25.0, 765.952270, 4.167977, 1000.719238))
{
PlayerBoxing[Boxer2] = 0;
SetPlayerPos(Boxer2, 765.952270, 4.167977, 1000.719238);
SetPlayerInterior(Boxer2, 5);
GameTextForPlayer(Boxer2, "~r~Match interrupted", 5000, 1);
return 1;
}
}
}
else if(Boxer2 == playerid)
{
if(IsPlayerConnected(Boxer1))
{
if(IsPlayerInRangeOfPoint(PlayerBoxing[Boxer1],25.0,765.952270, 4.167977, 1000.719238))
{
PlayerBoxing[Boxer1] = 0;
SetPlayerPos(Boxer1, 765.952270, 4.167977, 1000.719238);
SetPlayerInterior(Boxer1, 5);
GameTextForPlayer(Boxer1, "~r~Match interrupted", 5000, 1);
return 1;
}
}
}
InRing = 0;
RoundStarted = 0;
Boxer1 = INVALID_PLAYER_ID;
Boxer2 = INVALID_PLAYER_ID;
}
new string[128];
switch (reason)
{
case 0:
{
format(string, sizeof(string), "%s has left the server (timeout).", GetPlayerNameEx(playerid));
ProxDetector(30.0, playerid, string, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
if(PlayerCuffed[playerid] != 0)
{
strcpy(PlayerInfo[playerid][pPrisonedBy], "Server", 64);
strcpy(PlayerInfo[playerid][pPrisonReason], "Logging while cuffed (timeout)", 64);
PlayerInfo[playerid][pJailed] = 3;
PlayerInfo[playerid][pJailTime] += 30*60;
}
}
case 1:
{
format(string, sizeof(string), "%s has left the server (leaving).", GetPlayerNameEx(playerid));
ProxDetector(30.0, playerid, string, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
if(PlayerCuffed[playerid] != 0)
{
strcpy(PlayerInfo[playerid][pPrisonedBy], "Server", 64);
strcpy(PlayerInfo[playerid][pPrisonReason], "Logging while cuffed (leaving)", 64);
PlayerInfo[playerid][pJailed] = 3;
PlayerInfo[playerid][pJailTime] += 20*60;
}
}
case 2:
{
format(string, sizeof(string), "%s has left the server (kicked/banned).", GetPlayerNameEx(playerid));
ProxDetector(30.0, playerid, string, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
}
}
for(new x; x < sizeof(EventKernel[EventStaff]); x++) {
if(EventKernel[EventStaff][x] == playerid) {
EventKernel[EventStaff][x] = 999;
break;
}
}
if(GetPVarInt(playerid, "EventToken") == 0 && !GetPVarType(playerid, "LoadingObjects"))
{
new Float: x, Float: y, Float: z;
PlayerInfo[playerid][pInt] = GetPlayerInterior(playerid);
PlayerInfo[playerid][pVW] = GetPlayerVirtualWorld(playerid);
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPos_r]);
PlayerInfo[playerid][pPos_x] = x;
PlayerInfo[playerid][pPos_y] = y;
PlayerInfo[playerid][pPos_z] = z;
}
else
{
PlayerInfo[playerid][pInt] = EventLastInt[playerid];
PlayerInfo[playerid][pVW] = EventLastVW[playerid];
PlayerInfo[playerid][pPos_r] = EventFloats[playerid][0];
PlayerInfo[playerid][pPos_x] = EventFloats[playerid][1];
PlayerInfo[playerid][pPos_y] = EventFloats[playerid][2];
PlayerInfo[playerid][pPos_z] = EventFloats[playerid][3];
}
if(TransportCost[playerid] > 0 && TransportDriver[playerid] < 999)
{
if(IsPlayerConnected(TransportDriver[playerid]))
{
TransportMoney[TransportDriver[playerid]] += TransportCost[playerid];
TransportTime[TransportDriver[playerid]] = 0;
TransportCost[TransportDriver[playerid]] = 0;
format(string, sizeof(string), "~w~Passenger left~n~~g~Earned $%d",TransportCost[playerid]);
GameTextForPlayer(TransportDriver[playerid], string, 5000, 1);
TransportDriver[playerid] = 999;
}
}
if(GotHit[playerid] > 0)
{
if(GetChased[playerid] < 999)
{
if(IsPlayerConnected(GetChased[playerid]))
{
SendClientMessage(GetChased[playerid], COLOR_YELLOW, "Your hit has left the server.");
GoChase[GetChased[playerid]] = 999;
}
}
}
if(GoChase[playerid] < 999)
{
GetChased[GoChase[playerid]] = 999;
GotHit[GoChase[playerid]] = 999;
}
if(TransportDuty[playerid] == 1)
{
TaxiDrivers -= 1;
}
else if(TransportDuty[playerid] == 2)
{
BusDrivers -= 1;
}
if(PlayerInfo[playerid][pJob] == 11 || PlayerInfo[playerid][pJob2] == 11)
{
if(JobDuty[playerid] == 1) { Medics -= 1; }
}
if(PlayerInfo[playerid][pJob] == 7 || PlayerInfo[playerid][pJob2] == 7)
{
if(JobDuty[playerid] == 1) { Mechanics -= 1; }
}
if(GetPVarType(playerid, "tabbedVW") != 0) {
printf("[alt tab vw debug] %d | tabvw: %d | real vw: %d", PlayerInfo[playerid][pVW], GetPVarInt(playerid, "tabbedVW"), GetPlayerVirtualWorld(playerid));
PlayerInfo[playerid][pVW] = GetPVarInt(playerid, "tabbedVW");
} else PlayerInfo[playerid][pVW] = GetPlayerVirtualWorld(playerid);
printf("[alt tab vw debug] tabvw: %d | tabvw type: %d", GetPVarInt(playerid, "tabbedVW"), GetPVarType(playerid, "tabbedVW"));
if(GetPVarInt(playerid, "PBM") > 0) {
PlayerInfo[playerid][pPos_x] = 1782.8229;
PlayerInfo[playerid][pPos_y] = -1565.8177;
PlayerInfo[playerid][pPos_z] = 13.3472;
PlayerInfo[playerid][pInt] = 0;
PlayerInfo[playerid][pVW] = 0;
PlayerInfo[playerid][pPos_r] = 0;
}
OnPlayerStatsUpdate(playerid);
return 1;
}
Код:
public OnPlayerConnect(playerid) {
new
szPlayerIP[16];
// Code to patch a SA-MP exploit where you can connect to a SA-MP server multiple times with a bunch of names and completely rape the logs
// We don't receive attacks like this very often, but I have produced the code so if we ever need it, we have it right in front of us. It requires testing though...
/*new
szPlayerName[MAX_PLAYER_NAME],
szPlayerIP[16],
szPlayerIPs[16],
szPlayerNames[MAX_PLAYER_NAME];
GetPlayerName(playerid, szPlayerName, MAX_PLAYER_NAME);
GetPlayerIp(playerid, szPlayerIP, sizeof(szPlayerIP));
foreach(Player, x) {
GetPlayerName(x, szPlayerNames, MAX_PLAYER_NAME);
GetPlayerIp(playerid, szPlayerIPs, sizeof(szPlayerIPs));
if(strfind(szPlayerName, szPlayerNames, true) != -1 && !strcmp(szPlayerIPs, szPlayerIP, true) && IsStringAlphaNumeric(szPlayerNames) == 0)
return BanEx(playerid, "NieXrlaM client spam attack attempt");
}*/
TotalConnect++;
if(Iter_Count(Player) > MaxPlayersConnected)
{
MaxPlayersConnected = Iter_Count(Player);
getdate(MPYear,MPMonth,MPDay);
}
GetPlayerIp(playerid, szPlayerIP, sizeof(szPlayerIP));
if(!InvalidNameCheck(playerid)) return 1;
if(CheckBan(szPlayerIP) == 1) {
SetPlayerName(playerid, "BannedPlayer");
SendClientMessage(playerid, COLOR_NEWS, "You're banned from Pak Reality Roleplay. You can appeal your ban at http://pr-gaming.bestforum.ca/");
Kick(playerid);
return 1;
}
SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 1);
SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 1);
SetPVarInt(playerid, "IsInArena", -1);
SetPVarInt(playerid, "MovingStretcher", -1);
SetPVarInt(playerid, "editingcd", -1);
SetPVarInt(playerid, "editingcdveh", -1);
SetPVarInt(playerid, "AdminUndercover", 0);
SetPlayerColor(playerid,TEAM_HIT_COLOR);
// Player file variables (saving)
PlayerInfo[playerid][pKey] = 0;
PlayerInfo[playerid][pLiveBanned] = 0;
PlayerInfo[playerid][pLevel] = 2;
PlayerInfo[playerid][pAdmin] = 0;
format(PlayerInfo[playerid][pAdminName], 32, "0");
PlayerInfo[playerid][pBanAppealer] = 0;
PlayerInfo[playerid][pBanned] = 0;
PlayerInfo[playerid][pPermaBanned] = 0;
PlayerInfo[playerid][pDisabled] = 0;
PlayerInfo[playerid][pIP] = 0;
PlayerInfo[playerid][pReg] = 0;
PlayerInfo[playerid][pTut] = 0;
PlayerInfo[playerid][pSex] = 1;
PlayerInfo[playerid][pGangMod] = 0;
PlayerInfo[playerid][pAge] = 0;
PlayerInfo[playerid][pSkin] = 299;
PlayerInfo[playerid][pPos_x] = 0;
PlayerInfo[playerid][pPos_y] = 0;
PlayerInfo[playerid][pPos_z] = 3.14;
PlayerInfo[playerid][pPos_r] = 0;
PlayerInfo[playerid][pConnectTime] = 0;
PlayerInfo[playerid][pRespect] = 0;
PlayerInfo[playerid][pNumber] = 0;
PlayerInfo[playerid][pWarns] = 0;
PlayerInfo[playerid][pGang] = 255;
PlayerInfo[playerid][pFaction] = 0;
PlayerInfo[playerid][pLeader] = 0;
PlayerInfo[playerid][pRank] = 0;
PlayerInfo[playerid][pJob] = 0;
PlayerInfo[playerid][pJob2] = 0;
PlayerInfo[playerid][pDonator] = 1;
PlayerInfo[playerid][gPupgrade] = 0;
PlayerInfo[playerid][pSarmor] = 0;
PlayerInfo[playerid][pCash] = 100;
PlayerInfo[playerid][pBank] = 20000;
PlayerInfo[playerid][pInsurance] = 0;
PlayerInfo[playerid][pCrimes] = 0;
PlayerInfo[playerid][pArrested] = 0;
PlayerInfo[playerid][pWantedLevel] = 0;
PlayerInfo[playerid][pHealth] = 100;
PlayerInfo[playerid][pArmor] = 20;
PlayerInfo[playerid][pPot] = 0;
PlayerInfo[playerid][pCrack] = 0;
PlayerInfo[playerid][pPackages] = 0;
PlayerInfo[playerid][pCrates] = 0;
PlayerInfo[playerid][pRadio] = 0;
PlayerInfo[playerid][pRadioFreq] = 0;
PlayerInfo[playerid][pMats] = 100;
PlayerInfo[playerid][pRope] = 0;
PlayerInfo[playerid][pCigar] = 0;
PlayerInfo[playerid][pSprunk] = 0;
PlayerInfo[playerid][pSpraycan] = 0;
PlayerInfo[playerid][pHouse] = INVALID_HOUSE_ID;
PlayerInfo[playerid][pHouse2] = INVALID_HOUSE_ID;
PlayerInfo[playerid][pRenting] = INVALID_HOUSE_ID;
PlayerInfo[playerid][pInt] = 0;
PlayerInfo[playerid][pVW] = 0;
PlayerInfo[playerid][pJailed] = 0;
PlayerInfo[playerid][pJailTime] = 0;
// Weapons
for(new s = 0; s < 12; s++)
{
PlayerInfo[playerid][pAGuns][s] = 0; // Admin spawned, non-saved
PlayerInfo[playerid][pGuns][s] = 0;
}
PlayerInfo[playerid][pPayCheck] = 0;
PlayerInfo[playerid][pPayReady] = 0;
PlayerInfo[playerid][pDetSkill] = 0;
PlayerInfo[playerid][pLawSkill] = 0;
PlayerInfo[playerid][pSexSkill] = 0;
PlayerInfo[playerid][pDrugsSkill] = 0;
PlayerInfo[playerid][pSmugSkill] = 0;
PlayerInfo[playerid][pArmsSkill] = 0;
PlayerInfo[playerid][pMechSkill] = 0;
PlayerInfo[playerid][pFishSkill] = 0;
PlayerInfo[playerid][pBoxSkill] = 0;
PlayerInfo[playerid][pTruckSkill] = 0;
PlayerInfo[playerid][pCarSkill] = 0;
//PlayerInfo[playerid][pCraftSkill] = 0;
PlayerInfo[playerid][pLawyerTime] = 0;
PlayerInfo[playerid][pLawyerFreeTime] = 0;
PlayerInfo[playerid][pDrugsTime] = 0;
PlayerInfo[playerid][pMechTime] = 0;
PlayerInfo[playerid][pSexTime] = 0;
PlayerInfo[playerid][pCarTime] = 0;
PlayerInfo[playerid][pFishes] = 0;
PlayerInfo[playerid][pBiggestFish] = 0;
PlayerInfo[playerid][pWeedObject] = 0;
PlayerInfo[playerid][pWeedPos][0] = 0;
PlayerInfo[playerid][pWeedPos][1] = 0;
PlayerInfo[playerid][pWeedPos][2] = 0;
PlayerInfo[playerid][pWeedVW] = 0;
PlayerInfo[playerid][pWeedInt] = 0;
PlayerInfo[playerid][pWeedGrowth] = -1;
PlayerInfo[playerid][pWSeeds] = 0;
PlayerInfo[playerid][pFightStyle] = FIGHT_STYLE_NORMAL;
PlayerInfo[playerid][pScrewdriver] = 0;
PlayerInfo[playerid][pSmslog] = 0;
PlayerInfo[playerid][pWristwatch] = 0;
PlayerInfo[playerid][pTire] = 0;
PlayerInfo[playerid][pFirstaid] = 0;
PlayerInfo[playerid][pRccam] = 0;
PlayerInfo[playerid][pReceiver] = 0;
PlayerInfo[playerid][pGPS] = 0;
PlayerInfo[playerid][pSweep] = 0;
PlayerInfo[playerid][pSweepLeft] = 0;
for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
{
PlayerVehicleInfo[playerid][v][pvModelId] = 0;
PlayerVehicleInfo[playerid][v][pvPosX] = 0.0;
PlayerVehicleInfo[playerid][v][pvPosY] = 0.0;
PlayerVehicleInfo[playerid][v][pvPosZ] = 0.0;
PlayerVehicleInfo[playerid][v][pvPosAngle] = 0.0;
PlayerVehicleInfo[playerid][v][pvLock] = 0;
PlayerVehicleInfo[playerid][v][pvLocked] = 0;
PlayerVehicleInfo[playerid][v][pvPaintJob] = -1;
PlayerVehicleInfo[playerid][v][pvColor1] = 0;
PlayerVehicleInfo[playerid][v][pvImpounded] = 0;
PlayerVehicleInfo[playerid][v][pvSpawned] = 0;
PlayerVehicleInfo[playerid][v][pvColor2] = 0;
PlayerVehicleInfo[playerid][v][pvPrice] = 0;
PlayerVehicleInfo[playerid][v][pvTicket] = 0;
PlayerVehicleInfo[playerid][v][pvWeapons][0] = 0;
PlayerVehicleInfo[playerid][v][pvWeapons][1] = 0;
PlayerVehicleInfo[playerid][v][pvWeapons][2] = 0;
PlayerVehicleInfo[playerid][v][pvWepUpgrade] = 0;
PlayerVehicleInfo[playerid][v][pvFuel] = 100.0;
PlayerVehicleInfo[playerid][v][pvAllowedPlayerId] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][v][pvPark] = 0;
ListItemReleaseId[playerid][v] = -1;
PlayerVehicleInfo[playerid][v][pvDisabled] = 0;
PlayerVehicleInfo[playerid][v][pvSpawned] = 0;
format(PlayerVehicleInfo[playerid][v][pvNumberPlate], 32, "");
ListItemTrackId[playerid][v] = -1;
for(new m = 0; m < MAX_MODS; m++)
{
PlayerVehicleInfo[playerid][v][pvMods][m] = 0;
}
}
for(new v = 0; v < MAX_PLAYERVEHICLES; v++) {
PlayerVehicleInfo[playerid][v][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
PlayerInfo[playerid][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID; // non-saved
PlayerInfo[playerid][pVehicleKeysFrom] = INVALID_PLAYER_ID; // non-saved
PlayerInfo[playerid][pCarLic] = 1;
PlayerInfo[playerid][pFlyLic] = 0;
PlayerInfo[playerid][pBoatLic] = 1;
PlayerInfo[playerid][pFishLic] = 1;
PlayerInfo[playerid][pGunLic] = 1;
PlayerInfo[playerid][pDivision] = 0;
PlayerInfo[playerid][pTicketTime] = 0;
PlayerInfo[playerid][pHeadValue] = 0;
strcpy(PlayerInfo[playerid][pContractBy], "Nobody", 64);
strcpy(PlayerInfo[playerid][pContractDetail], "None", 64);
PlayerInfo[playerid][pC4] = 0;
PlayerInfo[playerid][pC4Used] = 0;
PlayerInfo[playerid][pBombs] = 0;
PlayerInfo[playerid][pCHits] = 0;
PlayerInfo[playerid][pFHits] = 0;
strcpy(PlayerInfo[playerid][pPrisonedBy], "Nobody", 64);
strcpy(PlayerInfo[playerid][pPrisonReason], "None", 64);
PlayerInfo[playerid][pAcceptReport] = 0;
PlayerInfo[playerid][pTrashReport] = 0;
PlayerInfo[playerid][pAccent] = 0;
PlayerInfo[playerid][pNMute] = 0;
PlayerInfo[playerid][pNMuteTotal] = 0;
PlayerInfo[playerid][pADMute] = 0;
PlayerInfo[playerid][pADMuteTotal] = 0;
PlayerInfo[playerid][pRMuted] = 0;
PlayerInfo[playerid][pRMutedTotal] = 0;
PlayerInfo[playerid][pRMutedTime] = 0;
PlayerInfo[playerid][pSpeedo] = 0;
PlayerInfo[playerid][pGCMuted] = 0;
PlayerInfo[playerid][pGCMutedTime] = 0;
PlayerInfo[playerid][pCallsAccepted] = 0;
PlayerInfo[playerid][pPatientsDelivered] = 0;
PlayerInfo[playerid][pTriageTime] = 0;
for(new v = 0; v < MAX_PLAYERTOYS; v++)
{
PlayerToyInfo[playerid][v][ptModelID] = 0;
PlayerToyInfo[playerid][v][ptBone] = 0;
PlayerToyInfo[playerid][v][ptPosX] = 0.0;
PlayerToyInfo[playerid][v][ptPosY] = 0.0;
PlayerToyInfo[playerid][v][ptPosZ] = 0.0;
PlayerToyInfo[playerid][v][ptRotX] = 0.0;
PlayerToyInfo[playerid][v][ptRotY] = 0.0;
PlayerToyInfo[playerid][v][ptRotZ] = 0.0;
PlayerToyInfo[playerid][v][ptScaleX] = 1.0;
PlayerToyInfo[playerid][v][ptScaleY] = 1.0;
PlayerToyInfo[playerid][v][ptScaleZ] = 1.0;
}
PlayerInfo[playerid][pKillLog0][0] = 0;
PlayerInfo[playerid][pKillLog1][0] = 0;
PlayerInfo[playerid][pKillLog2][0] = 0;
PlayerInfo[playerid][pKillLog3][0] = 0;
PlayerInfo[playerid][pKillLog4][0] = 0;
PlayerInfo[playerid][pKillLog5][0] = 0;
PlayerInfo[playerid][pKillLog6][0] = 0;
PlayerInfo[playerid][pKillLog7][0] = 0;
PlayerInfo[playerid][pKillLog8][0] = 0;
PlayerInfo[playerid][pKillLog9][0] = 0;
strcpy(PlayerInfo[playerid][pFlag], "", 128);
strcpy(PlayerInfo[playerid][pReferredBy], "0", 32);
PlayerInfo[playerid][pRefTokens] = 0;
PlayerInfo[playerid][pRefTokensOffline] = 0;
PlayerInfo[playerid][pHelper] = 0;
// Other player variables (non-saving)
AdminRelogPassword[playerid][0] = 0;
AdminLoggedInBefore[playerid] = 0;
for(new s = 0; s < 40; s++)
{
ListItemReportId[playerid][s] = -1;
}
for(new i = 0; i < 6; i++)
{
HHcheckFloats[playerid][i] = 0;
}
HHcheckInt[playerid] = 0;
HHcheckVW[playerid] = 0;
for(new i = 0; i < 3; i++)
{
TeleportDest[playerid][i] = 0;
}
for(new i = 0; i < 3; i++)
{
TeleportDest2[playerid][i] = 0;
}
for(new i = 0; i < 3; i++) {
StopaniFloats[playerid][i] = 0;
}
TeleportDestInt[playerid] = 0;
TeleportDestInt2[playerid] = 0;
gPlayerAccount[playerid] = 0;
gPlayerLogTries[playerid] = 0;
gPlayerLogged[playerid] = 0;
InsideMainMenu[playerid] = 1;
InsideTut[playerid] = 1;
ActiveChatbox[playerid] = 0;
PlayerCuffed[playerid] = 0;
Spectate[playerid] = 999;
Spectating[playerid] = 0;
GettingSpectated[playerid] = 999;
InsideShamal[playerid]= INVALID_VEHICLE_ID;
HouseOffer[playerid] = 999;
House[playerid] = 0;
HousePrice[playerid] = 0;
hInviteHouse[playerid]=INVALID_HOUSE_ID;
hInviteOffer[playerid]=999;
//hInviteSlot[playerid]=0;
playerTabbed[playerid] = 0;
playerTabbedTime[playerid] = 0;
playerAFK[playerid] = 0;
playerAFKTime[playerid] = 0;
playerLastTyped[playerid] = 0;
pCurrentWeapon[playerid] = 0;
JetPack[playerid] = 0;
TextSpamTimes[playerid] = 0;
TextSpamUnmute[playerid] = 0;
CommandSpamTimes[playerid] = 0;
CommandSpamUnmute[playerid] = 0;
gLastCar[playerid] = 0;
GettingJob[playerid] = 0;
GettingJob2[playerid] = 0;
PayCheckCode[playerid] = 0;
AdminDuty[playerid] = 0;
FindTimePoints[playerid] = 0;
FindingPlayer[playerid] = 0;
FindTime[playerid] = 0;
UsedFind[playerid] = 0;
Condom[playerid] = 0;
SexOffer[playerid] = 999;
SexPrice[playerid] = 0;
gFam[playerid] = 0;
InviteOffer[playerid]=999;
InviteFaction[playerid]=0;
InviteFamily[playerid]=255;
PotOffer[playerid] = 999;
CrackOffer[playerid] = 999;
PotPrice[playerid]=0;
CrackPrice[playerid]=0;
PotGram[playerid]=0;
CrackGram[playerid]=0;
JobDuty[playerid]=0;
WantLawyer[playerid]=0;
CallLawyer[playerid]=0;
JailPrice[playerid]=0;
DefendOffer[playerid] = 999;
DefendPrice[playerid] = 0;
CP[playerid] = 0;
GuardOffer[playerid] = 999;
GuardPrice[playerid]=0;
GunOffer[playerid] = 999;
GunId[playerid] = 0;
GunMats[playerid] = 0;
MatsOffer[playerid] = 999;
MatsPrice[playerid] = 0;
MatsAmount[playerid] = 0;
PlayerBoxing[playerid]=0;
BoxOffer[playerid] = 999;
BoxWaitTime[playerid]=0;
UsedCrack[playerid] = 0;
UsedWeed[playerid] = 0;
PlayerStoned[playerid] = 0;
TransportDuty[playerid]=0;
TransportValue[playerid] = 0;
TransportMoney[playerid] = 0;
TransportTime[playerid] = 0;
TransportCost[playerid] = 0;
TransportDriver[playerid] = 999;
ConsumingMoney[playerid] = 0;
BusCallTime[playerid]=0;
BusAccepted[playerid] = 999;
TaxiCallTime[playerid]=0;
TaxiAccepted[playerid] = 999;
DrinkOffer[playerid] = INVALID_PLAYER_ID;
Fishes[playerid][pLastFish] = 0;
Fishes[playerid][pFishID] = 0;
FishCount[playerid]=0;
CraftOffer[playerid] = 999;
CraftId[playerid]=0;
CraftMats[playerid]=0;
VehicleSpawned[playerid] = 0;
VehicleOffer[playerid] = 999;
VehiclePrice[playerid] = 0;
VehicleId[playerid] = -1;
GiveKeysTo[playerid] = INVALID_PLAYER_ID;
RepairCar[playerid]=0;
OnDuty[playerid]=0;
ConnectedToPC[playerid]=0;
PlayerCuffedTime[playerid]=0;
PhoneOnline[playerid] = 0;
pTazer[playerid] = 0;
pTazerReplace[playerid] = 0;
TazerTimeout[playerid] = 0;
TicketOffer[playerid] = 999;
TicketMoney[playerid] = 0;
arr_Towing[playerid] = INVALID_VEHICLE_ID;
Fixr[playerid] = 0;
gBug[playerid] = 1;
GotHit[playerid]=0;
GoChase[playerid]=999;
GetChased[playerid]=999;
HitOffer[playerid]=999;
HitToGet[playerid]=999;
JustReported[playerid] = -1;
CancelReport[playerid] = -1;
NewbieTimer[playerid] = 0;
gNewbie[playerid] = 0;
for(new i = 0; i < 6; i++) {
EventFloats[playerid][i] = 0.0;
}
EventLastInt[playerid] = 0; EventLastVW[playerid] = 0;
Mobile[playerid]=INVALID_PLAYER_ID;
CellTime[playerid] = 0;
CalledCops[playerid]=0;
CopsCallTime[playerid]=0;
CalledMedics[playerid]=0;
MedicsCallTime[playerid]=0;
Music[playerid]=0;
PlayerTied[playerid]=0;
gRadio[playerid] = 1;
CallCost[playerid] = 0;
szAdvert[playerid][0] = 0;
IsBoundsShowingFFC[playerid] = 0;
IsBoundsShowingMP1[playerid] = 0;
IsBoundsShowingMF1[playerid] = 0;
IsBoundsShowingMP2[playerid] = 0;
IsBoundsShowingMF2[playerid] = 0;
IsBoundsShowingAEC[playerid] = 0;
IsBoundsShowingDH[playerid] = 0;
IsBoundsShowingCL[playerid] = 0;
IsBoundsShowingDF[playerid] = 0;
LoadTruckBar[playerid] = INVALID_BAR_ID;
LoadTruckTime[playerid] = 0;
TruckDeliver[playerid] = 0;
TruckUsed[playerid] = INVALID_VEHICLE_ID;
GlobalChat[playerid] = 0;
GlobalChatTimer[playerid] = 0;
EMSCallTime[playerid]=0;
EMSAccepted[playerid]=999;
MedicCallTime[playerid]=0;
MedicAccepted[playerid] = 999;
MechanicCallTime[playerid]=0;
DivorceOffer[playerid] = 999;
MarryWitness[playerid] = 999;
MarryWitnessOffer[playerid] = 999;
MarriageCeremoney[playerid] = 0;
ProposeOffer[playerid] = 999;
ProposedTo[playerid] = 999;
GotProposedBy[playerid] = 999;
slotselection[playerid] = 0;
ServiceTime[playerid] = 0;
WasHereForPaycheck[playerid] = 0;
SignedPaycheck[playerid] = 0;
MissedPaychecks[playerid] = 0;
HidePM[playerid] = 0;
Backup[playerid] = 0;
FindingJob[playerid] = 0;
ShakeHandRequest[playerid] = 999;
ShakeHandStyle[playerid] = 0;
TutorialProgress[playerid] = 0;
ValidArmor[playerid] = 0;
PhonePrivacy[playerid] = 0;
MP3Station[playerid] = 0;
// Start of boombox
BoomBoxSet[playerid] = 0;
BoomboxInfo[playerid][bbPosX] = 0.0;
BoomboxInfo[playerid][bbPosY] = 0.0;
BoomboxInfo[playerid][bbPosZ] = 0.0;
BoomboxInfo[playerid][bbInt] = 0;
BoomboxInfo[playerid][bbVW] = 0;
BoomboxInfo[playerid][bbStation] = 0;
BoomboxInfo[playerid][bbSetBy] = 999;
BoomboxInfo[playerid][bbObject] = 0;
// End of boombox
ClearCrime(playerid);
ClearFishes(playerid);
ClearMarriage(playerid);
// Removal of hell hole (VIP Lounge)
RemoveBuildingForPlayer(playerid, 3999, 1785.9766, -1564.8594, 25.2500, 0.25);
RemoveBuildingForPlayer(playerid, 4079, 1785.9766, -1564.8594, 25.2500, 0.25);
RemoveBuildingForPlayer(playerid, 4189, 1794.6172, -1576.7344, 17.7578, 0.25);
RemoveBuildingForPlayer(playerid, 1308, 1822.1563, -1543.7891, 12.6328, 0.25);
//PlayerPlaySound(playerid,SOUND_MUSIC1,2050.1995, 1344.5500, 13.2378);
SetSpawnInfo(playerid, 0, 299, 1970.506103, -1201.447143, -25.074676, 1.0, -1, -1, -1, -1, -1, -1);
SpawnPlayer(playerid); // The player doesn't actually spawn before logging in, this is just to get rid of the annoying "<<", ">>" and "Spawn" buttons.
TogglePlayerControllable(playerid, 0);
SetTimerEx("Login", 1000, 0, "d", playerid);
SyncPlayerTime(playerid);
return 1;
}