Damage Control

Damage Control 0.1

Нет прав для скачивания
Сообщения
68
Реакции
79
Помог
3 раз(а)
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
Лайк за квары, спавн и импульс.
 
Сообщения
938
Реакции
187
Помог
4 раз(а)
Flymic24, Сделай лучше в процентом соотношение и через ini файл чтобы не было столько кваров
Индекс оружия = процент прибавляемый к стандартному дмг (+- если нужно снизить или увеличить)
 
Сообщения
494
Реакции
340
Помог
11 раз(а)
BiZaJe, зачем проценты, если можно задать точное значение?
Квары в виде настроек будут в конфиге.
 
  • Нравится
Реакции: ssx
Сообщения
938
Реакции
187
Помог
4 раз(а)
bizon, Ну это как предложение для автора, а так сам пусть решает как удобнее.
Всем не угодишь все равно :derisive:
 
Сообщения
336
Реакции
396
Предупреждения
5
Помог
7 раз(а)
Я бы сделал так

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

new Float:g_eCvar[MAX_WEAPONS - 1];

public plugin_init()
{
    register_plugin("[AMXX] Weapon Damage Control", "0.2", "Flymic24");
    
    const IGNORE_WEAPON = 1<<CSW_HEGRENADE|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG|1<<CSW_C4|1<<CSW_GLOCK;
    
    for(new iWeaponID = 1, szWeaponName[MAX_NAME_LENGTH]; iWeaponID < MAX_WEAPONS - 1; iWeaponID++)
    {
        if((1<<iWeaponID) & ~IGNORE_WEAPON)
        {
            get_weaponname(iWeaponID, szWeaponName, charsmax(szWeaponName));
            RegisterHam(Ham_Spawn, szWeaponName, "Ham_Weapon_Spawn_Post", .Post = true);

            replace(szWeaponName, charsmax(szWeaponName), "weapon_", NULL_STRING);

            bind_pcvar_float(create_cvar(
                fmt("amx_dmg_%s", szWeaponName),
                "1.0",
                FCVAR_NONE,
                fmt("damage %s: 0.0 - Disable", szWeaponName),
                true,
                0.0),
                g_eCvar[iWeaponID]
            );
        }
    }

    AutoExecConfig(true, "weapon_damage_control");
}

public Ham_Weapon_Spawn_Post(const iWeapon)
{
    if(get_entvar(iWeapon, var_impulse))    // Ignore Custom Weapon
        return HAM_IGNORED;
    
    new iWeaponID = get_member(iWeapon, m_iId);
    
    set_member(iWeapon, m_Weapon_flBaseDamage, Float:get_member(iWeapon, m_Weapon_flBaseDamage) * g_eCvar[iWeaponID]);
    
    switch(iWeaponID)
    {
        case CSW_M4A1: set_member(iWeapon, m_M4A1_flBaseDamageSil, Float:get_member(iWeapon, m_M4A1_flBaseDamageSil) * g_eCvar[iWeaponID]);
        case CSW_USP: set_member(iWeapon, m_USP_flBaseDamageSil, Float:get_member(iWeapon, m_USP_flBaseDamageSil) * g_eCvar[iWeaponID]);
        case CSW_FAMAS: set_member(iWeapon, m_Famas_flBaseDamageBurst, Float:get_member(iWeapon, m_Famas_flBaseDamageBurst) * g_eCvar[iWeaponID]);
        case CSW_KNIFE:
        {
            set_member(iWeapon, m_Knife_flStabBaseDamage, Float:get_member(iWeapon, m_Knife_flStabBaseDamage) * g_eCvar[iWeaponID]);
            set_member(iWeapon, m_Knife_flSwingBaseDamage, Float:get_member(iWeapon, m_Knife_flSwingBaseDamage) * g_eCvar[iWeaponID]);
            set_member(iWeapon, m_Knife_flSwingBaseDamage_Fast, Float:get_member(iWeapon, m_Knife_flSwingBaseDamage_Fast) * g_eCvar[iWeaponID]);
        }
    }
    
    return HAM_IGNORED;
}
 
Сообщения
622
Реакции
131
Предупреждения
5
Помог
10 раз(а)
Можно еще добавить возможность менять дамаг с оружия, когда в руках weapon_shield.
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
346
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сделай лучше в процентом соотношение
Будет не такая точная настройка.
Но а вообще, можно сделать два варианта настроек. Это уже так, извращения ради.
 
Сообщения
68
Реакции
79
Помог
3 раз(а)
Impossible, Так ведь там также спавнится: void CArmoury::ArmouryTouch( CBaseEntity *pOther ) -> GiveNamedItem( "weapon_*****" ); -> Spawn()

BiZaJe, Значение кваров и так в процентном соотношении стоят:
Код:
1.0 - 100% урона
0.5 - 50%  урона
1.3 - 130% урон
Простых кваров в этом случае достаточно
 

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

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