SA-MP Forums Archive
[HOSPITAL SYSTEM] i need help with it please - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: [HOSPITAL SYSTEM] i need help with it please (/showthread.php?tid=270951)



[HOSPITAL SYSTEM] i need help with it please - slymatt - 22.07.2011

When i die i should be kept in the hospital for 60 seconds but when i die the piece of code isnt exicuted =l heres my codes
These are the forwards:
Код:
forward DEAD1(playerid);
forward RespawnHospital(playerid);
This is in OnPlayerDeath:
Код:
SetTimer("RespawnHospital", 3500, 0);
And here are my new publics:
Код:
public RespawnHospital(playerid)
{
    SendClientMessage(playerid, COLOUR_YELLOW, "You're being rushed to the hospital!");
    SetPlayerPos(playerid, 1221.7010,-1328.6449,13.4821);
    SetPlayerCameraPos(playerid, 1204.3781,-1313.3323,16.3984);
    SetPlayerCameraLookAt(playerid, 1174.7167,-1323.4485,14.5938);
  	TogglePlayerControllable(playerid,0);
    SetTimer("DEAD1", 50000, 0); 
    return 1;
}

public DEAD1(playerid)
{
    SetPlayerHealth(playerid,100);
    SetPlayerPos(playerid,1172.6569,-1323.2815,15.4025);
  	TogglePlayerControllable(playerid,1);
    return 1;
}
Any ideas? Thanks for the help


Re: [HOSPITAL SYSTEM] i need help with it please - Jack_Leslie - 22.07.2011

Shouldn't
pawn Код:
public DEAD1(playerid)
Be

pawn Код:
public OnPlayerDeath



Re: [HOSPITAL SYSTEM] i need help with it please - Roko_foko - 22.07.2011

I think the problem comes here. Everytime someone dies program goes trough OnPlayerDeath(), and when he finishes it he automaticly goes OnPlayerSpawn() and spawns player. I think you should make a global varialble which will tell callback OnPlayerSpawn not to spawn player. For example:
pawn Код:
new gPlayerDied[MAX_PLAYERS];
OnPlayerDeath(playerid,killerid,reason)
{
     gPlayerDied[playerid]=1;
     return 1;
}
OnPlayerSpawn(playerid)
{
     if(gPlayerDied[playerid]==1)
     return 0;
     else return 1;
}
And on DEAD1(playerid) i would add SetCameraBehindPlayer(playerid);
Hope this help


Re: [HOSPITAL SYSTEM] i need help with it please - slymatt - 22.07.2011

i dont understand roko if i make the code miss out my new publics i cannot make a timer =S


Re: [HOSPITAL SYSTEM] i need help with it please - Roko_foko - 22.07.2011

I just gave you an example how to prevent spawning( I think once you die, you spawn where you don't want to be spawned). Try to add these lines to your callbacks.
OnPlayerDeath:
pawn Код:
gPlayerDied[playerid]=1;
before
pawn Код:
SetTimer("RespawnHospital", 3500, 0);
and
pawn Код:
if(gPlayerDied[playerid]==1)
     return 0;
on top of OnPlayerSpawn.
Even, this might work when you test, you shloudn't use SetTimer, but SetTimerEx.


Re: [HOSPITAL SYSTEM] i need help with it please - slymatt - 22.07.2011

im still not getting it how will that stop the players from spawning for the amount of time i want it =S

could you kinda give a better coding example please =) sorry for being a pain but im confused haha


Re: [HOSPITAL SYSTEM] i need help with it please - Roko_foko - 22.07.2011

pawn Код:
forward DEAD1(playerid);
forward RespawnHospital(playerid);

new gPlayerDied[MAX_PLAYERS];

public OnPlayerDeath(playerid,killerid,reason)
{
        gPlayerDied[playerid]=1;// this flags that player has died, we will need it OnPlayerSpawn
        SetTimerEx("RespawnHospital", 3500, 0,"d",playerid);// this will happen after 3.5 sec, why SetTimerEx check https://sampwiki.blast.hk/wiki/SetTimerEx
        //... whatever is in your code.
        return 1;// once program comes to this code, he automaticly goes to OnPlayerSpawn. We don't want player to be spawned somewhere random, do we?
}
public OnPlayerSpawn(playerid)
{// once player attempts to spawn, we don't allow him with this code.
        if(gPlayerDied[playerid] == 1)// this checks if he died, if so it enters this if clause
        {
            gPlayerDied[playerid]=0;// we are setting this variable to default because we don't need it anymore.
            return 0;// this prevents player from spawning and exits the callback.
        }
        //... whatever is in your code
        return 1;
}

public RespawnHospital(playerid)
{
    SendClientMessage(playerid, COLOUR_YELLOW, "You're being rushed to the hospital!");
    SetPlayerPos(playerid, 1221.7010,-1328.6449,13.4821);
    SetPlayerCameraPos(playerid, 1204.3781,-1313.3323,16.3984);
    SetPlayerCameraLookAt(playerid, 1174.7167,-1323.4485,14.5938);
    TogglePlayerControllable(playerid,0);
    SetTimerEx("DEAD1", 50000, 0,"d",playerid);
    return 1;
}

public DEAD1(playerid)
{
    SetPlayerHealth(playerid,100);
    SetPlayerPos(playerid,1172.6569,-1323.2815,15.4025);
    TogglePlayerControllable(playerid,1);
    SetCameraBehindPlayer(playerid);
    return 1;
}
Now okay?


Re: [HOSPITAL SYSTEM] i need help with it please - slymatt - 22.07.2011

yep i undestood that time but when i have copyed the code into my server i still just spawn.


Re: [HOSPITAL SYSTEM] i need help with it please - slymatt - 22.07.2011

i think it does it because there is still nothing telling it to go to the forwards.... =l


Re: [HOSPITAL SYSTEM] i need help with it please - Roko_foko - 22.07.2011

Really, don't know where is the problem. Are you sure your coordinates are correct?