PWNOldschool
Нуль
- Регистрация
- 14 Авг 2016
- Сообщения
- 5
- Лучшие ответы
- 0
- Репутация
- 0
Всем привет! Давно не занимаюсь сампом и пашней, очень давно. А тут решил поковырять старый мод, увидел систему ранений свою, отдаю на доведение до ума)
П.С.
Тапками не кидайте, я много лет этим не занимаюсь и а, я знаю за нагрузку. И да, я знаю что вы будите кричать, что сделали бы лучше. Просто укажите на ошибки, многие систему оценили ! Отдаю просто так, извините если не так что оформил.
И так:
Создаем переменную с анимацией
Создаем переменные в которые буем записывать единички и нолики (PlayerInfo)
Далее в ежесекундный паблик
Далее команда.
ВАРИАНТ 1.
ВАРИАНТ 2. (Все тоже самое, только pwncmd
Создаем паблик с названием таймера.
А ТЕПЕРЬ ВНИМАНИЕ!
Скорее всего у вас сделано как и у меня, и после смерти вы спавнитесь в больничке и сидите там пока не отхилитесь по паре хп в секунду. В этом случае, вставте к себе в ту часть кода, где вам выдает сообщение о том, что вы отхилились, это:
Потом идев в паблик
Вставляем в него
и где нибудь после этого паблика вставляем
ВАЖНО !!!
РЕКОМЕНДУЮ СДЕЛАЬ ТАК, ЧТО БЫ ИГРОКИ В БОЛЬНИЦЕ ЛЕЧИЛИСЬ ИМЕННО ДО 80ХП!
ПРОВЕРКИ ПРЕДЕЛОВ В КОДЕ ДЕЛАТЬ ИМЕННО ТАКИЕ, КАК СДЕЛАЛ Я!
---------- Сообщение добавлено в 02:43 ---------- Предыдущее сообщение добавлено в 01:39 ----------
Кстати, не находите систему похожей на систему из pubg?
П.С.
Тапками не кидайте, я много лет этим не занимаюсь и а, я знаю за нагрузку. И да, я знаю что вы будите кричать, что сделали бы лучше. Просто укажите на ошибки, многие систему оценили ! Отдаю просто так, извините если не так что оформил.
И так:
Создаем переменную с анимацией
PHP:
new Ubit[MAX_PLAYERS];
UbitAnimation(playerid,animlib[],animname[], Float:Speeds, looping, lockx, locky, lockz, lp)
{
Ubit[playerid] = 1;
ApplyAnimation(playerid, animlib, animname, Speeds, looping, lockx, locky, lockz, lp);
}
PHP:
enum pInfo
{
phospactual, // Запись о том, что на коленях
phosptime, // Ввели команду /hospital и ждем когда склеим ласты
phospdead, //Если мы только что сдохли и еще не вылечились в больке
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Далее в ежесекундный паблик
PHP:
public OnPlayerUpdate(playerid)
{
new Float:p_health; //создаем переменную с плавующей запятой, кажеся это так называлось всегда.
if(PlayerInfo[playerid][phospdead] == 0) //Проверка что мы не в больке после того как отъехали
{
GetPlayerHealth(playerid, p_health);// чекаем хп
if(p_health < 30 || p_health > 105) //если хп меньше 30 и больше 105, то
{
// if(IsAGang(playerid) && IsCapture == 1) return true; //кто юзает ганг зоны, сделайте тут под себя
Ubit[playerid] = 1; // Записывает что нам ху*во и мы всали на колени
UbitAnimation(playerid,"SWEET","SWEET_INJUREDLOOP",4.0, 1, 0, 0, 0, 0); // Включаем анимацию
J_SetPlayerHealth(playerid,10000.0); // Выставляем 10000 хп, не спрашивайте почему именно столько. Тут юзаем свою функцию
RemovePlayerFromVehicle(playerid); // На всякий случай выкидыаем из тачки.
if(PlayerInfo[playerid][phospactual] == 0)
{
SendClientMessage(playerid,COLOR_WHITE,"Вы ранены и обездвижены, введите /hospital или дождитесь помощи!");
PlayerInfo[playerid][phospactual] = 1; // Записываем, что стоим на коленях
}
}
else if(p_health > 29 && Ubit[playerid] == 1 || p_health < 101 && Ubit[playerid] == 1) // Если к нам успел айболит и подлечил, то
{
Ubit[playerid] = 0; // встаем с колен
ClearAnimations(playerid); // оффаем анимацию
PlayerInfo[playerid][phospactual] = 0; // записываем, что уже не стоим на коленях
}
return true;
}
Далее команда.
ВАРИАНТ 1.
PHP:
if(strcmp(cmd, "/hospital", true) == 0) // вводим команду, когда на коленях
{
new Float:p_health;
GetPlayerHealth(playerid, p_health); // чекаем хп
if(p_health < 30 || p_health > 101) // Если хп меньше 30 или больше 101, то
{
if(PlayerInfo[playerid][phosptime] == 0) // чекаем, что еще не вводили команду /hospital, то
{
SendClientMessage(playerid, CRED, "Через 25 секунд вы очутитесь в больнице.");
SetTimerEx("hosptimer", 25000, false, "i", playerid); // включаем таймера на 25 секунд
PlayerInfo[playerid][phosptime] = 1; // Записываем, что ввели команду стоя на коленях
return true;
}
}
}
ВАРИАНТ 2. (Все тоже самое, только pwncmd
PHP:
CMD:hospital(playerid)
{
new Float:p_health;
GetPlayerHealth(playerid, p_health);
if(p_health < 30 || p_health > 100)
{
if(PlayerInfo[playerid][phosptime] == 0)
{
SendClientMessage(playerid, COLOR_RED, "Через 25 секунд вы очутитесь в больнице.");
SetTimerEx("hosptimer", 25000, false, "i", playerid);
PlayerInfo[playerid][phosptime] = 1;
return true;
}
}
return true;
}
Создаем паблик с названием таймера.
PHP:
forward hosptimer(playerid);
public hosptimer(playerid) // Как только сработаем таймер
{
J_SetPlayerHealth(playerid,0.0); // Ставим 0 хп, что бы заспавнить в больничке
PlayerInfo[playerid][phosptime] = 0; // Записываем что больше не стоим на коленях
PlayerInfo[playerid][phospdead] = 1; // Записываем, что недавно сдохли стоя на коленях, после команды /hospital
}
А ТЕПЕРЬ ВНИМАНИЕ!
Скорее всего у вас сделано как и у меня, и после смерти вы спавнитесь в больничке и сидите там пока не отхилитесь по паре хп в секунду. В этом случае, вставте к себе в ту часть кода, где вам выдает сообщение о том, что вы отхилились, это:
PHP:
J_SetPlayerHealth(playerid,80); // Установили 80 хп.
PlayerInfo[playerid][phospdead] = 0;
// Записываем, что мы хильнулись после смерти на коленях, что бы система вновь сработала в след раз
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Сообщение, о конце лечения");
Потом идев в паблик
PHP:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
Вставляем в него
PHP:
if(!ispassenger)
{
CheckEnterCar(playerid, vehicleid);
}
PHP:
CheckEnterCar(playerid, vehicleid)
{
if(PlayerInfo[playerid][phospactual] == 1) //Чекаем что игрок когда садится в тачку на коленях
{
SendClientMessage(playerid,COLOR_RED,"[Информация]Вы ранены и не можете двигаться самостоятельно!");
ExitCar(playerid);//и не даем ему сесь в тачку
}
return true;
}
ВАЖНО !!!
РЕКОМЕНДУЮ СДЕЛАЬ ТАК, ЧТО БЫ ИГРОКИ В БОЛЬНИЦЕ ЛЕЧИЛИСЬ ИМЕННО ДО 80ХП!
ПРОВЕРКИ ПРЕДЕЛОВ В КОДЕ ДЕЛАТЬ ИМЕННО ТАКИЕ, КАК СДЕЛАЛ Я!
---------- Сообщение добавлено в 02:43 ---------- Предыдущее сообщение добавлено в 01:39 ----------
Кстати, не находите систему похожей на систему из pubg?