Sei que vocк queria que os policiais fizessem isto, mas achei mais conveniente os mйdicos, para ficar mais Role-Play ...
Fiz o mais rбpido possivel, e devido а hora nгo poderei testar.
PHP код:
new MED[MAX_PLAYERS]; //TROQUE AS VARIAVEIS MED PELAS VARIAVEIS QUE DEFINEM OS MEDICOS NO SEU GM
forward Morte();
forward Sair(playerid);
forward Checar(playerid);
public OnGameModeInit()
{
SetTimer("Morte", 7,5*60000, true);
return 1;
}
public Checar(playerid)
{
if(GetPVarInt(playerid, "Pena") == 1)
{
if(IsPlayerInRangeOfPoint(playerid, 6.0, 2026.6992, -1408.7386, 16.9922) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 416)
{
SendClientMessage(playerid, -1, "Vocк voltou ao veiculo e por isso nгo perdera nenhum dinheiro.");
SetPVarInt(playerid, "Pena", 0);
}
else
{
GivePlayerMoney(playerid, -7500);
SendClientMessage(playerid, -1, "Vocк perdeu 7500 dуlares e caso nгo volte continuarб a perder.");
}
}
return 1;
}
public Sair(playerid)
{
if(GetPVarInt(playerid, "Curando") == 1)
{
SetPlayerPos(playerid, X, Y, Z); //TROQUE PELAS COORDENADAS EM QUE O PACIENTE DEVE FICAR APУS SAIR DO HOSPITAL
SendClientMessage(playerid, -1, "Vocк acaba de ser curado e perdeu 1000 dуlares por isso.");
GivePlayerMoney(playerid, -1000;
DeletePVarInt(playerid, "Curando");
return 1;
}
return 1;
}
public Morte()
{
for(new i = 0; i < MAX_PLAYERS; i ++)
{
new Float:V, n[24], Float:XYZ[3], id;
if(MED[i] == 0) return GetPlayerHealth(i, Vida);
if(Vida <= 8)
{
ApplyAnimation(i,"CRACK", "crckdeth2", 4.0, 0, 1, 1, 1, 0);
SendClientMessage(i, "Vocк estб quase morrendo ! Chame uma ambulвncia: /ambu.");
SetPVarInt(i,"Med",1);
GetPlayerName(i, n, 24);
GetPlayerPos(i, XYZ[0], XYZ[1], XYZ[2]);
id = i;
return 1;
}
if(MED[i] == 1 && GetPVarInt(i, "SMed") == 1 && GetPVarInt(i, "Ocupado" == 1)
{
new str[128];
format(str, sizeof(str),"%s estб praticamente morrendo ! Siga o checkpoint com uma ambulвncia para salvб-lo.")
SendClientMessage(i, -1, str);
SetPlayerCheckpoint(i, XYZ[0], XYZ[1], XYZ[2], 4.0);
SetPVarInt(i, "Ocupado", 1);
SetPVarInt(i, "User", i);
return 1;
}
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/smed", true) == 0)
{
if(MED[playerid] == 0) return SendClientMessage(playerid, -1, "Vocк nгo й medico.");
if(GetPVarInt(playerid, "SMed") == 1)
{
SetPVarInt(playerid, "SMed", 0);
new str[100];
format(str, sizeof(str),"ID %d saiu do serviзo mйdico e estб de folga.");
SendClientMessageToAll(-1, str);
else
{
SetPVarInt(playerid, "SMed", 1);
new str[100];
format(str, sizeof(str),"ID %d entrou no serviзo mйdico. Agora ele irб te proteger.");
SendClientMessageToAll(-1, str);
}
}
if(strcmp(cmdtext, "/hospital", true) == 0)
{
if(MED[playerid] == 0) return SendClientMessage(playerid, -1, "Vocк nгo й medico.");
if(GetPVarInt(playerid, "Ocupado") != 2) return SendClientMessage(playerid, -1, "Vocк ainda nгo colocou o paciente na ambulвncia.");
if(GetPVarInt(GetPVarInt(playerid, "User"), "Curando") == 1) return SendClientMessage(playerid, -1, "Este jogador jб estб sendo curado.");
SetPlayerPos(GetPVarInt(playerid, "User"), X, Y, Z); //TROQUE X, Y, Z PELAS COORDENADAS ONDE O PACIENTE DEVE FICAR AO CHEGAR NO HOSPITAL
SendClientMessage(GetPVarInt(playerid, "User"), -1, "Vocк acaba de chegar ao hospital e em instantes serб liberado.");
TogglePlayerControllable(GetPVarInt(playerid, "User"),1);
SendClientMessage(playerid, -1, "Parabйns ! Vocк salvou um paciente. Agora vocк estб livre para salvar outras pessoas.");
SetPVarInt(playerid, "Ocupado", 0);
SetPVarInt(GetPVarInt(playerid, "User"), "Curando", 1);
SetTimerEx("Sair", 300000, false, "i", GetPVarInt(playerid, "User"));
GivePlayerMoney(playerid, 1000);
DeletePVar(playerid, "User");
return 1;
}
return 0;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(GetPVarInt(playerid, "Ocupado") == 1)
{
SendClientMessage(playerid, -1, "Vocк chegou ao paciente ! Agora coloque-o em uma ambulвncia e leve-o ao hospital.");
SetPlayerCheckpoint(playerid, 2026.6992, -1408.7386, 16.9922, 4.0);
return 1;
}
if(GetPVarInt(playerid, "Ocupado") == 2)
{
SendClientMessage(playerid, -1, "Vocк chegou no hospital ! Digite /hospital para colocar o paciente no hospital.");
DisablePlayerCheckpoint(playerid);
return 1;
}
return 1;
}
public OnPlayerStateChange(playerid,newstate,oldstate)
{
if(newstate == 2)
{
if(GetPVarInt(playerid, "Ocupado") == 1)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 416)
{
SendClientMessage(playerid, -1, "Vocк acaba de entrar na ambulвncia e o paciente estб na parte de trбs ! Caso nгo chegue rбpido ao hospital, ele morrerб.");
SendClientMessage(GetPVarInt(playerid, "User"), -1, "Vocк foi colocado dentro da ambulвncia e serб levado ao hospital.");
PutPlayerInVehicle(GetPVarInt(playerid, "User"), GetPlayerVehicleID(playerid), 3);
TogglePlayerControllable(GetPVarInt(playerid, "User"),0);
SetPVarInt(playerid, "Ocupado", 2);
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, -1, "Vocк sу pode levar o paciente em uma ambulвncia !");
}
}
return 1;
}
if(oldstate == 2 && GetPVarInt(playerid, "Ocupado") == 2 && !IsPlayerInRangeOfPoint(playerid, 6.0, 2026.6992, -1408.7386, 16.9922))
{
SendClientMessage(playerid, -1, "Vocк saiu da ambulвncia sem deixar o paciente no hospital.");
SendClientMessage(playerid, -1, "Volte para o veiculo ou vocк serб penalizado em 7500 dуlares !");
SetPVarInt(playerid, "Pena", 1);
SetTimerEx("Checar", 30000, false, "i", playerid);
return 1;
}
return 1;
}