Русское сообщество по скриптингу

Урон Ножом [ Зомби Мод ]  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Урон Ножом [ Зомби Мод ]

Сообщение MayroN » 14 сен 2018, 21:22

Есть один плагин
Вы должны зарегистрироваться, чтобы видеть ссылки.


Подскажите,как оставить урон только для одного Ножа для Зомби Мода в 500 HP ?

Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

new P_Cvars[31],Max_Players,Float:DmgValue
public plugin_init
()
{
    register_plugin("Damage Control", "1.22", "Fxfighter")
    
    RegisterHam
(Ham_TakeDamage, "player", "hook_TakeDamage")
    
    P_Cvars
[0] = register_cvar("amx_dmg_mode","1")
    P_Cvars[1] = register_cvar("amx_dmg_p228","#")
    P_Cvars[2] = register_cvar("amx_dmg_fall","#")
    P_Cvars[3] = register_cvar("amx_dmg_scout","#")
    P_Cvars[4] = register_cvar("amx_dmg_grenade","#")
    P_Cvars[5] = register_cvar("amx_dmg_xm1014","#")
    P_Cvars[7] = register_cvar("amx_dmg_mac10","#")
    P_Cvars[8] = register_cvar("amx_dmg_aug","#")
    P_Cvars[9] = register_cvar("amx_dmg_all","9.0*")
    P_Cvars[10] = register_cvar("amx_dmg_elite","#")
    P_Cvars[11] = register_cvar("amx_dmg_fiveseven","#")
    P_Cvars[12] = register_cvar("amx_dmg_ump45","#")
    P_Cvars[13] = register_cvar("amx_dmg_sg550","#")
    P_Cvars[14] = register_cvar("amx_dmg_galil","#")
    P_Cvars[15] = register_cvar("amx_dmg_famas","#")
    P_Cvars[16] = register_cvar("amx_dmg_usp","#")
    P_Cvars[17] = register_cvar("amx_dmg_glock18","#")
    P_Cvars[18] = register_cvar("amx_dmg_awp","#")
    P_Cvars[19] = register_cvar("amx_dmg_mp5navy","#")
    P_Cvars[20] = register_cvar("amx_dmg_m249","#")
    P_Cvars[21] = register_cvar("amx_dmg_m3","#")
    P_Cvars[22] = register_cvar("amx_dmg_m4a1","#")
    P_Cvars[23] = register_cvar("amx_dmg_tmp","#")
    P_Cvars[24] = register_cvar("amx_dmg_g3sg1","#")
    P_Cvars[26] = register_cvar("amx_dmg_deagle","#")
    P_Cvars[27] = register_cvar("amx_dmg_sg552","#")
    P_Cvars[28] = register_cvar("amx_dmg_ak47","#")
    P_Cvars[29] = register_cvar("amx_dmg_knife","#")
    P_Cvars[30] = register_cvar("amx_dmg_p90","#")
    
    Max_Players 
= get_maxplayers()
    
}
public hook_TakeDamage(Victim, Useless, Attacker, Float:damage, damagebits)
{
    static cvar
    cvar 
= get_pcvar_num(P_Cvars[0])
    
    if
(!cvar)return HAM_IGNORED
    
    static Gun
    if
(Useless <= Max_Players && Useless != 0)Gun = get_user_weapon(Attacker)
    else
    
{
        static classname[32]
        pev(Useless,pev_classname,classname,31)
        if(equal(classname,"grenade"))Gun = 4
        else if
(!Useless)Gun = 2
    
}
    if(!Gun)return HAM_IGNORED
    
    static Dmg
[5]
    Useless = 0
    get_pcvar_string
(P_Cvars[Gun],Dmg,4)
    
    if
(Dmg[0] == '#')
    {
        get_pcvar_string(P_Cvars[9],Dmg,4)
        if(Dmg[0] == '#')return HAM_IGNORED
        Useless 
= 1
    
}
    if(contain(Dmg,"*") != -1)
    {
        replace(Dmg,4,"*","")
        DmgValue = str_to_float(Dmg)
        if(DmgValue == 1.0)return HAM_IGNORED
        damage
*=DmgValue
    
}
    else if(contain(Dmg,"-") != -1)
    {
        replace(Dmg,4,"-","")
        DmgValue = str_to_float(Dmg)
        if(!DmgValue)return HAM_IGNORED
        damage
-=DmgValue
        if
(damage < 0.0)damage = 0.0
    
}
    else if(contain(Dmg,"+") != -1)
    {
        replace(Dmg,4,"+","")
        DmgValue = str_to_float(Dmg)
        if(!DmgValue)return HAM_IGNORED
        damage
+=str_to_float(Dmg)
    }
    else damage=str_to_float(Dmg)
    
    if
(cvar == 2 && !Useless)
    {
        get_pcvar_string(P_Cvars[9],Dmg,4)
        if(Dmg[0] == '#')
        {
            SetHamParamFloat(4, damage)
            return HAM_IGNORED
        
}
        if(contain(Dmg,"*") != -1)
        {
            replace(Dmg,4,"*","")
            DmgValue = str_to_float(Dmg)
            if(DmgValue == 1.0)return HAM_IGNORED
            damage
*=DmgValue
        
}
        else if(contain(Dmg,"-") != -1)
        {
            replace(Dmg,4,"-","")
            DmgValue = str_to_float(Dmg)
            if(!DmgValue)return HAM_IGNORED
            damage
-=DmgValue
            if
(damage < 0.0)damage = 0.0
        
}
        else if(contain(Dmg,"+") != -1)
        {
            replace(Dmg,4,"+","")
            DmgValue = str_to_float(Dmg)
            if(!DmgValue)return HAM_IGNORED
            damage
+=str_to_float(Dmg)
        }
        else damage=str_to_float(Dmg)
    }
    SetHamParamFloat(4, damage)
    return HAM_HANDLED
}

