-   
- #include <amxmodx> 
- #include <cstrike> 
- #include <engine> 
- #include <fakemeta> 
- #include <fun> 
- #include <hamsandwich> 
- #include <zombieplague> 
-   
- #define KNIFE_NAME                                                              ARRAY_knife_name[knife] 
- #define KNIFE_DESC                                                              ARRAY_knife_desc[knife] 
- #define KNIFE_SPEED                                                             ARRAY_knife_speed[knife] 
- #define KNIFE_GRAV                                                              ARRAY_knife_grav[knife] 
- #define KNIFE_JUMP                                                              ARRAY_knife_jump[knife] 
- #define KNIFE_KNOCK                                                             ARRAY_knife_knock[knife] 
- #define KNIFE_DMG                                                               ARRAY_knife_dmg[knife] 
- #define KNIFE_PRIMATTRATE                                               ARRAY_knife_primattrate[knife] 
- #define KNIFE_SECATTRATE                                                ARRAY_knife_secattrate[knife] 
- #define KNIFE_FLAGS                                                             ARRAY_knife_flags[knife] 
- #define KNIFE_HITSOUNDS                                                 ARRAY_knife_hitsounds[knife] 
- #define KNIFE_SLASHSOUNDS                                               ARRAY_knife_slashsounds[knife] 
- #define KNIFE_MODEL_V                                                   ARRAY_knife_model_v[knife] 
- #define KNIFE_MODEL_P                                                   ARRAY_knife_model_p[knife] 
- #define KNIFE_SOUND_DEPLOY                                              ARRAY_knife_sound_deploy[knife] 
- #define KNIFE_SOUND_HIT(%1)                                             ARRAY_knife_sound_hit[knife][%1] 
- #define KNIFE_SOUND_HITWALL                                             ARRAY_knife_sound_hitwall[knife] 
- #define KNIFE_SOUND_SLASH(%1)                                   ARRAY_knife_sound_slash[knife][%1] 
- #define KNIFE_SOUND_STAB                                                ARRAY_knife_sound_stab[knife] 
- #define KNIFE_SAVED_AUTHID                                              ARRAY_knife_saved_authid[i] 
- #define KNIFE_SAVED_ID                                                  ARRAY_knife_saved_id[i] 
- #define KNIFES_TOTAL                                                    INT_knifes_total 
- #define KNIFES_TOTAL_SAVED                                              INT_knifes_total_saved 
- #define KNIFE_SURV                                                              INT_knife_surv 
- #define KNIFE_USER(%1)                                                  PSZ_knife{%1} 
-   
- #define KNIFE_SURVIVOR                                                  9 
-   
- #define USE_STOPPED                                                             0 
-   
- #define m_pPlayer                                                               41 
- #define m_flNextPrimaryAttack                                   46 
- #define m_flNextSecondaryAttack                                 47 
-   
- #define m_pActiveItem                                                   373 
-   
- #define LINUXDIFF                                                               5 
- #define LINUXDIFFWEAP                                                   4 
-   
- #define get_user_weapon_entity(%1)                              get_pdata_cbase(%1, m_pActiveItem, LINUXDIFF) 
- #define get_weapon_owner(%1)                                    get_pdata_cbase(%1, m_pPlayer, LINUXDIFFWEAP) 
- #define get_weapon_nextprimatt(%1)                              get_pdata_float(%1, m_flNextPrimaryAttack, LINUXDIFFWEAP) 
- #define get_weapon_nextsecatt(%1)                               get_pdata_float(%1, m_flNextSecondaryAttack, LINUXDIFFWEAP) 
- #define set_weapon_nextprimatt(%1,%2)                   set_pdata_float(%1, m_flNextPrimaryAttack, %2, LINUXDIFFWEAP) 
- #define set_weapon_nextsecatt(%1,%2)                    set_pdata_float(%1, m_flNextSecondaryAttack, %2, LINUXDIFFWEAP) 
-   
- #define register_menu(%1,%2,%3)                                 register_menucmd(register_menuid(%1), %2, %3) 
-   
- #define MENU_KNIFES_KEYS                                                MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_9 | MENU_KEY_0 
- #define MENU_KNIFES                                                             "/knife" 
-   
- new PSZ_knife[33 char] 
-   
- new Float:ARRAY_knife_speed[10] 
- new Float:ARRAY_knife_grav[10] 
- new Float:ARRAY_knife_jump[10] 
- new Float:ARRAY_knife_knock[10] 
- new Float:ARRAY_knife_dmg[10] 
- new Float:ARRAY_knife_primattrate[10] 
- new Float:ARRAY_knife_secattrate[10] 
- new ARRAY_knife_flags[10] 
- new ARRAY_knife_hitsounds[10] 
- new ARRAY_knife_slashsounds[10] 
- new ARRAY_knife_name[10][64] 
- new ARRAY_knife_desc[10][64] 
- new ARRAY_knife_model_v[10][64] 
- new ARRAY_knife_model_p[10][64] 
- new ARRAY_knife_sound_deploy[10][64] 
- new ARRAY_knife_sound_hit[10][4][64] 
- new ARRAY_knife_sound_hitwall[10][64] 
- new ARRAY_knife_sound_slash[10][2][64] 
- new ARRAY_knife_sound_stab[10][64] 
- new ARRAY_knife_saved_authid[1024][32] 
- new ARRAY_knife_saved_id[1024] 
-   
- new INT_knifes_total 
- new INT_knifes_total_saved 
- new INT_knife_surv 
-   
- new Float:FL_gravity 
- new Float:FL_gravity_surv 
-   
- public plugin_precache() 
- { 
-         register_srvcmd("register_knife", "SRVCMD__register_knife") 
-          
-         server_cmd("exec addons/amxmodx/configs/cso_knifes.cfg") 
-         server_exec() 
- } 
-   
- public SRVCMD__register_knife() 
- { 
-         new data[17][64] 
-         read_argv(1, data[0], 63) 
-         read_argv(2, data[1], 63) 
-         read_argv(3, data[2], 63) 
-         read_argv(4, data[3], 63) 
-         read_argv(5, data[4], 63) 
-         read_argv(6, data[5], 63) 
-         read_argv(7, data[6], 63) 
-         read_argv(8, data[7], 63) 
-         read_argv(9, data[8], 63) 
-         read_argv(10, data[9], 63) 
-         read_argv(11, data[10], 63) 
-         read_argv(12, data[11], 63) 
-         read_argv(13, data[12], 63) 
-         read_argv(14, data[13], 63) 
-         read_argv(15, data[14], 63) 
-         read_argv(16, data[15], 63) 
-         read_argv(17, data[16], 63) 
-          
-         for (new i = 0; i < 17; i++) remove_quotes(data[i]) 
-          
-         new knife 
-         (data[9][0] == 'S') ? (knife = KNIFE_SURVIVOR) : (knife = KNIFES_TOTAL) 
-          
-         formatex(KNIFE_NAME, 63, data[0]) 
-         formatex(KNIFE_DESC, 63, data[1]) 
-         KNIFE_SPEED = floatstr(data[2]) 
-         KNIFE_GRAV = floatstr(data[3]) 
-         KNIFE_JUMP = floatstr(data[4]) 
-         KNIFE_KNOCK = floatstr(data[5]) 
-         KNIFE_DMG = floatstr(data[6]) 
-         KNIFE_PRIMATTRATE = floatstr(data[7]) 
-         KNIFE_SECATTRATE = floatstr(data[8]) 
-         if (data[9][0] > 0 && knife != KNIFE_SURVIVOR) KNIFE_FLAGS = read_flags(data[9]) 
-          
-         formatex(KNIFE_MODEL_V, 63, data[10]) 
-         precache_model(KNIFE_MODEL_V) 
-         formatex(KNIFE_MODEL_P, 63, data[11]) 
-         precache_model(KNIFE_MODEL_P) 
-         formatex(KNIFE_SOUND_DEPLOY, 63, data[12]) 
-         precache_sound(KNIFE_SOUND_DEPLOY) 
-         if (containi(data[13], ",") != -1) 
-         { 
-                 KNIFE_HITSOUNDS = 2 
-                 strtok(data[13], KNIFE_SOUND_HIT(0), 63, KNIFE_SOUND_HIT(1), 63, ',') 
-                 precache_sound(KNIFE_SOUND_HIT(0)) 
-                 precache_sound(KNIFE_SOUND_HIT(1)) 
-         } 
-         else 
-         { 
-                 KNIFE_HITSOUNDS = 1 
-                 formatex(KNIFE_SOUND_HIT(0), 63, data[13]) 
-                 precache_sound(KNIFE_SOUND_HIT(0)) 
-         } 
-         formatex(KNIFE_SOUND_HITWALL, 63, data[14]) 
-         precache_sound(KNIFE_SOUND_HITWALL) 
-         if (containi(data[15], ",") != -1) 
-         { 
-                 KNIFE_SLASHSOUNDS = 2 
-                 strtok(data[15], KNIFE_SOUND_SLASH(0), 63, KNIFE_SOUND_SLASH(1), 63, ',') 
-                 precache_sound(KNIFE_SOUND_SLASH(0)) 
-                 precache_sound(KNIFE_SOUND_SLASH(1)) 
-         } 
-         else 
-         { 
-                 KNIFE_SLASHSOUNDS = 1 
-                 formatex(KNIFE_SOUND_SLASH(0), 63, data[15]) 
-                 precache_sound(KNIFE_SOUND_SLASH(0)) 
-         } 
-         formatex(KNIFE_SOUND_STAB, 63, data[16]) 
-         precache_sound(KNIFE_SOUND_STAB) 
-          
-         if (knife != KNIFE_SURVIVOR) KNIFES_TOTAL++ 
-         else KNIFE_SURV = 1 
- } 
-   
- public plugin_init() 
- { 
-         register_plugin("[CSO] Knifes", "Omega", "WPMG Team") 
-          
-         RegisterHam(Ham_Spawn,                                  "player",                       "CPlayer__Spawn_Post",                  1) 
-         RegisterHam(Ham_Item_Deploy,                    "weapon_knife",         "CKNIFE__Deploy_Post",                  1) 
-         RegisterHam(Ham_Use,                                    "func_tank",            "CStationary__Use_Post",                1) 
-         RegisterHam(Ham_Use,                                    "func_tankmortar",      "CStationary__Use_Post",                1) 
-         RegisterHam(Ham_Use,                                    "func_tankrocket",      "CStationary__Use_Post",                1) 
-         RegisterHam(Ham_Use,                                    "func_tanklaser",       "CStationary__Use_Post",                1) 
-         RegisterHam(Ham_Weapon_PrimaryAttack,   "weapon_knife",         "CKNIFE__PrimaryAttack_Post",   1) 
-         RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife",         "CKNIFE__SecondaryAttack_Post", 1) 
-         RegisterHam(Ham_TakeDamage,                             "player",                       "CPlayer__TakeDamage") 
-         RegisterHam(Ham_TakeDamage,                             "player",                       "CPlayer__TakeDamage_Post",             1) 
-         RegisterHam(Ham_Player_PreThink,                "player",                       "CPlayer__PreThink") 
-          
-         register_forward(FM_EmitSound,                                                          "CEntity__EmitSound") 
-          
-         register_srvcmd("load_knife", "SRVCMD__load_knife") 
-         register_clcmd("say /knife", "CMD__knife") 
-          
-         register_menu(MENU_KNIFES, MENU_KNIFES_KEYS, "MENU__Knifes") 
- } 
-   
- public plugin_cfg() 
- { 
-         server_cmd("exec addons/amxmodx/configs/zombieplague.cfg") 
-         server_cmd("exec addons/amxmodx/configs/cso_knifes_saved.cfg") 
-         server_exec() 
-          
-         FL_gravity = get_cvar_float("zp_human_gravity") 
-         FL_gravity_surv = get_cvar_float("zp_surv_gravity") 
- } 
-   
- public client_putinserver(id) 
- { 
-         KNIFE_USER(id) = 0 
-          
-         new authid[32] 
-         get_user_authid(id, authid, 31) 
-          
-         if (authid[5] != '_' || authid[6] == 'I') get_user_ip(id, authid, 31, 1) 
-          
-         for (new i = 0; i < KNIFES_TOTAL_SAVED; i++) 
-         { 
-                 if (equal(authid, KNIFE_SAVED_AUTHID)) 
-                 { 
-                         new knife = KNIFE_SAVED_ID 
-                         (KNIFE_FLAGS > 0) ? (get_user_flags(id) & KNIFE_FLAGS) ? (KNIFE_USER(id) = knife) : (KNIFE_USER(id) = 0) : (KNIFE_USER(id) = knife) 
-                         break 
-                 } 
-         } 
- } 
-   
- public client_disconnect(id) 
- { 
-         new authid[32], i 
-         get_user_authid(id, authid, 31) 
-          
-         if (authid[5] != '_' || authid[6] == 'I') get_user_ip(id, authid, 31, 1) 
-          
-         for (i = 0; i < KNIFES_TOTAL_SAVED; i++) 
-         { 
-                 if (equal(authid, KNIFE_SAVED_AUTHID)) 
-                 { 
-                         KNIFE_SAVED_ID = KNIFE_USER(id) 
-                         return 
-                 } 
-         } 
-          
-         i = KNIFES_TOTAL_SAVED 
-          
-         formatex(KNIFE_SAVED_AUTHID, 31, authid) 
-         KNIFE_SAVED_ID = KNIFE_USER(id) 
-         KNIFES_TOTAL_SAVED++ 
- } 
-   
- public plugin_end() 
- { 
-         delete_file("addons/amxmodx/configs/cso_knifes_saved.cfg") 
-          
-         new file, data[64], i 
-         file = fopen("addons/amxmodx/configs/cso_knifes_saved.cfg", "at") 
-          
-         for (i = 0; i < KNIFES_TOTAL_SAVED; i++) 
-         { 
-                 formatex(data, 63, "load_knife ^"%s^" ^"%d^"^n", KNIFE_SAVED_AUTHID, KNIFE_SAVED_ID) 
-                 fputs(file, data) 
-         } 
-          
-         fclose(file) 
- } 
-   
- public SRVCMD__load_knife() 
- { 
-         new data[2][32], i 
-         read_argv(1, data[0], 31) 
-         read_argv(2, data[1], 31) 
-         for (i = 0; i < 2; i++) remove_quotes(data[i]) 
-          
-         i = KNIFES_TOTAL_SAVED 
-          
-         formatex(KNIFE_SAVED_AUTHID, 31, data[0]) 
-         KNIFE_SAVED_ID = str_to_num(data[1]) 
-         KNIFES_TOTAL_SAVED++ 
- } 
-   
- public CPlayer__Spawn_Post(id) 
- { 
-         if (!is_user_alive(id)) return 
-         if (zp_get_user_zombie(id)) return 
-          
-         new entity = get_user_weapon_entity(id) 
-          
-         if (!is_valid_ent(entity)) return 
-         if (cs_get_weapon_id(entity) != CSW_KNIFE) return 
-          
-         FUNC__replace_knife_models(id) 
- } 
-   
- public CKNIFE__Deploy_Post(entity) 
- { 
-         if (cs_get_weapon_id(entity) != CSW_KNIFE) return 
-          
-         new id = get_weapon_owner(entity) 
-          
-         if (zp_get_user_zombie(id)) return 
-          
-         FUNC__replace_knife_models(id) 
- } 
-   
- public CStationary__Use_Post(entity, caller, activator, use_type) 
- { 
-         if (use_type != USE_STOPPED) return 
-         if (!is_user_connected(caller)) return 
-         if (zp_get_user_zombie(caller)) return 
-         if (get_user_weapon(caller) != CSW_KNIFE) return 
-          
-         FUNC__replace_knife_models(caller) 
- } 
-   
- public CKNIFE__PrimaryAttack_Post(entity) 
- { 
-         new id = get_weapon_owner(entity) 
-          
-         if (zp_get_user_zombie(id)) return 
-          
-         new knife 
-         (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id)) 
-          
-         set_weapon_nextprimatt(entity, get_weapon_nextprimatt(entity) * KNIFE_PRIMATTRATE) 
-         set_weapon_nextsecatt(entity, get_weapon_nextsecatt(entity) * KNIFE_PRIMATTRATE) 
- } 
-   
- public CKNIFE__SecondaryAttack_Post(entity) 
- { 
-         new id = get_weapon_owner(entity) 
-          
-         if (zp_get_user_zombie(id)) return 
-          
-         new knife 
-         (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id)) 
-          
-         set_weapon_nextprimatt(entity, get_weapon_nextprimatt(entity) * KNIFE_SECATTRATE) 
-         set_weapon_nextsecatt(entity, get_weapon_nextsecatt(entity) * KNIFE_SECATTRATE) 
- } 
-   
- public CPlayer__TakeDamage(victim, inflictor, attacker, Float:damage) 
- { 
-         if (inflictor != attacker || victim == attacker) return 
-         if (!is_user_connected(attacker)) return 
-         if (zp_get_user_zombie(attacker)) return 
-         if (get_user_weapon(attacker) != CSW_KNIFE) return 
-          
-         new knife 
-         (KNIFE_SURV && zp_get_user_survivor(attacker)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(attacker)) 
-          
-         SetHamParamFloat(4, damage * KNIFE_DMG) 
- } 
-   
- public CPlayer__TakeDamage_Post(victim, inflictor, attacker, Float:damage) 
- { 
-         if (inflictor != attacker || victim == attacker) return 
-         if (!is_user_connected(attacker)) return 
-         if (zp_get_user_zombie(attacker)) return 
-         if (get_user_weapon(attacker) != CSW_KNIFE) return 
-          
-         client_print(attacker, print_center, "%d", floatround(damage, floatround_floor)) 
-          
-         new Float:velocity[3], Float:newvelocity[3] 
-         entity_get_vector(victim, EV_VEC_velocity, velocity) 
-          
-         new Float:victim_origin[3], Float:attacker_origin[3] 
-         entity_get_vector(victim, EV_VEC_origin, victim_origin) 
-         entity_get_vector(attacker, EV_VEC_origin, attacker_origin) 
-          
-         newvelocity[0] = victim_origin[0] - attacker_origin[0] 
-         newvelocity[1] = victim_origin[1] - attacker_origin[1] 
-          
-         new Float:largestnum = 0.0 
-          
-         if (0 <= floatcmp(floatabs(newvelocity[0]), floatabs(newvelocity[1])) <= 1) 
-         { 
-                 if (floatabs(newvelocity[0]) > 0) largestnum = floatabs(newvelocity[0]) 
-         } 
-         else 
-         { 
-                 if (floatabs(newvelocity[1]) > 0) largestnum = floatabs(newvelocity[1]) 
-         } 
-          
-         newvelocity[0] /= largestnum 
-         newvelocity[1] /= largestnum 
-          
-         new knife 
-         (KNIFE_SURV && zp_get_user_survivor(attacker)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(attacker)) 
-          
-         velocity[0] = newvelocity[0] * KNIFE_KNOCK * 3000 / get_distance_f(victim_origin, attacker_origin) 
-         velocity[1] = newvelocity[1] * KNIFE_KNOCK * 3000 / get_distance_f(victim_origin, attacker_origin) 
-         if(newvelocity[0] <= 20.0 || newvelocity[1] <= 20.0) 
-                 newvelocity[2] = random_float(200.0 , 275.0) 
-          
-         newvelocity[0] += velocity[0] 
-         newvelocity[1] += velocity[1] 
-         entity_set_vector(victim, EV_VEC_velocity, newvelocity) 
- } 
-   
- public CPlayer__PreThink(id) 
- { 
-         if (!is_user_alive(id)) return 
-         if (zp_get_user_zombie(id)) return 
-         if (get_user_weapon(id) != CSW_KNIFE) 
-         { 
-                 if (zp_get_user_survivor(id)) set_user_gravity(id, FL_gravity_surv) 
-                 else set_user_gravity(id, FL_gravity) 
-                 return 
-         } 
-          
-         new knife 
-         (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id)) 
-          
-         set_user_maxspeed(id, KNIFE_SPEED) 
-         set_user_gravity(id, KNIFE_GRAV) 
-          
-         if (!(entity_get_int(id, EV_INT_button) & IN_JUMP)) return 
-         if (entity_get_int(id, EV_INT_oldbuttons) & IN_JUMP) return 
-          
-         new flags = entity_get_int(id, EV_INT_flags) 
-          
-         if (!(flags & FL_ONGROUND)) return 
-         if (flags & FL_WATERJUMP) return 
-         if (entity_get_int(id, EV_INT_waterlevel) > 1) return 
-          
-         new Float:velocity[3] 
-         entity_get_vector(id, EV_VEC_velocity, velocity) 
-          
-         velocity[2] += KNIFE_JUMP 
-         entity_set_vector(id, EV_VEC_velocity, velocity) 
-         entity_set_int(id, EV_INT_gaitsequence, 6) 
- } 
-   
- public CEntity__EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch) 
- { 
-         if (!is_user_connected(id)) return FMRES_IGNORED 
-         if (zp_get_user_zombie(id)) return FMRES_IGNORED 
-          
-         if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i') 
-         { 
-                 new knife 
-                 (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id)) 
-                 if (sample[14] == 'd') emit_sound(id, channel, KNIFE_SOUND_DEPLOY, volume, attn, flags, pitch) 
-                 else if (sample[14] == 'h') 
-                 { 
-                         if (sample[17] == 'w') emit_sound(id, channel, KNIFE_SOUND_HITWALL, volume, attn, flags, pitch) 
-                         else emit_sound(id, channel, (KNIFE_HITSOUNDS > 1) ? KNIFE_SOUND_HIT(random_num(0, 1)) : KNIFE_SOUND_HIT(0), volume, attn, flags, pitch) 
-                 } 
-                 else 
-                 { 
-                         if (sample[15] == 'l') emit_sound(id, channel, (KNIFE_SLASHSOUNDS > 1) ? KNIFE_SOUND_SLASH(random_num(0, 1)) : KNIFE_SOUND_SLASH(0), volume, attn, flags, pitch) 
-                         else emit_sound(id, channel, KNIFE_SOUND_STAB, volume, attn, flags, pitch) 
-                 } 
-                 return FMRES_SUPERCEDE 
-         } 
-          
-         return FMRES_IGNORED 
- } 
-   
- public CMD__knife(id) 
- { 
-         if (zp_has_round_started() == 1) return PLUGIN_HANDLED 
-         return SHOWMENU__Knifes(id) 
- } 
-   
- public SHOWMENU__Knifes(id) 
- { 
-         new len, menu[500], keys, flags 
-         len += formatex(menu, 499, "\yВыбор ножа:^n^n") 
-         flags = get_user_flags(id) 
-          
-         for (new knife = 0; knife < KNIFES_TOTAL; knife++) 
-         { 
-                 if (KNIFE_FLAGS) 
-                 { 
-                         if (flags & KNIFE_FLAGS) 
-                         { 
-                                 keys |= (1 << knife) 
-                                 if (KNIFE_USER(id) == knife) len += formatex(menu[len], 499 - len, "\r%d.\d %s %s^n", knife + 1, KNIFE_NAME, KNIFE_DESC) 
-                                 else len += formatex(menu[len], 499 - len, "\r%d.\w %s \r%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC) 
-                         } 
-                         else 
-                                 len += formatex(menu[len], 499 - len, "\d%d. %s \r%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC) 
-                 } 
-                 else 
-                 { 
-                         keys |= (1 << knife) 
-                         if (KNIFE_USER(id) == knife) len += formatex(menu[len], 499 - len, "\r%d.\d %s %s^n", knife + 1, KNIFE_NAME, KNIFE_DESC) 
-                         else len += formatex(menu[len], 499 - len, "\r%d.\w %s \w%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC) 
-                 } 
-         } 
-          
-         keys |= MENU_KEY_0 
-         len += formatex(menu[len], 499 - len, "^n\r0.\w Выход") 
-          
-         return show_menu(id, keys, menu, -1, MENU_KNIFES) 
- } 
-   
- public MENU__Knifes(id, key) 
- { 
-         if (zp_has_round_started() == 1) return PLUGIN_HANDLED 
-         if (key != 9) 
-                 if (KNIFE_USER(id) != key) 
-                 { 
-                         KNIFE_USER(id) = key 
-                         if (is_user_alive(id) && !zp_get_user_zombie(id)) 
-                                 if (get_user_weapon(id) == CSW_KNIFE) 
-                                         FUNC__replace_knife_models(id) 
-                 } 
-         return PLUGIN_HANDLED 
- } 
-   
- public FUNC__replace_knife_models(id) 
- { 
-         new knife 
-         (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id)) 
-          
-         entity_set_string(id, EV_SZ_viewmodel, KNIFE_MODEL_V) 
-         entity_set_string(id, EV_SZ_weaponmodel, KNIFE_MODEL_P) 
- } 
-