Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Парашют работает у зомби, хотя он выключен кваром

Статус пользователя dandys
сообщение 6.10.2015, 20:16
Сообщение #1
Стаж: 13 лет

Сообщений: 122
Благодарностей: 7
Полезность: < 0

Здравствуйте.

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

Cкрытый текст
Код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <zombieplague>

new const paramodel[] = "models/93parachute2.mdl"
new const paramodel_zm[] = "models/93parachute2.mdl"
new bool:has_parachute[33], para_ent[33];
enum pcvar
{
    humans = 1,
    survivors,
    zombies,
    nemesis,
    fallspeed,
    detach
}
new pcvars[pcvar];

public plugin_init()
{
    register_plugin("[ZP] Sub-Plugin: Parachute", "1.2", "Random1, 93()|29!/<");
    pcvars[humans] =    register_cvar("zp_parachute_humans", "1");
    pcvars[survivors] =    register_cvar("zp_parachute_survivors", "1");
    pcvars[zombies] =     register_cvar("zp_parachute_zombies", "0");
    pcvars[nemesis] =     register_cvar("zp_parachute_nemesis", "0");
    pcvars[fallspeed] =    register_cvar("zp_parachute_fallspeed", "75");
    pcvars[detach] =    register_cvar("zp_parachute_detach", "1");
/*=====    
    register_forward(FM_CmdStart, "fw_CmdStart")
=======*/    
    RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
    RegisterHam(Ham_Killed, "player", "fw_PlayerKilled");
        register_forward(FM_PlayerPreThink, "fw_PreThink")
}

public plugin_precache()
{
    engfunc(EngFunc_PrecacheModel, paramodel)
    engfunc(EngFunc_PrecacheModel, paramodel_zm)
}

public client_connect(id)
    parachute_reset(id, 1)

public client_disconnect(id)
    parachute_reset(id)

parachute_reset(id, keep = 0)
{
    if(para_ent[id] > 0 && is_valid_ent(para_ent[id]))
    {
        //engfunc(EngFunc_RemoveEntity, para_ent[id]);
                set_pev(para_ent[id], pev_flags, FL_KILLME);
        para_ent[id] = 0
    }
    if (!keep)
        has_parachute[id] = false
    else
        has_parachute[id] = true
}

public fw_PlayerKilled(victim)
    parachute_reset(victim)

public fw_PlayerSpawn_Post(id)
{
    if (!is_user_alive(id))
        return;
    if (get_pcvar_num(pcvars[humans]))
    {
        parachute_reset(id, 1)
        return;
    }
    parachute_reset(id)
}

/*=====
public fw_CmdStart(id, handle)
{
    if (!has_parachute[id])
        return;
    static button
    button = get_uc(UC_Handle, UC_Buttons)
}
=======*/

public fw_PreThink(id)
{
    //Parachute model animation information
    //0 - deploy - 84 frames
    //1 - idle - 39 frames
    //2 - detach - 29 frames
    if (!has_parachute[id])
        {
        return;
    }
    static Float:frame, Float:fallingspeed, button, oldbutton, flags, Float:velocity[3]
        fallingspeed = get_pcvar_float(pcvars[fallspeed]) * -1.0;
        flags = pev(id, pev_flags);
    if (para_ent[id] > 0 && (flags & FL_ONGROUND))
    {
        if (get_pcvar_num(pcvars[detach]))
        {
            if (pev(para_ent[id],pev_sequence)!= 2)
            {
                set_pev(para_ent[id], pev_sequence, 2);
                set_pev(para_ent[id], pev_gaitsequence, 1);
                set_pev(para_ent[id], pev_frame, 0.0);
                set_pev(para_ent[id], pev_fuser1, 0.0);
                set_pev(para_ent[id], pev_animtime, 0.0);
                return;
            }
            pev(para_ent[id],pev_fuser1, frame);
            frame += 2.0;
            set_pev(para_ent[id],pev_fuser1,frame);
            set_pev(para_ent[id],pev_frame,frame);
            if (frame > 254.0)
                parachute_reset(id, 1)
        }
        else
            parachute_reset(id, 1)
        return;
    }
        button = pev(id, pev_button);
        oldbutton = pev(id, pev_oldbuttons);
    if (button & IN_USE)
    {
        pev(id, pev_velocity, velocity);
        if (velocity[2] < 0.0)
        {
            if(para_ent[id] <= 0)
            {
                para_ent[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
                                if(!is_valid_ent(para_ent[id]))
                                {
                                     return;
                                }
                if(para_ent[id] > 0)
                {
                    set_pev(para_ent[id],pev_classname,"parachute");
                    set_pev(para_ent[id], pev_aiment, id)
                    set_pev(para_ent[id], pev_owner, id);
                    set_pev(para_ent[id], pev_movetype, MOVETYPE_FOLLOW);
                    if (!zp_get_user_zombie(id))
                        engfunc(EngFunc_SetModel, para_ent[id], paramodel);
                    else
                        engfunc(EngFunc_SetModel, para_ent[id], paramodel_zm);
                    set_pev(para_ent[id], pev_sequence, 0);
                    set_pev(para_ent[id], pev_gaitsequence, 1);
                    set_pev(para_ent[id], pev_frame, 0.0);
                    set_pev(para_ent[id], pev_fuser1, 0.0);
                }
            }
            if (para_ent[id] > 0)
            {
                set_pev(id, pev_sequence, 3)
                set_pev(id, pev_gaitsequence, 1)
                set_pev(id, pev_frame, 1.0)
                set_pev(id, pev_framerate, 1.0)
                velocity[2] = (velocity[2] + 40.0 < fallingspeed)? velocity[2] + 40.0 : fallingspeed
                set_pev(id, pev_velocity, velocity)
                if (pev(para_ent[id],pev_sequence)== 0)
                {
                    pev(para_ent[id],pev_fuser1, frame);
                    frame += 1.0;
                    set_pev(para_ent[id],pev_fuser1,frame);
                    set_pev(para_ent[id],pev_frame,frame);
                    if (frame > 100.0)
                    {
                        set_pev(para_ent[id], pev_animtime, 0.0);
                        set_pev(para_ent[id], pev_framerate, 0.4);
                        set_pev(para_ent[id], pev_sequence, 1);
                        set_pev(para_ent[id], pev_gaitsequence, 1);
                        set_pev(para_ent[id], pev_frame, 0.0);
                        set_pev(para_ent[id], pev_fuser1, 0.0);
                    }
                }
            }
        }
        else if (para_ent[id] > 0)
            parachute_reset(id, 1)
    }
    else if ((oldbutton & IN_USE) && para_ent[id] > 0)
        parachute_reset(id, 1)
}

public zp_user_infected_post(id, nemesis)
{
    if ((nemesis && !get_pcvar_num(pcvars[nemesis])) || get_pcvar_num(pcvars[zombies]))
        return;
    parachute_reset(id)
}

public zp_user_humanized_post(id, survivor)
{
    if ((survivor && !get_pcvar_num(pcvars[survivors])) || !get_pcvar_num(pcvars[humans]))
        return;
    parachute_reset(id)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: