Nearest hospital spawn
#1

Hi guys,

I have a question about my code. This is supposed to spawn you at the nearest hospital. But when you die, you get the "Out of world bounds" in your screen. Can anybody please say what is wrong?

pawn Код:
new dead[MAX_PLAYERS];
new hospital;

new Float:Hospitals[2][3] = {
{2029.665771, -1418.884765, 16.992187},
{1178.691772, -1324.275268, 14.132597}
};
pawn Код:
stock Float:PlayerDistanceToPoint(playerid, Float:x, Float:y, Float:z)
{
    new Float:coo[3];
    GetPlayerPos(playerid, coo[0], coo[1], coo[2]);
    return floatsqroot(((coo[0] - x) * (coo[0] - x)) + ((coo[1] - y) * (coo[1] - y)) + ((coo[2] - z) * (coo[2] - z)));
}
pawn Код:
stock ClosestHospital(playerid)
{
    new hospitalid, Float:closest = PlayerDistanceToPoint(playerid, Hospitals[0][0], Hospitals[0][1], Hospitals[0][2]);
    for(new i = 1; i < sizeof(Hospitals); i++)
    {
        if(PlayerDistanceToPoint(playerid, Hospitals[i][0], Hospitals[i][1], Hospitals[i][2]) < closest)
        {
            closest = PlayerDistanceToPoint(playerid, Hospitals[i][0], Hospitals[i][1], Hospitals[i][2]);
            hospitalid = i;
        }
    }
    return hospitalid;
}
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    dead[playerid] = 1;
    hospital = ClosestHospital(playerid);
    return 1;
}
pawn Код:
public OnPlayerSpawn(playerid)
{
        if(dead[playerid] == 1)
    {
        new hid = hospital;
        SetPlayerPos(playerid, Hospitals[hid][0], Hospitals[hid][1], Hospitals[hid][2]);
        dead[playerid] = 0;
    }
}
Thanks in advance!
Reply
#2

pawn Код:
hospital = ClosestHospital(playerid);
Here's your problem you need create this variable for each players.
Create this variable top of your script like this
pawn Код:
new hospital[MAX_PLAYERS];
Then change it to
pawn Код:
hospital[playerid] = ClosestHospital(playerid);
Change OnPlayerSpawn to this.
pawn Код:
public OnPlayerSpawn(playerid)
{
    if(dead[playerid] == 1)
    {
        new hid = hospital[playerid];
        SetPlayerPos(playerid, Hospitals[hid][0], Hospitals[hid][1], Hospitals[hid][2]);
        dead[playerid] = 0;
    }
}
Reply
#3

Thanks for your quick response.

It still gives the same error, "Out of world bounds".

Any other idea's?
Reply
#4

Out of world bounds?

When you get this error? After Spawn or death etc?
Reply
#5

After I spawned
Reply
#6

Do you have AddPlayerClass() function on OnGameModeInit() callback?

Are you sure the positions (x, y, z) of the hospital are right?
Reply
#7

I do not have AddPlayerClass().

And the coordinates for the hospitals are fine. They are the ones in Los Santos.
Reply
#8

Quote:

I do not have AddPlayerClass().

Well, this is your problem.
Add this fast below OnGameModeInit() callback.
pawn Код:
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass
Reply
#9

Why should I have the AddPlayerClass()?
I don't get what that has to do with it.

It's for a roleplay server I'm making at the moment. And everything is fine, register, login etc.
Only the spawn when you die is not working properly.
Reply
#10

You should have at least one AddPlayerClass() function on OnGameModeInit(), because then you'll get this Error.
I know it, because i had it too.

Yes, this is for RolePlays, but you can use SetPlayerPos on OnPlayerSpawn. Do what i say and test it.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)