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

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

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

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

Поправить класс ZP 4.3

Статус пользователя f1nik
сообщение 11.10.2013, 10:37
Сообщение #1


Иконка группы

Стаж: 15 лет

Сообщений: 1862
Благодарностей: 932
Полезность: 1010

Товарищи, помогите допилить плагин
Смысл в чем, плагин работает все нормально, вот только проблема одна:
Если после этого класса выбрать немезиду, то у немезиды остаются все возможности этого класса... С другими классами такой проблемы нет.

Код:

#include <amxmodx>
#include <fakemeta>
#include <cstrike>
#include <zombieplague>

new const zclass_name[] = "Охотник"
new const zclass_info[] = "[ Прыгает R ]"
new const zclass_model[] = "cso_hunter"
new const zclass_clawmodel[] = "v_cso_hunter.mdl"

const zclass_health = 2000
const zclass_speed = 240
const Float:zclass_gravity = 0.73
const Float:zclass_knockback = 1.0

new const leap_sound[] = { "zombie_plague/hunter_jump.wav" }
#define fm_get_user_button(%1) pev(%1, pev_button)
#define fm_get_entity_flags(%1) pev(%1, pev_flags)
#define STR_T 32

new g_hunter
new Float:g_lastleaptime[33], Float:g_wall_time[33]
new cvar_force, cvar_cooldown, cvar_wall, g_wall_climb[33], i_cooldown_time[33]
new Float:g_wallorigin[33][3]
new Float:g_cooldown = 20.0
#define PLUG_VERSION "0.1"
#define PLUG_AUTHOR "DJHD! & Re.Act!ve"



public plugin_precache()
{
g_hunter = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)

precache_sound(leap_sound)
}

public plugin_init()
{
register_plugin("[ZP] Zombie Class: Hunter L4D", PLUG_VERSION, PLUG_AUTHOR)

register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
register_forward(FM_Touch, "fwd_touch")

cvar_force = register_cvar("zp_hunter_jump_force","570")
cvar_cooldown = register_cvar("zp_hunter_jump_cooldown","20")
cvar_wall = register_cvar("zp_hunter_jump_wall_time","5")

static szCvar[30]
formatex(szCvar, charsmax(szCvar), "v%s by %s", PLUG_VERSION, PLUG_AUTHOR)
register_cvar("zp_zclass_hunterl4d2", szCvar, FCVAR_SERVER|FCVAR_SPONLY)
}

public fw_PlayerPreThink(id)
{
if (!is_user_alive(id))
return

if(is_user_connected(id))
{
if (allowed_hunterjump(id))
{
static Float:velocity[3]
velocity_by_aim(id, get_pcvar_num(cvar_force), velocity)
set_pev(id, pev_velocity, velocity)
emit_sound(id, CHAN_STREAM, leap_sound, 1.0, ATTN_NORM, 0, PITCH_HIGH )
g_wall_time[id] = get_gametime();
g_wall_climb[id] = get_pcvar_num(cvar_wall);
g_lastleaptime[id] = get_gametime()
if(task_exists(id)) remove_task(id);

i_cooldown_time[id] = floatround(g_cooldown)
set_task(1.0, "ShowHUD", id, _, _, "a",i_cooldown_time[id])

}
else
{
new button = fm_get_user_button(id)
if((button & IN_DUCK) && (zp_get_user_zombie_class(id) == g_hunter) && (get_gametime() - g_lastleaptime[id]> 0.7))
wallclimb(id, button)
}
}
}

public ShowHUD(id)
{
if(is_user_alive(id))
{
i_cooldown_time[id] = i_cooldown_time[id] - 1;
set_hudmessage(200, 100, 0, 0.75, 0.92, 0, 1.0, 1.1, 0.0, 0.0, -1)
show_hudmessage(id, "Перезарядка через: [%d]",i_cooldown_time[id])
}else{
remove_task(id)
}
}



public fwd_touch(id, world)
{
if(!is_user_alive(id))
return FMRES_IGNORED
new player = STR_T
if (!player)
return FMRES_IGNORED

new classname[STR_T]
pev(world, pev_classname, classname, (STR_T))

if(equal(classname, "worldspawn") || equal(classname, "func_wall") || equal(classname, "func_breakable"))
pev(id, pev_origin, g_wallorigin[id])

return FMRES_IGNORED
}

allowed_hunterjump(id)
{
if (!zp_get_user_zombie(id) && !zp_get_user_nemesis(id))
return false

if (zp_get_user_zombie_class(id) != g_hunter)
return false

static buttons
buttons = pev(id, pev_button)

if (!(buttons & IN_RELOAD) && !(buttons & IN_RELOAD))
return false

static Float:cooldown
cooldown = get_pcvar_float(cvar_cooldown)

if (get_gametime() - g_lastleaptime[id] < cooldown)
return false

return true
}

public wallclimb(id, button)
{
static Float:origin[3], Float:time
pev(id, pev_origin, origin)
time = get_pcvar_float(cvar_wall)

if(get_gametime() - g_wall_time[id] > time)
return FMRES_IGNORED

if(get_distance_f(origin, g_wallorigin[id]) > 20.0)
return FMRES_IGNORED

if(fm_get_entity_flags(id) & FL_ONGROUND)
return FMRES_IGNORED

if(button & IN_FORWARD)
{
static Float:velocity[3]
velocity_by_aim(id, 120, velocity)
fm_set_user_velocity(id, velocity)
}
else if(button & IN_BACK)
{
static Float:velocity[3]
velocity_by_aim(id, -120, velocity)
fm_set_user_velocity(id, velocity)
}
else
{
static Float:velocity[3]
velocity_by_aim(id, 0, velocity)
fm_set_user_velocity(id, velocity)
}

return FMRES_IGNORED
}

stock fm_set_user_velocity(entity, const Float:vector[3]) {
set_pev(entity, pev_velocity, vector);

return 1;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 11.10.2013, 11:41
Сообщение #2
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

1.
Код:
 if (!zp_get_user_zombie(id) && !zp_get_user_nemesis(id))
>>>
Код:
 if (!zp_get_user_zombie(id) || zp_get_user_nemesis(id))

2.
Код:
if((button & IN_DUCK) && (zp_get_user_zombie_class(id) == g_hunter) && (get_gametime() - g_lastleaptime[id]> 0.7))
>>>
Код:
if((button & IN_DUCK) && (zp_get_user_zombie_class(id) == g_hunter) && !zp_get_user_nemesis(id) && (get_gametime() - g_lastleaptime[id]> 0.7))


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя f1nik
сообщение 11.10.2013, 13:15
Сообщение #3


Иконка группы

Стаж: 15 лет

Сообщений: 1862
Благодарностей: 932
Полезность: 1010

iLLuSioN,
Спасибо огромное, попробую!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: