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

Revenant'ы исправление багов  [Решено]

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

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

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

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

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

Re: Revenant'ы исправление багов

Сообщение [N][E][M][E][C] » 22 фев 2022, 19:05

izumi4, вы считаете, если в plugin_init создать массив он не будет локальным???
Я просто к тому вопросу правильно он ее записал или нет, так вот, если создать какую либо переменную в теле функции, то после выполнении функции она уничтожится, а если она глобальная, она останется висеть в памяти
Код: Выделить всё
new const GRENADE_NAMES[][] = { "weapon_hegrenade", "weapon_flashbang", "weapon_smokegrenade" };

public plugin_init()  {
    for(new i; i < sizeof GRENADE_NAMES; i ++)    
        RegisterHam
(Ham_Item_Deploy, GRENADE_NAMES[i], "Ham_Grenade_Deploy", 1);   

Вот все ее использование
А по мне так рациональнее ее записывать
Код: Выделить всё
public plugin_init()  {
    new const 
GRENADE_NAMES[][] = { "weapon_hegrenade""weapon_flashbang""weapon_smokegrenade" };

    for(new 
isizeof GRENADE_NAMES++)    
        
RegisterHam(Ham_Item_DeployGRENADE_NAMES[i], "Ham_Grenade_Deploy"1);   
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Revenant'ы исправление багов

Сообщение izumi4 » 22 фев 2022, 19:23

[N][E][M][E][C] писал(а):izumi4, вы считаете, если в plugin_init создать массив он не будет локальным???


Я так не считаю, просто именно этот массив, про который мы говорим лучше объявить глобальным и оставить в памяти
Аватара пользователя
izumi4
 
Сообщения: 82
Зарегистрирован: 03 ноя 2019, 12:25
Благодарил (а): 9 раз.
Поблагодарили: 9 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

Re: Revenant'ы исправление багов

Сообщение [N][E][M][E][C] » 22 фев 2022, 19:25

izumi4, для чего он должен висеть в памяти, если когда выполниться функция, он нам не нужен будет
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Revenant'ы исправление багов

Сообщение izumi4 » 22 фев 2022, 19:26

[N][E][M][E][C] писал(а):izumi4, для чего он должен висеть в памяти, если когда выполниться функция, он нам не нужен будет


А разве данная функция не будет выполнятся по многу раз?
Аватара пользователя
izumi4
 
Сообщения: 82
Зарегистрирован: 03 ноя 2019, 12:25
Благодарил (а): 9 раз.
Поблагодарили: 9 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

Re: Revenant'ы исправление багов

Сообщение [N][E][M][E][C] » 22 фев 2022, 19:29

izumi4, этот массив тебе нужен только что бы через цикл сделать вот это
Код: Выделить всё
    RegisterHam(Ham_Item_Deploy"weapon_hegrenade""Ham_Grenade_Deploy"1);
    
RegisterHam(Ham_Item_Deploy"weapon_flashbang""Ham_Grenade_Deploy"1);
    
RegisterHam(Ham_Item_Deploy"weapon_smokegrenade""Ham_Grenade_Deploy"1);  

вот такой вариант правильнее
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Revenant'ы исправление багов

Сообщение izumi4 » 22 фев 2022, 19:38

[N][E][M][E][C] писал(а):izumi4, этот массив тебе нужен только что бы через цикл сделать вот это
Код: Выделить всё
    RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "Ham_Grenade_Deploy", 1);
    RegisterHam(Ham_Item_Deploy, "weapon_flashbang", "Ham_Grenade_Deploy", 1);
    RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "Ham_Grenade_Deploy", 1);

вот такой вариант правильнее



Понятно тут. А если такой массив:

Код: Выделить всё
new const WeaponNames[][] =
{
        
"""weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
        
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
        
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
        
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
        
"weapon_ak47""weapon_knife""weapon_p90"
}  


Будет же вернее сделать цикл, или для каждого регистрировать форвард?
Аватара пользователя
izumi4
 
Сообщения: 82
Зарегистрирован: 03 ноя 2019, 12:25
Благодарил (а): 9 раз.
Поблагодарили: 9 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

Re: Revenant'ы исправление багов

Сообщение [N][E][M][E][C] » 22 фев 2022, 19:42

Так создай массив в plugin_init и после того как выполниться эта функция, сам массив уничтожится
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Revenant'ы исправление багов

Сообщение No_Nick99 » 23 фев 2022, 00:30

izumi4, ничего вообщем к меня не получилось. Даже скидывать код стыдно. Можете ли вы мне на платной основе оказать помощь по этим проблемам?
Аватара пользователя
No_Nick99
 
Сообщения: 37
Зарегистрирован: 18 фев 2022, 19:14
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Я ничего не знаю

Re: Revenant'ы исправление багов

Сообщение izumi4 » 23 фев 2022, 20:04

No_Nick99 писал(а): ничего вообщем к меня не получилось. Даже скидывать код стыдно. Можете ли вы мне на платной основе оказать помощь по этим проблемам?


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

#define PLUGIN "[ZP] Class: Revenant ICE"
#define VERSION "1.0"
#define AUTHOR "=), LARS-BLOODLIKER"

new const zclass_name[] = { "Ревенант" }    // Имя
new const zclass_info[] = { "Ледяной" }    // Описание
new const zclass_model[] = { "revenant_ice" }    // Модель Ревенанта
new const zclass_clawmodel[] = { "revice/v_knife_revenant_ice.mdl" }    // Модель рук
new const zclass_bombmodel[] = { "models/zombie_plague/revice/v_bomb_revenant_ice.mdl" }    // Модель рук c бомбой
const zclass_health = 2000    // HP
const zclass_speed = 245    // Скорость
const Float:zclass_gravity = 0.7    // Гравитация
const Float:zclass_knockback = 1.0    // Множитель Отброса

const PDATA_SAFE =                2
const linux_diff_weapon 
=        4
const linux_diff_player 
=         5
const m_pPlayer 
=                 41
const m_flNextAttack 
=            83

new const g_SoundRevIce
[][] = 
{
    "zombie_plague/revenant/infect.wav",
    "zombie_plague/revenant/pain_1.wav",
    "zombie_plague/revenant/pain_2.wav",
    "zombie_plague/revenant/die.wav",
    "zombie_plague/frostnova.wav",    
    
"zombie_plague/impalelaunch1.wav"
}

new const ball_name[] =         "paralize_ball"
new const ball_model[] =         "models/zombie_plague/revice/w_hiddentail2.mdl"

new g_Revenant_Ice;

new cvar_paralizedelay, 
    cvar_paralizevelocity
, 
    cvar_paralizeballhealth
, 
    cvar_paralizeballparalizetime
;

new g_AllocString_InfoTarget,
    g_AllocString_ClassBall,
    sTrail,
    g_Glass_Model,
    g_Touch[33],
    g_can[33],
    g_msgScreenFade,
    g_roundend;

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    
/*вот такой вариант правильнее ©[N][E][M][E][C]*/
    RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "Ham_Grenade_Deploy", 1);
    RegisterHam(Ham_Item_Deploy, "weapon_flashbang", "Ham_Grenade_Deploy", 1);
    RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "Ham_Grenade_Deploy", 1);
    
    RegisterHam
(Ham_Touch, "info_target", "Ham_Entity_Touch", true);
    RegisterHam(Ham_Think, "info_target", "Ham_Entity_Think_Pre", false);
    RegisterHam(Ham_Killed, "player", "fw_PlayerKilled");
    RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");    

    register_clcmd
("drop", "paralize_cmd");
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0");
    register_forward(FM_EmitSound, "fw_EmitSound");

    cvar_paralizedelay =                 register_cvar("zp_classparalize_delay", "15")                // Cooldown
    cvar_paralizevelocity =             register_cvar("zp_classparalizeball_velocity", "1300")        // Скорость шара
    cvar_paralizeballhealth =             register_cvar("zp_classparalizeball_health", "5.0")            // Время жизни шара
    cvar_paralizeballparalizetime =     register_cvar("zp_classparalizeball_paralizetime", "7.0")    // Время заморозки
    
    g_msgScreenFade 
= get_user_msgid("ScreenFade");
}

public plugin_precache()
{
    g_Revenant_Ice = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback);
    
    g_AllocString_InfoTarget 
=             engfunc(EngFunc_AllocString, "info_target");    
    g_AllocString_ClassBall 
=             engfunc(EngFunc_AllocString, ball_name);
    
    engfunc
(EngFunc_PrecacheModel, zclass_bombmodel);
    engfunc(EngFunc_PrecacheModel, ball_model);
    
    sTrail 
=             engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr");
    g_Glass_Model =     engfunc(EngFunc_PrecacheModel, "models/glassgibs.mdl");
    
    for
(new i = 0; i < sizeof(g_SoundRevIce); i++)
        engfunc(EngFunc_PrecacheSound, g_SoundRevIce[i]);
}

public client_disconnect(iPlayer) 
{
    remove_values(iPlayer);
    remove_values_victim(iPlayer);
}

public zp_user_humanized_post(iPlayer)
{
    remove_values(iPlayer);
    remove_values_victim(iPlayer);
}

public fw_PlayerKilled(victim, attacker, shouldgib)
{
    if(zp_get_user_zombie(victim) && zp_get_user_zombie_class(victim) == g_Revenant_Ice)
    {
        remove_values(victim);
    }
    else
    
{
        remove_values_victim(victim);
    }
}

public event_round_start()
{
    g_roundend = 0;
    
    new players
[32], count, iPlayer;        
    get_players
(players, count);
    
    for
(new i = 0; i < count; i++)
    {                          
        iPlayer 
= players[i];        
    
        remove_values
(iPlayer);
        remove_values_victim(iPlayer);
    }
}

public zp_round_ended() g_roundend = 1;

public zp_user_infected_post(iPlayer, infector, iNemesis) 
{
    if(is_user_connected(iPlayer) && !zp_get_user_nemesis(iPlayer) && zp_get_user_zombie_class(iPlayer) == g_Revenant_Ice)
    {    
        emit_sound
(iPlayer, CHAN_VOICE, g_SoundRevIce[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
        
        client_print
(iPlayer, print_chat, "| Заморозка | Клавиша активации [G]")
        
        remove_values
(iPlayer);
    }
    remove_values_victim(iPlayer);
}

public zp_user_infected_pre(iPlayer) 
{ 
    if
(!(get_user_flags(iPlayer) & ADMIN_LEVEL_H)) 
    
{ 
        if
(zp_get_user_next_class(iPlayer) == g_Revenant_Ice) 
        
{ 
            zp_set_user_zombie_class
(iPlayer, 0) 
            client_print
(iPlayer, print_chat, "Данный класс только для Випов")
            client_print(iPlayer, print_chat, "Стоимость админки на месяц 1000000 рублей")
        }     
    
}     
} 

public paralize_cmd
(iPlayer)
{
    if(g_roundend || !is_user_alive(iPlayer) || !zp_get_user_zombie(iPlayer) || zp_get_user_zombie_class(iPlayer) != g_Revenant_Ice || zp_get_user_nemesis(iPlayer))
        return PLUGIN_CONTINUE;

    if(g_can[iPlayer]) 
    
{
        client_print(iPlayer, print_center, "Востановление через %d секунд", g_can[iPlayer])
        return PLUGIN_HANDLED;
    }
    
    Make_ParalizeBall
(iPlayer);

    UTIL_PlayerAnimation(iPlayer, "skill");
    UTIL_PlayWeaponAnimation(iPlayer, 8);
        
    g_can
[iPlayer] = get_pcvar_num(cvar_paralizedelay)
    set_task(1.0, "ability_zero", iPlayer)

    return PLUGIN_HANDLED;
}

public Make_ParalizeBall(iPlayer)
{
    static Float:origin[3], Float:angles[3], Float:v_forward[3], Float:v_right[3];
    new Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3];
    
    static Float
:OriginX[3];
    pev(iPlayer, pev_v_angle, angles);
    pev(iPlayer, pev_origin, OriginX);
    engfunc(EngFunc_MakeVectors, angles);

    global_get(glb_v_forward, v_forward);
    global_get(glb_v_right, v_right);
    global_get(glb_v_up, v_up);

    pev(iPlayer, pev_origin, player_origin);
    pev(iPlayer, pev_view_ofs, player_view_offset);
    xs_vec_add(player_origin, player_view_offset, gun_position);

    xs_vec_mul_scalar(v_forward, 13.0, v_forward);
    xs_vec_mul_scalar(v_right, 0.0, v_right);
    xs_vec_mul_scalar(v_up, 5.0, v_up);

    xs_vec_add(gun_position, v_forward, origin);
    xs_vec_add(origin, v_right, origin);
    xs_vec_add(origin, v_up, origin);

    new Float:StartOrigin[3]
                    
    StartOrigin
[0] = origin[0];
    StartOrigin[1] = origin[1];
    StartOrigin[2] = origin[2];

    new Float:fVelocity[3], Float:flOrigin[3], Float:flAngle[3];
    pev(iPlayer, pev_origin, flOrigin);
    pev(iPlayer, pev_angles, flAngle);

    new iEntity = engfunc(EngFunc_CreateNamedEntity, g_AllocString_InfoTarget);    
    if
(!iEntity) return FM_NULLENT;

    set_pev_string(iEntity, pev_classname, g_AllocString_ClassBall);
    engfunc(EngFunc_SetModel, iEntity, ball_model);
    engfunc(EngFunc_SetOrigin, iEntity, StartOrigin);
    engfunc(EngFunc_VecToAngles, iEntity, EV_VEC_angles, flAngle);        
        
    engfunc
(EngFunc_SetSize, iEntity, Float: {-1.0, -1.0, -1.0}, Float: {1.0, 1.0, 1.0});
        
    set_pev
(iEntity, pev_solid, SOLID_SLIDEBOX);
    set_pev(iEntity, pev_movetype, MOVETYPE_BOUNCEMISSILE);
    set_pev(iEntity, pev_owner, iPlayer);
    set_pev(iEntity, pev_effects, EF_BRIGHTLIGHT);
            
    VelocityByAim
(iPlayer, get_pcvar_num(cvar_paralizevelocity), fVelocity);
    set_pev(iEntity , pev_velocity, fVelocity);

    set_pev(iEntity, pev_rendermode, kRenderTransAdd);
    set_pev(iEntity, pev_renderamt, 150.0);

    set_pev(iEntity, pev_ltime, get_gametime() + get_pcvar_float(cvar_paralizeballhealth))    
    set_pev
(iEntity, pev_nextthink, get_gametime() + 0.01);
    
    UTIL_set_rendering
(iEntity, kRenderFxGlowShell, 70, 130, 180, kRenderNormal, 16);
    
    Entity_BeamFlow
(iEntity);
    
    emit_sound
(iEntity, CHAN_WEAPON, g_SoundRevIce[4], 1.0, ATTN_NORM, 0, PITCH_NORM);
    
    return iEntity
;
}

public Ham_Entity_Touch(iEntity, iTouch)
{
    if(pev_valid(iEntity) != PDATA_SAFE) 
        return HAM_IGNORED
;
        
    if
(pev(iEntity, pev_classname) == g_AllocString_ClassBall)
    {
        new iOwner = pev(iEntity, pev_owner);
        
        if
(iTouch == iOwner) 
            return HAM_SUPERCEDE
;
    
        new Float
: vecOrigin[3]; pev(iEntity, pev_origin, vecOrigin);
        if(engfunc(EngFunc_PointContents, vecOrigin) == CONTENTS_SKY)
        {
            set_pev(iEntity, pev_flags, FL_KILLME);
            return HAM_IGNORED;
        }
        
        emit_sound
(iEntity, CHAN_WEAPON, g_SoundRevIce[4], 1.0, ATTN_NORM, 0, PITCH_NORM);
        
        if
(is_user_alive(iTouch) && !zp_get_user_zombie(iTouch))
        {
            g_Touch[iTouch] = 1;
            Freeze_UnfreezePlayer(iTouch);
        }
    }    
    return HAM_IGNORED
;
}

public Ham_Entity_Think_Pre(iEntity)
{
    if(pev_valid(iEntity) != PDATA_SAFE) 
        return HAM_IGNORED
;
    
    if
(pev(iEntity, pev_classname) == g_AllocString_ClassBall)
    {
        set_pev(iEntity, pev_nextthink, 0.01);
        
        static Float
:iTime; pev(iEntity, pev_ltime, iTime);
        
        if
(iTime <= get_gametime())
        {
            engfunc(EngFunc_RemoveEntity, iEntity);
            return FMRES_SUPERCEDE;
        }
    }
    return HAM_IGNORED;
}

public Ham_Grenade_Deploy(iItem)
{
    
    if
(!pev_valid(iItem))
        return HAM_IGNORED;
    
    new iPlayer 
= get_pdata_cbase(iItem, m_pPlayer, linux_diff_weapon);
    
    if
(!is_user_alive(iPlayer) || !zp_get_user_zombie(iPlayer) || zp_get_user_zombie_class(iPlayer) != g_Revenant_Ice || zp_get_user_nemesis(iPlayer))
        return HAM_IGNORED;        

    set_pev
(iPlayer, pev_viewmodel, engfunc(EngFunc_AllocString, zclass_bombmodel))
    
    return HAM_IGNORED
;
}

public fw_TakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, bitsDamage)
{
    if(is_user_alive(iVictim) && zp_get_user_zombie_class(iVictim) == g_Revenant_Ice && zp_get_user_zombie(iVictim) && !zp_get_user_nemesis(iVictim))
    {
        emit_sound(iVictim, CHAN_WEAPON, g_SoundRevIce[random_num(1, 2)], 1.0, ATTN_NORM, 0, PITCH_NORM);    
    
}
    return HAM_IGNORED;
}
 

public fw_EmitSound
(iPlayer, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
    if(!is_user_connected(iPlayer))
        return FMRES_HANDLED;    

    if 
(sample[0] == 'h' && sample[1] == 'o' && sample[2] == 's' && sample[3] == 't' && sample[4] == 'a' && sample[5] == 'g' && sample[6] == 'e')
        return FMRES_SUPERCEDE;


    if(zp_get_user_zombie(iPlayer) && zp_get_user_zombie_class(iPlayer) == g_Revenant_Ice && !zp_get_user_nemesis(iPlayer))
    {
        if (sample[7] == 'd' && ((sample[8] == 'i' && sample[9] == 'e') || (sample[8] == 'e' && sample[9] == 'a')))
        {            
            emit_sound
(iPlayer, CHAN_WEAPON, g_SoundRevIce[3], 1.0, ATTN_NORM, 0, PITCH_NORM);
        }
    }
    return FMRES_IGNORED;
}

public remove_values(iPlayer)
{
    remove_task(iPlayer);
    g_can[iPlayer] = 0;
}

public remove_values_victim(iPlayer)
{
    if(g_Touch[iPlayer])
    {
        g_Touch[iPlayer] = 0;
        Freeze_UnfreezePlayer(iPlayer);
        set_pdata_float(iPlayer, m_flNextAttack, 0.0, linux_diff_player);
    }        
}

public ability_zero(iPlayer) 
{
    g_can[iPlayer] -= 1
    if
(!g_can[iPlayer]) client_print(iPlayer, print_center, "Способность активна!")
    if(g_can[iPlayer]) set_task(1.0, "ability_zero", iPlayer)
}

public Freeze_UnfreezePlayer(iPlayer)
{
    if(g_Touch[iPlayer])
    {
        set_pev(iPlayer, pev_flags, pev(iPlayer, pev_flags) | FL_FROZEN);
        
        set_pdata_float
(iPlayer, m_flNextAttack, get_pcvar_float(cvar_paralizeballparalizetime), linux_diff_player);
        UTIL_set_rendering(iPlayer, kRenderFxGlowShell, 100, 255, 255, kRenderNormal, 16);
        set_task(get_pcvar_float(cvar_paralizeballparalizetime), "remove_values_victim", iPlayer);
        
        message_begin
(MSG_ONE, g_msgScreenFade, _, iPlayer)
        write_short(0) // duration
        write_short(0) // hold time
        write_short(0x0004) // fade type
        write_byte(0) // red
        write_byte(50) // green
        write_byte(200) // blue
        write_byte(100) // alpha
        message_end()
    }
    else
    
{
        set_pev(iPlayer, pev_flags, (pev(iPlayer, pev_flags) & ~FL_FROZEN));
        
        UTIL_set_rendering
(iPlayer);

        emit_sound(iPlayer, CHAN_BODY, g_SoundRevIce[5], 1.0, ATTN_NORM, 0, PITCH_NORM);
        
        message_begin
(MSG_ONE, g_msgScreenFade, _, iPlayer)
        write_short((1<<12)) // duration
        write_short(0) // hold time
        write_short(0x0000) // fade type
        write_byte(0) // red
        write_byte(50) // green
        write_byte(200) // blue
        write_byte(100) // alpha
        message_end()
        
        static origin2
[3]
        get_user_origin(iPlayer, origin2)

        message_begin(MSG_PVS, SVC_TEMPENTITY, origin2)
        write_byte(TE_BREAKMODEL) // TE id
        write_coord(origin2[0]) // x
        write_coord(origin2[1]) // y
        write_coord(origin2[2]+24) // z
        write_coord(16) // size x
        write_coord(16) // size y
        write_coord(16) // size z
        write_coord(random_num(-50, 50)) // velocity x
        write_coord(random_num(-50, 50)) // velocity y
        write_coord(25) // velocity z
        write_byte(10) // random velocity
        write_short(g_Glass_Model) // model
        write_byte(10) // count
        write_byte(25) // life
        write_byte(0x01) // flags
        message_end()
    }
}

stock Entity_BeamFlow(iEntity)
{
    if(is_valid_ent(iEntity))
    {
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMFOLLOW); // Temporary entity ID
        write_short(iEntity); // Entity
        write_short(sTrail); // Sprite index
        write_byte(10); // Life
        write_byte(3); // Line width
        write_byte(0); // Red
        write_byte(191); // Green
        write_byte(255); // Blue
        write_byte(255); // Alpha
        message_end();
    }
}

stock UTIL_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
    static Float:color[3];
    color[0] = float(r);
    color[1] = float(g);
    color[2] = float(b);    
    
    set_pev
(entity, pev_renderfx, fx);
    set_pev(entity, pev_rendercolor, color);
    set_pev(entity, pev_rendermode, render);
    set_pev(entity, pev_renderamt, float(amount));
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
    set_pev(Player, pev_weaponanim, Sequence)
    
    message_begin
(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
    write_byte(Sequence)
    write_byte(pev(Player, pev_body))
    message_end()
}

stock UTIL_PlayerAnimation(const iPlayer, const szAnim[])
{
    #define ACT_RANGE_ATTACK1 28

    // Linux extra offsets
    #define linux_diff_animating 4
    #define linux_diff_player 5

    // CBaseAnimating
    #define m_flFrameRate 36
    #define m_flGroundSpeed 37
    #define m_flLastEventCheck 38
    #define m_fSequenceFinished 39
    #define m_fSequenceLoops 40

    // CBaseMonster
    #define m_Activity 73
    #define m_IdealActivity 74

    // CBasePlayer
    #define m_flLastAttackTime 220

    new iAnimDesired, Float: flFrameRate, Float: flGroundSpeed, bool: bLoops;
        
    if
((iAnimDesired = lookup_sequence(iPlayer, szAnim, flFrameRate, bLoops, flGroundSpeed)) == -1)
    {
        iAnimDesired = 0;
    }
    
    new Float
: flGameTime = get_gametime();

    set_pev(iPlayer, pev_frame, 0.0);
    set_pev(iPlayer, pev_framerate, 1.0);
    set_pev(iPlayer, pev_animtime, flGameTime);
    set_pev(iPlayer, pev_sequence, iAnimDesired);
    
    set_pdata_int
(iPlayer, m_fSequenceLoops, bLoops, linux_diff_animating);
    set_pdata_int(iPlayer, m_fSequenceFinished, 0, linux_diff_animating);
    
    set_pdata_float
(iPlayer, m_flFrameRate, flFrameRate, linux_diff_animating);
    set_pdata_float(iPlayer, m_flGroundSpeed, flGroundSpeed, linux_diff_animating);
    set_pdata_float(iPlayer, m_flLastEventCheck, flGameTime , linux_diff_animating);
    
    set_pdata_int
(iPlayer, m_Activity, ACT_RANGE_ATTACK1, linux_diff_player);
    set_pdata_int(iPlayer, m_IdealActivity, ACT_RANGE_ATTACK1, linux_diff_player);
    set_pdata_float(iPlayer, m_flLastAttackTime, flGameTime , linux_diff_player);
}
 


Добавлено спустя 2 минуты 29 секунд:
Моделька гранаты вирус и jump будет одна и та же
Аватара пользователя
izumi4
 
Сообщения: 82
Зарегистрирован: 03 ноя 2019, 12:25
Благодарил (а): 9 раз.
Поблагодарили: 9 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

Re: Revenant'ы исправление багов

Сообщение No_Nick99 » 23 фев 2022, 22:21

izumi4 писал(а):
No_Nick99 писал(а): ничего вообщем к меня не получилось. Даже скидывать код стыдно. Можете ли вы мне на платной основе оказать помощь по этим проблемам?


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

#define PLUGIN "[ZP] Class: Revenant ICE"
#define VERSION "1.0"
#define AUTHOR "=), LARS-BLOODLIKER"

new const zclass_name[] = { "Ревенант" }    // Имя
new const zclass_info[] = { "Ледяной" }    // Описание
new const zclass_model[] = { "revenant_ice" }    // Модель Ревенанта
new const zclass_clawmodel[] = { "revice/v_knife_revenant_ice.mdl" }    // Модель рук
new const zclass_bombmodel[] = { "models/zombie_plague/revice/v_bomb_revenant_ice.mdl" }    // Модель рук c бомбой
const zclass_health = 2000    // HP
const zclass_speed = 245    // Скорость
const Float:zclass_gravity = 0.7    // Гравитация
const Float:zclass_knockback = 1.0    // Множитель Отброса

const PDATA_SAFE =                2
const linux_diff_weapon 
=        4
const linux_diff_player 
=         5
const m_pPlayer 
=                 41
const m_flNextAttack 
=            83

new const g_SoundRevIce
[][] = 
{
    "zombie_plague/revenant/infect.wav",
    "zombie_plague/revenant/pain_1.wav",
    "zombie_plague/revenant/pain_2.wav",
    "zombie_plague/revenant/die.wav",
    "zombie_plague/frostnova.wav",    
    
"zombie_plague/impalelaunch1.wav"
}

new const ball_name[] =         "paralize_ball"
new const ball_model[] =         "models/zombie_plague/revice/w_hiddentail2.mdl"

new g_Revenant_Ice;

new cvar_paralizedelay, 
    cvar_paralizevelocity
, 
    cvar_paralizeballhealth
, 
    cvar_paralizeballparalizetime
;

new g_AllocString_InfoTarget,
    g_AllocString_ClassBall,
    sTrail,
    g_Glass_Model,
    g_Touch[33],
    g_can[33],
    g_msgScreenFade,
    g_roundend;

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    
/*вот такой вариант правильнее ©[N][E][M][E][C]*/
    RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "Ham_Grenade_Deploy", 1);
    RegisterHam(Ham_Item_Deploy, "weapon_flashbang", "Ham_Grenade_Deploy", 1);
    RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "Ham_Grenade_Deploy", 1);
    
    RegisterHam
(Ham_Touch, "info_target", "Ham_Entity_Touch", true);
    RegisterHam(Ham_Think, "info_target", "Ham_Entity_Think_Pre", false);
    RegisterHam(Ham_Killed, "player", "fw_PlayerKilled");
    RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");    

    register_clcmd
("drop", "paralize_cmd");
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0");
    register_forward(FM_EmitSound, "fw_EmitSound");

    cvar_paralizedelay =                 register_cvar("zp_classparalize_delay", "15")                // Cooldown
    cvar_paralizevelocity =             register_cvar("zp_classparalizeball_velocity", "1300")        // Скорость шара
    cvar_paralizeballhealth =             register_cvar("zp_classparalizeball_health", "5.0")            // Время жизни шара
    cvar_paralizeballparalizetime =     register_cvar("zp_classparalizeball_paralizetime", "7.0")    // Время заморозки
    
    g_msgScreenFade 
= get_user_msgid("ScreenFade");
}

public plugin_precache()
{
    g_Revenant_Ice = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback);
    
    g_AllocString_InfoTarget 
=             engfunc(EngFunc_AllocString, "info_target");    
    g_AllocString_ClassBall 
=             engfunc(EngFunc_AllocString, ball_name);
    
    engfunc
(EngFunc_PrecacheModel, zclass_bombmodel);
    engfunc(EngFunc_PrecacheModel, ball_model);
    
    sTrail 
=             engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr");
    g_Glass_Model =     engfunc(EngFunc_PrecacheModel, "models/glassgibs.mdl");
    
    for
(new i = 0; i < sizeof(g_SoundRevIce); i++)
        engfunc(EngFunc_PrecacheSound, g_SoundRevIce[i]);
}

public client_disconnect(iPlayer) 
{
    remove_values(iPlayer);
    remove_values_victim(iPlayer);
}

public zp_user_humanized_post(iPlayer)
{
    remove_values(iPlayer);
    remove_values_victim(iPlayer);
}

public fw_PlayerKilled(victim, attacker, shouldgib)
{
    if(zp_get_user_zombie(victim) && zp_get_user_zombie_class(victim) == g_Revenant_Ice)
    {
        remove_values(victim);
    }
    else
    
{
        remove_values_victim(victim);
    }
}

public event_round_start()
{
    g_roundend = 0;
    
    new players
[32], count, iPlayer;        
    get_players
(players, count);
    
    for
(new i = 0; i < count; i++)
    {                          
        iPlayer 
= players[i];        
    
        remove_values
(iPlayer);
        remove_values_victim(iPlayer);
    }
}

public zp_round_ended() g_roundend = 1;

public zp_user_infected_post(iPlayer, infector, iNemesis) 
{
    if(is_user_connected(iPlayer) && !zp_get_user_nemesis(iPlayer) && zp_get_user_zombie_class(iPlayer) == g_Revenant_Ice)
    {    
        emit_sound
(iPlayer, CHAN_VOICE, g_SoundRevIce[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
        
        client_print
(iPlayer, print_chat, "| Заморозка | Клавиша активации [G]")
        
        remove_values
(iPlayer);
    }
    remove_values_victim(iPlayer);
}

public zp_user_infected_pre(iPlayer) 
{ 
    if
(!(get_user_flags(iPlayer) & ADMIN_LEVEL_H)) 
    
{ 
        if
(zp_get_user_next_class(iPlayer) == g_Revenant_Ice) 
        
{ 
            zp_set_user_zombie_class
(iPlayer, 0) 
            client_print
(iPlayer, print_chat, "Данный класс только для Випов")
            client_print(iPlayer, print_chat, "Стоимость админки на месяц 1000000 рублей")
        }     
    
}     
} 

public paralize_cmd
(iPlayer)
{
    if(g_roundend || !is_user_alive(iPlayer) || !zp_get_user_zombie(iPlayer) || zp_get_user_zombie_class(iPlayer) != g_Revenant_Ice || zp_get_user_nemesis(iPlayer))
        return PLUGIN_CONTINUE;

    if(g_can[iPlayer]) 
    
{
        client_print(iPlayer, print_center, "Востановление через %d секунд", g_can[iPlayer])
        return PLUGIN_HANDLED;
    }
    
    Make_ParalizeBall
(iPlayer);

    UTIL_PlayerAnimation(iPlayer, "skill");
    UTIL_PlayWeaponAnimation(iPlayer, 8);
        
    g_can
[iPlayer] = get_pcvar_num(cvar_paralizedelay)
    set_task(1.0, "ability_zero", iPlayer)

    return PLUGIN_HANDLED;
}

public Make_ParalizeBall(iPlayer)
{
    static Float:origin[3], Float:angles[3], Float:v_forward[3], Float:v_right[3];
    new Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3];
    
    static Float
:OriginX[3];
    pev(iPlayer, pev_v_angle, angles);
    pev(iPlayer, pev_origin, OriginX);
    engfunc(EngFunc_MakeVectors, angles);

    global_get(glb_v_forward, v_forward);
    global_get(glb_v_right, v_right);
    global_get(glb_v_up, v_up);

    pev(iPlayer, pev_origin, player_origin);
    pev(iPlayer, pev_view_ofs, player_view_offset);
    xs_vec_add(player_origin, player_view_offset, gun_position);

    xs_vec_mul_scalar(v_forward, 13.0, v_forward);
    xs_vec_mul_scalar(v_right, 0.0, v_right);
    xs_vec_mul_scalar(v_up, 5.0, v_up);

    xs_vec_add(gun_position, v_forward, origin);
    xs_vec_add(origin, v_right, origin);
    xs_vec_add(origin, v_up, origin);

    new Float:StartOrigin[3]
                    
    StartOrigin
[0] = origin[0];
    StartOrigin[1] = origin[1];
    StartOrigin[2] = origin[2];

    new Float:fVelocity[3], Float:flOrigin[3], Float:flAngle[3];
    pev(iPlayer, pev_origin, flOrigin);
    pev(iPlayer, pev_angles, flAngle);

    new iEntity = engfunc(EngFunc_CreateNamedEntity, g_AllocString_InfoTarget);    
    if
(!iEntity) return FM_NULLENT;

    set_pev_string(iEntity, pev_classname, g_AllocString_ClassBall);
    engfunc(EngFunc_SetModel, iEntity, ball_model);
    engfunc(EngFunc_SetOrigin, iEntity, StartOrigin);
    engfunc(EngFunc_VecToAngles, iEntity, EV_VEC_angles, flAngle);        
        
    engfunc
(EngFunc_SetSize, iEntity, Float: {-1.0, -1.0, -1.0}, Float: {1.0, 1.0, 1.0});
        
    set_pev
(iEntity, pev_solid, SOLID_SLIDEBOX);
    set_pev(iEntity, pev_movetype, MOVETYPE_BOUNCEMISSILE);
    set_pev(iEntity, pev_owner, iPlayer);
    set_pev(iEntity, pev_effects, EF_BRIGHTLIGHT);
            
    VelocityByAim
(iPlayer, get_pcvar_num(cvar_paralizevelocity), fVelocity);
    set_pev(iEntity , pev_velocity, fVelocity);

    set_pev(iEntity, pev_rendermode, kRenderTransAdd);
    set_pev(iEntity, pev_renderamt, 150.0);

    set_pev(iEntity, pev_ltime, get_gametime() + get_pcvar_float(cvar_paralizeballhealth))    
    set_pev
(iEntity, pev_nextthink, get_gametime() + 0.01);
    
    UTIL_set_rendering
(iEntity, kRenderFxGlowShell, 70, 130, 180, kRenderNormal, 16);
    
    Entity_BeamFlow
(iEntity);
    
    emit_sound
(iEntity, CHAN_WEAPON, g_SoundRevIce[4], 1.0, ATTN_NORM, 0, PITCH_NORM);
    
    return iEntity
;
}

public Ham_Entity_Touch(iEntity, iTouch)
{
    if(pev_valid(iEntity) != PDATA_SAFE) 
        return HAM_IGNORED
;
        
    if
(pev(iEntity, pev_classname) == g_AllocString_ClassBall)
    {
        new iOwner = pev(iEntity, pev_owner);
        
        if
(iTouch == iOwner) 
            return HAM_SUPERCEDE
;
    
        new Float
: vecOrigin[3]; pev(iEntity, pev_origin, vecOrigin);
        if(engfunc(EngFunc_PointContents, vecOrigin) == CONTENTS_SKY)
        {
            set_pev(iEntity, pev_flags, FL_KILLME);
            return HAM_IGNORED;
        }
        
        emit_sound
(iEntity, CHAN_WEAPON, g_SoundRevIce[4], 1.0, ATTN_NORM, 0, PITCH_NORM);
        
        if
(is_user_alive(iTouch) && !zp_get_user_zombie(iTouch))
        {
            g_Touch[iTouch] = 1;
            Freeze_UnfreezePlayer(iTouch);
        }
    }    
    return HAM_IGNORED
;
}

public Ham_Entity_Think_Pre(iEntity)
{
    if(pev_valid(iEntity) != PDATA_SAFE) 
        return HAM_IGNORED
;
    
    if
(pev(iEntity, pev_classname) == g_AllocString_ClassBall)
    {
        set_pev(iEntity, pev_nextthink, 0.01);
        
        static Float
:iTime; pev(iEntity, pev_ltime, iTime);
        
        if
(iTime <= get_gametime())
        {
            engfunc(EngFunc_RemoveEntity, iEntity);
            return FMRES_SUPERCEDE;
        }
    }
    return HAM_IGNORED;
}

public Ham_Grenade_Deploy(iItem)
{
    
    if
(!pev_valid(iItem))
        return HAM_IGNORED;
    
    new iPlayer 
= get_pdata_cbase(iItem, m_pPlayer, linux_diff_weapon);
    
    if
(!is_user_alive(iPlayer) || !zp_get_user_zombie(iPlayer) || zp_get_user_zombie_class(iPlayer) != g_Revenant_Ice || zp_get_user_nemesis(iPlayer))
        return HAM_IGNORED;        

    set_pev
(iPlayer, pev_viewmodel, engfunc(EngFunc_AllocString, zclass_bombmodel))
    
    return HAM_IGNORED
;
}

public fw_TakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, bitsDamage)
{
    if(is_user_alive(iVictim) && zp_get_user_zombie_class(iVictim) == g_Revenant_Ice && zp_get_user_zombie(iVictim) && !zp_get_user_nemesis(iVictim))
    {
        emit_sound(iVictim, CHAN_WEAPON, g_SoundRevIce[random_num(1, 2)], 1.0, ATTN_NORM, 0, PITCH_NORM);    
    
}
    return HAM_IGNORED;
}
 

public fw_EmitSound
(iPlayer, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
    if(!is_user_connected(iPlayer))
        return FMRES_HANDLED;    

    if 
(sample[0] == 'h' && sample[1] == 'o' && sample[2] == 's' && sample[3] == 't' && sample[4] == 'a' && sample[5] == 'g' && sample[6] == 'e')
        return FMRES_SUPERCEDE;


    if(zp_get_user_zombie(iPlayer) && zp_get_user_zombie_class(iPlayer) == g_Revenant_Ice && !zp_get_user_nemesis(iPlayer))
    {
        if (sample[7] == 'd' && ((sample[8] == 'i' && sample[9] == 'e') || (sample[8] == 'e' && sample[9] == 'a')))
        {            
            emit_sound
(iPlayer, CHAN_WEAPON, g_SoundRevIce[3], 1.0, ATTN_NORM, 0, PITCH_NORM);
        }
    }
    return FMRES_IGNORED;
}

public remove_values(iPlayer)
{
    remove_task(iPlayer);
    g_can[iPlayer] = 0;
}

public remove_values_victim(iPlayer)
{
    if(g_Touch[iPlayer])
    {
        g_Touch[iPlayer] = 0;
        Freeze_UnfreezePlayer(iPlayer);
        set_pdata_float(iPlayer, m_flNextAttack, 0.0, linux_diff_player);
    }        
}

public ability_zero(iPlayer) 
{
    g_can[iPlayer] -= 1
    if
(!g_can[iPlayer]) client_print(iPlayer, print_center, "Способность активна!")
    if(g_can[iPlayer]) set_task(1.0, "ability_zero", iPlayer)
}

public Freeze_UnfreezePlayer(iPlayer)
{
    if(g_Touch[iPlayer])
    {
        set_pev(iPlayer, pev_flags, pev(iPlayer, pev_flags) | FL_FROZEN);
        
        set_pdata_float
(iPlayer, m_flNextAttack, get_pcvar_float(cvar_paralizeballparalizetime), linux_diff_player);
        UTIL_set_rendering(iPlayer, kRenderFxGlowShell, 100, 255, 255, kRenderNormal, 16);
        set_task(get_pcvar_float(cvar_paralizeballparalizetime), "remove_values_victim", iPlayer);
        
        message_begin
(MSG_ONE, g_msgScreenFade, _, iPlayer)
        write_short(0) // duration
        write_short(0) // hold time
        write_short(0x0004) // fade type
        write_byte(0) // red
        write_byte(50) // green
        write_byte(200) // blue
        write_byte(100) // alpha
        message_end()
    }
    else
    
{
        set_pev(iPlayer, pev_flags, (pev(iPlayer, pev_flags) & ~FL_FROZEN));
        
        UTIL_set_rendering
(iPlayer);

        emit_sound(iPlayer, CHAN_BODY, g_SoundRevIce[5], 1.0, ATTN_NORM, 0, PITCH_NORM);
        
        message_begin
(MSG_ONE, g_msgScreenFade, _, iPlayer)
        write_short((1<<12)) // duration
        write_short(0) // hold time
        write_short(0x0000) // fade type
        write_byte(0) // red
        write_byte(50) // green
        write_byte(200) // blue
        write_byte(100) // alpha
        message_end()
        
        static origin2
[3]
        get_user_origin(iPlayer, origin2)

        message_begin(MSG_PVS, SVC_TEMPENTITY, origin2)
        write_byte(TE_BREAKMODEL) // TE id
        write_coord(origin2[0]) // x
        write_coord(origin2[1]) // y
        write_coord(origin2[2]+24) // z
        write_coord(16) // size x
        write_coord(16) // size y
        write_coord(16) // size z
        write_coord(random_num(-50, 50)) // velocity x
        write_coord(random_num(-50, 50)) // velocity y
        write_coord(25) // velocity z
        write_byte(10) // random velocity
        write_short(g_Glass_Model) // model
        write_byte(10) // count
        write_byte(25) // life
        write_byte(0x01) // flags
        message_end()
    }
}

stock Entity_BeamFlow(iEntity)
{
    if(is_valid_ent(iEntity))
    {
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMFOLLOW); // Temporary entity ID
        write_short(iEntity); // Entity
        write_short(sTrail); // Sprite index
        write_byte(10); // Life
        write_byte(3); // Line width
        write_byte(0); // Red
        write_byte(191); // Green
        write_byte(255); // Blue
        write_byte(255); // Alpha
        message_end();
    }
}

stock UTIL_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
    static Float:color[3];
    color[0] = float(r);
    color[1] = float(g);
    color[2] = float(b);    
    
    set_pev
(entity, pev_renderfx, fx);
    set_pev(entity, pev_rendercolor, color);
    set_pev(entity, pev_rendermode, render);
    set_pev(entity, pev_renderamt, float(amount));
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
    set_pev(Player, pev_weaponanim, Sequence)
    
    message_begin
(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
    write_byte(Sequence)
    write_byte(pev(Player, pev_body))
    message_end()
}

stock UTIL_PlayerAnimation(const iPlayer, const szAnim[])
{
    #define ACT_RANGE_ATTACK1 28

    // Linux extra offsets
    #define linux_diff_animating 4
    #define linux_diff_player 5

    // CBaseAnimating
    #define m_flFrameRate 36
    #define m_flGroundSpeed 37
    #define m_flLastEventCheck 38
    #define m_fSequenceFinished 39
    #define m_fSequenceLoops 40

    // CBaseMonster
    #define m_Activity 73
    #define m_IdealActivity 74

    // CBasePlayer
    #define m_flLastAttackTime 220

    new iAnimDesired, Float: flFrameRate, Float: flGroundSpeed, bool: bLoops;
        
    if
((iAnimDesired = lookup_sequence(iPlayer, szAnim, flFrameRate, bLoops, flGroundSpeed)) == -1)
    {
        iAnimDesired = 0;
    }
    
    new Float
: flGameTime = get_gametime();

    set_pev(iPlayer, pev_frame, 0.0);
    set_pev(iPlayer, pev_framerate, 1.0);
    set_pev(iPlayer, pev_animtime, flGameTime);
    set_pev(iPlayer, pev_sequence, iAnimDesired);
    
    set_pdata_int
(iPlayer, m_fSequenceLoops, bLoops, linux_diff_animating);
    set_pdata_int(iPlayer, m_fSequenceFinished, 0, linux_diff_animating);
    
    set_pdata_float
(iPlayer, m_flFrameRate, flFrameRate, linux_diff_animating);
    set_pdata_float(iPlayer, m_flGroundSpeed, flGroundSpeed, linux_diff_animating);
    set_pdata_float(iPlayer, m_flLastEventCheck, flGameTime , linux_diff_animating);
    
    set_pdata_int
(iPlayer, m_Activity, ACT_RANGE_ATTACK1, linux_diff_player);
    set_pdata_int(iPlayer, m_IdealActivity, ACT_RANGE_ATTACK1, linux_diff_player);
    set_pdata_float(iPlayer, m_flLastAttackTime, flGameTime , linux_diff_player);
}


Добавлено спустя 2 минуты 29 секунд:
Моделька гранаты вирус и jump будет одна и та же


Все так же :-D
Аватара пользователя
No_Nick99
 
Сообщения: 37
Зарегистрирован: 18 фев 2022, 19:14
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Я ничего не знаю

Пред.След.

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 10