Автор Jekazz
Ко всем #define добавляем:
Code: Select all
#define HOSPITAL_TIME 5 //5 - Кол-во минут в больнице
Ко всем new:
Code: Select all
new HospitalTime[MAX_PLAYERS];
В publicOnPlayerConnect(playerid) добавляем обнуление переменной
Code: Select all
HospitalTime[playerid] = 0;
Нам нужно загрузить оставшееся время нахождения в больнице, для этого в publicOnPlayerLogin(playerid, password[]) вставляем:
1. Для тех, у кого загрузка на mxINI:
Code: Select all
ini_getInteger(File, "HospitalTime", HospitalTime[playerid]);
2. Для тех, у кого нет никакого ридера / райтера:
Code: Select all
if( !strcmp( key , "HospitalTime" , true ) ) HospitalTime[playerid] = strval( ini_GetValue( Data ) );
Далее нам нужно сделать сохранение время проведения в больнице и для этого в publicSavePlayer( playerid ) или public GF_OnPlayerUpdate(playerid) ( Не путать с publicOnPlayerUpdate(playerid) ) добавляем следующее:
1. Для тех, у кого mxINI:
Code: Select all
ini_setInteger(File, "HospitalTime", HospitalTime[playerid]);
2. Для тех, у кого нет никакого ридера / райтера:
Code: Select all
format(var, 32, "HospitalTime=%d\n", HospitalTime[playerid]), fwrite(hFile, var);
Теперь нам надо сделать так, чтобы после смерти игрок попадал в больницу.
Для этого в начало publicOnPlayerDeath(playerid, killerid, reason) добавим код отвечающий за, так сказать, "помещение" игрока в больницу:
Code: Select all
if(killerid != INVALID_PLAYER_ID) //Если смерть "произошла" от рук другого игрока.
{
if(!HospitalTime[playerid]) //Если игрок ещё не в больнице.
{
HospitalTime[playerid] = (HOSPITAL_TIME * 60);
SavePlayer(playerid); //SavePlayer замените на свою функцию сохранения
}
}
publicSetPlayerUnJail() добавим код отвечающий за "выписку" игрока из больницы.
После if(IsPlayerConnected(i)) вставляем следующий код:
Code: Select all
if(HospitalTime[i] > 0 && !(-- HospitalTime[i]))
{
SendClientMessage(i, 0xBFC0C2FF,"Теперь ты здоров!");
SetPlayerInterior(i, 0);
SetPlayerVirtualWorld(i, 0);
SetPlayerPos(i,2024.3229, -1404.7660, 17.2010);//Замените на свою функцию телепортации
TogglePlayerControllable(i, true);
SetPlayerHealth(i,100); //Замените на свою функцию "выдачи" ХП
SavePlayer(i); //SavePlayer замените на свою функцию сохранения
}
Теперь мы добавим функцию помещения игрока в больницу при спавне (если время проведения в больнице не окончено).
В начало publicOnPlayerSpawn(playerid) добавим следующий код:
Code: Select all
if(HospitalTime[playerid] > 0)
{
SetPlayerInterior(playerid, 3);
SetPlayerPos(playerid,338.4664,161.4294,1019.9844);//Замените на свою функцию телепортации
SetPlayerVirtualWorld(playerid, 3);
SetPlayerHealth(playerid, 100);
TogglePlayerControllable(playerid, 0);
ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
SendClientMessage(playerid, 0xFF6347AA, "Вы попали в больницу, отдыхайте.");
SavePlayer(playerid);//SavePlayer замените на свою функцию сохранения
return true;
}