Быстрая регистрация


Последние темы с зомби форума

Популярная тема Биография Хилари Дафф
Автор fascinatedelati , 13 мая 2025 - 14:51 В: Counter-Strike: Source » Уязвимости
    0 Ответов
    379 Просмотров
    Аватар fascinatedelati fascinatedelati
    13 мая 2025 - 14:51
    Популярная тема RevEmu
    Автор sossisuka , 11 мая 2025 - 02:40 В: Counter-Strike: Global Offensive » Создание и настройка сервера
      0 Ответов
      331 Просмотров
      Аватар sossisuka sossisuka
      11 мая 2025 - 02:40
      Популярная тема DHC витамины – здоровье в каждой таблетке
      Автор onytaxoh , 9 мая 2025 - 13:55 В: Half-Life » Создание и настройка сервера
        0 Ответов
        318 Просмотров
        Аватар onytaxoh onytaxoh
        9 мая 2025 - 13:55
        Популярная тема [CS:GO] Создание NoSteam сервера
        Автор sossisuka , 27 апреля 2025 - 22:28 В: Counter-Strike: Global Offensive » Создание и настройка сервера
          0 Ответов
          296 Просмотров
          Аватар sossisuka sossisuka
          27 апреля 2025 - 22:28
          Популярная тема Открытие форума. Всерьез и надолго
          Автор sossisuka , 10 апреля 2025 - 15:06 В: Новости сообщества » Новости сайта
            0 Ответов
            1586 Просмотров
            Аватар alawz alawz
            10 апреля 2025 - 15:06


            
            24
            мар
            2025

            [ZP] Поджег зомби при выстреле    

            Категория: CS 1.6: Статьи, Автор: mr.Vendeta, Просмотров: 283

            В этой статье будет рассказано

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

            После инклюдов пишем следующие строчки:
            Получиться примерно так:
            #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);  



            0

            Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

            Комментарии


            Добавление комментария