Regen HP/AP for Knife (регенерация)

Статус
В этой теме нельзя размещать новые ответы.

pataychlenix

community of gen unknown
Сообщения
43
Реакции
3
Помог
1 раз(а)
привет, может кто помочь добавить флаги в исходник, чтоб к примеру хп регенилось у обычных игроков, армор у випов
Regen HP/AP for Knife (регенерация) | Dev-CS.ru


Код:
#include <amxmodx>
#include <reapi>

#define REGEN_TIME            5                    // Interval time
#define REGEN_AMOUNT_HP        15                    // Amount HP for interval
#define REGEN_AMOUNT_AP        15                  // Amount AP for interval

#define MAX_HP    100        // max hp
#define MAX_AP    100        // max ap

public plugin_init()
{
    register_plugin("Regen HP AP for knife", "1.0", "I Am LeGenD")
    
    RegisterHookChain(RG_CBasePlayer_PostThink, "@CBasePlayer_PostThink")
}

@CBasePlayer_PostThink(const Player)
{
    new Float: flTime = get_gametime()
    new Float: flHealth = Float: get_entvar(Player, var_health)
    new Float: flAmmor = Float: get_entvar(Player, var_armorvalue)
    
    static Float: flLife[MAX_CLIENTS + 1]
    
    if(get_user_weapon(Player) == CSW_KNIFE)
    {
        if(flLife[Player] < flTime)
        {
            flLife[Player] = flTime + REGEN_TIME.0
            
            if(flHealth < MAX_HP.0 || flAmmor < MAX_AP.0)
            {
                set_entvar(Player, var_health, floatmin (flHealth + REGEN_AMOUNT_HP.0, MAX_HP.0))
                set_entvar(Player, var_armorvalue, floatmin (flAmmor + REGEN_AMOUNT_AP.0, MAX_AP.0))
            }
        }
    }
}
 

Вложения

Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Реализаци проверок на флаг доступа
 

pataychlenix

community of gen unknown
Сообщения
43
Реакции
3
Помог
1 раз(а)
Code_0xABC, если это нужно, то хорошо, я плохо разбираюсь в этом
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
pataychlenix, не помню есть ли флаг доступа у всех ADMIN_USER, проверь будет ли добовалять хп випам, если что подправим
Код:
#include <amxmodx>
#include <reapi>

#define REGEN_TIME            5                    // Interval time
#define REGEN_AMOUNT_HP        15                    // Amount HP for interval
#define REGEN_AMOUNT_AP        15                  // Amount AP for interval

#define MAX_HP    100        // max hp
#define MAX_AP    100        // max ap

public plugin_init()
{
    register_plugin("Regen HP AP for knife", "1.0", "I Am LeGenD")
  
    RegisterHookChain(RG_CBasePlayer_PostThink, "@CBasePlayer_PostThink")
}

@CBasePlayer_PostThink(const Player)
{
    if(!is_user_alive(Player))
        return;

    if(get_user_weapon(Player) == CSW_KNIFE)
    {   
        new Float: flTime = get_gametime()
        static Float: flLife[MAX_CLIENTS + 1]

        if(flLife[Player] < flTime)
        {
            flLife[Player] = flTime + REGEN_TIME.0
          
            if(get_user_flags(Player) & ADMIN_LEVEL_H)
            {
                Float: flAmmor = Float: get_entvar(Player, var_armorvalue)
              
                flAmmor < MAX_AP.0)
                    set_entvar(Player, var_armorvalue, floatmin (flAmmor + REGEN_AMOUNT_AP.0, MAX_AP.0))
            }
            
            new Float: flHealth = Float: get_entvar(Player, var_health)
              
            if(flHealth < MAX_HP.0)
                set_entvar(Player, var_health, floatmin (flHealth + REGEN_AMOUNT_HP.0, MAX_HP.0))
        }
    }
}
 
Последнее редактирование:
Сообщения
893
Реакции
149
Помог
25 раз(а)
Code_0xABC, ADMIN_USER - флаг z, если его не выдают в момент выдачи привилегии, то у игрока его не будет. Если хочешь сделать для всех - не делать проверку, либо использовать ADMIN_ALL.
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
ImmortalAmxx, не понятен его вопрос, либо дать только випам и только обычнм или випам и то и то, а игрокам только хп
23 Ноя 2023
Пишу с телефона, опечатка
Код:
--flAmmor < MAX_AP.0)
++if(flAmmor < MAX_AP.0)
 

pataychlenix

community of gen unknown
Сообщения
43
Реакции
3
Помог
1 раз(а)
опечатка*
new Float: flAmmor = Float: get_entvar(Player, var_armorvalue)
 

pataychlenix

community of gen unknown
Сообщения
43
Реакции
3
Помог
1 раз(а)
Code_0xABC, флаг работает, плагин почему-то багается когда проходит урон, допустим если 100 армора, тебе сносят до 90 армора и он сбивает армор в 0, секунд 10 набирает 5-10, потом до 100 доходит, поставлю тогда без флагов, чтоб не заморачиваться с фиксом флагов, все равно спасибо тебе
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
pataychlenix, приеду домой посмотрю, получать броню и хп надо тогда до проверки на нож
23 Ноя 2023
Буквально через часик, а то с телефона тяжело писать
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
pataychlenix, держи
Код:
#include <amxmodx>
#include <reapi>

#define REGEN_TIME             5.0                      // Interval time
#define REGEN_AMOUNT_HP        15.0                    // Amount HP for interval
#define REGEN_AMOUNT_AP        15.0                    // Amount AP for interval

#define MAX_HP    100.0        // max hp
#define MAX_AP    100.0        // max ap

#define IS_HANDS_KNIFE(%0) bool:(get_user_weapon(%0) == CSW_KNIFE)

#define IS_VIP(%0) bool:(get_user_flags(%0) & ACCESS)
#define ACCESS ADMIN_LEVEL_H  // Флаг доступа для випа

#define RG_GET_ARMOR(%0) get_entvar(%0, var_armorvalue)
#define RG_SET_ARMOR(%0,%1) set_entvar(%0, var_armorvalue, floatmin(flAmmor +%1, MAX_AP))
#define RG_GET_HEALTH(%0) get_entvar(%0, var_health)
#define RG_SET_HEALTH(%0,%1) set_entvar(%0, var_health, floatmin(flHealth +%1, MAX_HP))

public plugin_init() {
    register_plugin("Regen HP AP for knife", "1.0", "I Am LeGenD");

    RegisterHookChain(RG_CBasePlayer_PostThink, "CBasePlayer_PostThink");
}

public CBasePlayer_PostThink(const Player) {
    if(is_user_alive(Player) && IS_HANDS_KNIFE(Player)) {
        new
            Float:flAmmor = RG_GET_ARMOR(Player),
            Float:flHealth = RG_GET_HEALTH(Player),
            Float:flTime = get_gametime();

        static Float:flLife[MAX_CLIENTS +1];

        if(flLife[Player] < flTime) {
            flLife[Player] = flTime + REGEN_TIME;

            if(IS_VIP(Player) && flAmmor < MAX_AP)
                RG_SET_ARMOR(Player, REGEN_AMOUNT_AP);

            if(flHealth < MAX_HP)
                RG_SET_HEALTH(Player, REGEN_AMOUNT_HP);
        }
    }
}
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
pataychlenix,
Не забывайте ставить решение вопроса, на пост который помог
 

pataychlenix

community of gen unknown
Сообщения
43
Реакции
3
Помог
1 раз(а)
Code_0xABC,
да, я бы с радостью, только не могу найти кнопку, что твой ответ мне помог, раньше видел такую кнопку, возможно у меня тунельное зрение
 
Сообщения
893
Реакции
149
Помог
25 раз(а)
Code_0xABC,
Тут нету, ибо это вопрос по созданию и модификации.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу