[Help] Hospital System
#1

Hello , i want to know how to make Hospital system so that when player die he spawn at front of nearest hospital ?
Reply
#2

You could use this filterscript, which is made by Rodney Francalim.

Link: On SA-MP Scripts, URL: /post/Hospital_system-Rodney_Francalim-filterscript_systems-10508/

P.S. SA-MP forums block the link, so you will have to introduce it manually.
Reply
#3

Give me the full link .
Reply
#4

It's easy making him spawn infront of the hospital.

Alright, first we need to create a variable so we can check if the player died before he spawned, by putting this at the top of our script(underneath the includes):
pawn Code:
new Hospital[MAX_PLAYERS];
Then we store "1" in the variable when a player dies.
pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
    Hospital[playerid] = 1;
    return 1;
}
Then when the player spawns, we check if the variable is set to "1".
And if it is, then we set the players position infront of the hospital, and we set the variable to "0" again.
pawn Code:
public OnPlayerSpawn(playerid)
{
    if(Hospital[playerid] == 1)
    {
        SetPlayerPos(playerid, 1172.8644, -1323.3914, 15.3996); // You can replace this with any coordinates you want, i placed it at the All Saints General Hospital
        Hospital[playerid] == 0;
    }
    return 1;
}
Reply
#5

Setting it to single hospital is easy but i want it to multiple i mean player will spawn at nearest hospital e.g. San Fierro hospital if he is in sf or LV hospital etc if he is in lv.
Reply
#6

Oh sorry, i misread your post then.
Create a new variable again then:
pawn Code:
new ClosestHospital[MAX_PLAYERS];
Then create a switch to check what has been put in the variable, under OnPlayerSpawn:
pawn Code:
public OnPlayerSpawn(playerid)
{
    switch(ClosestHospital[playerid])
    {
        case 0: SetPlayerPos(playerid, /* Insert coordinates of hospital 0*/);
        case 1: SetPlayerPos(playerid, /* Insert coordinates of hospital 1*/);
        case 2: SetPlayerPos(playerid, /* Insert coordinates of hospital 2*/);
    }
    return 1;
}
Then we need to check which is the closest of these 3 hospitals, and then store 0, 1 or 2 in the variable.
We can do that with this stock:
pawn Code:
stock RespawnToHospital(playerid)
{
    new Float:Hospital[3]; // Creates 3 floats, which we then use underneath to check the distance the player has from those points
    Hospital[0] = GetPlayerDistanceFromPoint(playerid,/* Insert coordinates of hospital 0 here */);
    Hospital[1] = GetPlayerDistanceFromPoint(playerid, /* Insert coordinates of hospital 1 here */);
    Hospital[2] = GetPlayerDistanceFromPoint(playerid, /* Insert coordinates of hospital 2 here */);
    if(Hospital[0] <= Hospital[1] && Hospital[0] <= Hospital[3]) // We use this to detect if hospital 0 is closer than both other
    {
        ClosestHospital[playerid] = 0; // We store "0" in the variable if hospital 0 is closest
    }
    else if(Hospital[1] <= Hospital[0] && Hospital[1] <= Hospital[3]) // If hospital 0 isn't closest, we check hospital 1, if that's closer than both the other
    {
        ClosestHospital[playerid] = 1; // We store "1" in the variable if hospital 0 is closest
    }
    else if(Hospital[2] <= Hospital[0] && Hospital[2] <= Hospital[1]) // If none of those are closest, we check if hospital 2 is closest.
    {
        ClosestHospital[playerid] = 2; // We store "2" in the variable if hospital 0 is closest
    }
    return 1;
}
And then we call this stock by putting this under OnPlayerDeath:
pawn Code:
RespawnToHospital(playerid);
Reply
#7

What to Add in GetPlayerDistanceFromPoint?
Reply
#8

The coordinates of the hospitals.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)