new Debug
public client_putinserver
(id)
{
    
    if
(Debug == 1)return    
    new classname
[32]
    pev(id,pev_classname,classname,31)
        
    if
(!equal(classname,"player"))
    {
        Debug=1
        set_task
(10.0,"_Debug",id)    
    
}
}
public _Debug(id)
{
    RegisterHamFromEntity(Ham_TakeDamage,id,"hook_TakeDamage")
    client_print(0,print_console,"[Damage Control]bots debuged")
}


Ето так?

Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

new P_Cvars[3],Max_Players,Float:DmgValue
public plugin_init
()
{
    register_plugin("Damage Control", "1.22", "Fxfighter")
    
    RegisterHam
(Ham_TakeDamage, "player", "hook_TakeDamage")
    
    P_Cvars
[0] = register_cvar("amx_dmg_mode","1")
    P_Cvars[1] = register_cvar("amx_dmg_all","500.0*")
    P_Cvars[2] = register_cvar("amx_dmg_knife","#")
    
    Max_Players 
= get_maxplayers()
    
}
public hook_TakeDamage(Victim, Useless, Attacker, Float:damage, damagebits)
{
    static cvar
    cvar 
= get_pcvar_num(P_Cvars[0])
    
    if
(!cvar)return HAM_IGNORED    
    
    static Dmg
[5]
    Useless = 0
    get_pcvar_string
(P_Cvars[Gun],Dmg,4)
    
    if
(Dmg[0] == '#')
    {
        get_pcvar_string(P_Cvars[1],Dmg,4)
        if(Dmg[0] == '#')return HAM_IGNORED
        Useless 
= 1
    
}
    if(contain(Dmg,"*") != -1)
    {
        replace(Dmg,4,"*","")
        DmgValue = str_to_float(Dmg)
        if(DmgValue == 1.0)return HAM_IGNORED
        damage
*=DmgValue
    
}
    else if(contain(Dmg,"-") != -1)
    {
        replace(Dmg,4,"-","")
        DmgValue = str_to_float(Dmg)
        if(!DmgValue)return HAM_IGNORED
        damage
-=DmgValue
        if
(damage < 0.0)damage = 0.0
    
}
    else if(contain(Dmg,"+") != -1)
    {
        replace(Dmg,4,"+","")
        DmgValue = str_to_float(Dmg)
        if(!DmgValue)return HAM_IGNORED
        damage
+=str_to_float(Dmg)
    }
        if(contain(Dmg,"*") != -1)
        {
            replace(Dmg,4,"*","")
            DmgValue = str_to_float(Dmg)
            if(DmgValue == 1.0)return HAM_IGNORED
            damage
*=DmgValue
        
}
        else if(contain(Dmg,"-") != -1)
        {
            replace(Dmg,4,"-","")
            DmgValue = str_to_float(Dmg)
            if(!DmgValue)return HAM_IGNORED
            damage
-=DmgValue
            if
(damage < 0.0)damage = 0.0
        
}
        else if(contain(Dmg,"+") != -1)
        {
            replace(Dmg,4,"+","")
            DmgValue = str_to_float(Dmg)
            if(!DmgValue)return HAM_IGNORED
            damage
+=str_to_float(Dmg)
        }
        else damage=str_to_float(Dmg)
    }
    SetHamParamFloat(4, damage)
    return HAM_HANDLED
}

new Debug
public client_putinserver
(id)
{
    
    if
(Debug == 1)return    
    new classname
[32]
    pev(id,pev_classname,classname,31)
        
    if
(!equal(classname,"player"))
    {
        Debug=1
        set_task
(10.0,"_Debug",id)    
    
}
}
public _Debug(id)
{
    RegisterHamFromEntity(Ham_TakeDamage,id,"hook_TakeDamage")
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Re: Урон Ножом [ Зомби Мод ]  [Решено]

Сообщение flymic24 » 14 сен 2018, 23:02

Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define KNIFE_DAMAGE        500.0

public plugin_init()
{
    
RegisterHam(Ham_TraceAttack,    "func_breakable",    "HamHook_TraceAttack",     false);
    
RegisterHam(Ham_TraceAttack,    "hostage_entity",    "HamHook_TraceAttack",     false);
    
RegisterHam(Ham_TraceAttack,    "info_target",         "HamHook_TraceAttack",    false);
    
RegisterHam(Ham_TraceAttack,    "player",             "HamHook_TraceAttack",    false);
}

#define DMG_KNIFE     ( DMG_NEVERGIB | DMG_BULLET )

#define HasKnife(%1)  (get_user_weapon(%1) == CSW_KNIFE)

public HamHook_TraceAttack(const iVictim, const iAttacker, const Float:flDamage, const Float:VecDir[3], const iTrace, const DamageBit)
{
    if(!
is_user_connected(iAttacker))
        return 
HAM_IGNORED;
    
    if(
HasKnife(iAttacker) && (DamageBit DMG_KNIFE))
        return 
HAM_IGNORED;
    
    
SetHamParamFloat(3KNIFE_DAMAGE);
    
    return 
HAM_IGNORED;
}
 
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8