Как сделать поджег зомби при выстреле в CS 1.6
начать игру
Как сделать поджег зомби при выстреле в CS 1.6

В этой статье будет рассказано как добавить к оружию эффект поджога зомби

После инклюдов пишем следующие строчки:
#define TASK_FBURN                100
#define ID_FBURN                                ( taskid - TASK_FBURN )

#define MAX_CLIENTS                32

new bool:g_fRoundEnd

#define FIRE_DURATION        6
#define FIRE_DAMAGE        25
Получиться примерно так:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>
#include <zombieplague>

#define ENG_NULLENT            -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define cv4760r_WEAPONKEY     843
#define MAX_PLAYERS          32
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)

#define TASK_FBURN                100
#define ID_FBURN                                     ( taskid - TASK_FBURN )

#define MAX_CLIENTS                32

new bool:g_fRoundEnd

#define FIRE_DURATION        6
#define FIRE_DAMAGE        25
Ниже добавляем это:
new g_flameSpr
new g_smokeSpr
new g_burning_duration[ MAX_CLIENTS + 1 ]
В public plugin_precache добавляем эти строчки
g_flameSpr = precache_model( "sprites/flame.spr" );
g_smokeSpr = precache_model( "sprites/black_smoke3.spr" );
Дальше в public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
Добавляем это (в самый конец)
if( !task_exists( victim + TASK_FBURN ) )
                {
                g_burning_duration[ victim ] += FIRE_DURATION * 5
                
                set_task( 0.2, "CTask__BurningFlame", victim + TASK_FBURN, _, _, "b" )
            }
        }
    }
}  

Получиться примерно так:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
    if (victim != attacker && is_user_connected(attacker))
    {
        if(get_user_weapon(attacker) == CSW_AK47)
        {
            if(g_has_cv4760r[attacker])
                SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_cv4760r))

                        if( !task_exists( victim + TASK_FBURN ) )
            {
                g_burning_duration[ victim ] += FIRE_DURATION * 5
                
                set_task( 0.2, "CTask__BurningFlame", victim + TASK_FBURN, _, _, "b" )
            }
        }
    }
}  
В самый конец исходника добавляем это:
 public CTask__BurningFlame( taskid )
{
    // Get player origin and flags
    static origin[3], flags
    get_user_origin(ID_FBURN, origin)
    flags = pev(ID_FBURN, pev_flags)
    
    // Madness mode - in water - burning stopped
    if ((flags & FL_INWATER) || g_burning_duration[ID_FBURN] < 1 || g_fRoundEnd || !is_user_alive(ID_FBURN))
    {
        // Smoke sprite
        message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
        write_byte(TE_SMOKE) // TE id
        write_coord(origin[0]) // x
        write_coord(origin[1]) // y
        write_coord(origin[2]-50) // z
        write_short(g_smokeSpr) // sprite
        write_byte(random_num(15, 20)) // scale
        write_byte(random_num(10, 20)) // framerate
        message_end()
        
        // Task not needed anymore
        remove_task(taskid)
        return
    }
    
    // Get player's health
    static health
    health = pev(ID_FBURN, pev_health)
    
    // Take damage from the fire
    if (health - FIRE_DAMAGE > 0)
        fm_set_user_health(ID_FBURN, health - FIRE_DAMAGE)
    
    // Flame sprite
    message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
    write_byte(TE_SPRITE) // TE id
    write_coord(origin[0]+random_num(-5, 5)) // x
    write_coord(origin[1]+random_num(-5, 5)) // y
    write_coord(origin[2]+random_num(-10, 10)) // z
    write_short(g_flameSpr) // sprite
    write_byte(random_num(5, 10)) // scale
    write_byte(200) // brightness
    message_end()

    
    g_burning_duration[ID_FBURN]--
}

stock fm_set_user_health( index, health ) 
    health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index);  

Привет, наша адмнистрация публикует только пушечный контент, поставь лайк под постом ниже и напишите самый топовый комментарий, мы готовим материал только для тебя, любимый Гость.

Комментариев 5
  1. )_NEO_(
    )_NEO_(
    • -1
    Вроде можно зделать куда меньше, в моих ножах по другому зделано 
    Людям страдающих оптимизацией старательно не рекомендую смотреть мой код =)
    By NEO
    • 14 июня 2018 09:36
  2. h3lls1ng
    На зм сру статья была про поджог зомби.
    Коментатор всея Руси.
    vk.com/h3lls1ng
    • 14 июня 2018 09:55
  3. Rothmans
    не легче сделать через zombie_plague40.sma ?

    • 3 марта 2019 19:09
    1. BuB9neC
      пиздец, ну ты рофлан)
      • 3 марта 2019 19:11
    2. resident_evil
      Ухахаха уёбок сраный
      • 27 августа 2019 19:04
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наши партнеры
Основа для вашей сборки
ReHLDS 3.4.0.654

ReHLDS (Reverse-engineered) - это новый шаг вперед, который дает второе дыхание нашим серверам. ReHLDS работает в 2 раза быстрей, чем HLDS.

AmxModx 1.8.3

AMXModX - это Metamod дополнение, которое позволяет создавать новые модификации для Half-Life на языке Pawn

Reunion 0.1.92

Reunion является продолжением Dproto для ReHLDS. Это metamod плагин, который позволяет заходить 47/48 Non-Steam на сервер.

Revoice 0.1.0.32

Revoice - это Metamod plugin, который дает возможность общения голосовым чатом между non-steam и steam клиентами.

Metamod-r 1.3.0.127

Новый Metamod-r содержит огромное количество оптимизаций производительности и намного более чистый код. Ядро было написано с использованием JIT-компилятора.

Ultimate Unprecacher 1.1

Ultimate Unprecacher являет плагином для MetaMod, работает он по принципу отключение не нужных ресурсов на вашем сервере, тем самым вы сможете освободить места для ресурсов под ваши плагины, с помощью данного модуля можно избавиться от ошибки 512!

ReAuthCheck 0.1.6

ReAuthCheck - это Metamod плагин, который занимается проверкой ваших игроков на валидность, с помощью данного модуля для REHLDS вы сможете защитить свой сервер от ботов, которые постоянно спамят рекламу или просто забивают слот на сервере!

NetBufExtender (NBEX) 1.0

NetBufExtender или NBEX - это метамод-плагин, который расширяет "интернет-буфер": буферы сервера и клиента(гарантия не 100%). Расширяет до 64 кб. Это значит, что у игроков уменьшается вероятность быть кикнутыми с ошибкой "Reliable channel overflowed".

UserInfoNetOptimizer (UINO) 1.0

UINO — metamod-плагин, который позволяет удалять ненужные поля из userinfo(setinfo) когда движок передаёт его другим игрокам на сервере. Данная мера уменьшает объём передаваемых данных и немного сокращает шанс быть кикнутым с "Reliable channel overflowed".

Информация

Добро пожаловать на CS-FADE.RU!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт