Hospital System (isPlayerInArea Help)
#6

Quote:
Originally Posted by JJB562
Посмотреть сообщение
It's not working, because I'm guessing this is how you created the variables:

pawn Код:
new sf;
new lsas;
new lscg;
These variables are all set to 0. So, when the script is going through the first if statement in DeadCountdown(), the HospLocation[playerid] is always going to equal to zero, which is also equal to "sf". This is why the player always spawns in San Fierro.

Edit:
Try using this:
pawn Код:
#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;
}
I solved it by doing the following which was much simpler.

Код:
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;
}
Works like a treat now but thanks for the help guys!
Reply


Messages In This Thread
Hospital System (isPlayerInArea Help) - by Phil_Cutcliffe - 30.11.2013, 14:26
Re: Hospital System (isPlayerInArea Help) - by Ada32 - 30.11.2013, 14:40
Re: Hospital System (isPlayerInArea Help) - by Phil_Cutcliffe - 30.11.2013, 14:48
Re: Hospital System (isPlayerInArea Help) - by Phil_Cutcliffe - 30.11.2013, 15:56
Re: Hospital System (isPlayerInArea Help) - by JJB562 - 30.11.2013, 16:10
Re: Hospital System (isPlayerInArea Help) - by Phil_Cutcliffe - 30.11.2013, 20:47
Re: Hospital System (isPlayerInArea Help) - by Pottus - 30.11.2013, 21:06

Forum Jump:


Users browsing this thread: 1 Guest(s)