Код:
#include < amxmodx >
#include < amxmisc >
#include < fun >
#include <fakemeta_util>
#include < hamsandwich >
#define PLUGIN "Knife Mod"
#define VERSION "0.2"
#define AUTHOR "CaNiBaL"
#define al(%1) is_user_alive(%1)
#define MAX_CHAR 512
#define KnifeVModel1 "models/knife_mod/v_knife_grav.mdl"
#define KnifeVModel2 "models/knife_mod/v_knife_speed.mdl"
#define KnifeVModel5 "models/knife_mod/v_knife_speed_grav.mdl"
#define KnifePModel1 "models/knife_mod/p_knife_grav.mdl"
#define KnifePModel2 "models/knife_mod/p_knife_speed.mdl"
#define KnifePModel5 "models/knife_mod/p_knife_speed_grav.mdl"
new iKey = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0
new cvar[33][4], onknife[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon", "onActiveWeapon", "be", "1=1")
register_forward(FM_EmitSound, "sound_emit")
register_menu("Menu Shop Player", iKey, "menu_shopmenu")
register_clcmd("knife", "knife_menu")
}
public plugin_precache()
{
precache_model(KnifeVModel1)
precache_model(KnifePModel1)
precache_model(KnifeVModel2)
precache_model(KnifePModel2)
precache_model(KnifeVModel5)
precache_model(KnifePModel5)
precache_model("models/v_knife.mdl")
precache_model("models/p_knife.mdl")
precache_sound("knife_mod/knife1/1.wav")
precache_sound("knife_mod/knife1/2.wav")
precache_sound("knife_mod/knife1/3.wav")
precache_sound("knife_mod/knife1/4.wav")
precache_sound("knife_mod/knife1/draw.wav")
precache_sound("knife_mod/knife2/1.wav")
precache_sound("knife_mod/knife2/2.wav")
precache_sound("knife_mod/knife2/3.wav")
precache_sound("knife_mod/knife2/4.wav")
precache_sound("knife_mod/knife2/draw.wav")
precache_sound("knife_mod/knife3/1.wav")
precache_sound("knife_mod/knife3/2.wav")
precache_sound("knife_mod/knife3/3.wav")
precache_sound("knife_mod/knife3/4.wav")
precache_sound("knife_mod/knife3/draw.wav")
precache_sound("knife_mod/knife4/1.wav")
precache_sound("knife_mod/knife4/2.wav")
precache_sound("knife_mod/knife4/3.wav")
precache_sound("knife_mod/knife4/4.wav")
precache_sound("knife_mod/knife4/draw.wav")
precache_sound("knife_mod/knife5/1.wav")
precache_sound("knife_mod/knife5/2.wav")
precache_sound("knife_mod/knife5/3.wav")
precache_sound("knife_mod/knife5/4.wav")
precache_sound("knife_mod/knife5/draw.wav")
}
public knife_menu( id )
{
static menu[ MAX_CHAR ] , iLen
iLen = 0
if(cvar[id][1])
iLen = formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\yKnife Mod^n\yНож: \rFlay^n\yСпособность: \rНизкая гравитация^n^n")
else if( cvar[id][2])
iLen = formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\yKnife Mod^n\yНож: \rSpeed^n\yСпособность: \rВысокая скорость^n^n")
else if( cvar[id][3] )
iLen = formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\yKnife Mod^n\yНож:\r Extra^n\yСпособность: \rГрав.+Скорость+Тихий Шаг^n^n")
else
iLen = formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\yKnife Mod^n\yНож: \rЕще не выбран^n\yСпособность: \rНету^n^n")
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r1. %s Flay \d[\rГравитация\d]^n" , !cvar[id][1] && al( id ) ? "\w" : "\d")
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r2. %s Speed \d[\rСкорость\d]^n" , !cvar[id][2] && al( id )? "\w" : "\d")
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r3. \wExtra \d[\rADMIN\d]^n^n" , !cvar[id][3])
iKey |= MENU_KEY_3
}
else
{
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r3. \dExtra [ADMIN]^n^n" , !cvar[id][3])
iKey &= ~MENU_KEY_3
}
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "^n\r0. \wЗакрыть" )
//Блокируем нажатия на клавиш.
!cvar[id][1] && al( id ) ? ( iKey |= MENU_KEY_1 ) : ( iKey &= ~MENU_KEY_1 )
!cvar[id][2] && al( id ) ? ( iKey |= MENU_KEY_2 ) : ( iKey &= ~MENU_KEY_2 )
al( id ) ? ( iKey |= MENU_KEY_9 ) : ( iKey &= ~MENU_KEY_9 )
show_menu( id , iKey , menu , -1 , "Menu Shop Player" )
return PLUGIN_CONTINUE
}
public menu_shopmenu(id, key)
{
switch(key)
{
case 0:
{
if( cvar[id][2] || cvar[id][3])
{
cvar[id][2] = false
cvar[id][3] = false
fm_set_user_maxspeed(id, 250.0)
set_user_footsteps(id, 0)
}
cvar[id][1] = true
onknife[id] = true
if(get_user_weapon(id) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, KnifeVModel1)
set_pev(id, pev_weaponmodel2, KnifePModel1)
fm_set_user_gravity(id, 0.4)
onActiveWeapon(id)
}
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(200)
write_byte(0)
write_byte(75)
message_end()
}
case 1:
{
if( cvar[id][1] || cvar[id][3])
{
cvar[id][1] = false
cvar[id][3] = false
set_user_footsteps(id, 0)
fm_set_user_gravity(id, 1.0)
}
cvar[id][2] = true
onknife[id] = true
if(get_user_weapon(id) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, KnifeVModel2)
set_pev(id, pev_weaponmodel2, KnifePModel2)
fm_set_user_maxspeed(id, 550.0)
onActiveWeapon(id)
}
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(200)
write_byte(50)
write_byte(75)
message_end()
}
case 2:
{
if( cvar[id][1] || cvar[id][2])
{
cvar[id][1] = false
cvar[id][2] = false
}
cvar[id][3] = true
onknife[id] = true
if(get_user_weapon(id) == CSW_KNIFE && get_user_flags(id) & ADMIN_LEVEL_H)
{
set_pev(id, pev_viewmodel2, KnifeVModel5)
set_pev(id, pev_weaponmodel2, KnifePModel5)
fm_set_user_gravity(id, 0.4)
fm_set_user_maxspeed(id, 550.0)
set_user_footsteps(id, 1)
onActiveWeapon(id)
}
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(90)
write_byte(90)
write_byte(0)
message_end()
}
}
}
public onActiveWeapon(id)
{
if(!is_user_alive(id))
return
if(cvar[id][1] && get_user_weapon(id) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, KnifeVModel1)
set_pev(id, pev_weaponmodel2, KnifePModel1)
fm_set_user_gravity(id, 0.4)
}
else if(cvar[id][2] && get_user_weapon(id) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, KnifeVModel2)
set_pev(id, pev_weaponmodel2, KnifePModel2)
fm_set_user_maxspeed(id, 550.0)
}
else if(cvar[id][3] && get_user_weapon(id) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, KnifeVModel5)
set_pev(id, pev_weaponmodel2, KnifePModel5)
fm_set_user_maxspeed(id, 550.0)
fm_set_user_gravity(id, 0.4)
set_user_footsteps(id, 1)
}
else
{
fm_set_user_maxspeed(id, 250.0)
fm_set_user_gravity(id, 1.0)
set_user_footsteps(id, 0)
remove_task(id)
}
}
public sound_emit(id, channel, sample[])
{
new mode[33];
get_cvar_string("deathrun_mode", mode, 32);
if(equal(mode, "DUEL") || !is_user_alive(id) || !onknife[id] )
return PLUGIN_HANDLED
if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
{
if (sample[14] == 'd')
{
if(cvar[id][1])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife1/draw.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][2])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife2/draw.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][3])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife5/draw.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
}
else if (sample[14] == 'h')
{
if (sample[17] == 'w')
{
if(cvar[id][1])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife1/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][2])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife2/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][3])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife5/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
}
else
{
if(cvar[id][1])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife1/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][2])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife2/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][3])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife5/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
}
}
else
{
if (sample[15] == 'l')
{
if(cvar[id][1])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife1/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][2])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife2/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][3])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife5/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
}
else if(sample[17] == 'b')
{
if(cvar[id][1])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife1/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][2])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife2/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
if(cvar[id][3])
emit_sound(id, CHAN_WEAPON, "knife_mod/knife5/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
}
}
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
Теперь работает, еще поправил пункт с админским ножом, а то он не блокировался если у игрока нету флага t
Отредактировал: kokc, - 12.4.2015, 8:05