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

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

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

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

Команда

, которая открывает меню
Статус пользователя deltex
сообщение 16.3.2015, 20:13
Сообщение #1


Стаж: 14 лет

Сообщений: 694
Благодарностей: 407
Полезность: 794

Добрый вечер дорогие друзья, нужна ваша помощь) Скажите, что за команда которая открывает меню ножей, а если нету - поможете добавить?
Код плагина
Код:
#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN_NAME "[ZP]knife Menu"
#define PLUGIN_VERSION "2.2"
#define PLUGIN_AUTHOR "Mr.H"

new KNIFE1_V_MODEL[] = "models/zp_knife/razor/v_razor.mdl"
new KNIFE1_P_MODEL[] = "models/zp_knife/razor/p_razor.mdl"

new KNIFE2_V_MODEL[] = "models/zp_knife/combat/v_combat.mdl"
new KNIFE2_P_MODEL[] = "models/zp_knife/combat/p_combat.mdl"

new KNIFE3_V_MODEL[] = "models/zp_knife/katana/v_katana.mdl"
new KNIFE3_P_MODEL[] = "models/zp_knife/katana/p_katana.mdl"

new KNIFE4_V_MODEL[] = "models/zp_knife/strong/v_strong.mdl"
new KNIFE4_P_MODEL[] = "models/zp_knife/strong/p_strong.mdl"

new KNIFE5_V_MODEL[] = "models/zp_knife/kyvald/v_kyvald.mdl"
new KNIFE5_P_MODEL[] = "models/zp_knife/kyvald/p_kyvald.mdl"

new const knife1_sounds[][] =
{
"knife/razor/knife_draw.wav",
"knife/razor/knife_slash1.wav",
"knife/razor/knife_slash2.wav",
"knife/razor/knife_wall.wav",
"knife/razor/knife_miss.wav",
"knife/razor/knife_stab.wav"
}

new const knife2_sounds[][] =
{
"knife/combat/knife_draw.wav",
"knife/combat/knife_slash1.wav",
"knife/combat/knife_slash2.wav",
"knife/combat/knife_wall.wav",
"knife/combat/knife_miss.wav",
"knife/combat/hit_stab.wav"
}

new const knife3_sounds[][] =
{
"knife/katana/knife_draw.wav",
"knife/katana/knife_slash1.wav",
"knife/katana/knife_slash2.wav",
"knife/katana/hit_wall.wav",
"knife/katana/miss.wav",
"knife/katana/hit_stab.wav"
}

new const knife4_sounds[][] =
{
"knife/strong/knife_draw.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_wall.wav",
"knife/strong/knife_miss.wav",
"knife/strong/knife_stab.wav"
}

new const knife5_sounds[][] =
{
"knife/kyvald/knife_draw.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_miss.wav",
"knife/kyvald/knife_stab.wav"
}

#define KNIFE1_HEALTH 100
#define KNIFE2_SPEED 270.0
#define KNIFE3_JUMP 350
#define KNIFE4_KNOCK 8.0

new g_maxplayers
new timer[33]

new bool:g_has_knife1[33], bool:g_has_knife2[33], bool:g_has_knife3[33], bool:g_has_knife4[33], bool:g_has_knife5[33]

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_logevent("RoundStart", 2, "1=Round_Start")
register_event("CurWeapon", "Event_Curweapon", "be", "1=1")

register_forward(FM_EmitSound, "CEntity__EmitSound")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");

g_maxplayers = get_maxplayers()
}

public plugin_precache()
{
precache_model(KNIFE1_V_MODEL)
precache_model(KNIFE1_P_MODEL)
precache_model(KNIFE2_V_MODEL)
precache_model(KNIFE2_P_MODEL)
precache_model(KNIFE3_V_MODEL)
precache_model(KNIFE3_P_MODEL)
precache_model(KNIFE4_V_MODEL)
precache_model(KNIFE4_P_MODEL)
precache_model(KNIFE5_V_MODEL)
precache_model(KNIFE5_P_MODEL)

for(new i = 0; i < sizeof knife1_sounds; i++)
precache_sound(knife1_sounds[i])

for(new i = 0; i < sizeof knife2_sounds; i++)
precache_sound(knife2_sounds[i])

for(new i = 0; i < sizeof knife3_sounds; i++)
precache_sound(knife3_sounds[i])

for(new i = 0; i < sizeof knife4_sounds; i++)
precache_sound(knife4_sounds[i])

for(new i = 0; i < sizeof knife5_sounds; i++)
precache_sound(knife5_sounds[i])
}

public RoundStart()
{
for (new i = 1; i <= g_maxplayers; i++)
{
if(task_exists(i))
{
show_menu(i, 0, "^n", 1)
remove_task(i)
}
if (!is_user_alive(i))
continue;

Knifes_Menu(i)
}
}

public client_connect(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public client_disconnect(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public zp_user_infected_post(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public Knifes_Menu(id)
{
timer[id] = 15

set_task(1.0, "destroy_menu", id, _, _, "b")

new menu = menu_create("Меню ножей: ", "menu_keys")

menu_additem(menu, "\wРазор \d[+Здоровье]", "1", 0);
menu_additem(menu, "\wКомбат \d[Скорость+10]", "2", 0);
menu_additem(menu, "\wКатана \d[+350 Грава]", "3", 0);
menu_additem(menu, "\wСтронг \d[Отброс]", "4", 0);
menu_additem(menu, "\wМега Кувалба \d[Всё вместе]", "5", 0);

menu_display( id, menu, 0 );
return PLUGIN_HANDLED
}

public destroy_menu(id)
{
if (timer[id])
{
new text_timer[64]

formatex(text_timer, charsmax(text_timer), "Меню закроется через %d секунд", timer[id])

set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 0.0, 1.0, 1.0, 1.0)
show_hudmessage(id, text_timer)

--timer[id]
}
else
{
remove_task(id)
show_menu(id, 0, "^n", 1)
}
}

public menu_keys(id, menu, item)
{
if(item < 0)
return PLUGIN_CONTINUE

new cmd[2];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new choice = str_to_num(cmd)

switch (choice)
{
case 1:
{
buy_knife1(id)
}
case 2:
{
if (zp_get_user_zombie(id))
return PLUGIN_HANDLED;

buy_knife2(id)
}
case 3:
{
buy_knife3(id)
}
case 4:
{
buy_knife4(id)
}
case 5:
{
if (get_user_flags(id) & ADMIN_LEVEL_H)
buy_knife5(id)
else
Knifes_Menu(id)
}
}

emit_sound(id, CHAN_BODY, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

remove_task(id)
return PLUGIN_HANDLED;
}

public buy_knife1(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public buy_knife2(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = true
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife3(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = true
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife4(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = true
g_has_knife5[id] = false
}

public buy_knife5(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = true

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public Event_Curweapon(id)
{
if(get_user_weapon(id) != CSW_KNIFE)
return;

if (g_has_knife1[id])
{
set_pev(id, pev_viewmodel2, KNIFE1_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE1_P_MODEL)
}
else if (g_has_knife2[id])
{
set_pev(id, pev_viewmodel2, KNIFE2_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE2_P_MODEL)
}
else if (g_has_knife3[id])
{
set_pev(id, pev_viewmodel2, KNIFE3_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE3_P_MODEL)
}
else if (g_has_knife4[id])
{
set_pev(id, pev_viewmodel2, KNIFE4_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE4_P_MODEL)
}
else if (g_has_knife5[id])
{
set_pev(id, pev_viewmodel2, KNIFE5_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE5_P_MODEL)
}

return;
}

public CEntity__EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
if (!is_user_connected(id))
return HAM_IGNORED

if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
{
if (sample[14] == 'd')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[0], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[0], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[0], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[0], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[0], volume, attn, flags, pitch)
}
else if (sample[14] == 'h')
{
if (sample[17] == 'w')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[3], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[3], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[3], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[3], volume, attn, flags, pitch)
if(g_has_knife5[id] )
emit_sound(id, channel, knife5_sounds[3], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[random_num(1,2)], volume, attn, flags, pitch)
}
}
else
{
if (sample[15] == 'l')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[4], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[4], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[4], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[4], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[4], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[5], volume, attn, flags, pitch)
if(g_has_knife2[id] )
emit_sound(id, channel, knife2_sounds[5], volume, attn, flags, pitch)
if(g_has_knife3[id] )
emit_sound(id, channel, knife3_sounds[5], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[5], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[5], volume, attn, flags, pitch)
}
}
return HAM_SUPERCEDE
}
return HAM_IGNORED
}

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

new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])

if (weapon == CSW_KNIFE && (g_has_knife2[id] || g_has_knife5[id]))
{
set_user_maxspeed(id, KNIFE2_SPEED)
}

if(weapon == CSW_KNIFE && (g_has_knife3[id] || g_has_knife5[id]))
{
if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
{
new flags = pev(id, pev_flags)
new waterlvl = pev(id, pev_waterlevel)

if (!(flags & FL_ONGROUND))
return FMRES_IGNORED

if (flags & FL_WATERJUMP)
return FMRES_IGNORED

if (waterlvl > 1)
return FMRES_IGNORED

new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)

fVelocity[2] += KNIFE3_JUMP

set_pev(id, pev_velocity, fVelocity)
set_pev(id, pev_gaitsequence, 6)
}
}
return FMRES_IGNORED
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_connected(attacker))
return HAM_IGNORED

new temp[2], weapon = get_user_weapon(attacker, temp[0], temp[1])

if(weapon == CSW_KNIFE && (g_has_knife4[attacker] || g_has_knife5[attacker]))
{
new Float:vec[3];
new Float:oldvelo[3];
pev(victim, pev_velocity, oldvelo);
create_velocity_vector(victim , attacker , vec);
vec[0] += oldvelo[0] + KNIFE4_KNOCK
vec[1] += oldvelo[1] + 0;
set_pev(victim, pev_velocity, vec);
}
return HAM_IGNORED
}

stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
if(!is_user_alive(attacker))
return 0;

new Float:vicorigin[3];
new Float:attorigin[3];
pev(victim, pev_origin , vicorigin);
pev(attacker, pev_origin , attorigin);

new Float:origin2[3]
origin2[0] = vicorigin[0] - attorigin[0];
origin2[1] = vicorigin[1] - attorigin[1];

new Float:largestnum = 0.0;

if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]);
if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);

origin2[0] /= largestnum;
origin2[1] /= largestnum;

if (g_has_knife4[attacker] || g_has_knife5[attacker])
{
velocity[0] = ( origin2[0] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
velocity[1] = ( origin2[1] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
}

if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
velocity[2] = random_float(200.0 , 275.0);

return 1;
}
e]


С меня спасибка)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 16.3.2015, 20:17
Сообщение #2


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

Код:
#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN_NAME "[ZP]knife Menu"
#define PLUGIN_VERSION "2.2"
#define PLUGIN_AUTHOR "Mr.H"

new KNIFE1_V_MODEL[] = "models/zp_knife/razor/v_razor.mdl"
new KNIFE1_P_MODEL[] = "models/zp_knife/razor/p_razor.mdl"

new KNIFE2_V_MODEL[] = "models/zp_knife/combat/v_combat.mdl"
new KNIFE2_P_MODEL[] = "models/zp_knife/combat/p_combat.mdl"

new KNIFE3_V_MODEL[] = "models/zp_knife/katana/v_katana.mdl"
new KNIFE3_P_MODEL[] = "models/zp_knife/katana/p_katana.mdl"

new KNIFE4_V_MODEL[] = "models/zp_knife/strong/v_strong.mdl"
new KNIFE4_P_MODEL[] = "models/zp_knife/strong/p_strong.mdl"

new KNIFE5_V_MODEL[] = "models/zp_knife/kyvald/v_kyvald.mdl"
new KNIFE5_P_MODEL[] = "models/zp_knife/kyvald/p_kyvald.mdl"

new const knife1_sounds[][] =
{
"knife/razor/knife_draw.wav",
"knife/razor/knife_slash1.wav",
"knife/razor/knife_slash2.wav",
"knife/razor/knife_wall.wav",
"knife/razor/knife_miss.wav",
"knife/razor/knife_stab.wav"
}

new const knife2_sounds[][] =
{
"knife/combat/knife_draw.wav",
"knife/combat/knife_slash1.wav",
"knife/combat/knife_slash2.wav",
"knife/combat/knife_wall.wav",
"knife/combat/knife_miss.wav",
"knife/combat/hit_stab.wav"
}

new const knife3_sounds[][] =
{
"knife/katana/knife_draw.wav",
"knife/katana/knife_slash1.wav",
"knife/katana/knife_slash2.wav",
"knife/katana/hit_wall.wav",
"knife/katana/miss.wav",
"knife/katana/hit_stab.wav"
}

new const knife4_sounds[][] =
{
"knife/strong/knife_draw.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_wall.wav",
"knife/strong/knife_miss.wav",
"knife/strong/knife_stab.wav"
}

new const knife5_sounds[][] =
{
"knife/kyvald/knife_draw.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_miss.wav",
"knife/kyvald/knife_stab.wav"
}

#define KNIFE1_HEALTH 100
#define KNIFE2_SPEED 270.0
#define KNIFE3_JUMP 350
#define KNIFE4_KNOCK 8.0

new g_maxplayers
new timer[33]

new bool:g_has_knife1[33], bool:g_has_knife2[33], bool:g_has_knife3[33], bool:g_has_knife4[33], bool:g_has_knife5[33]

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_logevent("RoundStart", 2, "1=Round_Start")
register_event("CurWeapon", "Event_Curweapon", "be", "1=1")

register_forward(FM_EmitSound, "CEntity__EmitSound")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
register_clcmd("say /knife","Knifes_Menu" )

g_maxplayers = get_maxplayers()
}

public plugin_precache()
{
precache_model(KNIFE1_V_MODEL)
precache_model(KNIFE1_P_MODEL)
precache_model(KNIFE2_V_MODEL)
precache_model(KNIFE2_P_MODEL)
precache_model(KNIFE3_V_MODEL)
precache_model(KNIFE3_P_MODEL)
precache_model(KNIFE4_V_MODEL)
precache_model(KNIFE4_P_MODEL)
precache_model(KNIFE5_V_MODEL)
precache_model(KNIFE5_P_MODEL)

for(new i = 0; i < sizeof knife1_sounds; i++)
precache_sound(knife1_sounds[i])

for(new i = 0; i < sizeof knife2_sounds; i++)
precache_sound(knife2_sounds[i])

for(new i = 0; i < sizeof knife3_sounds; i++)
precache_sound(knife3_sounds[i])

for(new i = 0; i < sizeof knife4_sounds; i++)
precache_sound(knife4_sounds[i])

for(new i = 0; i < sizeof knife5_sounds; i++)
precache_sound(knife5_sounds[i])
}

public RoundStart()
{
for (new i = 1; i <= g_maxplayers; i++)
{
if(task_exists(i))
{
show_menu(i, 0, "^n", 1)
remove_task(i)
}
if (!is_user_alive(i))
continue;

Knifes_Menu(i)
}
}

public client_connect(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public client_disconnect(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public zp_user_infected_post(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public Knifes_Menu(id)
{
timer[id] = 15

set_task(1.0, "destroy_menu", id, _, _, "b")

new menu = menu_create("Меню ножей: ", "menu_keys")

menu_additem(menu, "\wРазор \d[+Здоровье]", "1", 0);
menu_additem(menu, "\wКомбат \d[Скорость+10]", "2", 0);
menu_additem(menu, "\wКатана \d[+350 Грава]", "3", 0);
menu_additem(menu, "\wСтронг \d[Отброс]", "4", 0);
menu_additem(menu, "\wМега Кувалба \d[Всё вместе]", "5", 0);

menu_display( id, menu, 0 );
return PLUGIN_HANDLED
}

public destroy_menu(id)
{
if (timer[id])
{
new text_timer[64]

formatex(text_timer, charsmax(text_timer), "Меню закроется через %d секунд", timer[id])

set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 0.0, 1.0, 1.0, 1.0)
show_hudmessage(id, text_timer)

--timer[id]
}
else
{
remove_task(id)
show_menu(id, 0, "^n", 1)
}
}

public menu_keys(id, menu, item)
{
if(item < 0)
return PLUGIN_CONTINUE

new cmd[2];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new choice = str_to_num(cmd)

switch (choice)
{
case 1:
{
buy_knife1(id)
}
case 2:
{
if (zp_get_user_zombie(id))
return PLUGIN_HANDLED;

buy_knife2(id)
}
case 3:
{
buy_knife3(id)
}
case 4:
{
buy_knife4(id)
}
case 5:
{
if (get_user_flags(id) & ADMIN_LEVEL_H)
buy_knife5(id)
else
Knifes_Menu(id)
}
}

emit_sound(id, CHAN_BODY, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

remove_task(id)
return PLUGIN_HANDLED;
}

public buy_knife1(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public buy_knife2(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = true
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife3(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = true
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife4(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = true
g_has_knife5[id] = false
}

public buy_knife5(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = true

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public Event_Curweapon(id)
{
if(get_user_weapon(id) != CSW_KNIFE)
return;

if (g_has_knife1[id])
{
set_pev(id, pev_viewmodel2, KNIFE1_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE1_P_MODEL)
}
else if (g_has_knife2[id])
{
set_pev(id, pev_viewmodel2, KNIFE2_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE2_P_MODEL)
}
else if (g_has_knife3[id])
{
set_pev(id, pev_viewmodel2, KNIFE3_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE3_P_MODEL)
}
else if (g_has_knife4[id])
{
set_pev(id, pev_viewmodel2, KNIFE4_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE4_P_MODEL)
}
else if (g_has_knife5[id])
{
set_pev(id, pev_viewmodel2, KNIFE5_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE5_P_MODEL)
}

return;
}

public CEntity__EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
if (!is_user_connected(id))
return HAM_IGNORED

if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
{
if (sample[14] == 'd')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[0], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[0], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[0], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[0], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[0], volume, attn, flags, pitch)
}
else if (sample[14] == 'h')
{
if (sample[17] == 'w')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[3], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[3], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[3], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[3], volume, attn, flags, pitch)
if(g_has_knife5[id] )
emit_sound(id, channel, knife5_sounds[3], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[random_num(1,2)], volume, attn, flags, pitch)
}
}
else
{
if (sample[15] == 'l')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[4], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[4], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[4], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[4], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[4], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[5], volume, attn, flags, pitch)
if(g_has_knife2[id] )
emit_sound(id, channel, knife2_sounds[5], volume, attn, flags, pitch)
if(g_has_knife3[id] )
emit_sound(id, channel, knife3_sounds[5], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[5], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[5], volume, attn, flags, pitch)
}
}
return HAM_SUPERCEDE
}
return HAM_IGNORED
}

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

new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])

if (weapon == CSW_KNIFE && (g_has_knife2[id] || g_has_knife5[id]))
{
set_user_maxspeed(id, KNIFE2_SPEED)
}

if(weapon == CSW_KNIFE && (g_has_knife3[id] || g_has_knife5[id]))
{
if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
{
new flags = pev(id, pev_flags)
new waterlvl = pev(id, pev_waterlevel)

if (!(flags & FL_ONGROUND))
return FMRES_IGNORED

if (flags & FL_WATERJUMP)
return FMRES_IGNORED

if (waterlvl > 1)
return FMRES_IGNORED

new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)

fVelocity[2] += KNIFE3_JUMP

set_pev(id, pev_velocity, fVelocity)
set_pev(id, pev_gaitsequence, 6)
}
}
return FMRES_IGNORED
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_connected(attacker))
return HAM_IGNORED

new temp[2], weapon = get_user_weapon(attacker, temp[0], temp[1])

if(weapon == CSW_KNIFE && (g_has_knife4[attacker] || g_has_knife5[attacker]))
{
new Float:vec[3];
new Float:oldvelo[3];
pev(victim, pev_velocity, oldvelo);
create_velocity_vector(victim , attacker , vec);
vec[0] += oldvelo[0] + KNIFE4_KNOCK
vec[1] += oldvelo[1] + 0;
set_pev(victim, pev_velocity, vec);
}
return HAM_IGNORED
}

stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
if(!is_user_alive(attacker))
return 0;

new Float:vicorigin[3];
new Float:attorigin[3];
pev(victim, pev_origin , vicorigin);
pev(attacker, pev_origin , attorigin);

new Float:origin2[3]
origin2[0] = vicorigin[0] - attorigin[0];
origin2[1] = vicorigin[1] - attorigin[1];

new Float:largestnum = 0.0;

if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]);
if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);

origin2[0] /= largestnum;
origin2[1] /= largestnum;

if (g_has_knife4[attacker] || g_has_knife5[attacker])
{
velocity[0] = ( origin2[0] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
velocity[1] = ( origin2[1] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
}

if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
velocity[2] = random_float(200.0 , 275.0);

return 1;
}


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя deltex
сообщение 16.3.2015, 20:25
Сообщение #3


Стаж: 14 лет

Сообщений: 694
Благодарностей: 407
Полезность: 794

Как я понимаю вот - это команда?
Код:
register_clcmd("say /knife","Knifes_Menu" )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
XyLiGaN
сообщение 16.3.2015, 20:26
Сообщение #4
Стаж: 13 лет
Город: Югорск

Сообщений: 11668
Благодарностей: 6450
Полезность: 1052

Меценат Меценат

deltex, Правильно понимаешь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 16.3.2015, 20:26
Сообщение #5


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

deltex, именно. Но меню вызывается и при старте раунда


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя deltex
сообщение 16.3.2015, 20:29
Сообщение #6


Стаж: 14 лет

Сообщений: 694
Благодарностей: 407
Полезность: 794

Цитата(vovan4ik1997 @ 16.3.2015, 21:17) *
ляляля


Помогите пожалуйста сделать ещё ограничение на вызов данного меню/плагина.

Отредактировал: deltex, - 16.3.2015, 20:33
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 16.3.2015, 20:31
Сообщение #7


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

deltex, не цитируй большие посты это раз, а второе - какое ограничение? С определенного раунда, только для вип?


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deltex
сообщение 16.3.2015, 20:33
Сообщение #8


Стаж: 14 лет

Сообщений: 694
Благодарностей: 407
Полезность: 794

Цитата(vovan4ik1997 @ 16.3.2015, 21:31) *
deltex, не цитируй большие посты это раз, а второе - какое ограничение? С определенного раунда, только для вип?


Нее, чтобы например можно было открыть меню 1 раз за раунд.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 16.3.2015, 20:46
Сообщение #9


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

deltex, Код:
#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN_NAME "[ZP]knife Menu"
#define PLUGIN_VERSION "2.2"
#define PLUGIN_AUTHOR "Mr.H"

new KNIFE1_V_MODEL[] = "models/zp_knife/razor/v_razor.mdl"
new KNIFE1_P_MODEL[] = "models/zp_knife/razor/p_razor.mdl"

new KNIFE2_V_MODEL[] = "models/zp_knife/combat/v_combat.mdl"
new KNIFE2_P_MODEL[] = "models/zp_knife/combat/p_combat.mdl"

new KNIFE3_V_MODEL[] = "models/zp_knife/katana/v_katana.mdl"
new KNIFE3_P_MODEL[] = "models/zp_knife/katana/p_katana.mdl"

new KNIFE4_V_MODEL[] = "models/zp_knife/strong/v_strong.mdl"
new KNIFE4_P_MODEL[] = "models/zp_knife/strong/p_strong.mdl"

new KNIFE5_V_MODEL[] = "models/zp_knife/kyvald/v_kyvald.mdl"
new KNIFE5_P_MODEL[] = "models/zp_knife/kyvald/p_kyvald.mdl"
new Openmenu[33]

new const knife1_sounds[][] =
{
"knife/razor/knife_draw.wav",
"knife/razor/knife_slash1.wav",
"knife/razor/knife_slash2.wav",
"knife/razor/knife_wall.wav",
"knife/razor/knife_miss.wav",
"knife/razor/knife_stab.wav"
}

new const knife2_sounds[][] =
{
"knife/combat/knife_draw.wav",
"knife/combat/knife_slash1.wav",
"knife/combat/knife_slash2.wav",
"knife/combat/knife_wall.wav",
"knife/combat/knife_miss.wav",
"knife/combat/hit_stab.wav"
}

new const knife3_sounds[][] =
{
"knife/katana/knife_draw.wav",
"knife/katana/knife_slash1.wav",
"knife/katana/knife_slash2.wav",
"knife/katana/hit_wall.wav",
"knife/katana/miss.wav",
"knife/katana/hit_stab.wav"
}

new const knife4_sounds[][] =
{
"knife/strong/knife_draw.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_wall.wav",
"knife/strong/knife_miss.wav",
"knife/strong/knife_stab.wav"
}

new const knife5_sounds[][] =
{
"knife/kyvald/knife_draw.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_miss.wav",
"knife/kyvald/knife_stab.wav"
}

#define KNIFE1_HEALTH 100
#define KNIFE2_SPEED 270.0
#define KNIFE3_JUMP 350
#define KNIFE4_KNOCK 8.0

new g_maxplayers
new timer[33]

new bool:g_has_knife1[33], bool:g_has_knife2[33], bool:g_has_knife3[33], bool:g_has_knife4[33], bool:g_has_knife5[33]

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_logevent("RoundStart", 2, "1=Round_Start")
register_event("CurWeapon", "Event_Curweapon", "be", "1=1")

register_forward(FM_EmitSound, "CEntity__EmitSound")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
register_clcmd("say /knife","Knifes_Menu" )

g_maxplayers = get_maxplayers()
}

public plugin_precache()
{
precache_model(KNIFE1_V_MODEL)
precache_model(KNIFE1_P_MODEL)
precache_model(KNIFE2_V_MODEL)
precache_model(KNIFE2_P_MODEL)
precache_model(KNIFE3_V_MODEL)
precache_model(KNIFE3_P_MODEL)
precache_model(KNIFE4_V_MODEL)
precache_model(KNIFE4_P_MODEL)
precache_model(KNIFE5_V_MODEL)
precache_model(KNIFE5_P_MODEL)

for(new i = 0; i < sizeof knife1_sounds; i++)
precache_sound(knife1_sounds[i])

for(new i = 0; i < sizeof knife2_sounds; i++)
precache_sound(knife2_sounds[i])

for(new i = 0; i < sizeof knife3_sounds; i++)
precache_sound(knife3_sounds[i])

for(new i = 0; i < sizeof knife4_sounds; i++)
precache_sound(knife4_sounds[i])

for(new i = 0; i < sizeof knife5_sounds; i++)
precache_sound(knife5_sounds[i])
}

public RoundStart()
{
for (new i = 1; i <= g_maxplayers; i++)
{
if(task_exists(i))
{
show_menu(i, 0, "^n", 1)
remove_task(i)
}
if (!is_user_alive(i))
continue;
Openmenu[i] = 1
Knifes_Menu(i)
}
}

public client_connect(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public client_disconnect(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public zp_user_infected_post(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public Knifes_Menu(id)
{
if(Openmenu[id] == 1)
{
timer[id] = 15

set_task(1.0, "destroy_menu", id, _, _, "b")

new menu = menu_create("Меню ножей: ", "menu_keys")

menu_additem(menu, "\wРазор \d[+Здоровье]", "1", 0);
menu_additem(menu, "\wКомбат \d[Скорость+10]", "2", 0);
menu_additem(menu, "\wКатана \d[+350 Грава]", "3", 0);
menu_additem(menu, "\wСтронг \d[Отброс]", "4", 0);
menu_additem(menu, "\wМега Кувалба \d[Всё вместе]", "5", 0);

menu_display( id, menu, 0 );

}
else{
client_print(id,print_chat,"Только 1 раз за раунд")
}

}

public destroy_menu(id)
{
if (timer[id])
{
new text_timer[64]

formatex(text_timer, charsmax(text_timer), "Меню закроется через %d секунд", timer[id])

set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 0.0, 1.0, 1.0, 1.0)
show_hudmessage(id, text_timer)

--timer[id]
}
else
{
remove_task(id)
show_menu(id, 0, "^n", 1)
}
}

public menu_keys(id, menu, item)
{
if(item < 0)
return PLUGIN_CONTINUE

new cmd[2];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new choice = str_to_num(cmd)

switch (choice)
{
case 1:
{
Openmenu[id] = Openmenu[id] -1
buy_knife1(id)
}
case 2:
{
if (zp_get_user_zombie(id))
return PLUGIN_HANDLED;

Openmenu[id] = Openmenu[id] -1
buy_knife2(id)
}
case 3:
{
Openmenu[id] = Openmenu[id] -1
buy_knife3(id)
}
case 4:
{
Openmenu[id] = Openmenu[id] -1
buy_knife4(id)
}
case 5:
{
if (get_user_flags(id) & ADMIN_LEVEL_H)
buy_knife5(id)

else
Knifes_Menu(id)
}
}

emit_sound(id, CHAN_BODY, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

remove_task(id)
return PLUGIN_HANDLED;
}

public buy_knife1(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public buy_knife2(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = true
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife3(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = true
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife4(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = true
g_has_knife5[id] = false
}

public buy_knife5(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = true

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public Event_Curweapon(id)
{
if(get_user_weapon(id) != CSW_KNIFE)
return;

if (g_has_knife1[id])
{
set_pev(id, pev_viewmodel2, KNIFE1_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE1_P_MODEL)
}
else if (g_has_knife2[id])
{
set_pev(id, pev_viewmodel2, KNIFE2_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE2_P_MODEL)
}
else if (g_has_knife3[id])
{
set_pev(id, pev_viewmodel2, KNIFE3_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE3_P_MODEL)
}
else if (g_has_knife4[id])
{
set_pev(id, pev_viewmodel2, KNIFE4_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE4_P_MODEL)
}
else if (g_has_knife5[id])
{
set_pev(id, pev_viewmodel2, KNIFE5_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE5_P_MODEL)
}

return;
}

public CEntity__EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
if (!is_user_connected(id))
return HAM_IGNORED

if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
{
if (sample[14] == 'd')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[0], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[0], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[0], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[0], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[0], volume, attn, flags, pitch)
}
else if (sample[14] == 'h')
{
if (sample[17] == 'w')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[3], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[3], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[3], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[3], volume, attn, flags, pitch)
if(g_has_knife5[id] )
emit_sound(id, channel, knife5_sounds[3], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[random_num(1,2)], volume, attn, flags, pitch)
}
}
else
{
if (sample[15] == 'l')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[4], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[4], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[4], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[4], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[4], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[5], volume, attn, flags, pitch)
if(g_has_knife2[id] )
emit_sound(id, channel, knife2_sounds[5], volume, attn, flags, pitch)
if(g_has_knife3[id] )
emit_sound(id, channel, knife3_sounds[5], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[5], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[5], volume, attn, flags, pitch)
}
}
return HAM_SUPERCEDE
}
return HAM_IGNORED
}

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

new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])

if (weapon == CSW_KNIFE && (g_has_knife2[id] || g_has_knife5[id]))
{
set_user_maxspeed(id, KNIFE2_SPEED)
}

if(weapon == CSW_KNIFE && (g_has_knife3[id] || g_has_knife5[id]))
{
if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
{
new flags = pev(id, pev_flags)
new waterlvl = pev(id, pev_waterlevel)

if (!(flags & FL_ONGROUND))
return FMRES_IGNORED

if (flags & FL_WATERJUMP)
return FMRES_IGNORED

if (waterlvl > 1)
return FMRES_IGNORED

new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)

fVelocity[2] += KNIFE3_JUMP

set_pev(id, pev_velocity, fVelocity)
set_pev(id, pev_gaitsequence, 6)
}
}
return FMRES_IGNORED
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_connected(attacker))
return HAM_IGNORED

new temp[2], weapon = get_user_weapon(attacker, temp[0], temp[1])

if(weapon == CSW_KNIFE && (g_has_knife4[attacker] || g_has_knife5[attacker]))
{
new Float:vec[3];
new Float:oldvelo[3];
pev(victim, pev_velocity, oldvelo);
create_velocity_vector(victim , attacker , vec);
vec[0] += oldvelo[0] + KNIFE4_KNOCK
vec[1] += oldvelo[1] + 0;
set_pev(victim, pev_velocity, vec);
}
return HAM_IGNORED
}

stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
if(!is_user_alive(attacker))
return 0;

new Float:vicorigin[3];
new Float:attorigin[3];
pev(victim, pev_origin , vicorigin);
pev(attacker, pev_origin , attorigin);

new Float:origin2[3]
origin2[0] = vicorigin[0] - attorigin[0];
origin2[1] = vicorigin[1] - attorigin[1];

new Float:largestnum = 0.0;

if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]);
if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);

origin2[0] /= largestnum;
origin2[1] /= largestnum;

if (g_has_knife4[attacker] || g_has_knife5[attacker])
{
velocity[0] = ( origin2[0] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
velocity[1] = ( origin2[1] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
}

if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
velocity[2] = random_float(200.0 , 275.0);

return 1;
}

Пробуй


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя deltex
сообщение 16.3.2015, 20:52
Сообщение #10


Стаж: 14 лет

Сообщений: 694
Благодарностей: 407
Полезность: 794

Цитата(vovan4ik1997 @ 16.3.2015, 21:46) *
deltex,
Код
Код:
#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN_NAME "[ZP]knife Menu"
#define PLUGIN_VERSION "2.2"
#define PLUGIN_AUTHOR "Mr.H"

new KNIFE1_V_MODEL[] = "models/zp_knife/razor/v_razor.mdl"
new KNIFE1_P_MODEL[] = "models/zp_knife/razor/p_razor.mdl"

new KNIFE2_V_MODEL[] = "models/zp_knife/combat/v_combat.mdl"
new KNIFE2_P_MODEL[] = "models/zp_knife/combat/p_combat.mdl"

new KNIFE3_V_MODEL[] = "models/zp_knife/katana/v_katana.mdl"
new KNIFE3_P_MODEL[] = "models/zp_knife/katana/p_katana.mdl"

new KNIFE4_V_MODEL[] = "models/zp_knife/strong/v_strong.mdl"
new KNIFE4_P_MODEL[] = "models/zp_knife/strong/p_strong.mdl"

new KNIFE5_V_MODEL[] = "models/zp_knife/kyvald/v_kyvald.mdl"
new KNIFE5_P_MODEL[] = "models/zp_knife/kyvald/p_kyvald.mdl"
new Openmenu[33]

new const knife1_sounds[][] =
{
"knife/razor/knife_draw.wav",
"knife/razor/knife_slash1.wav",
"knife/razor/knife_slash2.wav",
"knife/razor/knife_wall.wav",
"knife/razor/knife_miss.wav",
"knife/razor/knife_stab.wav"
}

new const knife2_sounds[][] =
{
"knife/combat/knife_draw.wav",
"knife/combat/knife_slash1.wav",
"knife/combat/knife_slash2.wav",
"knife/combat/knife_wall.wav",
"knife/combat/knife_miss.wav",
"knife/combat/hit_stab.wav"
}

new const knife3_sounds[][] =
{
"knife/katana/knife_draw.wav",
"knife/katana/knife_slash1.wav",
"knife/katana/knife_slash2.wav",
"knife/katana/hit_wall.wav",
"knife/katana/miss.wav",
"knife/katana/hit_stab.wav"
}

new const knife4_sounds[][] =
{
"knife/strong/knife_draw.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_wall.wav",
"knife/strong/knife_miss.wav",
"knife/strong/knife_stab.wav"
}

new const knife5_sounds[][] =
{
"knife/kyvald/knife_draw.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_miss.wav",
"knife/kyvald/knife_stab.wav"
}

#define KNIFE1_HEALTH 100
#define KNIFE2_SPEED 270.0
#define KNIFE3_JUMP 350
#define KNIFE4_KNOCK 8.0

new g_maxplayers
new timer[33]

new bool:g_has_knife1[33], bool:g_has_knife2[33], bool:g_has_knife3[33], bool:g_has_knife4[33], bool:g_has_knife5[33]

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_logevent("RoundStart", 2, "1=Round_Start")
register_event("CurWeapon", "Event_Curweapon", "be", "1=1")

register_forward(FM_EmitSound, "CEntity__EmitSound")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
register_clcmd("say /knife","Knifes_Menu" )

g_maxplayers = get_maxplayers()
}

public plugin_precache()
{
precache_model(KNIFE1_V_MODEL)
precache_model(KNIFE1_P_MODEL)
precache_model(KNIFE2_V_MODEL)
precache_model(KNIFE2_P_MODEL)
precache_model(KNIFE3_V_MODEL)
precache_model(KNIFE3_P_MODEL)
precache_model(KNIFE4_V_MODEL)
precache_model(KNIFE4_P_MODEL)
precache_model(KNIFE5_V_MODEL)
precache_model(KNIFE5_P_MODEL)

for(new i = 0; i < sizeof knife1_sounds; i++)
precache_sound(knife1_sounds[i])

for(new i = 0; i < sizeof knife2_sounds; i++)
precache_sound(knife2_sounds[i])

for(new i = 0; i < sizeof knife3_sounds; i++)
precache_sound(knife3_sounds[i])

for(new i = 0; i < sizeof knife4_sounds; i++)
precache_sound(knife4_sounds[i])

for(new i = 0; i < sizeof knife5_sounds; i++)
precache_sound(knife5_sounds[i])
}

public RoundStart()
{
for (new i = 1; i <= g_maxplayers; i++)
{
if(task_exists(i))
{
show_menu(i, 0, "^n", 1)
remove_task(i)
}
if (!is_user_alive(i))
continue;
Openmenu[i] = 1
Knifes_Menu(i)
}
}

public client_connect(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public client_disconnect(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public zp_user_infected_post(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public Knifes_Menu(id)
{
if(Openmenu[id] == 1)
{
timer[id] = 15

set_task(1.0, "destroy_menu", id, _, _, "b")

new menu = menu_create("Меню ножей: ", "menu_keys")

menu_additem(menu, "\wРазор \d[+Здоровье]", "1", 0);
menu_additem(menu, "\wКомбат \d[Скорость+10]", "2", 0);
menu_additem(menu, "\wКатана \d[+350 Грава]", "3", 0);
menu_additem(menu, "\wСтронг \d[Отброс]", "4", 0);
menu_additem(menu, "\wМега Кувалба \d[Всё вместе]", "5", 0);

menu_display( id, menu, 0 );

}
else{
client_print(id,print_chat,"Только 1 раз за раунд")
}

}

public destroy_menu(id)
{
if (timer[id])
{
new text_timer[64]

formatex(text_timer, charsmax(text_timer), "Меню закроется через %d секунд", timer[id])

set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 0.0, 1.0, 1.0, 1.0)
show_hudmessage(id, text_timer)

--timer[id]
}
else
{
remove_task(id)
show_menu(id, 0, "^n", 1)
}
}

public menu_keys(id, menu, item)
{
if(item < 0)
return PLUGIN_CONTINUE

new cmd[2];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new choice = str_to_num(cmd)

switch (choice)
{
case 1:
{
Openmenu[id] = Openmenu[id] -1
buy_knife1(id)
}
case 2:
{
if (zp_get_user_zombie(id))
return PLUGIN_HANDLED;

Openmenu[id] = Openmenu[id] -1
buy_knife2(id)
}
case 3:
{
Openmenu[id] = Openmenu[id] -1
buy_knife3(id)
}
case 4:
{
Openmenu[id] = Openmenu[id] -1
buy_knife4(id)
}
case 5:
{
if (get_user_flags(id) & ADMIN_LEVEL_H)
buy_knife5(id)

else
Knifes_Menu(id)
}
}

emit_sound(id, CHAN_BODY, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

remove_task(id)
return PLUGIN_HANDLED;
}

public buy_knife1(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public buy_knife2(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = true
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife3(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = true
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife4(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = true
g_has_knife5[id] = false
}

public buy_knife5(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = true

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public Event_Curweapon(id)
{
if(get_user_weapon(id) != CSW_KNIFE)
return;

if (g_has_knife1[id])
{
set_pev(id, pev_viewmodel2, KNIFE1_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE1_P_MODEL)
}
else if (g_has_knife2[id])
{
set_pev(id, pev_viewmodel2, KNIFE2_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE2_P_MODEL)
}
else if (g_has_knife3[id])
{
set_pev(id, pev_viewmodel2, KNIFE3_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE3_P_MODEL)
}
else if (g_has_knife4[id])
{
set_pev(id, pev_viewmodel2, KNIFE4_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE4_P_MODEL)
}
else if (g_has_knife5[id])
{
set_pev(id, pev_viewmodel2, KNIFE5_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE5_P_MODEL)
}

return;
}

public CEntity__EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
if (!is_user_connected(id))
return HAM_IGNORED

if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
{
if (sample[14] == 'd')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[0], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[0], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[0], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[0], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[0], volume, attn, flags, pitch)
}
else if (sample[14] == 'h')
{
if (sample[17] == 'w')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[3], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[3], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[3], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[3], volume, attn, flags, pitch)
if(g_has_knife5[id] )
emit_sound(id, channel, knife5_sounds[3], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[random_num(1,2)], volume, attn, flags, pitch)
}
}
else
{
if (sample[15] == 'l')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[4], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[4], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[4], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[4], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[4], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[5], volume, attn, flags, pitch)
if(g_has_knife2[id] )
emit_sound(id, channel, knife2_sounds[5], volume, attn, flags, pitch)
if(g_has_knife3[id] )
emit_sound(id, channel, knife3_sounds[5], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[5], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[5], volume, attn, flags, pitch)
}
}
return HAM_SUPERCEDE
}
return HAM_IGNORED
}

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

new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])

if (weapon == CSW_KNIFE && (g_has_knife2[id] || g_has_knife5[id]))
{
set_user_maxspeed(id, KNIFE2_SPEED)
}

if(weapon == CSW_KNIFE && (g_has_knife3[id] || g_has_knife5[id]))
{
if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
{
new flags = pev(id, pev_flags)
new waterlvl = pev(id, pev_waterlevel)

if (!(flags & FL_ONGROUND))
return FMRES_IGNORED

if (flags & FL_WATERJUMP)
return FMRES_IGNORED

if (waterlvl > 1)
return FMRES_IGNORED

new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)

fVelocity[2] += KNIFE3_JUMP

set_pev(id, pev_velocity, fVelocity)
set_pev(id, pev_gaitsequence, 6)
}
}
return FMRES_IGNORED
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_connected(attacker))
return HAM_IGNORED

new temp[2], weapon = get_user_weapon(attacker, temp[0], temp[1])

if(weapon == CSW_KNIFE && (g_has_knife4[attacker] || g_has_knife5[attacker]))
{
new Float:vec[3];
new Float:oldvelo[3];
pev(victim, pev_velocity, oldvelo);
create_velocity_vector(victim , attacker , vec);
vec[0] += oldvelo[0] + KNIFE4_KNOCK
vec[1] += oldvelo[1] + 0;
set_pev(victim, pev_velocity, vec);
}
return HAM_IGNORED
}

stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
if(!is_user_alive(attacker))
return 0;

new Float:vicorigin[3];
new Float:attorigin[3];
pev(victim, pev_origin , vicorigin);
pev(attacker, pev_origin , attorigin);

new Float:origin2[3]
origin2[0] = vicorigin[0] - attorigin[0];
origin2[1] = vicorigin[1] - attorigin[1];

new Float:largestnum = 0.0;

if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]);
if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);

origin2[0] /= largestnum;
origin2[1] /= largestnum;

if (g_has_knife4[attacker] || g_has_knife5[attacker])
{
velocity[0] = ( origin2[0] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
velocity[1] = ( origin2[1] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
}

if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
velocity[2] = random_float(200.0 , 275.0);

return 1;
}

Пробуй


Ошибка

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 16.3.2015, 20:54
Сообщение #11


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

Обычные варнинги из-за отступов. Не обращай на них внимание


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deltex
сообщение 16.3.2015, 20:56
Сообщение #12


Стаж: 14 лет

Сообщений: 694
Благодарностей: 407
Полезность: 794

Цитата(vovan4ik1997 @ 16.3.2015, 21:54) *
Обычные варнинги из-за отступов. Не обращай на них внимание


Не работает ограничение.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 16.3.2015, 23:45
Сообщение #13


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

vovan4ik1997, в начале раунда открывается меню и ты присваиваешь своей переменной значение 1, следовательно уже нельзя будет открыть меню по команде.
Либо вырезать код открытия в начале раунда и делать булевую переменную, либо оставлять твой вариант, но уже делать ограничен в 2 раза (1 раз на открытие в начале раунда, 2 раз по команде)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя deltex
сообщение 17.3.2015, 13:14
Сообщение #14


Стаж: 14 лет

Сообщений: 694
Благодарностей: 407
Полезность: 794

Кто-нибудь поможет? blush.gif

В данный код, добавить ограничение - использовать только 1 раз за раунд.
Код
Код:
#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN_NAME "[ZP]knife Menu"
#define PLUGIN_VERSION "2.2"
#define PLUGIN_AUTHOR "Mr.H"

new KNIFE1_V_MODEL[] = "models/zp_knife/razor/v_razor.mdl"
new KNIFE1_P_MODEL[] = "models/zp_knife/razor/p_razor.mdl"

new KNIFE2_V_MODEL[] = "models/zp_knife/combat/v_combat.mdl"
new KNIFE2_P_MODEL[] = "models/zp_knife/combat/p_combat.mdl"

new KNIFE3_V_MODEL[] = "models/zp_knife/katana/v_katana.mdl"
new KNIFE3_P_MODEL[] = "models/zp_knife/katana/p_katana.mdl"

new KNIFE4_V_MODEL[] = "models/zp_knife/strong/v_strong.mdl"
new KNIFE4_P_MODEL[] = "models/zp_knife/strong/p_strong.mdl"

new KNIFE5_V_MODEL[] = "models/zp_knife/kyvald/v_kyvald.mdl"
new KNIFE5_P_MODEL[] = "models/zp_knife/kyvald/p_kyvald.mdl"

new const knife1_sounds[][] =
{
"knife/razor/knife_draw.wav",
"knife/razor/knife_slash1.wav",
"knife/razor/knife_slash2.wav",
"knife/razor/knife_wall.wav",
"knife/razor/knife_miss.wav",
"knife/razor/knife_stab.wav"
}

new const knife2_sounds[][] =
{
"knife/combat/knife_draw.wav",
"knife/combat/knife_slash1.wav",
"knife/combat/knife_slash2.wav",
"knife/combat/knife_wall.wav",
"knife/combat/knife_miss.wav",
"knife/combat/hit_stab.wav"
}

new const knife3_sounds[][] =
{
"knife/katana/knife_draw.wav",
"knife/katana/knife_slash1.wav",
"knife/katana/knife_slash2.wav",
"knife/katana/hit_wall.wav",
"knife/katana/miss.wav",
"knife/katana/hit_stab.wav"
}

new const knife4_sounds[][] =
{
"knife/strong/knife_draw.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_slash1.wav",
"knife/strong/knife_wall.wav",
"knife/strong/knife_miss.wav",
"knife/strong/knife_stab.wav"
}

new const knife5_sounds[][] =
{
"knife/kyvald/knife_draw.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_slash1.wav",
"knife/kyvald/knife_miss.wav",
"knife/kyvald/knife_stab.wav"
}

#define KNIFE1_HEALTH 100
#define KNIFE2_SPEED 270.0
#define KNIFE3_JUMP 350
#define KNIFE4_KNOCK 8.0

new g_maxplayers
new timer[33]

new bool:g_has_knife1[33], bool:g_has_knife2[33], bool:g_has_knife3[33], bool:g_has_knife4[33], bool:g_has_knife5[33]

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_logevent("RoundStart", 2, "1=Round_Start")
register_event("CurWeapon", "Event_Curweapon", "be", "1=1")

register_forward(FM_EmitSound, "CEntity__EmitSound")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
register_clcmd("say /knife","Knifes_Menu" )

g_maxplayers = get_maxplayers()
}

public plugin_precache()
{
precache_model(KNIFE1_V_MODEL)
precache_model(KNIFE1_P_MODEL)
precache_model(KNIFE2_V_MODEL)
precache_model(KNIFE2_P_MODEL)
precache_model(KNIFE3_V_MODEL)
precache_model(KNIFE3_P_MODEL)
precache_model(KNIFE4_V_MODEL)
precache_model(KNIFE4_P_MODEL)
precache_model(KNIFE5_V_MODEL)
precache_model(KNIFE5_P_MODEL)

for(new i = 0; i < sizeof knife1_sounds; i++)
precache_sound(knife1_sounds[i])

for(new i = 0; i < sizeof knife2_sounds; i++)
precache_sound(knife2_sounds[i])

for(new i = 0; i < sizeof knife3_sounds; i++)
precache_sound(knife3_sounds[i])

for(new i = 0; i < sizeof knife4_sounds; i++)
precache_sound(knife4_sounds[i])

for(new i = 0; i < sizeof knife5_sounds; i++)
precache_sound(knife5_sounds[i])
}

public RoundStart()
{
for (new i = 1; i <= g_maxplayers; i++)
{
if(task_exists(i))
{
show_menu(i, 0, "^n", 1)
remove_task(i)
}
if (!is_user_alive(i))
continue;

Knifes_Menu(i)
}
}

public client_connect(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public client_disconnect(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public zp_user_infected_post(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public Knifes_Menu(id)
{
timer[id] = 15

set_task(1.0, "destroy_menu", id, _, _, "b")

new menu = menu_create("Меню ножей: ", "menu_keys")

menu_additem(menu, "\wРазор \d[+Здоровье]", "1", 0);
menu_additem(menu, "\wКомбат \d[Скорость+10]", "2", 0);
menu_additem(menu, "\wКатана \d[+350 Грава]", "3", 0);
menu_additem(menu, "\wСтронг \d[Отброс]", "4", 0);
menu_additem(menu, "\wМега Кувалба \d[Всё вместе]", "5", 0);

menu_display( id, menu, 0 );
return PLUGIN_HANDLED
}

public destroy_menu(id)
{
if (timer[id])
{
new text_timer[64]

formatex(text_timer, charsmax(text_timer), "Меню закроется через %d секунд", timer[id])

set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 0.0, 1.0, 1.0, 1.0)
show_hudmessage(id, text_timer)

--timer[id]
}
else
{
remove_task(id)
show_menu(id, 0, "^n", 1)
}
}

public menu_keys(id, menu, item)
{
if(item < 0)
return PLUGIN_CONTINUE

new cmd[2];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new choice = str_to_num(cmd)

switch (choice)
{
case 1:
{
buy_knife1(id)
}
case 2:
{
if (zp_get_user_zombie(id))
return PLUGIN_HANDLED;

buy_knife2(id)
}
case 3:
{
buy_knife3(id)
}
case 4:
{
buy_knife4(id)
}
case 5:
{
if (get_user_flags(id) & ADMIN_LEVEL_H)
buy_knife5(id)
else
Knifes_Menu(id)
}
}

emit_sound(id, CHAN_BODY, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

remove_task(id)
return PLUGIN_HANDLED;
}

public buy_knife1(id)
{
g_has_knife1[id] = true
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public buy_knife2(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = true
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife3(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = true
g_has_knife4[id] = false
g_has_knife5[id] = false
}

public buy_knife4(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = true
g_has_knife5[id] = false
}

public buy_knife5(id)
{
g_has_knife1[id] = false
g_has_knife2[id] = false
g_has_knife3[id] = false
g_has_knife4[id] = false
g_has_knife5[id] = true

set_user_health(id, get_user_health(id) + KNIFE1_HEALTH)
}

public Event_Curweapon(id)
{
if(get_user_weapon(id) != CSW_KNIFE)
return;

if (g_has_knife1[id])
{
set_pev(id, pev_viewmodel2, KNIFE1_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE1_P_MODEL)
}
else if (g_has_knife2[id])
{
set_pev(id, pev_viewmodel2, KNIFE2_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE2_P_MODEL)
}
else if (g_has_knife3[id])
{
set_pev(id, pev_viewmodel2, KNIFE3_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE3_P_MODEL)
}
else if (g_has_knife4[id])
{
set_pev(id, pev_viewmodel2, KNIFE4_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE4_P_MODEL)
}
else if (g_has_knife5[id])
{
set_pev(id, pev_viewmodel2, KNIFE5_V_MODEL)
set_pev(id, pev_weaponmodel2, KNIFE5_P_MODEL)
}

return;
}

public CEntity__EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
if (!is_user_connected(id))
return HAM_IGNORED

if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
{
if (sample[14] == 'd')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[0], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[0], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[0], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[0], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[0], volume, attn, flags, pitch)
}
else if (sample[14] == 'h')
{
if (sample[17] == 'w')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[3], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[3], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[3], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[3], volume, attn, flags, pitch)
if(g_has_knife5[id] )
emit_sound(id, channel, knife5_sounds[3], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[random_num(1,2)], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[random_num(1,2)], volume, attn, flags, pitch)
}
}
else
{
if (sample[15] == 'l')
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[4], volume, attn, flags, pitch)
if(g_has_knife2[id])
emit_sound(id, channel, knife2_sounds[4], volume, attn, flags, pitch)
if(g_has_knife3[id])
emit_sound(id, channel, knife3_sounds[4], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[4], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[4], volume, attn, flags, pitch)
}
else
{
if(g_has_knife1[id])
emit_sound(id, channel, knife1_sounds[5], volume, attn, flags, pitch)
if(g_has_knife2[id] )
emit_sound(id, channel, knife2_sounds[5], volume, attn, flags, pitch)
if(g_has_knife3[id] )
emit_sound(id, channel, knife3_sounds[5], volume, attn, flags, pitch)
if(g_has_knife4[id])
emit_sound(id, channel, knife4_sounds[5], volume, attn, flags, pitch)
if(g_has_knife5[id])
emit_sound(id, channel, knife5_sounds[5], volume, attn, flags, pitch)
}
}
return HAM_SUPERCEDE
}
return HAM_IGNORED
}

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

new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])

if (weapon == CSW_KNIFE && (g_has_knife2[id] || g_has_knife5[id]))
{
set_user_maxspeed(id, KNIFE2_SPEED)
}

if(weapon == CSW_KNIFE && (g_has_knife3[id] || g_has_knife5[id]))
{
if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
{
new flags = pev(id, pev_flags)
new waterlvl = pev(id, pev_waterlevel)

if (!(flags & FL_ONGROUND))
return FMRES_IGNORED

if (flags & FL_WATERJUMP)
return FMRES_IGNORED

if (waterlvl > 1)
return FMRES_IGNORED

new Float:fVelocity[3]
pev(id, pev_velocity, fVelocity)

fVelocity[2] += KNIFE3_JUMP

set_pev(id, pev_velocity, fVelocity)
set_pev(id, pev_gaitsequence, 6)
}
}
return FMRES_IGNORED
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_connected(attacker))
return HAM_IGNORED

new temp[2], weapon = get_user_weapon(attacker, temp[0], temp[1])

if(weapon == CSW_KNIFE && (g_has_knife4[attacker] || g_has_knife5[attacker]))
{
new Float:vec[3];
new Float:oldvelo[3];
pev(victim, pev_velocity, oldvelo);
create_velocity_vector(victim , attacker , vec);
vec[0] += oldvelo[0] + KNIFE4_KNOCK
vec[1] += oldvelo[1] + 0;
set_pev(victim, pev_velocity, vec);
}
return HAM_IGNORED
}

stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
if(!is_user_alive(attacker))
return 0;

new Float:vicorigin[3];
new Float:attorigin[3];
pev(victim, pev_origin , vicorigin);
pev(attacker, pev_origin , attorigin);

new Float:origin2[3]
origin2[0] = vicorigin[0] - attorigin[0];
origin2[1] = vicorigin[1] - attorigin[1];

new Float:largestnum = 0.0;

if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]);
if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);

origin2[0] /= largestnum;
origin2[1] /= largestnum;

if (g_has_knife4[attacker] || g_has_knife5[attacker])
{
velocity[0] = ( origin2[0] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
velocity[1] = ( origin2[1] * KNIFE4_KNOCK * 10000 ) / floatround(get_distance_f(vicorigin, attorigin));
}

if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
velocity[2] = random_float(200.0 , 275.0);

return 1;
}


Отредактировал: deltex, - 17.3.2015, 13:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 17.3.2015, 13:45
Сообщение #15


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Дома буду - сделаю. Надеюсь терпит до 11 по мск?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 17.3.2015, 14:19
Сообщение #16


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

deltex,
Код:
Openmenu[i] = 1
измени 1 на 2 и не надо будет ничего делать. Еще вчера отписался GOOD FELLOW


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя deltex
сообщение 17.3.2015, 16:55
Сообщение #17


Стаж: 14 лет

Сообщений: 694
Благодарностей: 407
Полезность: 794

Цитата(vovan4ik1997 @ 17.3.2015, 15:19) *
deltex,
Код:
Openmenu[i] = 1
измени 1 на 2 и не надо будет ничего делать. Еще вчера отписался GOOD FELLOW


Вчера вечером чёт тупил, возможно после перезаливки плагина забыл карту сменить.... Короче всё работает - код который скинул вованчик. Большое спасибо!)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: