forward isPlayerInArea();
public OnGameModeInit()
{
SetTimer("isPlayerInArea", 1000, 1);
public isPlayerInArea()
{
new Float:X, Float:Y, Float:Z;
for(new i=0; i < MAX_PLAYERS; i++)
{
GetPlayerPos(i, X, Y, Z);
if (X <= -2885.0598 && X >= -1405.0571 && Y <= -1021.6824 && Y >= 1436.9240)
{
HospLocation[i] = sf;
return 1;
}
GetPlayerPos(i, X, Y, Z);
if (X <= 130.7416 && X >= 1447.1925 && Y <= -2843.7100 && Y >= -799.4094)
{
HospLocation[i] = lsas;
return 1;
}
GetPlayerPos(i, X, Y, Z);
if(X <= 1700.8179 && X >= 2903.0476 && Y <= -2860.2761 && Y >= -701.8962)
{
HospLocation[i] = lscg;
return 1;
}
}
return 1;
}
forward DeadCountdown(playerid);
public DeadCountdown(playerid)
{
if(DeadTimer[playerid] == 0 && HospLocation[playerid] == sf)
{
KillTimer(deadt[playerid]);
PlayerInfo[playerid][pDead] = 0;
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, -2557.6716,661.3848,14.4531);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
ClearChat(playerid);
SendClientMessage(playerid, COLOR_SPRINGGREEN, "The Hospital said you made a full recovery! Be more careful next time!");
SendClientMessage(playerid, COLOR_SPRINGGREEN, "You have spawned at San Fierro Medical Centre");
TogglePlayerControllable(playerid, 1);
return 1;
}
if(DeadTimer[playerid] == 0 && HospLocation[playerid] == lsas)
{
KillTimer(deadt[playerid]);
PlayerInfo[playerid][pDead] = 0;
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, 2034.2024,-1405.9485,17.2210);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
ClearChat(playerid);
SendClientMessage(playerid, COLOR_SPRINGGREEN, "The Hospital said you made a full recovery! Be more careful next time!");
SendClientMessage(playerid, COLOR_SPRINGGREEN, "You have spawned at Los Santos/All Saints Hospital");
TogglePlayerControllable(playerid, 1);
return 1;
}
if(DeadTimer[playerid] == 0 && HospLocation[playerid] == lscg)
{
KillTimer(deadt[playerid]);
PlayerInfo[playerid][pDead] = 0;
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, 1178.5688,-1323.7841,14.1265);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
ClearChat(playerid);
SendClientMessage(playerid, COLOR_SPRINGGREEN, "The Hospital said you made a full recovery! Be more careful next time!");
SendClientMessage(playerid, COLOR_SPRINGGREEN, "You have spawned at Los Santos/County General Hospital");
TogglePlayerControllable(playerid, 1);
return 1;
}
DeadTimer[playerid] --;
new string[128];
format(string, sizeof(string), "~g~Seconds Left: ~w~ %d", DeadTimer[playerid]);
GameTextForPlayer(playerid, string, 3000, 4);
return 1;
}
|
yea that's ugly.. create a list of hospital spawn points, when the player dies, get his pos, loop through points, get the player's distance, return the index of the nearest point. done!
|
new sf;
new lsas;
new lscg;
#define sf 1
#define lsas 2
#define lscg 3
public isPlayerInArea(playerid) // If you want you change this to getPlayerArea so it could match the function more.
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X <= -2885.0598 && X >= -1405.0571 && Y <= -1021.6824 && Y >= 1436.9240) return sf;
else if(X <= 130.7416 && X >= 1447.1925 && Y <= -2843.7100 && Y >= -799.4094) return lsas;
else if(X <= 1700.8179 && X >= 2903.0476 && Y <= -2860.2761 && Y >= -701.8962) return lscg;
return 0;
}
public OnPlayerDeath(playerid, killerid, reason)
{
HospLocation[playerid] = isPlayerInArea(playerid);
return 1;
}
|
It's not working, because I'm guessing this is how you created the variables:
pawn Код:
Edit: Try using this: pawn Код:
|
public OnPlayerEnterDynamicZone(playerid, zoneid)
{
if(IsPlayerInDynamicZone(playerid, sfhospzone) && PlayerInfo[playerid][pDead] == 0 && JustDied[playerid] == 0)
{
PlayerInfo[playerid][pSF] = 1;
return 1;
}
if(IsPlayerInDynamicZone(playerid, lsashospzone) && PlayerInfo[playerid][pDead] == 0 && JustDied[playerid] == 0)
{
PlayerInfo[playerid][pLSAS] = 1;
return 1;
}
if(IsPlayerInDynamicZone(playerid, lscghospzone) && PlayerInfo[playerid][pDead] == 0 && JustDied[playerid] == 0)
{
PlayerInfo[playerid][pLSCG] = 1;
return 1;
}
return 1;
}
forward DeadCountdown(playerid);
public DeadCountdown(playerid)
{
if(DeadTimer[playerid] == 0 && PlayerInfo[playerid][pSF] == 0 && PlayerInfo[playerid][pLSAS] == 0 && PlayerInfo[playerid][pLSCG] == 0)
{
KillTimer(deadt[playerid]);
PlayerInfo[playerid][pDead] = 0;
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, -2557.6716,661.3848,14.4531);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
ClearChat(playerid);
SendClientMessage(playerid, COLOR_SPRINGGREEN, "The Hospital said you made a full recovery! Be more careful next time!");
SendClientMessage(playerid, COLOR_SPRINGGREEN, "You have spawned at San Fierro Medical Centre");
TogglePlayerControllable(playerid, 1);
return 1;
}
if(DeadTimer[playerid] == 0 && PlayerInfo[playerid][pSF] == 1)
{
KillTimer(deadt[playerid]);
PlayerInfo[playerid][pDead] = 0;
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, -2557.6716,661.3848,14.4531);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
ClearChat(playerid);
SendClientMessage(playerid, COLOR_SPRINGGREEN, "The Hospital said you made a full recovery! Be more careful next time!");
SendClientMessage(playerid, COLOR_SPRINGGREEN, "You have spawned at San Fierro Medical Centre");
TogglePlayerControllable(playerid, 1);
return 1;
}
if(DeadTimer[playerid] == 0 && PlayerInfo[playerid][pLSAS] == 1)
{
KillTimer(deadt[playerid]);
PlayerInfo[playerid][pDead] = 0;
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, 1178.5688,-1323.7841,14.1265);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
ClearChat(playerid);
SendClientMessage(playerid, COLOR_SPRINGGREEN, "The Hospital said you made a full recovery! Be more careful next time!");
SendClientMessage(playerid, COLOR_SPRINGGREEN, "You have spawned at Los Santos/All Saints Hospital");
TogglePlayerControllable(playerid, 1);
return 1;
}
if(DeadTimer[playerid] == 0 && PlayerInfo[playerid][pLSCG] == 1)
{
KillTimer(deadt[playerid]);
PlayerInfo[playerid][pDead] = 0;
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, 2034.2024,-1405.9485,17.2210);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
ClearChat(playerid);
SendClientMessage(playerid, COLOR_SPRINGGREEN, "The Hospital said you made a full recovery! Be more careful next time!");
SendClientMessage(playerid, COLOR_SPRINGGREEN, "You have spawned at Los Santos/County General Hospital");
TogglePlayerControllable(playerid, 1);
return 1;
}
DeadTimer[playerid] --;
new string[128];
format(string, sizeof(string), "~g~Seconds Left: ~w~ %d", DeadTimer[playerid]);
GameTextForPlayer(playerid, string, 3000, 4);
return 1;
}