Raised This Month: $51 Target: $400
 12% 

ZP Knife Menu


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
RBE sLayeR
Member
Join Date: Jul 2019
Location: Republic of Kosovo
Old 08-25-2019 , 11:40   ZP Knife Menu
Reply With Quote #1

I had a request for a knife menu but deleted because it had many bugs
__________________
Copy-and-Paste was programmed by programmers for programmers actually

Last edited by RBE sLayeR; 08-25-2019 at 12:53.
RBE sLayeR is offline
LearninG
Senior Member
Join Date: Apr 2019
Location: Iran
Old 08-25-2019 , 13:28   Re: ZP Knife Menu
Reply With Quote #2

( just in case you want to use it again )
I just added gravity + all warnings fixed (over 80 warnings)
Cvars:
PHP Code:
// [0.5 = 400] [1 = 800] [0.1 = 100] .....
zp_axe_gravity  "0.5"
zp_strong_gravity  "0.5" 
zp_combat_gravity  "0.5"
zp_hammer_gravity  "0.5"
zp_saxe_gravity  "0.5"
zp_knife6_gravity "0.5"
zp_knife7_gravity  "0.5"
zp_axe_surv_gravity  "0.5" 
Full source :
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <fakemeta>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

//native is_chainsaw(id)
//native set_knife(id, num)
//native get_balrog9(id)

#define TASK_FBURN                100
#define ID_FBURN                ( taskid - TASK_FBURN )

#define TASK_FBURN1                100
#define ID_FBURN1                ( taskid - TASK_FBURN )

#define TASK_FBURN2                100
#define ID_FBURN2                ( taskid - TASK_FBURN )

#define TASK_FBURN3                   100
#define ID_FBURN3                ( taskid - TASK_FBURN )

#define TASK_FBURN4                   100
#define ID_FBURN4                ( taskid - TASK_FBURN )

#define TASK_FBURN5                   100
#define ID_FBURN5                ( taskid - TASK_FBURN )

#define TASK_FBURN6                   100
#define ID_FBURN6                ( taskid - TASK_FBURN )

#define TASK_FBURN7                   100
#define ID_FBURN7                ( taskid - TASK_FBURN )


#define MAX_CLIENTS                32

new bool:g_fRoundEnd

#define FIRE_DURATION            5
#define FIRE_DAMAGE                50

#define FIRE_DURATION1            5
#define FIRE_DAMAGE1                150

#define FIRE_DURATION2            5
#define FIRE_DAMAGE2              150

#define FIRE_DURATION3            5
#define FIRE_DAMAGE3              150

#define FIRE_DURATION4            5
#define FIRE_DAMAGE4              150

#define FIRE_DURATION5            5
#define FIRE_DAMAGE5              150

#define FIRE_DURATION6            5
#define FIRE_DAMAGE6              150

#define FIRE_DURATION7            5
#define FIRE_DAMAGE7              150

new g_flameSprg_flameSpr1g_flameSpr2g_flameSpr3g_flameSpr4g_flameSpr5g_flameSpr6g_flameSpr7g_smokeSprg_burning_durationMAX_CLIENTS ], g_burning_duration1MAX_CLIENTS ], g_burning_duration2MAX_CLIENTS ], g_burning_duration3MAX_CLIENTS ], g_burning_duration4MAX_CLIENTS ], g_burning_duration5MAX_CLIENTS ], g_burning_duration6MAX_CLIENTS ], g_burning_duration7MAX_CLIENTS ]

new 
sMsgScreenFade 
   
const RED 255  
const GREEN 0    
const BLUE 212  
const ALPHA 100   

#define PLUGIN    "[ZP]Knifes Menu"
#define VERSION    "1.0"
#define AUTHOR    "LuXo"

#define VIP        ADMIN_LEVEL_B
#define ADMIN    ADMIN_LEVEL_F
#define BOSS    ADMIN_LEVEL_F
#define GLADMIN ADMIN_LEVEL_G
#pragma tabsize 0

new KNIFE1_V_MODEL[] = "models/KnifeMenu/v_knife3.mdl"
new KNIFE1_P_MODEL[] = "models/KnifeMenu/p_knife3.mdl"

new KNIFE2_V_MODEL[] = "models/KnifeMenu/v_knife1.mdl"
new KNIFE2_P_MODEL[] = "models/KnifeMenu/p_knife1.mdl"

new KNIFE6_V_MODEL[] = "models/KnifeMenu/v_knife2.mdl"
new KNIFE6_P_MODEL[] = "models/KnifeMenu/p_knife2.mdl"

new KNIFE3_V_MODEL[] = "models/KnifeMenu/v_knife4.mdl"
new KNIFE3_P_MODEL[] = "models/KnifeMenu/p_knife4.mdl"

new KNIFE4_V_MODEL[] =  "models/KnifeMenu/v_knife8.mdl"
new KNIFE4_P_MODEL[] =  "models/KnifeMenu/p_knife8.mdl"

new KNIFE5_V_MODEL[] = "models/KnifeMenu/v_knife9.mdl"
new KNIFE5_P_MODEL[] = "models/KnifeMenu/p_knife9.mdl"

new KNIFE7_V_MODEL[] =  "models/KnifeMenu/v_knife6.mdl"
new KNIFE7_P_MODEL[] =  "models/KnifeMenu/p_knife6.mdl"

new KNIFESURV_V_MODEL[] = "models/KnifeMenu/v_knife7.mdl"
new KNIFESURV_P_MODEL[] = "models/KnifeMenu/p_knife7.mdl"


new bool:g_has_axe[33]
new 
bool:g_has_strong[33]
new 
bool:g_has_combat[33]
new 
bool:g_has_hammer[33]
new 
bool:g_has_saxe[33]
new 
bool:g_has_knife6[33]
new 
bool:g_has_knife7[33]
new 
bool:g_has_survivoraxe[33]

new 
cvar_knock_axecvar_speed_axecvar_damage_axecvar_damage_axe_nemesis
new /*cvar_jump_strong,*/ cvar_knock_strongcvar_speed_strongcvar_damage_strong
new cvar_knock_combatcvar_speed_combatcvar_damage_combat
new cvar_knock_hammercvar_speed_hammercvar_damage_hammer
new cvar_knock_saxecvar_speed_saxecvar_damage_saxe
new cvar_knock_knife6cvar_speed_knife6cvar_damage_knife6
new cvar_knock_knife7cvar_speed_knife7cvar_damage_knife7
new cvar_knock_survcvar_speed_survcvar_damage_surv
new cvar_gravity_axe cvar_gravity_strong cvar_gravity_combat cvar_gravity_hammer cvar_gravity_saxe cvar_gravity_knife6 cvar_gravity_knife7 cvar_gravity_survivor_axe

new const g_sound_knife[] = { "items/gunpickup2.wav" }

new const 
axe_sounds[][] =
{
        
"Gaming/dkatana_titan_draw.wav",
        
"Gaming/dkatana_titan_hit1.wav",
        
"Gaming/dkatana_titan_hitwall.wav",
        
"Gaming/dkatana_titan_hitwall.wav",
        
"Gaming/dkatana_titan_slash1.wav",
        
"Gaming/dkatana_titan_stab.wav"
}

new const 
strong_sounds[][] =
{
        
"Gaming/crow9_draw.wav",
        
"Gaming/crow9_hitwall1.wav",
        
"Gaming/crow9_hitwall1.wav",
        
"Gaming/crow9_hitwall1.wav",
        
"Gaming/crow9_slash1.wav",
        
"Gaming/crow9_stab.wav"
}

new const 
knife6_sounds[][] =
{
        
"Gaming/sgsaw_draw.wav",
        
"Gaming/sgsaw_hit1.wav",
        
"Gaming/sgsaw_hitwall1.wav",
        
"Gaming/sgsaw_hitwall1.wav",
        
"Gaming/sgsaw_slash1.wav",
        
"Gaming/sgsaw_stab.wav"
}

new const 
combat_sounds[][] =
{
        
"Gaming/hammer_blood_hunter_draw.wav",
        
"Gaming/hammer_blood_hunter_hit.wav",
        
"Gaming/hammer_blood_hunter_miss.wav",
        
"Gaming/hammer_blood_hunter_slash1.wav",
        
"Gaming/hammer_blood_hunter_slash2.wav",
        
"Gaming/hammer_blood_hunter_wall.wav"
}

new const 
hammer_sounds[][] =
{
        
"Gaming/hammer_blood_hunter_draw.wav",
        
"Gaming/hammer_blood_hunter_hit.wav",
        
"Gaming/hammer_blood_hunter_miss.wav",
        
"Gaming/hammer_blood_hunter_slash1.wav",
        
"Gaming/hammer_blood_hunter_slash2.wav",
        
"Gaming/hammer_blood_hunter_wall.wav"
}

new const 
saxe_sounds[][] =
{
        
"Gaming/coilhammer_draw.wav",
        
"Gaming/coilhammer_hit1.wav",
        
"Gaming/coilhammer_hit2.wav",
        
"Gaming/coilhammer_hitwall.wav",
        
"Gaming/coilhammer_slash2.wav",
        
"Gaming/coilhammer_stab.wav"
}

new const 
knife7_sounds[][] =
{
        
"Gaming/coilhammer_draw.wav",
        
"Gaming/coilhammer_hit1.wav",
        
"Gaming/coilhammer_hit2.wav",
        
"Gaming/coilhammer_hitwall.wav",
        
"Gaming/coilhammer_slash2.wav",
        
"Gaming/coilhammer_stab.wav"
}

new const 
surv_sounds[][] =
{
        
"Gaming/coilhammer_draw.wav",
        
"Gaming/coilhammer_hit1.wav",
        
"Gaming/coilhammer_hit2.wav",
        
"Gaming/coilhammer_hitwall.wav",
        
"Gaming/coilhammer_slash2.wav",
        
"Gaming/coilhammer_stab.wav"
}

//new g_result[33]

public plugin_init()
{
    
register_plugin(PLUGIN VERSION AUTHOR);
    
register_forward(FM_AddToFullPack"fw_PlayerAddToFullPack");
    
register_cvar("zp_addon_knife"VERSIONFCVAR_SERVER);
        
    
register_clcmd("say /knife","knifemenu")
    
register_clcmd("knife_zb","knifemenu")
    

    
register_event("CurWeapon","checkWeapon","be","1=1");

    
register_forward(FM_EmitSound"CEntity__EmitSound");
    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink");

    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Spawn"player""fw_playerspawn_post"1)
    
RegisterHam(Ham_Use"func_tank""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankmortar""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankrocket""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tanklaser""fw_UseStationary_Post"1)
    
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg"); 
        
       
/* register_clcmd("zm_knife_strong", "clcmd_knife")
        register_clcmd("zm_knife_hammer", "clcmd_knife")
        register_clcmd("zm_knife_combat", "clcmd_knife")
        register_clcmd("zm_knife_axe", "clcmd_knife") */

    
cvar_speed_axe register_cvar("zp_axe_speed""250.0")
    
cvar_damage_axe register_cvar("zp_axe_damage""9.5")
    
cvar_damage_axe_nemesis register_cvar("zp_axe_dmg_nemesis""300.9")
    
cvar_knock_axe register_cvar("zp_axe_knockback""2.5")
    
cvar_gravity_axe register_cvar("zp_axe_gravity" "0.5")
        
    
cvar_speed_strong register_cvar("zp_strong_speed""550.0")
    
cvar_damage_strong register_cvar("zp_strong_damage""2.5")
    
//cvar_jump_strong = register_cvar("zp_strong_jump", "340.0")
    
cvar_gravity_strong register_cvar("zp_strong_gravity" "0.5")
        
    
cvar_speed_combat register_cvar("zp_combat_speed""999.0")
    
cvar_damage_combat register_cvar("zp_combat_damage""8.3")
    
cvar_knock_combat register_cvar("zp_combat_knockback""2.5")
    
cvar_gravity_combat register_cvar("zp_combat_gravity" "0.5")
        
    
cvar_speed_hammer register_cvar("zp_hammer_speed""275.0")
    
cvar_damage_hammer register_cvar("zp_hammer_damage""9.2")
    
cvar_knock_hammer register_cvar("zp_hammer_knockback""3.0")
    
cvar_gravity_hammer register_cvar("zp_hammer_gravity" "0.5")
        
    
cvar_speed_saxe register_cvar("zp_saxe_speed""300.0")
    
cvar_damage_saxe register_cvar("zp_saxe_damage""10.3")
    
cvar_knock_saxe register_cvar("zp_saxe_knockback""6.0")
    
cvar_gravity_saxe register_cvar("zp_saxe_gravity" "0.5")
    
    
cvar_speed_knife6 register_cvar("zp_knife6_speed""320.0")
    
cvar_damage_knife6 register_cvar("zp_knife6_damage""2.3")
    
cvar_knock_knife6 register_cvar("zp_knife6_knockback""2.0")
    
cvar_gravity_knife6 register_cvar("zp_knife6_gravity" "0.5")
    
    
cvar_speed_knife7 register_cvar("zp_knife7_speed""300.0")
    
cvar_damage_knife7 register_cvar("zp_knife7_damage""10.3")
    
cvar_knock_knife7 register_cvar("zp_knife7_knockback""6.0")
    
cvar_gravity_knife7 register_cvar("zp_knife7_gravity" "0.5")
        
    
cvar_speed_surv register_cvar("zp_axe_surv_speed""273.0")
    
cvar_damage_surv register_cvar("zp_axe_surv_damage""20.5")
    
cvar_knock_surv register_cvar("zp_axe_surv_knockback""7.0")
    
cvar_gravity_survivor_axe register_cvar("zp_axe_surv_gravity" "0.5")
}

public 
native_zp_knifes_get(id)
{
    if(
g_has_axe[id])
    {
        return 
1
    
}else
    if(
g_has_strong[id])
    {
        return 
2
    
}else
    if(
g_has_knife6[id])
    {
        return 
3
    
}else
    if(
g_has_combat[id])
    {
        return 
4
    
}else
    if(
g_has_hammer[id])
    {
        return 
5
    
}else
    if(
g_has_saxe[id])
    {
        return 
6
    
}
    if(
g_has_knife7[id])
    {
        return 
7
    
}
    return 
0
}

public 
native_zp_knifes_set(idiKnife)
{
        switch( 
iKnife )
        {
                case 
1buy_knife1(id)
                case 
2buy_knife2(id)
                case 
3buy_knife6(id)
                case 
4buy_knife3(id)
                case 
5buy_knife4(id)
                case 
6buy_knife5(id)
                case 
7buy_knife7(id)
        }
}

public 
fw_PlayerAddToFullPackES_HandleEpEntpHostbsHostFlagspPlayerpSet )
{       
        if( 
pPlayer && get_user_weapon(pEnt) == CSW_KNIFE && g_has_hammer[pEnt] && !zp_get_user_zombie(pEnt))
        {
                static 
iAnim;

                
iAnim get_esES_HandleES_Sequence );

                switch( 
iAnim )
                {
                        case 
73747576:
                        {
                                
set_esES_HandleES_SequenceiAnim += 10 );
                        }
                }
        }
    
        if( 
pPlayer && get_user_weapon(pEnt) == CSW_KNIFE && g_has_saxe[pEnt] && !zp_get_user_zombie(pEnt))
        {
                static 
iAnim;

                
iAnim get_esES_HandleES_Sequence );

                switch( 
iAnim )
                {
                        case 
73747576:
                        {
                                
set_esES_HandleES_SequenceiAnim += 20 );
                        }
                }
        }
        return 
FMRES_IGNORED;
}

public 
plugin_natives() 
{
    
register_native"knife_0""knife_0")

    
register_native("zp_get_user_knife""native_zp_knifes_get"1)
    
register_native("zp_set_user_knife""native_zp_knifes_set"1)
}

public 
knife_0(id)
{
    
g_has_axe[id] = false
    g_has_strong
[id] = false
    g_has_combat
[id] = false
    g_has_hammer
[id] = false
    g_has_saxe
[id] = false
    g_has_knife6
[id] = false
    g_has_knife7
[id] = false
    g_has_survivoraxe
[id] = false
}

public 
client_connect(id)
{
    
g_has_axe[id] = true
    g_has_strong
[id] = false
    g_has_combat
[id] = false
    g_has_hammer
[id] = false
    g_has_saxe
[id] = false
    g_has_knife6
[id] = false
    g_has_knife7
[id] = false
    g_has_survivoraxe
[id] = false
}

public 
client_disconnected(id)
{
    
knife_0(id)
}

public 
clcmd_knife(id)
{
    if(!
is_user_alive(id))
        return 
PLUGIN_HANDLED

    engclient_cmd
(id"weapon_knife")

    return 
PLUGIN_HANDLED
}

public 
zp_user_humanized_postiPlayer 
{
    if( 
zp_get_user_survivoriPlayer ) ) 
    {
        
buy_knife_surv(iPlayer)
    }
    else 
ChekKnife(iPlayer)
}

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)
        
precache_model(KNIFE6_V_MODEL)
        
precache_model(KNIFE6_P_MODEL)
        
precache_model(KNIFE7_V_MODEL)
        
precache_model(KNIFE7_P_MODEL)
        
precache_model(KNIFESURV_V_MODEL)
        
precache_model(KNIFESURV_P_MODEL)
        
        
/*precache_generic("sprites/zm_knife_strong.txt")
        precache_generic("sprites/zm_knife_hammer.txt")
        precache_generic("sprites/zm_knife_combat.txt")
        precache_generic("sprites/zm_knife_axe.txt")
        
        precache_generic("sprites/zm_cso/640hud7.spr")
        precache_generic("sprites/zm_cso/640hud21.spr")
        precache_generic("sprites/zm_cso/640hud23.spr")
        precache_generic("sprites/zm_cso/640hud38.spr")
        precache_generic("sprites/zm_cso/640hud39.spr")*/
        
        
precache_sound(g_sound_knife)

        for(new 
0sizeof axe_soundsi++)
                
precache_sound(axe_sounds[i])

        for(new 
0sizeof strong_soundsi++)
                
precache_sound(strong_sounds[i])

        for(new 
0sizeof combat_soundsi++)
                
precache_sound(combat_sounds[i])

        for(new 
0sizeof hammer_soundsi++)
                
precache_sound(hammer_sounds[i])
                
        for(new 
0sizeof saxe_soundsi++)
                
precache_sound(saxe_sounds[i])
        for(new 
0sizeof knife6_soundsi++)
                
precache_sound(knife6_sounds[i])
        for(new 
0sizeof knife7_soundsi++)
                
precache_sound(knife7_sounds[i])
                
        
g_flameSpr precache_model"sprites/KnifeMenu/knife1.spr" );
        
g_flameSpr1 precache_model"sprites/KnifeMenu/knife7.spr" );
        
g_flameSpr2 precache_model"sprites/KnifeMenu/knife1.spr" );
        
g_smokeSpr precache_model"sprites/KnifeMenu/knife7.spr" );
        
g_flameSpr3 precache_model"sprites/KnifeMenu/knife1.spr" );
        
g_flameSpr4 precache_model"sprites/KnifeMenu/knife9.spr" );
        
g_flameSpr5 precache_model"sprites/KnifeMenu/knife7.spr" );
        
g_flameSpr6 precache_model"sprites/KnifeMenu/knife5.spr" );    
        
g_flameSpr7 precache_model"sprites/KnifeMenu/knife1.spr" );
    
        for(new 
0sizeof surv_soundsi++)
                
precache_sound(surv_sounds[i]) 
}

public 
knifemenu(id)
{
    if(!
zp_get_user_survivor(id)) {
    new 
menu menu_create("\r~|\wKnife Menu \r|~","menu_handle")

    
menu_additem(menu"\w><|Balorog Axe|><  \r|\dDamage \r|""1")
    
menu_additem(menu"\w><|Dark Combat|>< \r~|\dSpeed\r|~""2")
    
menu_additem(menu"\w><|Green Katana|>< \r~|\dGravity\r|~""3")
        
    if(
get_user_flags(id) & VIP)
        
menu_additem(menu"\r~_~|Blue WarHammer|~_~ \d~|\wV\yI\rP\d|~""4")
    else
        
menu_additem(menu"\d~_~|Blue WarHammer|~_~ \d~|\wV\yI\rP\d|~""4")

    if(
get_user_flags(id) & ADMIN)
        
menu_additem(menu"\r$_$|DarkKnight WarHammer|$_$ \y~|\rA\yD\rM\yI\rN\y|~""5")
    else
        
menu_additem(menu"\d$_$|DarkKnight WarHammer|$_$ \y~|\rA\yD\rM\yI\rN\y|~""5")
        
    if(
get_user_flags(id) & BOSS)
        
menu_additem(menu"\r&_&|SilverBlue WarHammer|&_& \y~|\rA\yD\rM\yI\rN\y|~""6")
    else
        
menu_additem(menu"\d&_&|SilverBlue WarHammer|&_& \y~|\rA\yD\rM\yI\rN\y|~""6")
        
    if(
get_user_flags(id) & GLADMIN)
        
menu_additem(menu"\r$<>$|DarkBlue WarHammer|$<>$ \y~|\rO\yw\rn\ye\rr\y|~""7")
    else
        
menu_additem(menu"\d$<>$|DarkBlue WarHammer|$<>$ \y~|\rO\yw\rn\ye\rr\y|~""7")
        
    
menu_setprop(menuMPROP_PERPAGE0)

    
menu_display(idmenu0)
}
}

public 
menu_handle(idmenuitem)
{
        if(
item 0
                return 
PLUGIN_CONTINUE
        
        
new cmd[2];
        new 
accesscallback;
        
menu_item_getinfo(menuitemaccesscmd,2,_,_callback);
        new 
choice str_to_num(cmd)
        
        switch (
choice)
        {
                case 
1buy_knife1(id)
                case 
2buy_knife2(id)
                case 
3buy_knife6(id)
                case 
4buy_knife3(id)
                case 
5buy_knife4(id)
                case 
6buy_knife5(id)
                case 
7buy_knife7(id)
        }
        return 
PLUGIN_HANDLED;


public 
buy_knife1(id)
{
    
g_has_axe[id] = true     
    g_has_strong
[id] = false
    g_has_combat
[id] = false
    g_has_hammer
[id] = false
    g_has_saxe
[id] = false
    g_has_knife6
[id] = false
    g_has_knife7
[id] = false
    g_has_survivoraxe
[id] = false
        
    set_sprite
(id)
        
    
message_begin(MSG_ONEget_user_msgid("WeapPickup"), {0,0,0}, id
    
write_byte(29)
    
message_end()
        
    
checkWeapon(id)
    
//set_knife(id, 1)

    
client_cmd(id"setinfo Knifes 1")

    
set_user_health(idget_user_health(id) + 50)
    
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1)
    
sMsgScreenFade get_user_msgid "ScreenFade" 
    
    
engfunc(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
}

public 
buy_knife2(id)
{
    
g_has_axe[id] = false
    g_has_strong
[id] = true
    g_has_combat
[id] = false
    g_has_hammer
[id] = false
    g_has_saxe
[id] = false
    g_has_knife6
[id] = false
    g_has_knife7
[id] = false
    g_has_survivoraxe
[id] = false
        
    set_sprite
(id)
        
    
message_begin(MSG_ONEget_user_msgid("WeapPickup"), {0,0,0}, id
    
write_byte(29)
    
message_end()
        
    
checkWeapon(id)
    
//set_knife(id, 2)

    
client_cmd(id"setinfo Knifes 2")
    
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1)
    
sMsgScreenFade get_user_msgid "ScreenFade" 
    
    
engfunc(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
}

public 
buy_knife3(id)
{
    if (
get_user_flags(id) & VIP)
    {
        
g_has_axe[id] = false
        g_has_strong
[id] = false
        g_has_combat
[id] = true
        g_has_hammer
[id] = false
        g_has_saxe
[id] = false
        g_has_knife6
[id] = false
        g_has_knife7
[id] = false
        g_has_survivoraxe
[id] = false
        
        set_sprite
(id)
        
        
message_begin(MSG_ONEget_user_msgid("WeapPickup"), {0,0,0}, id
        
write_byte(29)
        
message_end()
        
        
checkWeapon(id)
    
//set_knife(id, 3)

        
client_cmd(id"setinfo Knifes 4")

        
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1)
        
sMsgScreenFade get_user_msgid "ScreenFade" 
    
        
engfunc(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
    }
}

public 
buy_knife4(id)
{
    if (
get_user_flags(id) & ADMIN)
    {
    
g_has_axe[id] = false
    g_has_strong
[id] = false
    g_has_combat
[id] = false
    g_has_hammer
[id] = true
    g_has_saxe
[id] = false
    g_has_knife6
[id] = false
    g_has_knife7
[id] = false
    g_has_survivoraxe
[id] = false
                
    set_sprite
(id)
                
    
message_begin(MSG_ONEget_user_msgid("WeapPickup"), {0,0,0}, id
    
write_byte(29)
    
message_end()
                
    
checkWeapon(id)
    
//set_knife(id, 4)

    
client_cmd(id"setinfo Knifes 5")

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1)
    
sMsgScreenFade get_user_msgid "ScreenFade" 
    
    
engfunc(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
        }

}

public 
buy_knife5(id)
{
    if (
get_user_flags(id) & BOSS)
    {
    
g_has_axe[id] = false
    g_has_strong
[id] = false
    g_has_combat
[id] = false
    g_has_hammer
[id] = false
    g_has_saxe
[id] = true
    g_has_knife6
[id] = false
    g_has_knife7
[id] = false
    g_has_survivoraxe
[id] = false
                
    set_sprite
(id)
                
    
message_begin(MSG_ONEget_user_msgid("WeapPickup"), {0,0,0}, id
    
write_byte(29)
    
message_end()
                
    
checkWeapon(id)
    
//set_knife(id, 4)

    
client_cmd(id"setinfo Knifes 6")

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1)
    
sMsgScreenFade get_user_msgid "ScreenFade" 
    
    
engfunc(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
        }

}

public 
buy_knife6(id)
{
    
g_has_axe[id] = false
    g_has_strong
[id] = false
    g_has_combat
[id] = false
    g_has_hammer
[id] = false
    g_has_saxe
[id] = false
    g_has_knife6
[id] = true
    g_has_knife7
[id] = false
    g_has_survivoraxe
[id] = false
                
    set_sprite
(id)
                
    
message_begin(MSG_ONEget_user_msgid("WeapPickup"), {0,0,0}, id
    
write_byte(29)
    
message_end()
                
    
checkWeapon(id)
    
//set_knife(id, 4)

    
client_cmd(id"setinfo Knifes 3")

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1)
    
sMsgScreenFade get_user_msgid "ScreenFade" 
    
    
engfunc(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)

}

public 
buy_knife7(id)
{
    if (
get_user_flags(id) & GLADMIN)
    {
    
g_has_axe[id] = false
    g_has_strong
[id] = false
    g_has_combat
[id] = false
    g_has_hammer
[id] = false
    g_has_saxe
[id] = false
    g_has_knife6
[id] = false
    g_has_knife7
[id] = true
    g_has_survivoraxe
[id] = false
                
    set_sprite
(id)
                
    
message_begin(MSG_ONEget_user_msgid("WeapPickup"), {0,0,0}, id
    
write_byte(29)
    
message_end()
                
    
checkWeapon(id)
    
//set_knife(id, 4)

    
client_cmd(id"setinfo Knifes 7")

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1)
    
sMsgScreenFade get_user_msgid "ScreenFade" 
    
    
engfunc(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
    }

}

public 
buy_knife_surv(id)
{
    
g_has_axe[id] = false
    g_has_strong
[id] = false
    g_has_combat
[id] = false
    g_has_hammer
[id] = false
    g_has_saxe
[id] = false
    g_has_knife6
[id] = false
    g_has_knife7
[id] = false
    g_has_survivoraxe
[id] = true
                
    set_sprite
(id)
                
    
message_begin(MSG_ONEget_user_msgid("WeapPickup"), {0,0,0}, id
    
write_byte(29)
    
message_end()
                
    
checkWeapon(id)
    
//set_knife(id, 4)

    // client_cmd(id, "setinfo Knifes 6")

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled_Post"1)
    
sMsgScreenFade get_user_msgid "ScreenFade" 
    
    
engfunc(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)

}

public 
fw_UseStationary_Post(entitycalleractivatoruse_type)
{    
    if (
use_type == && is_user_connected(caller))
        
checkWeapon(caller)
}

public 
checkWeapon(id)
{
        if(!
zp_get_user_zombie(id))
        {
            if(
get_user_weapon(id) == CSW_KNIFE)
        {
            if(
g_has_axe[id])
            {
                
set_pev(idpev_viewmodel2KNIFE1_V_MODEL)
                
set_pev(idpev_weaponmodel2KNIFE1_P_MODEL)
                
set_pev(idpev_gravityget_pcvar_float(cvar_gravity_axe))
            }
            else if(
g_has_strong[id] )
            {
                
set_pev(idpev_viewmodel2KNIFE2_V_MODEL)
                
set_pev(idpev_weaponmodel2KNIFE2_P_MODEL)
                
set_pev(idpev_gravityget_pcvar_float(cvar_gravity_strong))
            }
            else if(
g_has_combat[id])
            {
                
set_pev(idpev_viewmodel2KNIFE3_V_MODEL)
                
set_pev(idpev_weaponmodel2KNIFE3_P_MODEL)
                
set_pev(idpev_gravityget_pcvar_float(cvar_gravity_combat))
            }
            else if(
g_has_hammer[id])
            {
                
set_pev(idpev_viewmodel2KNIFE4_V_MODEL)
                
set_pev(idpev_weaponmodel2KNIFE4_P_MODEL)
                
set_pev(idpev_gravityget_pcvar_float(cvar_gravity_hammer))
            }
            else if(
g_has_saxe[id])
            {
                
set_pev(idpev_viewmodel2KNIFE5_V_MODEL)
                
set_pev(idpev_weaponmodel2KNIFE5_P_MODEL)
                
set_pev(idpev_gravityget_pcvar_float(cvar_gravity_saxe))

            }
            else if(
g_has_knife6[id])
            {
                
set_pev(idpev_viewmodel2KNIFE6_V_MODEL)
                
set_pev(idpev_weaponmodel2KNIFE6_P_MODEL)
                
set_pev(idpev_gravityget_pcvar_float(cvar_gravity_knife6))
            }
            else if(
g_has_knife7[id])
            {
                
set_pev(idpev_viewmodel2KNIFE7_V_MODEL)
                
set_pev(idpev_weaponmodel2KNIFE7_P_MODEL)
                
set_pev(idpev_gravityget_pcvar_float(cvar_gravity_knife7))
            }
            else if(
g_has_survivoraxe[id])
            {
                
set_pev(idpev_viewmodel2KNIFESURV_V_MODEL)
                
set_pev(idpev_weaponmodel2KNIFESURV_P_MODEL)
                
set_pev(idpev_gravityget_pcvar_float(cvar_gravity_survivor_axe))
            }
            
//else if(get_balrog9(id) || is_chainsaw(id))
                //set_pev(id, pev_gravity, 0.5)
        
}
    }
}
    
public 
fw_playerspawn_post(id)
{
    if(!
is_user_alive(id))
        return;
        
    
//ChekKnife(id)
    //if(g_has_survivoraxe[id])
    //{
    //        g_has_strong[id] = false
    //        g_has_combat[id] = false
    //        g_has_hammer[id] = false
    //        g_has_saxe[id] = false
    //        g_has_survivoraxe[id] = false
    //    }
    
ChekKnife(id)
    
set_sprite(id)
    return;
}

public 
CEntity__EmitSound(idchannel, const sample[], Float:volumeFloat:attnflagspitch)
{
    if (!
is_user_connected(id)) 
        return 
HAM_IGNORED
    
    
if (zp_get_user_zombie(id)) 
        return 
HAM_IGNORED
    
    
if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
    {
        if (
sample[14] == 'd'
        {
            if(
g_has_axe[id])
                
emit_sound(idchannelaxe_sounds[0], volumeattnflagspitch)
            if(
g_has_strong[id])
                
emit_sound(idchannelstrong_sounds[0], volumeattnflagspitch)
            if(
g_has_combat[id])
                
emit_sound(idchannelcombat_sounds[0], volumeattnflagspitch)
            if(
g_has_hammer[id])
                
emit_sound(idchannelhammer_sounds[0], volumeattnflagspitch)
            if(
g_has_saxe[id])
                
emit_sound(idchannelsaxe_sounds[0], volumeattnflagspitch)
            if(
g_has_knife6[id])
                
emit_sound(idchannelknife6_sounds[0], volumeattnflagspitch)
            if(
g_has_knife7[id])
                
emit_sound(idchannelknife7_sounds[0], volumeattnflagspitch)
            if(
g_has_survivoraxe[id])
                
emit_sound(idchannelsurv_sounds[0], volumeattnflagspitch)
        }
        else if (
sample[14] == 'h')
        {
            if (
sample[17] == 'w'
            {
                if(
g_has_axe[id])
                    
emit_sound(idchannelaxe_sounds[3], volumeattnflagspitch)
                if(
g_has_strong[id])
                    
emit_sound(idchannelstrong_sounds[3], volumeattnflagspitch)
                if(
g_has_combat[id])
                    
emit_sound(idchannelcombat_sounds[3], volumeattnflagspitch)
                if(
g_has_hammer[id] )
                    
emit_sound(idchannelhammer_sounds[3], volumeattnflagspitch)
                if(
g_has_saxe[id])
                    
emit_sound(idchannelsaxe_sounds[3], volumeattnflagspitch)
                if(
g_has_knife6[id])
                    
emit_sound(idchannelknife6_sounds[3], volumeattnflagspitch)
                if(
g_has_knife7[id])
                    
emit_sound(idchannelknife7_sounds[3], volumeattnflagspitch)
                if(
g_has_survivoraxe[id])
                    
emit_sound(idchannelsurv_sounds[3], volumeattnflagspitch)
            }
            else
            {
                if(
g_has_axe[id])
                    
emit_sound(idchannelaxe_sounds[random_num(1,2)], volumeattnflagspitch)
                if(
g_has_strong[id])
                    
emit_sound(idchannelstrong_sounds[random_num(1,2)], volumeattnflagspitch)
                if(
g_has_combat[id])
                    
emit_sound(idchannelcombat_sounds[random_num(1,2)], volumeattnflagspitch)
                if(
g_has_hammer[id])
                    
emit_sound(idchannelhammer_sounds[random_num(1,2)], volumeattnflagspitch)
                if(
g_has_saxe[id])
                    
emit_sound(idchannelsaxe_sounds[random_num(1,2)], volumeattnflagspitch)
                if(
g_has_knife6[id])
                    
emit_sound(idchannelknife6_sounds[random_num(1,2)], volumeattnflagspitch)
                if(
g_has_knife7[id])
                    
emit_sound(idchannelknife7_sounds[random_num(1,2)], volumeattnflagspitch)
                if(
g_has_survivoraxe[id])
                    
emit_sound(idchannelsurv_sounds[random_num(1,2)], volumeattnflagspitch)
            }
        }
        else
        {
            if (
sample[15] == 'l'
            {
                if(
g_has_axe[id])
                    
emit_sound(idchannelaxe_sounds[4], volumeattnflagspitch)
                if(
g_has_strong[id])
                    
emit_sound(idchannelstrong_sounds[4], volumeattnflagspitch)
                if(
g_has_combat[id])
                    
emit_sound(idchannelcombat_sounds[4], volumeattnflagspitch)
                if(
g_has_hammer[id])
                    
emit_sound(idchannelhammer_sounds[4], volumeattnflagspitch)
                if(
g_has_saxe[id])
                    
emit_sound(idchannelsaxe_sounds[4], volumeattnflagspitch)
                if(
g_has_knife6[id])
                    
emit_sound(idchannelknife6_sounds[4], volumeattnflagspitch)
                if(
g_has_knife7[id])
                    
emit_sound(idchannelknife7_sounds[4], volumeattnflagspitch)
                if(
g_has_survivoraxe[id])
                    
emit_sound(idchannelsurv_sounds[4], volumeattnflagspitch)
            }
            else 
            {
                if(
g_has_axe[id])
                    
emit_sound(idchannelaxe_sounds[5], volumeattnflagspitch)
                if(
g_has_strong[id] )
                    
emit_sound(idchannelstrong_sounds[5], volumeattnflagspitch)
                if(
g_has_combat[id] )
                    
emit_sound(idchannelcombat_sounds[5], volumeattnflagspitch)
                if(
g_has_hammer[id])
                    
emit_sound(idchannelhammer_sounds[5], volumeattnflagspitch)
                if(
g_has_saxe[id])
                    
emit_sound(idchannelsaxe_sounds[5], volumeattnflagspitch)
                if(
g_has_knife6[id])
                    
emit_sound(idchannelknife6_sounds[5], volumeattnflagspitch)
                if(
g_has_knife7[id])
                    
emit_sound(idchannelknife7_sounds[5], volumeattnflagspitch)
                if(
g_has_survivoraxe[id])
                    
emit_sound(idchannelsurv_sounds[5], volumeattnflagspitch)
            }
        }
        return 
HAM_SUPERCEDE
    
}
    return 
HAM_IGNORED
}

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

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

        if (
weapon == CSW_KNIFE && g_has_axe[id])
        {
                
set_user_maxspeed(id,get_pcvar_float(cvar_speed_axe))
                
                if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
                {
                        new 
flags pev(idpev_flags)
                        new 
waterlvl pev(idpev_waterlevel)
                        
                        if (!(
flags FL_ONGROUND))
                                return 
FMRES_IGNORED

                        
if (flags FL_WATERJUMP)
                                return 
FMRES_IGNORED

                        
if (waterlvl 1)
                                return 
FMRES_IGNORED

                        
new Float:fVelocity]
                        
pevid pev_velocity fVelocity )
        
                        
fVelocity] += 325

                        set_pev
id pev_velocity fVelocity )

                        
set_pev(idpev_gaitsequence6)
                }
        }
        
        if(
weapon == CSW_KNIFE && g_has_strong[id])
        {
                
set_user_maxspeed(id,get_pcvar_float(cvar_speed_strong)) 
                
                if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
                {
                        new 
flags pev(idpev_flags)
                        new 
waterlvl pev(idpev_waterlevel)
                        
                        if (!(
flags FL_ONGROUND))
                                return 
FMRES_IGNORED

                        
if (flags FL_WATERJUMP)
                                return 
FMRES_IGNORED

                        
if (waterlvl 1)
                                return 
FMRES_IGNORED

                        
new Float:fVelocity]
                        
pevid pev_velocity fVelocity )
        
                        
fVelocity] += 320

                        set_pev
id pev_velocity fVelocity )
                        
                        
set_pev(idpev_gaitsequence6)
                }       
        }

        if(
weapon == CSW_KNIFE && g_has_combat[id])   
        {     
                if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
                {
                        new 
flags pev(idpev_flags)
                        new 
waterlvl pev(idpev_waterlevel)
                        
                        if (!(
flags FL_ONGROUND))
                                return 
FMRES_IGNORED

                        
if (flags FL_WATERJUMP)
                                return 
FMRES_IGNORED

                        
if (waterlvl 1)
                                return 
FMRES_IGNORED

                        
new Float:fVelocity]
                        
pevid pev_velocity fVelocity )
        
                        
fVelocity] += 320

                        set_pev
id pev_velocity fVelocity )
                        
                        
set_pev(idpev_gaitsequence6)
                }
                
                
set_user_maxspeed(id,get_pcvar_float(cvar_speed_combat))  
        }
        if (
weapon == CSW_KNIFE && g_has_hammer[id])
        {
                if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
                {
                        new 
flags pev(idpev_flags)
                        new 
waterlvl pev(idpev_waterlevel)
                        
                        if (!(
flags FL_ONGROUND))
                                return 
FMRES_IGNORED

                        
if (flags FL_WATERJUMP)
                                return 
FMRES_IGNORED

                        
if (waterlvl 1)
                                return 
FMRES_IGNORED

                        
new Float:fVelocity]
                        
pevid pev_velocity fVelocity )
        
                        
fVelocity] += 345

                        set_pev
id pev_velocity fVelocity )
                        
                        
set_pev(idpev_gaitsequence6)
                }
                
                
set_user_maxspeed(idget_pcvar_float(cvar_speed_hammer))
        }
        if (
weapon == CSW_KNIFE && g_has_saxe[id])
        {
                if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
                {
                        new 
flags pev(idpev_flags)
                        new 
waterlvl pev(idpev_waterlevel)
                        
                        if (!(
flags FL_ONGROUND))
                                return 
FMRES_IGNORED

                        
if (flags FL_WATERJUMP)
                                return 
FMRES_IGNORED

                        
if (waterlvl 1)
                                return 
FMRES_IGNORED

                        
new Float:fVelocity]
                        
pevid pev_velocity fVelocity )
        
                        
fVelocity] += 345

                        set_pev
id pev_velocity fVelocity )
                        
                        
set_pev(idpev_gaitsequence6)
                }
                
                
set_user_maxspeed(idget_pcvar_float(cvar_speed_saxe))
        }
        if (
weapon == CSW_KNIFE && g_has_knife6[id])
        {
                if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
                {
                        new 
flags pev(idpev_flags)
                        new 
waterlvl pev(idpev_waterlevel)
                        
                        if (!(
flags FL_ONGROUND))
                                return 
FMRES_IGNORED

                        
if (flags FL_WATERJUMP)
                                return 
FMRES_IGNORED

                        
if (waterlvl 1)
                                return 
FMRES_IGNORED

                        
new Float:fVelocity]
                        
pevid pev_velocity fVelocity )
        
                        
fVelocity] += 345

                        set_pev
id pev_velocity fVelocity )
                        
                        
set_pev(idpev_gaitsequence6)
                }
                
                
set_user_maxspeed(idget_pcvar_float(cvar_speed_knife6))
        }
        if (
weapon == CSW_KNIFE && g_has_knife7[id])
        {
                if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
                {
                        new 
flags pev(idpev_flags)
                        new 
waterlvl pev(idpev_waterlevel)
                        
                        if (!(
flags FL_ONGROUND))
                                return 
FMRES_IGNORED

                        
if (flags FL_WATERJUMP)
                                return 
FMRES_IGNORED

                        
if (waterlvl 1)
                                return 
FMRES_IGNORED

                        
new Float:fVelocity]
                        
pevid pev_velocity fVelocity )
        
                        
fVelocity] += 345

                        set_pev
id pev_velocity fVelocity )
                        
                        
set_pev(idpev_gaitsequence6)
                }
                
                
set_user_maxspeed(idget_pcvar_float(cvar_speed_knife7))
        }
        if(
weapon == CSW_KNIFE && g_has_survivoraxe[id])
        {
                if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
                {
                        new 
flags pev(idpev_flags)
                        new 
waterlvl pev(idpev_waterlevel)
                        
                        if (!(
flags FL_ONGROUND))
                                return 
FMRES_IGNORED

                        
if (flags FL_WATERJUMP)
                                return 
FMRES_IGNORED

                        
if (waterlvl 1)
                                return 
FMRES_IGNORED

                        
new Float:fVelocity]
                        
pevid pev_velocity fVelocity )
        
                        
fVelocity] += 357

                        set_pev
id pev_velocity fVelocity )
                        
                        
set_pev(idpev_gaitsequence6)
                }
                
set_user_maxspeed(idget_pcvar_float(cvar_speed_surv))
        }
        
        return 
FMRES_IGNORED
}  

public 
fw_TakeDamage(victiminflictorattackerFloat:damage_type)
{
        if(!
is_user_connected(attacker))
                return 
HAM_IGNORED
        
        
if(zp_get_user_zombie(attacker))
                return 
HAM_IGNORED
        
        
if(get_user_weapon(attacker) == CSW_KNIFE)
        {
                if (
g_has_axe[attacker])
                {
                        if(
zp_is_nemesis_round())
                            
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_axe_nemesis))
                        else
                            
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_axe)) 
                        
                        new 
Float:vec[3];
                        new 
Float:oldvelo[3];
                        
pev(victimpev_velocityoldvelo);
                        
create_velocity_vector(victim attacker vec);
                        
vec[0] += oldvelo[0] + get_pcvar_float(cvar_knock_axe);
                        
vec[1] += oldvelo[1] + 0;
                        
set_pev(victimpev_velocityvec); 
            
                        if(!
task_exists(victim TASK_FBURN2))
              {
             
g_burning_duration2[victim] += 10
             set_task
0.2"CTask__BurningFlame2"victim TASK_FBURN2__"b")
              }
                }
                else if (
g_has_strong[attacker])
                {       
                        
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_strong)) 
                        
                        new 
Float:vec[3];
                        new 
Float:oldvelo[3];
                        
pev(victimpev_velocityoldvelo);
                        
create_velocity_vector(victim attacker vec);
                        
vec[0] += oldvelo[0] + get_pcvar_float(cvar_knock_strong);
                        
vec[1] += oldvelo[1] + 0;
                        
set_pev(victimpev_velocityvec);  
            
                        if( !
task_existsvictim TASK_FBURN3 ) )
                  {                 
                             
g_burning_duration3victim ] += 10
                             set_task
0.2"CTask__BurningFlame3"victim TASK_FBURN3__"b" )
             }
                }
                else if (
g_has_combat[attacker])
                {       
                        
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_combat)) 
                        
                        new 
Float:vec[3];
                        new 
Float:oldvelo[3];
                        
pev(victimpev_velocityoldvelo);
                        
create_velocity_vector(victim attacker vec);
                        
vec[0] += oldvelo[0] + get_pcvar_float(cvar_knock_combat);
                        
vec[1] += oldvelo[1] + 0;
                        
set_pev(victimpev_velocityvec);  
            
                        if( !
task_existsvictim TASK_FBURN4 ) )
                       {
                             
g_burning_duration4victim ] += 10
                             set_task
0.2"CTask__BurningFlame4"victim TASK_FBURN4__"b" )
             }
                }
                else if (
g_has_hammer[attacker])
                {       
                        
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_hammer)) 
                        
                        new 
Float:vec[3];
                        new 
Float:oldvelo[3];
                        
pev(victimpev_velocityoldvelo);
                        
create_velocity_vector(victim attacker vec);
                        
vec[0] += oldvelo[0] + get_pcvar_float(cvar_knock_hammer);
                        
vec[1] += oldvelo[1] + 0;
                        
set_pev(victimpev_velocityvec);
            
                        if( !
task_existsvictim TASK_FBURN5 ) )
                       {
                              
g_burning_duration5victim ] += 10
                              set_task
0.2"CTask__BurningFlame5"victim TASK_FBURN5__"b" )
             }
                }
                else if (
g_has_saxe[attacker])
                {       
                        
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_saxe)) 
                        
                        new 
Float:vec[3];
                        new 
Float:oldvelo[3];
                        
pev(victimpev_velocityoldvelo);
                        
create_velocity_vector(victim attacker vec);
                        
vec[0] += oldvelo[0] + get_pcvar_float(cvar_knock_saxe);
                        
vec[1] += oldvelo[1] + 0;
                        
set_pev(victimpev_velocityvec);
                        
                        if( !
task_existsvictim TASK_FBURN ) )
                            {
                                    
g_burning_durationvictim ] += 10
                                    set_task
0.2"CTask__BurningFlame"victim TASK_FBURN__"b" )
               }
                }
                else if (
g_has_knife6[attacker])
                {       
                        
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_knife6)) 
                        
                        new 
Float:vec[3];
                        new 
Float:oldvelo[3];
                        
pev(victimpev_velocityoldvelo);
                        
create_velocity_vector(victim attacker vec);
                        
vec[0] += oldvelo[0] + get_pcvar_float(cvar_knock_knife6);
                        
vec[1] += oldvelo[1] + 0;
                        
set_pev(victimpev_velocityvec);  
            
                        if( !
task_existsvictim TASK_FBURN6 ) )
                       {
                            
g_burning_duration6victim ] += 10
                            set_task
0.2"CTask__BurningFlame6"victim TASK_FBURN6__"b" )
             }
                }
                else if (
g_has_knife7[attacker])
                {       
                        
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_knife7)) 
                        
                        new 
Float:vec[3];
                        new 
Float:oldvelo[3];
                        
pev(victimpev_velocityoldvelo);
                        
create_velocity_vector(victim attacker vec);
                        
vec[0] += oldvelo[0] + get_pcvar_float(cvar_knock_saxe);
                        
vec[1] += oldvelo[1] + 0;
                        
set_pev(victimpev_velocityvec);
                        
                        if( !
task_existsvictim TASK_FBURN1 ) )
                        {
                            
g_burning_duration1victim ] += 10
                            set_task
0.2"CTask__BurningFlame1"victim TASK_FBURN1__"b" )
                        }
                }
                 else if(
g_has_survivoraxe[attacker])
                {       
                        
SetHamParamFloat(4damage get_pcvar_float(cvar_damage_surv)) 
                        
                        new 
Float:vec[3];
                        new 
Float:oldvelo[3];
                        
pev(victimpev_velocityoldvelo);
                        
create_velocity_vector(victim attacker vec);
                        
vec[0] += oldvelo[0] + get_pcvar_float(cvar_knock_surv);
                        
vec[1] += oldvelo[1] + 0;
                        
set_pev(victimpev_velocityvec);
            
                        if( !
task_existsvictim TASK_FBURN7 ) )
                       {
                           
g_burning_duration7victim ] += 10
                           set_task
0.2"CTask__BurningFlame7"victim TASK_FBURN7__"b" )
                       }
                }
                
more_blood(victim)
}

        return 
HAM_IGNORED
}

public 
message_DeathMsg(msg_idmsg_destid)
{
        static 
szTruncatedWeapon[33], iattackerivictim
        
        get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
        
        
iattacker get_msg_arg_int(1)
        
ivictim get_msg_arg_int(2)
        
        if(!
is_user_connected(iattacker) || iattacker == ivictim)
                return 
PLUGIN_CONTINUE

        
if (!zp_get_user_zombie(iattacker))
        {
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_axe[iattacker])
                                
set_msg_arg_string(4"axe")
                }
        
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_strong[iattacker])
                                
set_msg_arg_string(4"hatchet")
                }
        
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_combat[iattacker])
                                
set_msg_arg_string(4"mastercombat")
                }
        
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_hammer[iattacker])
                                
set_msg_arg_string(4"hammer")
                }
                
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_saxe[iattacker])
                                
set_msg_arg_string(4"skullaxe")
                }
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_knife6[iattacker])
                                
set_msg_arg_string(4"knife6")
                }
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_knife7[iattacker])
                                
set_msg_arg_string(4"knife7")
                }
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_survivoraxe[iattacker])
                               
set_msg_arg_string(4"survivoraxe")
                } 
        
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(!
g_has_axe[iattacker] && !g_has_strong[iattacker] && !g_has_combat[iattacker] && !g_has_hammer[iattacker] && !zp_get_user_zombie(iattacker))
                                
set_msg_arg_string(4"knife")
                }
        }
        if (
zp_get_user_zombie(iattacker))
        {
                if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
                {
                        if(
g_has_axe[iattacker] || g_has_strong[iattacker] || g_has_combat[iattacker] || g_has_hammer[iattacker])
                                
set_msg_arg_string(4"Claws")
                }
        }
        return 
PLUGIN_CONTINUE
}

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

        new 
Float:vicorigin[3];
        new 
Float:attorigin[3];
        
pev(victimpev_origin vicorigin);
        
pev(attackerpev_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])>largestnumlargestnum floatabs(origin2[0]);
        if(
floatabs(origin2[1])>largestnumlargestnum floatabs(origin2[1]);

        
origin2[0] /= largestnum;
        
origin2[1] /= largestnum;
        
        if (
g_has_axe[attacker])
        {
                
velocity[0] = ( origin2[0] * get_pcvar_float(cvar_knock_axe) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
                
velocity[1] = ( origin2[1] * get_pcvar_float(cvar_knock_axe) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
        }
        else if (
g_has_strong[attacker])
        {
                
velocity[0] = ( origin2[0] * get_pcvar_float(cvar_knock_strong) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
                
velocity[1] = ( origin2[1] * get_pcvar_float(cvar_knock_strong) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
        }
        else if (
g_has_combat[attacker])
        {
                
velocity[0] = ( origin2[0] * get_pcvar_float(cvar_knock_combat) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
                
velocity[1] = ( origin2[1] * get_pcvar_float(cvar_knock_combat) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
        }
        else if (
g_has_hammer[attacker])
        {
                
velocity[0] = ( origin2[0] * get_pcvar_float(cvar_knock_hammer) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
                
velocity[1] = ( origin2[1] * get_pcvar_float(cvar_knock_hammer) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
        }
        else if (
g_has_saxe[attacker])
        {
                
velocity[0] = ( origin2[0] * get_pcvar_float(cvar_knock_saxe) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
                
velocity[1] = ( origin2[1] * get_pcvar_float(cvar_knock_saxe) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
        }
        else if (
g_has_knife6[attacker])
        {
                
velocity[0] = ( origin2[0] * get_pcvar_float(cvar_knock_knife6) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
                
velocity[1] = ( origin2[1] * get_pcvar_float(cvar_knock_knife6) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
        }
        else if (
g_has_knife7[attacker])
        {
                
velocity[0] = ( origin2[0] * get_pcvar_float(cvar_knock_knife7) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
                
velocity[1] = ( origin2[1] * get_pcvar_float(cvar_knock_knife7) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
        }
        else if(
g_has_survivoraxe[attacker])
        {
                
velocity[0] = ( origin2[0] * get_pcvar_float(cvar_knock_surv) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
                
velocity[1] = ( origin2[1] * get_pcvar_float(cvar_knock_surv) * 10000 ) / floatround(get_distance_f(vicoriginattorigin));
        } 
 
        if(
velocity[0] <= 20.0 || velocity[1] <= 20.0)
        
velocity[2] = random_float(200.0 275.0);

        return 
1;
}

stock fm_set_user_maxspeed(indexFloat:speed = -1.0
{
        
engfunc(EngFunc_SetClientMaxspeedindexspeed);
        
set_pev(indexpev_maxspeedspeed);

        return 
1;
}       

more_blood(id)
{
        static 
iOrigin[3]
        
get_user_origin(idiOrigin)
        
        
message_begin(MSG_PVSSVC_TEMPENTITYiOrigin)
        
write_byte(TE_BLOODSTREAM)
        
write_coord(iOrigin[0])
        
write_coord(iOrigin[1])
        
write_coord(iOrigin[2]+10)
        
write_coord(random_num(-360360))
        
write_coord(random_num(-360360))
        
write_coord(-10)
        
write_byte(70)
        
write_byte(random_num(50100))
        
message_end()

        for (new 
04j++) 
        {
                
message_begin(MSG_PVSSVC_TEMPENTITYiOrigin)
                
write_byte(TE_WORLDDECAL)
                
write_coord(iOrigin[0]+random_num(-100100))
                
write_coord(iOrigin[1]+random_num(-100100))
                
write_coord(iOrigin[2]-36)
                
write_byte(random_num(190197))
                
message_end()
        }
}

public 
sprite(const player, const string_msg[], byte_1byte_2byte_3byte_4byte_5byte_6byte_7byte_8)
{
    
message_beginMSG_ONEget_user_msgid("WeaponList"), .player player );
    {
        
write_string(string_msg);
        
write_byte(byte_1);
        
write_byte(byte_2);
        
write_byte(byte_3);
        
write_byte(byte_4);
        
write_byte(byte_5);
        
write_byte(byte_6);
        
write_byte(byte_7);
        
write_byte(byte_8);
    }
    
message_end();
}

public 
set_sprite(id)
{
        if(!
is_user_alive(id))
        {
                return;
        }
                
        if(
zp_get_user_zombie(id))
        {
                
sprite(id"weapon_knife", -1, -1, -1, -121290)
                return;
    }

        if(
g_has_axe[id])
        {
                
sprite(id"zm_knife_axe", -1, -1, -1, -121290)
                return;
        }
        
        if(
g_has_strong[id])
        {
                
sprite(id"zm_knife_strong", -1, -1, -1, -121290)
                return;
        }
        
        if(
g_has_combat[id])
        {
                
sprite(id"zm_knife_combat", -1, -1, -1, -121290)
                return;
        }
         
        if(
g_has_hammer[id])
        {
                
sprite(id"zm_knife_hammer", -1, -1, -1, -121290)
                return;
        }
        
        if(
g_has_survivoraxe[id])
        {
                
sprite(id"zm_knife_axe", -1, -1, -1, -121290)
                return;
    }
}

stock ChekKnife(id)
{
    new 
str[3]
    
get_user_info(id"Knifes"strcharsmax(str))

    switch(
str[0])
    {
        case 
'1':
        {
                
g_has_axe[id] = true
                g_has_strong
[id] = false
                g_has_combat
[id] = false
                g_has_hammer
[id] = false
                g_has_saxe
[id] = false
                g_has_knife6
[id] = false
                g_has_knife7
[id] = false
        
}
        case 
'2':
        {
                
g_has_axe[id] = false
                g_has_strong
[id] = true
                g_has_combat
[id] = false
                g_has_hammer
[id] = false    
                g_has_saxe
[id] = false
                g_has_knife6
[id] = false
                g_has_knife7
[id] = false
        
}
        case 
'3':
        {
                
g_has_axe[id] = false
                g_has_strong
[id] = false
                g_has_combat
[id] = false
                g_has_hammer
[id] = false    
                g_has_saxe
[id] = false
                g_has_knife6
[id] = true
                g_has_knife7
[id] = false
        
}
        case 
'4':
        {
            if(
get_user_flags(id) & VIP)
            {
                
g_has_axe[id] = false
                g_has_strong
[id] = false
                g_has_combat
[id] = true
                g_has_hammer
[id] = false    
                g_has_saxe
[id] = false
                g_has_knife6
[id] = false
                g_has_knife7
[id] = false
            
}                
            else 
random_num(buy_knife1(id) , buy_knife2(id))
        }
        case 
'5':
        {
            if(
get_user_flags(id) & ADMIN)
            {
                    
g_has_axe[id] = false
                    g_has_strong
[id] = false
                    g_has_combat
[id] = false
                    g_has_hammer
[id] = true    
                    g_has_saxe
[id] = false
                    g_has_knife6
[id] = false
                    g_has_knife7
[id] = false
            
}
            else 
random_num(buy_knife1(id) , buy_knife2(id))
        }
        case 
'6':
        {
            if(
get_user_flags(id) & BOSS)
            {
                    
g_has_axe[id] = false
                    g_has_strong
[id] = false
                    g_has_combat
[id] = false
                    g_has_hammer
[id] = false    
                    g_has_saxe
[id] = true
                    g_has_knife6
[id] = false
                    g_has_knife7
[id] = false
            
}
            else 
random_num(buy_knife1(id) , buy_knife2(id))
        }
        case 
'7':
        {
            if(
get_user_flags(id) & GLADMIN)
            {
                    
g_has_axe[id] = false
                    g_has_strong
[id] = false
                    g_has_combat
[id] = false
                    g_has_hammer
[id] = false    
                    g_has_saxe
[id] = false
                    g_has_knife6
[id] = false
                    g_has_knife7
[id] = true
            
}
            else 
random_num(buy_knife1(id) , buy_knife2(id))
            {
                
g_has_survivoraxe[id] = false

            
}
        }
    }
}

public 
CTask__BurningFlametaskid )
{
    
// Get player origin and flags
    
static origin[3], flags
    get_user_origin
(ID_FBURNorigin)
    
flags pev(ID_FBURNpev_flags)
    
    
// Madness mode - in water - burning stopped
    
if ((flags FL_INWATER) || g_burning_duration[ID_FBURN] < || g_fRoundEnd || !is_user_alive(ID_FBURN))
    {
        
// Smoke sprite
        
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
        
write_byte(TE_SMOKE// TE id
        
write_coord(origin[0]) // x
        
write_coord(origin[1]) // y
        
write_coord(origin[2]-50// z
        
write_short(g_smokeSpr// sprite
        
write_byte(random_num(1520)) // scale
        
write_byte(random_num(1020)) // framerate
        
message_end()
        
        
// Task not needed anymore
        
remove_task(taskid)
        return
    }
    
    
// Get player's health
    
static health
    health 
pev(ID_FBURNpev_health)
    
    
// Take damage from the fire
    
if (health FIRE_DAMAGE 0)
        
fm_set_user_health(ID_FBURNhealth FIRE_DAMAGE)
    
    
// Flame sprite
    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE// TE id
    
write_coord(origin[0]+random_num(-55)) // x
    
write_coord(origin[1]+random_num(-55)) // y
    
write_coord(origin[2]+random_num(-1010)) // z
    
write_short(g_flameSpr// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()

    
g_burning_duration[ID_FBURN]--
}

public 
CTask__BurningFlame1taskid )
{
    
// Get player origin and flags
    
static origin[3], flags
    get_user_origin
(ID_FBURN1origin)
    
flags pev(ID_FBURN1pev_flags)
    
    
// Madness mode - in water - burning stopped
    
if ((flags FL_INWATER) || g_burning_duration1[ID_FBURN1] < || g_fRoundEnd || !is_user_alive(ID_FBURN1))
    {
        
// Smoke sprite
        
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
        
write_byte(TE_SMOKE// TE id
        
write_coord(origin[0]) // x
        
write_coord(origin[1]) // y
        
write_coord(origin[2]-50// z
        
write_short(g_smokeSpr// sprite
        
write_byte(random_num(1520)) // scale
        
write_byte(random_num(1020)) // framerate
        
message_end()
        
        
// Task not needed anymore
        
remove_task(taskid)
        return
    }
    
    
// Get player's health
    
static health
    health 
pev(ID_FBURN1pev_health)
    
    
// Take damage from the fire
    
if (health FIRE_DAMAGE1 0)
        
fm_set_user_health(ID_FBURN1health FIRE_DAMAGE1)
    
    
// Flame sprite
    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE// TE id
    
write_coord(origin[0]+random_num(-55)) // x
    
write_coord(origin[1]+random_num(-55)) // y
    
write_coord(origin[2]+random_num(-1010)) // z
    
write_short(g_flameSpr1// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()

    
g_burning_duration1[ID_FBURN1]--
}

public 
CTask__BurningFlame2taskid )
{
    
// Get player origin and flags
    
static origin[3], flags
    get_user_origin
(ID_FBURN2origin)
    
flags pev(ID_FBURN2pev_flags)
    
    
// Madness mode - in water - burning stopped
    
if ((flags FL_INWATER) || g_burning_duration[ID_FBURN2] < || g_fRoundEnd || !is_user_alive(ID_FBURN2))

    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE// TE id
    
write_coord(origin[0]+random_num(-55)) // x
    
write_coord(origin[1]+random_num(-55)) // y
    
write_coord(origin[2]+random_num(-1010)) // z
    
write_short(g_flameSpr2// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()

    
g_burning_duration2[ID_FBURN2]--
    
      
// Task not needed anymore
    
remove_task(taskid)
    return
}


public 
CTask__BurningFlame3taskid )
{
    
// Get player origin and flags
    
static origin[3], flags
    get_user_origin
(ID_FBURN3origin)
    
flags pev(ID_FBURN3pev_flags)
    
    
// Madness mode - in water - burning stopped
    
if ((flags FL_INWATER) || g_burning_duration[ID_FBURN3] < || g_fRoundEnd || !is_user_alive(ID_FBURN3))

    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE// TE id
    
write_coord(origin[0]+random_num(-55)) // x
    
write_coord(origin[1]+random_num(-55)) // y
    
write_coord(origin[2]+random_num(-1010)) // z
    
write_short(g_flameSpr3// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()

    
g_burning_duration3[ID_FBURN3]--
    
      
// Task not needed anymore
    
remove_task(taskid)
    return
}

public 
CTask__BurningFlame4taskid )
{
    
// Get player origin and flags
    
static origin[3], flags
    get_user_origin
(ID_FBURN4origin)
    
flags pev(ID_FBURN4pev_flags)
    
    
// Madness mode - in water - burning stopped
    
if ((flags FL_INWATER) || g_burning_duration[ID_FBURN4] < || g_fRoundEnd || !is_user_alive(ID_FBURN4))

    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE// TE id
    
write_coord(origin[0]+random_num(-55)) // x
    
write_coord(origin[1]+random_num(-55)) // y
    
write_coord(origin[2]+random_num(-1010)) // z
    
write_short(g_flameSpr4// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()

    
g_burning_duration4[ID_FBURN4]--
    
      
// Task not needed anymore
    
remove_task(taskid)
    return
}

public 
CTask__BurningFlame5taskid )
{
    
// Get player origin and flags
    
static origin[3], flags
    get_user_origin
(ID_FBURN5origin)
    
flags pev(ID_FBURN5pev_flags)
    
    
// Madness mode - in water - burning stopped
    
if ((flags FL_INWATER) || g_burning_duration[ID_FBURN5] < || g_fRoundEnd || !is_user_alive(ID_FBURN5))

    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE// TE id
    
write_coord(origin[0]+random_num(-55)) // x
    
write_coord(origin[1]+random_num(-55)) // y
    
write_coord(origin[2]+random_num(-1010)) // z
    
write_short(g_flameSpr5// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()

    
g_burning_duration5[ID_FBURN5]--
    
      
// Task not needed anymore
    
remove_task(taskid)
    return
}

public 
CTask__BurningFlame6taskid )
{
    
// Get player origin and flags
    
static origin[3], flags
    get_user_origin
(ID_FBURN6origin)
    
flags pev(ID_FBURN6pev_flags)
    
    
// Madness mode - in water - burning stopped
    
if ((flags FL_INWATER) || g_burning_duration[ID_FBURN6] < || g_fRoundEnd || !is_user_alive(ID_FBURN6))

    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE// TE id
    
write_coord(origin[0]+random_num(-55)) // x
    
write_coord(origin[1]+random_num(-55)) // y
    
write_coord(origin[2]+random_num(-1010)) // z
    
write_short(g_flameSpr6// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()

    
g_burning_duration6[ID_FBURN6]--
    
      
// Task not needed anymore
    
remove_task(taskid)
    return
}

public 
CTask__BurningFlame7taskid )
{
    
// Get player origin and flags
    
static origin[3], flags
    get_user_origin
(ID_FBURN7origin)
    
flags pev(ID_FBURN7pev_flags)
    
    
// Madness mode - in water - burning stopped
    
if ((flags FL_INWATER) || g_burning_duration[ID_FBURN7] < || g_fRoundEnd || !is_user_alive(ID_FBURN7))

    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)

    
write_byte(TE_SPRITE// TE id
    
write_coord(origin[0]+random_num(-55)) // x
    
write_coord(origin[1]+random_num(-55)) // y
    
write_coord(origin[2]+random_num(-1010)) // z
    
write_short(g_flameSpr7// sprite
    
write_byte(random_num(510)) // scale
    
write_byte(200// brightness
    
message_end()

    
g_burning_duration7[ID_FBURN7]--
    
      
// Task not needed anymore
    
remove_task(taskid)
    return
}

public 
fw_PlayerKilled_PostvictimsAttacker )
{
    if( !
is_user_alivesAttacker ) || zp_get_user_zombiesAttacker ) )
    {
        return;
    }    
    
    if( 
victim == sAttacker || !is_user_connectedsAttacker ) )
    {
       return
    }   
   
    
message_beginMSG_ONE sMsgScreenFade , { }, sAttacker )
    
write_short1<<10 )
    
write_short1<<10 )
    
write_short0x0000  )
    
write_byteRED )
    
write_byteGREEN )
    
write_byteBLUE )
    
write_byteALPHA )
    
message_end( )
   
}

stock fm_set_user_healthindexhealth 
    
health set_pev(indexpev_healthfloat(health)) : dllfunc(DLLFunc_ClientKillindex)

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
    
replace_all(msg190"!g""^4")
    
replace_all(msg190"!y""^1")
    
replace_all(msg190"!team""^3")
    
    if (
idplayers[0] = id; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }

LearninG is offline
RBE sLayeR
Member
Join Date: Jul 2019
Location: Republic of Kosovo
Old 08-26-2019 , 08:26   Re: ZP Knife Menu
Reply With Quote #3

Quote:
Originally Posted by LearninG View Post
[INDENT][INDENT][INDENT]( just in case you want to use it again )
Thank you a lot but i removed that because of a bug where even if you press "3" button the knife wont show , it would show knife only if you drop all weapons

By the way could you help me on this other knife menu , i just want also the 4th knife to be for vip flag "C" and the 5th knife for flag "M" ,
I tried making 4th knife for vip using this
PHP Code:
if (get_user_flags(id) & VIP2
and then defining it near the other define #define VIP ADMIN_LEVEL_M but got some errors
And could you tell me how to make it auto appear at round start after choosing primary and secondary weapon



Here is the code of that if knife menu :
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <fun> 
#include <engine> 
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN    "Choose knifes"
#define VERSION    "1.0"
#define AUTHOR    "CHyC/4e/l"

#define VIP ADMIN_LEVEL_M
#define MAXPLAYERS 32

new combat_v_model[] = "models/KnifeMenu/v_knife1.mdl"
new combat_p_model[] = "models/KnifeMenu/p_knife1.mdl"

new strong_v_model[] = "models/KnifeMenu/v_knife3.mdl"
new strong_p_model[] = "models/KnifeMenu/p_knife3.mdl"

new axe_v_model[] = "models/KnifeMenu/v_knife2.mdl"    
new axe_p_model[] = "models/KnifeMenu/p_knife2.mdl"    

new katana_v_model[] = "models/KnifeMenu/v_knife4.mdl"    
new katana_p_model[] = "models/KnifeMenu/p_knife4.mdl"

new hammer_v_model[] = "models/KnifeMenu/v_knife6.mdl"    
new hammer_p_model[] = "models/KnifeMenu/p_knife6.mdl"    

const m_pPlayer 41 
const m_flNextPrimaryAttack 46 
const m_flNextSecondaryAttack 47 
const m_flTimeWeaponIdle 48 

new g_hasSpeed[33], SayText
new bool:g_WasShowed[MAXPLAYERS 1]
new 
g_knife_combat[33], cvar_knife_combat_jumpcvar_knife_combat_spdcvar_knife_combat_dmgcvar_knife_combat_knockcvar_knife_combat_spd_attack2
new g_knife_strong[33], cvar_knife_strong_jumpcvar_knife_strong_spdcvar_knife_strong_dmgcvar_knife_strong_knockcvar_knife_strong_spd_attack2
new g_knife_axe[33], cvar_knife_axe_jumpcvar_knife_axe_spdcvar_knife_axe_dmgcvar_knife_axe_knockcvar_knife_axe_spd_attack2
new g_knife_katana[33], cvar_knife_katana_jumpcvar_knife_katana_spdcvar_knife_katana_dmgcvar_knife_katana_knockcvar_knife_katana_spd_attack2
new g_knife_hammer[33], cvar_knife_hammer_jumpcvar_knife_hammer_spdcvar_knife_hammer_dmgcvar_knife_hammer_knockcvar_hammer_spd_attack2

new const g_sound_knife[] = { "items/gunpickup2.wav" }

new const 
combat_sounds[][] =
{
    
"zmwpn/zb_knife/combat_deploy.wav",
    
"zmwpn/zb_knife/combat_hit.wav"    ,
    
"zmwpn/zb_knife/combat_hit.wav"    ,
    
"zmwpn/zb_knife/combat_hit.wav"    ,
    
"zmwpn/zb_knife/combat_hit.wav"    ,
    
"zmwpn/zb_knife/combat_hitwall.wav",
    
"zmwpn/zb_knife/combat_slash.wav",
    
"zmwpn/zb_knife/combat_slash.wav",
    
"zmwpn/zb_knife/combat_stab.wav"
}

new const 
strong_sounds[][] =
{
    
"zmwpn/zb_knife/strong_deploy.wav",
    
"zmwpn/zb_knife/strong_hit.wav",
    
"zmwpn/zb_knife/strong_hit.wav",
    
"zmwpn/zb_knife/strong_hit.wav",
    
"zmwpn/zb_knife/strong_hit.wav",
    
"zmwpn/zb_knife/strong_hitwall.wav",
    
"zmwpn/zb_knife/strong_slash.wav",
    
"zmwpn/zb_knife/strong_slash.wav",
    
"zmwpn/zb_knife/strong_stab.wav"
}

new const 
axe_sounds[][] =
{
    
"zmwpn/zb_knife/axe_deploy.wav",
    
"zmwpn/zb_knife/axe_hit.wav",
    
"zmwpn/zb_knife/axe_hit.wav",
    
"zmwpn/zb_knife/axe_hit.wav",
    
"zmwpn/zb_knife/axe_hit.wav",
    
"zmwpn/zb_knife/axe_hitwall.wav",
    
"zmwpn/zb_knife/axe_slash.wav",
    
"zmwpn/zb_knife/axe_slash.wav",
    
"zmwpn/zb_knife/axe_stab.wav"
}

new const 
katana_sounds[][] =
{
    
"zmwpn/zb_knife/katana_deploy.wav",
    
"zmwpn/zb_knife/katana_hit.wav",
    
"zmwpn/zb_knife/katana_hit.wav",
    
"zmwpn/zb_knife/katana_hit.wav",
    
"zmwpn/zb_knife/katana_hit.wav",
    
"zmwpn/zb_knife/katana_hitwall.wav",
    
"zmwpn/zb_knife/katana_slash.wav",
    
"zmwpn/zb_knife/katana_slash.wav",
    
"zmwpn/zb_knife/katana_stab.wav"
}

new const 
hammer_sounds[][] =
{
    
"zmwpn/zb_knife/hammer_deploy.wav",
    
"zmwpn/zb_knife/hammer_hit.wav",
    
"zmwpn/zb_knife/hammer_hit.wav",
    
"zmwpn/zb_knife/hammer_hit.wav",
    
"zmwpn/zb_knife/hammer_hit.wav",
    
"zmwpn/zb_knife/hammer_hitwall.wav",
    
"zmwpn/zb_knife/hammer_slash.wav",
    
"zmwpn/zb_knife/hammer_slash.wav",
    
"zmwpn/zb_knife/hammer_stab.wav"
}

new const 
oldknife_sounds[][] =
{
    
"weapons/knife_deploy1.wav",
    
"weapons/knife_hit1.wav",
    
"weapons/knife_hit2.wav",
    
"weapons/knife_hit3.wav",
    
"weapons/knife_hit4.wav",
    
"weapons/knife_hitwall1.wav",
    
"weapons/knife_slash1.wav",
    
"weapons/knife_slash2.wav",
    
"weapons/knife_stab.wav"
}

public 
plugin_init()
{
    
register_plugin(PLUGIN VERSION AUTHOR);
    
register_cvar("zp_addon_knife"VERSIONFCVAR_SERVER);
        
SayText get_user_msgid("SayText")   

     
register_clcmd("say /knife","knife_menu",ADMIN_ALL,"knife_menu")
     
register_clcmd("/knife","knife_menu",ADMIN_ALL,"knife_menu")
    
register_clcmd("combat""give_combat")
    
register_clcmd("strong""give_strong")
    
register_clcmd("axe""give_axe")
    
register_clcmd("katana""give_katana")
    
register_clcmd("hammer""give_hammer")

    
register_event("CurWeapon","checkWeapon","be","1=1");
    
register_event("Damage" "event_Damage" "b" "2>0");

    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink");
    
register_forward(FM_EmitSound"fw_EmitSound");

    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg");

    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
        
RegisterHam(Ham_Weapon_SecondaryAttack"weapon_knife""fw_Knife_SecondaryAttack_Post"1

    
cvar_knife_combat_jumpregister_cvar("zp_knife_combat_jump""270.0");
    
cvar_knife_combat_spd register_cvar("zp_knife_combat_spd""320.0");
    
cvar_knife_combat_dmg register_cvar("zp_knife_combat_dmg" "4.0");
    
cvar_knife_combat_knock register_cvar("zp_knife_combat_knock" "-1.0");
    
cvar_knife_combat_spd_attack2 register_cvar("zp_knife_combat_spd_attack2" "2.2");

    
cvar_knife_strong_jumpregister_cvar("zp_knife_strong_jump""265.0");
    
cvar_knife_strong_spd register_cvar("zp_knife_strong_spd""255.0");
    
cvar_knife_strong_dmg register_cvar("zp_knife_strong_dmg" "13.5");
    
cvar_knife_strong_knock register_cvar("zp_knife_strong_knock" "-1.0");
    
cvar_knife_strong_spd_attack2 register_cvar("zp_knife_strong_spd_attack2" "2.6");

    
cvar_knife_axe_jumpregister_cvar("zp_knife_axe_jump""270.0");
    
cvar_knife_axe_spd register_cvar("zp_knife_axe_spd""250.0");
    
cvar_knife_axe_dmg register_cvar("zp_knife_axe_dmg" "5.0");
    
cvar_knife_axe_knock register_cvar("zp_knife_axe_knock" "6.0");
    
cvar_knife_axe_spd_attack2 register_cvar("zp_knife_axe_spd_attack2" "2.9");

    
cvar_knife_katana_jumpregister_cvar("zp_knife_katana_jump""340.0");
    
cvar_knife_katana_spd register_cvar("zp_knife_katana_spd""265.0");
    
cvar_knife_katana_dmg register_cvar("zp_knife_katana_dmg" "5.0");
    
cvar_knife_katana_knock register_cvar("zp_knife_katana_knock" "-1.0");
    
cvar_knife_katana_spd_attack2 register_cvar("zp_knife_katana_spd_attack2" "2.2");

    
cvar_knife_hammer_jumpregister_cvar("zp_knife_hammer_jump""340.0");
    
cvar_knife_hammer_spdregister_cvar("zp_knife_hammer_spd""320.0");
    
cvar_knife_hammer_dmg register_cvar("zp_knife_hammer_dmg" "15.0");
    
cvar_knife_hammer_knock register_cvar("zp_knife_hammer_knock" "6.0");
    
cvar_hammer_spd_attack2 register_cvar("zp_knife_hammer_spd_attack2" "3.2");

        
register_event("HLTV""event_round_start""a""1=0""2=0")
}

public 
client_connect(id)
{
    
g_knife_combat[id] = false
    g_knife_strong
[id] = false
    g_knife_axe
[id] = false
    g_knife_katana
[id] = false
    g_knife_hammer
[id] = false
    g_hasSpeed
[id] = false
}

public 
client_disconnect(id)
{
    
g_knife_combat[id] = false
    g_knife_strong
[id] = false
    g_knife_axe
[id] = false
    g_knife_katana
[id] = false
    g_knife_hammer
[id] = false
    g_hasSpeed
[id] = false
}

public 
plugin_precache()
{
    
precache_model(combat_v_model)
    
precache_model(combat_p_model)
    
precache_model(strong_v_model)
    
precache_model(strong_p_model)
    
precache_model(axe_v_model)
    
precache_model(axe_p_model)
    
precache_model(katana_v_model)
    
precache_model(katana_p_model)
    
precache_model(hammer_v_model)
    
precache_model(hammer_p_model)

    
precache_sound(g_sound_knife)

    for(new 
0sizeof combat_soundsi++)
        
precache_sound(combat_sounds[i])

    for(new 
0sizeof strong_soundsi++)
        
precache_sound(strong_sounds[i])

    for(new 
0sizeof axe_soundsi++)
        
precache_sound(axe_sounds[i])  

    for(new 
0sizeof katana_soundsi++)
        
precache_sound(katana_sounds[i])

    for(new 
0sizeof hammer_soundsi++)
        
precache_sound(hammer_sounds[i])
}

public 
event_round_start(id)
{
        for (new 
iMAXPLAYERS 1i++)
            
g_WasShowed[i] = false
}

public 
knife_menu(id)
{
        if (
g_WasShowed[id])
        {
            
print_col_chat(id"^1[^4ZP^1] You can choose your knife only one time per round")
            return 
PLUGIN_HANDLED
        
}

    if(
is_user_alive(id) && !zp_get_user_zombie(id))
    {
        
my_menu(id)
    }

    return 
PLUGIN_HANDLED
}

public 
my_menu(id)
{
    new 
menu menu_create("\r~|\wKnife Menu \r|~""menu_handler");
    
menu_additem(menu"\w><|Dark Combat|>< \r~|\dSpeed\r|~""1"0);
    
menu_additem(menu"\w><|Balorog Axe|><  \r|\dDamage \r|""2"0);
    
menu_additem(menu"\w><|Green Katana|>< \r~|\dGravity\r|~""3"0);
    
    
menu_additem(menu"\w><|Blue WarHammer|>< \r~|\wV\yI\rP\d|~""4"0);
    
    
menu_additem(menu"\w><|Legendary WarHammer|>< \r~|\rA\yD\rM\yI\rN\y|~""5"0);
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
    
menu_display(idmenu0);    


public 
menu_handler(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
               
menu_destroy(menu);
            return 
PLUGIN_HANDLED;    
    }
    
    new 
data[6], iName[64];
    new 
accesscallback;
    
    
menu_item_getinfo(menuitemaccessdata,5iName63callback);
    
    new 
key str_to_num(data);
    
    switch(
key)
    {
            case 
1:
            {
            
give_combat(id)
            
menu_destroy(menu);
            return 
PLUGIN_HANDLED
        
}
        case 
2:
        {
            
give_strong(id)
            
menu_destroy(menu);
            return 
PLUGIN_HANDLED
        
}
        case 
3:
        {
            
give_axe(id)
            
menu_destroy(menu);
            return 
PLUGIN_HANDLED
        
}
        case 
4:
        {
            
give_katana(id)
            
menu_destroy(menu);
            return 
PLUGIN_HANDLED
        
}
        case 
5:
        {
            
give_hammer(id)
            
menu_destroy(menu);
            return 
PLUGIN_HANDLED
        
}
    }
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED
}

public 
give_combat(id)
{
    
g_knife_combat[id] = true    
    g_knife_strong
[id] = false
    g_knife_axe
[id] = false    
    g_knife_katana
[id] = false    
    g_knife_hammer
[id] = false
    g_hasSpeed
[id] =  true
    g_WasShowed
[id] = true

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
}

public 
give_strong(id)
{
    
g_knife_combat[id] = false    
    g_knife_strong
[id] = true    
    g_knife_axe
[id] = false
    g_knife_katana
[id] = false    
    g_knife_hammer
[id] = false
    g_hasSpeed
[id] = true
    g_WasShowed
[id] = true

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
}

public 
give_axe(id)
{
    
g_knife_combat[id] = false    
    g_knife_strong
[id] = false    
    g_knife_axe
[id] = true
    g_knife_katana
[id] = false    
    g_knife_hammer
[id] = false
    g_hasSpeed
[id] = true
    g_WasShowed
[id] = true

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
}

public 
give_katana(id)
{
    
g_knife_combat[id] = false    
    g_knife_strong
[id] = false    
    g_knife_axe
[id] = false
    g_knife_katana
[id] = true    
    g_knife_hammer
[id] = false
    g_hasSpeed
[id] = true
    g_WasShowed
[id] = true

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
}


public 
give_hammer(id)
{
    if (
get_user_flags(id) & VIP)
    {
        
g_knife_combat[id] = false    
        g_knife_strong
[id] = false    
        g_knife_axe
[id] = false
        g_knife_katana
[id] = false
        g_knife_hammer
[id] = true
        g_hasSpeed
[id] =  true
        g_WasShowed
[id] = true

        engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)
    }
    else 
    {
        
client_cmd(id"/knife")
        
g_WasShowed[id] = true
    
}
}

public 
checkWeapon(id)
{
    new 
plrWeapId
    
    plrWeapId 
get_user_weapon(id)
    
    if (
plrWeapId == CSW_KNIFE && (g_knife_combat[id] || g_knife_strong[id] || g_knife_axe[id] || g_knife_katana[id] || g_knife_hammer[id]))
    {
        
checkModel(id)
    }
}

public 
checkModel(id)
{
    if (
zp_get_user_zombie(id))
        return 
PLUGIN_HANDLED
    
    
if (g_knife_combat[id])
    {
        
set_pev(idpev_viewmodel2combat_v_model)
        
set_pev(idpev_weaponmodel2combat_p_model)
    }

    if (
g_knife_strong[id])
    {
        
set_pev(idpev_viewmodel2strong_v_model)
        
set_pev(idpev_weaponmodel2strong_p_model)
    }

    if (
g_knife_axe[id])
    {
        
set_pev(idpev_viewmodel2axe_v_model)
        
set_pev(idpev_weaponmodel2axe_p_model)
    }

    if (
g_knife_katana[id])
    {
        
set_pev(idpev_viewmodel2katana_v_model)
        
set_pev(idpev_weaponmodel2katana_p_model)
    }

    if (
g_knife_hammer[id])
    {
        
set_pev(idpev_viewmodel2hammer_v_model)
        
set_pev(idpev_weaponmodel2hammer_p_model)
    }
    return 
PLUGIN_HANDLED
}

public 
fw_EmitSound(idchannel, const sound[])
{
    if(!
is_user_alive(id) || zp_get_user_zombie(id))
        return 
FMRES_IGNORED
        
    
for(new 0sizeof combat_soundsi++) 
    for(new 
0sizeof strong_soundsi++)
    for(new 
0sizeof axe_soundsi++)
    for(new 
0sizeof katana_soundsi++)
    for(new 
0sizeof hammer_soundsi++)
    {
        if(
equal(soundoldknife_sounds[i]))
        {
            if (
g_knife_combat[id])
            {
                
emit_sound(idchannelcombat_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
            if (
g_knife_strong[id])
            {
                
emit_sound(idchannelstrong_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
            if (
g_knife_axe[id])
            {
                
emit_sound(idchannelaxe_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
            if (
g_knife_katana[id])
            {
                
emit_sound(idchannelkatana_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
            if (
g_knife_hammer[id])
            {
                
emit_sound(idchannelhammer_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
            if (!
g_knife_combat[id] || !g_knife_strong[id] || !g_knife_axe[id] || !g_knife_katana[id] || !g_knife_hammer[id])
            {
                
emit_sound(idchanneloldknife_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
        }
    }
    return 
FMRES_IGNORED
}

public 
message_DeathMsg(msg_idmsg_destid)
{
    static 
szTruncatedWeapon[33], iattackerivictim
    
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
    
    
iattacker get_msg_arg_int(1)
    
ivictim get_msg_arg_int(2)
    
    if(!
is_user_connected(iattacker) || iattacker == ivictim)
        return 
PLUGIN_CONTINUE

    
if (!zp_get_user_zombie(iattacker))
    {
        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
        {
            if(
g_knife_combat[iattacker])
                
set_msg_arg_string(4"Combat knife")
        }
    
        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
        {
            if(
g_knife_strong[iattacker])
                
set_msg_arg_string(4"Strong knife")
        }

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
        {
            if(
g_knife_axe[iattacker])
                
set_msg_arg_string(4"Axe knife")
        }

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
        {
            if(
g_knife_katana[iattacker])
                
set_msg_arg_string(4"Katana knife")
        }

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)
        {
            if(
g_knife_hammer[iattacker])
                
set_msg_arg_string(4"Ice knife")
        }
    }
    return 
PLUGIN_CONTINUE
}

stock print_col_chat(const id, const input[], any:...)  
{  
    new 
count 1players[32];  
        static 
msg[191];  
        
vformat(msg190input3);  
        
replace_all(msg190"!g""^4"); // Green Color  
        
replace_all(msg190"!y""^1"); // Default Color 
        
replace_all(msg190"!t""^3"); // Team Color  
        
if (idplayers[0] = id; else get_players(playerscount"ch");  
        {  
            for ( new 
0counti++ )  
            {  
                    if ( 
is_user_connected(players[i]) )  
                    {  
                        
message_begin(MSG_ONE_UNRELIABLESayText_players[i]);  
                        
write_byte(players[i]);  
                        
write_string(msg);  
                        
message_end();  
                    }  
            }  
        }  
}   

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

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

    if (
weapon == CSW_KNIFE && g_knife_combat[id])
    {
        
g_hasSpeed[id] = true
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_combat_spd))
    }

    if(
weapon == CSW_KNIFE && g_knife_combat[id])        
        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
        {
            new 
flags pev(idpev_flags)
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)
            
            
fVelocity[2] += get_pcvar_num(cvar_knife_combat_jump)
            
            
set_pev(idpev_velocityfVelocity)
            
set_pev(idpev_gaitsequence6)
        }
    if (
weapon == CSW_KNIFE && g_knife_strong[id])
    {
        
g_hasSpeed[id] = true
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_strong_spd))

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
        {
            new 
flags pev(idpev_flags)
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)
            
            
fVelocity[2] += get_pcvar_num(cvar_knife_strong_jump)
            
            
set_pev(idpev_velocityfVelocity)
            
set_pev(idpev_gaitsequence6)
        }
    }
    if (
weapon == CSW_KNIFE && g_knife_axe[id])
    {
        
g_hasSpeed[id] = true
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_axe_spd))

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
        {
            new 
flags pev(idpev_flags)
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)
            
            
fVelocity[2] += get_pcvar_num(cvar_knife_axe_jump)
            
            
set_pev(idpev_velocityfVelocity)
            
set_pev(idpev_gaitsequence6)
        }
    }
    if (
weapon == CSW_KNIFE && g_knife_katana[id])
    {
        
g_hasSpeed[id] = true
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_katana_spd))

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
        {
            new 
flags pev(idpev_flags)
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)
            
            
fVelocity[2] += get_pcvar_num(cvar_knife_katana_jump)
            
            
set_pev(idpev_velocityfVelocity)
            
set_pev(idpev_gaitsequence6)
        }
    }
    if (
weapon == CSW_KNIFE && g_knife_hammer[id])
    {
        
g_hasSpeed[id] = true
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_hammer_spd))

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))
        {
            new 
flags pev(idpev_flags)
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)
            
            
fVelocity[2] += get_pcvar_num(cvar_knife_hammer_jump)
            
            
set_pev(idpev_velocityfVelocity)
            
set_pev(idpev_gaitsequence6)
        }
    }
    return 
FMRES_IGNORED
}  

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if(!
is_user_connected(attacker))
        return 
HAM_IGNORED
    
    
if(zp_get_user_zombie(attacker))
        return 
HAM_IGNORED

    
new weapon get_user_weapon(attacker)

    if (
weapon == CSW_KNIFE && g_knife_combat[attacker])
    {    
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_combat_dmg))
    }
    if (
weapon == CSW_KNIFE && g_knife_strong[attacker])
    {    
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_strong_dmg))
    }
    if (
weapon == CSW_KNIFE && g_knife_axe[attacker])
    {    
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_axe_dmg))
    }
    if (
weapon == CSW_KNIFE && g_knife_katana[attacker])
    {    
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_katana_dmg))
    }
        
    if (
weapon == CSW_KNIFE && g_knife_hammer[attacker])
    {     
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_hammer_dmg))
    }

    return 
HAM_IGNORED
}

public 
fw_Knife_SecondaryAttack_Post(knife
{     
        static 
id 
        id 
get_pdata_cbase(knifem_pPlayer4

        if(
zp_get_user_zombie(id))
        return 
HAM_IGNORED
    
        
if(is_user_connected(id) && g_knife_combat[id]) 
        { 
            static 
Float:flRate 
            flRate 
get_pcvar_float(cvar_knife_combat_spd_attack2
         
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4
        } 
 
        if(
is_user_connected(id) && g_knife_strong[id]) 
        { 
            static 
Float:flRate 
            flRate 
get_pcvar_float(cvar_knife_strong_spd_attack2
             
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4
        } 

        if(
is_user_connected(id) && g_knife_axe[id]) 
        { 
            static 
Float:flRate 
            flRate 
get_pcvar_float(cvar_knife_axe_spd_attack2
                 
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4
        } 

        if(
is_user_connected(id) && g_knife_katana[id]) 
        { 
            static 
Float:flRate 
            flRate 
get_pcvar_float(cvar_knife_katana_spd_attack2
                 
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4
        } 

        if(
is_user_connected(id) && g_knife_hammer[id]) 
        { 
            static 
Float:flRate 
            flRate 
get_pcvar_float(cvar_hammer_spd_attack2
             
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4
        }     
   
        return 
HAM_IGNORED 


public 
event_Damage(id)
{
    new 
weapon attacker get_user_attacker(id weapon);

    if(!
is_user_alive(attacker))
        return 
PLUGIN_CONTINUE;

    if(
weapon == CSW_KNIFE && g_knife_combat[attacker])
    {
        new 
Float:vec[3];
        new 
Float:oldvelo[3];
        
get_user_velocity(idoldvelo);
        
create_velocity_vector(id attacker vec);
        
vec[0] += oldvelo[0];
        
vec[1] += oldvelo[1];
        
set_user_velocity(id vec);
    }

    if(
weapon == CSW_KNIFE && g_knife_strong[attacker])
    {
        new 
Float:vec[3];
        new 
Float:oldvelo[3];
        
get_user_velocity(idoldvelo);
        
create_velocity_vector(id attacker vec);
        
vec[0] += oldvelo[0];
        
vec[1] += oldvelo[1];
        
set_user_velocity(id vec);
    }

    if(
weapon == CSW_KNIFE && g_knife_axe[attacker])
    {
        new 
Float:vec[3];
        new 
Float:oldvelo[3];
        
get_user_velocity(idoldvelo);
        
create_velocity_vector(id attacker vec);
        
vec[0] += oldvelo[0];
        
vec[1] += oldvelo[1];
        
set_user_velocity(id vec);
    }

    if(
weapon == CSW_KNIFE && g_knife_katana[attacker])
    {
        new 
Float:vec[3];
        new 
Float:oldvelo[3];
        
get_user_velocity(idoldvelo);
        
create_velocity_vector(id attacker vec);
        
vec[0] += oldvelo[0];
        
vec[1] += oldvelo[1];
        
set_user_velocity(id vec);
    }

    if(
weapon == CSW_KNIFE && g_knife_hammer[attacker])
    {
        new 
Float:vec[3];
        new 
Float:oldvelo[3];
        
get_user_velocity(idoldvelo);
        
create_velocity_vector(id attacker vec);
        
vec[0] += oldvelo[0];
        
vec[1] += oldvelo[1];
        
set_user_velocity(id vec);
    }

    return 
PLUGIN_CONTINUE;
}

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

    new 
Float:vicorigin[3];
    new 
Float:attorigin[3];
    
entity_get_vector(victim   EV_VEC_origin vicorigin);
    
entity_get_vector(attacker EV_VEC_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])>largestnumlargestnum floatabs(origin2[0]);
    if(
floatabs(origin2[1])>largestnumlargestnum floatabs(origin2[1]);

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

    if (
g_knife_combat[attacker])
    {
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_combat_knock) * 3000) ) / get_entity_distance(victim attacker);
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_combat_knock) * 3000) ) / get_entity_distance(victim attacker);
    }

    if (
g_knife_strong[attacker])
    {
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_strong_knock) * 3000) ) / get_entity_distance(victim attacker);
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_strong_knock) * 3000) ) / get_entity_distance(victim attacker);
    }

    if (
g_knife_axe[attacker])
    {
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_axe_knock) * 3000) ) / get_entity_distance(victim attacker);
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_axe_knock) * 3000) ) / get_entity_distance(victim attacker);
    }

    if (
g_knife_katana[attacker])
    {
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_katana_knock) * 3000) ) / get_entity_distance(victim attacker);
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_katana_knock) * 3000) ) / get_entity_distance(victim attacker);
    }

    if (
g_knife_hammer[attacker])
    {
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_hammer_knock) * 3000) ) / get_entity_distance(victim attacker);
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_hammer_knock) * 3000) ) / get_entity_distance(victim attacker);
    }

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

    return 
1;
}

public 
client_putinserver(id)
{
    switch(
random_num(00))
    {
        case 
0:
        {
            
g_knife_combat[id] = true
            g_hasSpeed
[id] = true
        
}

    }

__________________
Copy-and-Paste was programmed by programmers for programmers actually
RBE sLayeR is offline
LearninG
Senior Member
Join Date: Apr 2019
Location: Iran
Old 08-26-2019 , 09:52   Re: ZP Knife Menu
Reply With Quote #4

Quote:
Originally Posted by RBE sLayeR View Post
#define VIP ADMIN_LEVEL_M
there is no ADMIN_LEVEL_M.
valid levels are :
PHP Code:
ADMIN_LEVEL_A (for additional plugins)
ADMIN_LEVEL_B
ADMIN_LEVEL_C
ADMIN_LEVEL_D
ADMIN_LEVEL_E
ADMIN_LEVEL_F
ADMIN_LEVEL_G
ADMIN_LEVEL_H 
I put VIP flag as ADMIN_LEVEL_H however you are free to change it.
PHP Code:
#include <amxmodx> 
#include <fakemeta> 
#include <fun>  
#include <engine>  
#include <hamsandwich> 
#include <zombieplague>

#define PLUGIN    "Choose knifes" 
#define VERSION    "1.0" 
#define AUTHOR    "CHyC/4e/l" 

#define VIP ADMIN_LEVEL_H
#define MAXPLAYERS 32 

new combat_v_model[] = "models/KnifeMenu/v_knife1.mdl" 
new combat_p_model[] = "models/KnifeMenu/p_knife1.mdl" 

new strong_v_model[] = "models/KnifeMenu/v_knife3.mdl" 
new strong_p_model[] = "models/KnifeMenu/p_knife3.mdl" 

new axe_v_model[] = "models/KnifeMenu/v_knife2.mdl"     
new axe_p_model[] = "models/KnifeMenu/p_knife2.mdl"     

new katana_v_model[] = "models/KnifeMenu/v_knife4.mdl"     
new katana_p_model[] = "models/KnifeMenu/p_knife4.mdl" 

new hammer_v_model[] = "models/KnifeMenu/v_knife6.mdl"     
new hammer_p_model[] = "models/KnifeMenu/p_knife6.mdl"     

const m_pPlayer 41  
const m_flNextPrimaryAttack 46  
const m_flNextSecondaryAttack 47  
const m_flTimeWeaponIdle 48  

new g_hasSpeed[33], SayText 
new bool:g_WasShowed[MAXPLAYERS 1
new 
g_knife_combat[33], cvar_knife_combat_jumpcvar_knife_combat_spdcvar_knife_combat_dmgcvar_knife_combat_knockcvar_knife_combat_spd_attack2 
new g_knife_strong[33], cvar_knife_strong_jumpcvar_knife_strong_spdcvar_knife_strong_dmgcvar_knife_strong_knockcvar_knife_strong_spd_attack2 
new g_knife_axe[33], cvar_knife_axe_jumpcvar_knife_axe_spdcvar_knife_axe_dmgcvar_knife_axe_knockcvar_knife_axe_spd_attack2 
new g_knife_katana[33], cvar_knife_katana_jumpcvar_knife_katana_spdcvar_knife_katana_dmgcvar_knife_katana_knockcvar_knife_katana_spd_attack2 
new g_knife_hammer[33], cvar_knife_hammer_jumpcvar_knife_hammer_spdcvar_knife_hammer_dmgcvar_knife_hammer_knockcvar_hammer_spd_attack2 

new const g_sound_knife[] = { "items/gunpickup2.wav" 

new const 
combat_sounds[][] = 

    
"zmwpn/zb_knife/combat_deploy.wav"
    
"zmwpn/zb_knife/combat_hit.wav"    
    
"zmwpn/zb_knife/combat_hit.wav"    
    
"zmwpn/zb_knife/combat_hit.wav"    
    
"zmwpn/zb_knife/combat_hit.wav"    
    
"zmwpn/zb_knife/combat_hitwall.wav"
    
"zmwpn/zb_knife/combat_slash.wav"
    
"zmwpn/zb_knife/combat_slash.wav"
    
"zmwpn/zb_knife/combat_stab.wav" 


new const 
strong_sounds[][] = 

    
"zmwpn/zb_knife/strong_deploy.wav"
    
"zmwpn/zb_knife/strong_hit.wav"
    
"zmwpn/zb_knife/strong_hit.wav"
    
"zmwpn/zb_knife/strong_hit.wav"
    
"zmwpn/zb_knife/strong_hit.wav"
    
"zmwpn/zb_knife/strong_hitwall.wav"
    
"zmwpn/zb_knife/strong_slash.wav"
    
"zmwpn/zb_knife/strong_slash.wav"
    
"zmwpn/zb_knife/strong_stab.wav" 


new const 
axe_sounds[][] = 

    
"zmwpn/zb_knife/axe_deploy.wav"
    
"zmwpn/zb_knife/axe_hit.wav"
    
"zmwpn/zb_knife/axe_hit.wav"
    
"zmwpn/zb_knife/axe_hit.wav"
    
"zmwpn/zb_knife/axe_hit.wav"
    
"zmwpn/zb_knife/axe_hitwall.wav"
    
"zmwpn/zb_knife/axe_slash.wav"
    
"zmwpn/zb_knife/axe_slash.wav"
    
"zmwpn/zb_knife/axe_stab.wav" 


new const 
katana_sounds[][] = 

    
"zmwpn/zb_knife/katana_deploy.wav"
    
"zmwpn/zb_knife/katana_hit.wav"
    
"zmwpn/zb_knife/katana_hit.wav"
    
"zmwpn/zb_knife/katana_hit.wav"
    
"zmwpn/zb_knife/katana_hit.wav"
    
"zmwpn/zb_knife/katana_hitwall.wav"
    
"zmwpn/zb_knife/katana_slash.wav"
    
"zmwpn/zb_knife/katana_slash.wav"
    
"zmwpn/zb_knife/katana_stab.wav" 


new const 
hammer_sounds[][] = 

    
"zmwpn/zb_knife/hammer_deploy.wav"
    
"zmwpn/zb_knife/hammer_hit.wav"
    
"zmwpn/zb_knife/hammer_hit.wav"
    
"zmwpn/zb_knife/hammer_hit.wav"
    
"zmwpn/zb_knife/hammer_hit.wav"
    
"zmwpn/zb_knife/hammer_hitwall.wav"
    
"zmwpn/zb_knife/hammer_slash.wav"
    
"zmwpn/zb_knife/hammer_slash.wav"
    
"zmwpn/zb_knife/hammer_stab.wav" 


new const 
oldknife_sounds[][] = 

    
"weapons/knife_deploy1.wav"
    
"weapons/knife_hit1.wav"
    
"weapons/knife_hit2.wav"
    
"weapons/knife_hit3.wav"
    
"weapons/knife_hit4.wav"
    
"weapons/knife_hitwall1.wav"
    
"weapons/knife_slash1.wav"
    
"weapons/knife_slash2.wav"
    
"weapons/knife_stab.wav" 


public 
plugin_init() 

    
register_plugin(PLUGIN VERSION AUTHOR); 
    
register_cvar("zp_addon_knife"VERSIONFCVAR_SERVER); 
    
SayText get_user_msgid("SayText")    

    
register_clcmd("say /knife","knife_menu",ADMIN_ALL,"knife_menu"
    
register_clcmd("/knife","knife_menu",ADMIN_ALL,"knife_menu"
    
register_clcmd("combat""give_combat"
    
register_clcmd("strong""give_strong"
    
register_clcmd("axe""give_axe"
    
register_clcmd("katana""give_katana"
    
register_clcmd("hammer""give_hammer"

    
register_event("CurWeapon","checkWeapon","be","1=1"); 
    
register_event("Damage" "event_Damage" "b" "2>0"); 

    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink"); 
    
register_forward(FM_EmitSound"fw_EmitSound"); 

    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg"); 

    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage"); 
    
RegisterHam(Ham_Weapon_SecondaryAttack"weapon_knife""fw_Knife_SecondaryAttack_Post"1)  

    
cvar_knife_combat_jumpregister_cvar("zp_knife_combat_jump""270.0"); 
    
cvar_knife_combat_spd register_cvar("zp_knife_combat_spd""320.0"); 
    
cvar_knife_combat_dmg register_cvar("zp_knife_combat_dmg" "4.0"); 
    
cvar_knife_combat_knock register_cvar("zp_knife_combat_knock" "-1.0"); 
    
cvar_knife_combat_spd_attack2 register_cvar("zp_knife_combat_spd_attack2" "2.2"); 

    
cvar_knife_strong_jumpregister_cvar("zp_knife_strong_jump""265.0"); 
    
cvar_knife_strong_spd register_cvar("zp_knife_strong_spd""255.0"); 
    
cvar_knife_strong_dmg register_cvar("zp_knife_strong_dmg" "13.5"); 
    
cvar_knife_strong_knock register_cvar("zp_knife_strong_knock" "-1.0"); 
    
cvar_knife_strong_spd_attack2 register_cvar("zp_knife_strong_spd_attack2" "2.6"); 

    
cvar_knife_axe_jumpregister_cvar("zp_knife_axe_jump""270.0"); 
    
cvar_knife_axe_spd register_cvar("zp_knife_axe_spd""250.0"); 
    
cvar_knife_axe_dmg register_cvar("zp_knife_axe_dmg" "5.0"); 
    
cvar_knife_axe_knock register_cvar("zp_knife_axe_knock" "6.0"); 
    
cvar_knife_axe_spd_attack2 register_cvar("zp_knife_axe_spd_attack2" "2.9"); 

    
cvar_knife_katana_jumpregister_cvar("zp_knife_katana_jump""340.0"); 
    
cvar_knife_katana_spd register_cvar("zp_knife_katana_spd""265.0"); 
    
cvar_knife_katana_dmg register_cvar("zp_knife_katana_dmg" "5.0"); 
    
cvar_knife_katana_knock register_cvar("zp_knife_katana_knock" "-1.0"); 
    
cvar_knife_katana_spd_attack2 register_cvar("zp_knife_katana_spd_attack2" "2.2"); 

    
cvar_knife_hammer_jumpregister_cvar("zp_knife_hammer_jump""340.0"); 
    
cvar_knife_hammer_spdregister_cvar("zp_knife_hammer_spd""320.0"); 
    
cvar_knife_hammer_dmg register_cvar("zp_knife_hammer_dmg" "15.0"); 
    
cvar_knife_hammer_knock register_cvar("zp_knife_hammer_knock" "6.0"); 
    
cvar_hammer_spd_attack2 register_cvar("zp_knife_hammer_spd_attack2" "3.2"); 

    
register_event("HLTV""event_round_start""a""1=0""2=0"


public 
client_connect(id

    
g_knife_combat[id] = false 
    g_knife_strong
[id] = false 
    g_knife_axe
[id] = false 
    g_knife_katana
[id] = false 
    g_knife_hammer
[id] = false 
    g_hasSpeed
[id] = false 


public 
client_disconnected(id

    
g_knife_combat[id] = false 
    g_knife_strong
[id] = false 
    g_knife_axe
[id] = false 
    g_knife_katana
[id] = false 
    g_knife_hammer
[id] = false 
    g_hasSpeed
[id] = false 


public 
plugin_precache() 

    
precache_model(combat_v_model
    
precache_model(combat_p_model
    
precache_model(strong_v_model
    
precache_model(strong_p_model
    
precache_model(axe_v_model
    
precache_model(axe_p_model
    
precache_model(katana_v_model
    
precache_model(katana_p_model
    
precache_model(hammer_v_model
    
precache_model(hammer_p_model

    
precache_sound(g_sound_knife

    for(new 
0sizeof combat_soundsi++) 
        
precache_sound(combat_sounds[i]) 

    for(new 
0sizeof strong_soundsi++) 
        
precache_sound(strong_sounds[i]) 

    for(new 
0sizeof axe_soundsi++) 
        
precache_sound(axe_sounds[i])   

    for(new 
0sizeof katana_soundsi++) 
        
precache_sound(katana_sounds[i]) 

    for(new 
0sizeof hammer_soundsi++) 
        
precache_sound(hammer_sounds[i]) 


public 
event_round_start(id

        for (new 
iMAXPLAYERS 1i++) 
            
g_WasShowed[i] = false 


public 
knife_menu(id

    if (
g_WasShowed[id]) 
    { 
        
print_col_chat(id"^1[^4ZP^1] You can choose your knife only one time per round"
        return 
PLUGIN_HANDLED 
    


    if(
is_user_alive(id) && !zp_get_user_zombie(id)) 
    { 
        
my_menu(id
    } 

    return 
PLUGIN_HANDLED 


public 
my_menu(id

    new 
menu menu_create("\r~|\wKnife Menu \r|~""menu_handler"); 
    
menu_additem(menu"\w><|Dark Combat|>< \r~|\dSpeed\r|~""1"0); 
    
menu_additem(menu"\w><|Balorog Axe|><  \r|\dDamage \r|""2"0); 
    
menu_additem(menu"\w><|Green Katana|>< \r~|\dGravity\r|~""3"0); 
     
    
menu_additem(menu"\w><|Blue WarHammer|>< \r~|\wV\yI\rP\d|~""4"0); 
     
    
menu_additem(menu"\w><|Legendary WarHammer|>< \r~|\rA\yD\rM\yI\rN\y|~""5"0); 
     
    
menu_setprop(menuMPROP_EXITMEXIT_ALL); 
     
    
menu_display(idmenu0);     
}  

public 
menu_handler(idmenuitem

    if( 
item == MENU_EXIT 
    { 
            
menu_destroy(menu); 
            return 
PLUGIN_HANDLED;     
    } 
     
    new 
data[6], iName[64]; 
    new 
accesscallback
     
    
menu_item_getinfo(menuitemaccessdata,5iName63callback); 
     
    new 
key str_to_num(data); 
     
    switch(
key
    { 
            case 
1
            { 
            
give_combat(id
            
menu_destroy(menu); 
            return 
PLUGIN_HANDLED 
        

        case 
2
        { 
            
give_strong(id
            
menu_destroy(menu); 
            return 
PLUGIN_HANDLED 
        

        case 
3
        { 
            
give_axe(id
            
menu_destroy(menu); 
            return 
PLUGIN_HANDLED 
        

        case 
4
        { 
            
give_katana(id
            
menu_destroy(menu); 
            return 
PLUGIN_HANDLED 
        

        case 
5
        { 
            
give_hammer(id
            
menu_destroy(menu); 
            return 
PLUGIN_HANDLED 
        

    } 
    
menu_destroy(menu); 
    return 
PLUGIN_HANDLED 


public 
give_combat(id

    
g_knife_combat[id] = true     
    g_knife_strong
[id] = false 
    g_knife_axe
[id] = false     
    g_knife_katana
[id] = false     
    g_knife_hammer
[id] = false 
    g_hasSpeed
[id] =  true 
    g_WasShowed
[id] = true 

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM


public 
give_strong(id

    
g_knife_combat[id] = false     
    g_knife_strong
[id] = true     
    g_knife_axe
[id] = false 
    g_knife_katana
[id] = false     
    g_knife_hammer
[id] = false 
    g_hasSpeed
[id] = true 
    g_WasShowed
[id] = true 

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM


public 
give_axe(id

    
g_knife_combat[id] = false     
    g_knife_strong
[id] = false     
    g_knife_axe
[id] = true 
    g_knife_katana
[id] = false     
    g_knife_hammer
[id] = false 
    g_hasSpeed
[id] = true 
    g_WasShowed
[id] = true 

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM


public 
give_katana(id

    
g_knife_combat[id] = false     
    g_knife_strong
[id] = false     
    g_knife_axe
[id] = false 
    g_knife_katana
[id] = true     
    g_knife_hammer
[id] = false 
    g_hasSpeed
[id] = true 
    g_WasShowed
[id] = true 

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM



public 
give_hammer(id

    if (
get_user_flags(id) & VIP
    { 
        
g_knife_combat[id] = false     
        g_knife_strong
[id] = false     
        g_knife_axe
[id] = false 
        g_knife_katana
[id] = false 
        g_knife_hammer
[id] = true 
        g_hasSpeed
[id] =  true 
        g_WasShowed
[id] = true 

        engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM
    } 
    else  
    { 
        
client_cmd(id"/knife"
        
g_WasShowed[id] = true 
    



public 
checkWeapon(id

    new 
plrWeapId 
     
    plrWeapId 
get_user_weapon(id
     
    if (
plrWeapId == CSW_KNIFE && (g_knife_combat[id] || g_knife_strong[id] || g_knife_axe[id] || g_knife_katana[id] || g_knife_hammer[id])) 
    { 
        
checkModel(id
    } 


public 
checkModel(id

    if (
zp_get_user_zombie(id)) 
        return 
PLUGIN_HANDLED 
     
    
if (g_knife_combat[id]) 
    { 
        
set_pev(idpev_viewmodel2combat_v_model
        
set_pev(idpev_weaponmodel2combat_p_model
    } 

    if (
g_knife_strong[id]) 
    { 
        
set_pev(idpev_viewmodel2strong_v_model
        
set_pev(idpev_weaponmodel2strong_p_model
    } 

    if (
g_knife_axe[id]) 
    { 
        
set_pev(idpev_viewmodel2axe_v_model
        
set_pev(idpev_weaponmodel2axe_p_model
    } 

    if (
g_knife_katana[id]) 
    { 
        
set_pev(idpev_viewmodel2katana_v_model
        
set_pev(idpev_weaponmodel2katana_p_model
    } 

    if (
g_knife_hammer[id]) 
    { 
        
set_pev(idpev_viewmodel2hammer_v_model
        
set_pev(idpev_weaponmodel2hammer_p_model
    } 
    return 
PLUGIN_HANDLED 


public 
fw_EmitSound(idchannel, const sound[]) 

    if(!
is_user_alive(id) || zp_get_user_zombie(id)) 
        return 
FMRES_IGNORED 
         
    
for(new 0sizeof combat_soundsi++)  
    for(new 
0sizeof strong_soundsi++) 
    for(new 
0sizeof axe_soundsi++) 
    for(new 
0sizeof katana_soundsi++) 
    for(new 
0sizeof hammer_soundsi++) 
    { 
        if(
equal(soundoldknife_sounds[i])) 
        { 
            if (
g_knife_combat[id]) 
            { 
                
emit_sound(idchannelcombat_sounds[i], 1.0ATTN_NORM0PITCH_NORM
                return 
FMRES_SUPERCEDE 
            

            if (
g_knife_strong[id]) 
            { 
                
emit_sound(idchannelstrong_sounds[i], 1.0ATTN_NORM0PITCH_NORM
                return 
FMRES_SUPERCEDE 
            

            if (
g_knife_axe[id]) 
            { 
                
emit_sound(idchannelaxe_sounds[i], 1.0ATTN_NORM0PITCH_NORM
                return 
FMRES_SUPERCEDE 
            

            if (
g_knife_katana[id]) 
            { 
                
emit_sound(idchannelkatana_sounds[i], 1.0ATTN_NORM0PITCH_NORM
                return 
FMRES_SUPERCEDE 
            

            if (
g_knife_hammer[id]) 
            { 
                
emit_sound(idchannelhammer_sounds[i], 1.0ATTN_NORM0PITCH_NORM
                return 
FMRES_SUPERCEDE 
            

            if (!
g_knife_combat[id] || !g_knife_strong[id] || !g_knife_axe[id] || !g_knife_katana[id] || !g_knife_hammer[id]) 
            { 
                
emit_sound(idchanneloldknife_sounds[i], 1.0ATTN_NORM0PITCH_NORM
                return 
FMRES_SUPERCEDE 
            

        } 
    } 
    return 
FMRES_IGNORED 


public 
message_DeathMsg(msg_idmsg_destid

    static 
szTruncatedWeapon[33], iattackerivictim 
     
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon)) 
     
    
iattacker get_msg_arg_int(1
    
ivictim get_msg_arg_int(2
     
    if(!
is_user_connected(iattacker) || iattacker == ivictim
        return 
PLUGIN_CONTINUE 

    
if (!zp_get_user_zombie(iattacker)) 
    { 
        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE
        { 
            if(
g_knife_combat[iattacker]) 
                
set_msg_arg_string(4"Combat knife"
        } 
     
        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE
        { 
            if(
g_knife_strong[iattacker]) 
                
set_msg_arg_string(4"Strong knife"
        } 

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE
        { 
            if(
g_knife_axe[iattacker]) 
                
set_msg_arg_string(4"Axe knife"
        } 

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE
        { 
            if(
g_knife_katana[iattacker]) 
                
set_msg_arg_string(4"Katana knife"
        } 

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE
        { 
            if(
g_knife_hammer[iattacker]) 
                
set_msg_arg_string(4"Ice knife"
        } 
    } 
    return 
PLUGIN_CONTINUE 


stock print_col_chat(const id, const input[], any:...)   
{   
        new 
count 1players[32];   
        static 
msg[191];   
        
vformat(msg190input3);   
        
replace_all(msg190"!g""^4"); // Green Color   
        
replace_all(msg190"!y""^1"); // Default Color  
        
replace_all(msg190"!t""^3"); // Team Color   
        
if (idplayers[0] = id; else get_players(playerscount"ch");   
        {   
            for ( new 
0counti++ )   
            {   
                    if ( 
is_user_connected(players[i]) )   
                    {   
                        
message_begin(MSG_ONE_UNRELIABLESayText_players[i]);   
                        
write_byte(players[i]);   
                        
write_string(msg);   
                        
message_end();   
                    }   
            }   
        }   
}    

public 
fw_PlayerPreThink(id

    if(!
is_user_alive(id) || zp_get_user_zombie(id)) 
        return 
FMRES_IGNORED 

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

    if (
weapon == CSW_KNIFE && g_knife_combat[id]) 
    { 
        
g_hasSpeed[id] = true 
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_combat_spd)) 
    } 

    if(
weapon == CSW_KNIFE && g_knife_combat[id])         
        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP)) 
        { 
            new 
flags pev(idpev_flags
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity
             
            
fVelocity[2] += get_pcvar_num(cvar_knife_combat_jump
             
            
set_pev(idpev_velocityfVelocity
            
set_pev(idpev_gaitsequence6
        } 
    if (
weapon == CSW_KNIFE && g_knife_strong[id]) 
    { 
        
g_hasSpeed[id] = true 
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_strong_spd)) 

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP)) 
        { 
            new 
flags pev(idpev_flags
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity
             
            
fVelocity[2] += get_pcvar_num(cvar_knife_strong_jump
             
            
set_pev(idpev_velocityfVelocity
            
set_pev(idpev_gaitsequence6
        } 
    } 
    if (
weapon == CSW_KNIFE && g_knife_axe[id]) 
    { 
        
g_hasSpeed[id] = true 
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_axe_spd)) 

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP)) 
        { 
            new 
flags pev(idpev_flags
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity
             
            
fVelocity[2] += get_pcvar_num(cvar_knife_axe_jump
             
            
set_pev(idpev_velocityfVelocity
            
set_pev(idpev_gaitsequence6
        } 
    } 
    if (
weapon == CSW_KNIFE && g_knife_katana[id]) 
    { 
        
g_hasSpeed[id] = true 
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_katana_spd)) 

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP)) 
        { 
            new 
flags pev(idpev_flags
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity
             
            
fVelocity[2] += get_pcvar_num(cvar_knife_katana_jump
             
            
set_pev(idpev_velocityfVelocity
            
set_pev(idpev_gaitsequence6
        } 
    } 
    if (
weapon == CSW_KNIFE && g_knife_hammer[id]) 
    { 
        
g_hasSpeed[id] = true 
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_hammer_spd)) 

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP)) 
        { 
            new 
flags pev(idpev_flags
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity
             
            
fVelocity[2] += get_pcvar_num(cvar_knife_hammer_jump
             
            
set_pev(idpev_velocityfVelocity
            
set_pev(idpev_gaitsequence6
        } 
    } 
    return 
FMRES_IGNORED 
}   

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type

    if(!
is_user_connected(attacker)) 
        return 
HAM_IGNORED 
     
    
if(zp_get_user_zombie(attacker)) 
        return 
HAM_IGNORED 

    
new weapon get_user_weapon(attacker

    if (
weapon == CSW_KNIFE && g_knife_combat[attacker]) 
    {     
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_combat_dmg)) 
    } 
    if (
weapon == CSW_KNIFE && g_knife_strong[attacker]) 
    {     
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_strong_dmg)) 
    } 
    if (
weapon == CSW_KNIFE && g_knife_axe[attacker]) 
    {     
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_axe_dmg)) 
    } 
    if (
weapon == CSW_KNIFE && g_knife_katana[attacker]) 
    {     
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_katana_dmg)) 
    } 
         
    if (
weapon == CSW_KNIFE && g_knife_hammer[attacker]) 
    {      
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_hammer_dmg)) 
    } 

    return 
HAM_IGNORED 


public 
fw_Knife_SecondaryAttack_Post(knife)  
{      
        static 
id  
        id 
get_pdata_cbase(knifem_pPlayer4)  

        if(
zp_get_user_zombie(id)) 
        return 
HAM_IGNORED 
     
        
if(is_user_connected(id) && g_knife_combat[id])  
        {  
            static 
Float:flRate  
            flRate 
get_pcvar_float(cvar_knife_combat_spd_attack2)  
          
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)  
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)  
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)  
        }  
  
        if(
is_user_connected(id) && g_knife_strong[id])  
        {  
            static 
Float:flRate  
            flRate 
get_pcvar_float(cvar_knife_strong_spd_attack2)  
              
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)  
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)  
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)  
        }  

        if(
is_user_connected(id) && g_knife_axe[id])  
        {  
            static 
Float:flRate  
            flRate 
get_pcvar_float(cvar_knife_axe_spd_attack2)  
                  
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)  
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)  
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)  
        }  

        if(
is_user_connected(id) && g_knife_katana[id])  
        {  
            static 
Float:flRate  
            flRate 
get_pcvar_float(cvar_knife_katana_spd_attack2)  
                  
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)  
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)  
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)  
        }  

        if(
is_user_connected(id) && g_knife_hammer[id])  
        {  
            static 
Float:flRate  
            flRate 
get_pcvar_float(cvar_hammer_spd_attack2)  
              
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)  
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)  
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)  
        }      
    
        return 
HAM_IGNORED  
}  

public 
event_Damage(id

    new 
weapon attacker get_user_attacker(id weapon); 

    if(!
is_user_alive(attacker)) 
        return 
PLUGIN_CONTINUE

    if(
weapon == CSW_KNIFE && g_knife_combat[attacker]) 
    { 
        new 
Float:vec[3]; 
        new 
Float:oldvelo[3]; 
        
get_user_velocity(idoldvelo); 
        
create_velocity_vector(id attacker vec); 
        
vec[0] += oldvelo[0]; 
        
vec[1] += oldvelo[1]; 
        
set_user_velocity(id vec); 
    } 

    if(
weapon == CSW_KNIFE && g_knife_strong[attacker]) 
    { 
        new 
Float:vec[3]; 
        new 
Float:oldvelo[3]; 
        
get_user_velocity(idoldvelo); 
        
create_velocity_vector(id attacker vec); 
        
vec[0] += oldvelo[0]; 
        
vec[1] += oldvelo[1]; 
        
set_user_velocity(id vec); 
    } 

    if(
weapon == CSW_KNIFE && g_knife_axe[attacker]) 
    { 
        new 
Float:vec[3]; 
        new 
Float:oldvelo[3]; 
        
get_user_velocity(idoldvelo); 
        
create_velocity_vector(id attacker vec); 
        
vec[0] += oldvelo[0]; 
        
vec[1] += oldvelo[1]; 
        
set_user_velocity(id vec); 
    } 

    if(
weapon == CSW_KNIFE && g_knife_katana[attacker]) 
    { 
        new 
Float:vec[3]; 
        new 
Float:oldvelo[3]; 
        
get_user_velocity(idoldvelo); 
        
create_velocity_vector(id attacker vec); 
        
vec[0] += oldvelo[0]; 
        
vec[1] += oldvelo[1]; 
        
set_user_velocity(id vec); 
    } 

    if(
weapon == CSW_KNIFE && g_knife_hammer[attacker]) 
    { 
        new 
Float:vec[3]; 
        new 
Float:oldvelo[3]; 
        
get_user_velocity(idoldvelo); 
        
create_velocity_vector(id attacker vec); 
        
vec[0] += oldvelo[0]; 
        
vec[1] += oldvelo[1]; 
        
set_user_velocity(id vec); 
    } 

    return 
PLUGIN_CONTINUE


stock create_velocity_vector(victim,attacker,Float:velocity[3]) 

    if(!
zp_get_user_zombie(victim) || !is_user_alive(attacker)) 
        return 
0

    new 
Float:vicorigin[3]; 
    new 
Float:attorigin[3]; 
    
entity_get_vector(victim   EV_VEC_origin vicorigin); 
    
entity_get_vector(attacker EV_VEC_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])>largestnumlargestnum floatabs(origin2[0]); 
    if(
floatabs(origin2[1])>largestnumlargestnum floatabs(origin2[1]); 

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

    if (
g_knife_combat[attacker]) 
    { 
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_combat_knock) * 3000) ) / get_entity_distance(victim attacker); 
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_combat_knock) * 3000) ) / get_entity_distance(victim attacker); 
    } 

    if (
g_knife_strong[attacker]) 
    { 
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_strong_knock) * 3000) ) / get_entity_distance(victim attacker); 
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_strong_knock) * 3000) ) / get_entity_distance(victim attacker); 
    } 

    if (
g_knife_axe[attacker]) 
    { 
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_axe_knock) * 3000) ) / get_entity_distance(victim attacker); 
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_axe_knock) * 3000) ) / get_entity_distance(victim attacker); 
    } 

    if (
g_knife_katana[attacker]) 
    { 
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_katana_knock) * 3000) ) / get_entity_distance(victim attacker); 
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_katana_knock) * 3000) ) / get_entity_distance(victim attacker); 
    } 

    if (
g_knife_hammer[attacker]) 
    { 
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_hammer_knock) * 3000) ) / get_entity_distance(victim attacker); 
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_hammer_knock) * 3000) ) / get_entity_distance(victim attacker); 
    } 

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

    return 
1


public 
client_putinserver(id

    switch(
random_num(00)) 
    { 
        case 
0
        { 
            
g_knife_combat[id] = true 
            g_hasSpeed
[id] = true 
        


    } 

LearninG is offline
RBE sLayeR
Member
Join Date: Jul 2019
Location: Republic of Kosovo
Old 08-26-2019 , 09:56   Re: ZP Knife Menu
Reply With Quote #5

Quote:
Originally Posted by LearninG View Post
there is no ADMIN_LEVEL_M.
valid levels are :
PHP Code:
ADMIN_LEVEL_A (for additional plugins)
ADMIN_LEVEL_B
ADMIN_LEVEL_C
ADMIN_LEVEL_D
ADMIN_LEVEL_E
ADMIN_LEVEL_F
ADMIN_LEVEL_G
ADMIN_LEVEL_H 
Ok but could you make the 4th (Blue WarHammer) knife only for vips too same as 5th knife but this for flag b or c
__________________
Copy-and-Paste was programmed by programmers for programmers actually
RBE sLayeR is offline
RBE sLayeR
Member
Join Date: Jul 2019
Location: Republic of Kosovo
Old 08-26-2019 , 10:55   Re: ZP Knife Menu
Reply With Quote #6

Hey dude , dont lose your time cuz i found a better knife menu plugin
Now , could you just tell me how to make it auto appear at start of the round after choosing primary weapon ,secondary weapon then it would be nice to show knife menu after them
Do i need to edit zombie_plague40.sma ?
__________________
Copy-and-Paste was programmed by programmers for programmers actually
RBE sLayeR is offline
LearninG
Senior Member
Join Date: Apr 2019
Location: Iran
Old 08-26-2019 , 11:13   Re: ZP Knife Menu
Reply With Quote #7

Quote:
Originally Posted by RBE sLayeR View Post
Hey dude , dont lose your time cuz i found a better knife menu plugin
Now , could you just tell me how to make it auto appear at start of the round after choosing primary weapon ,secondary weapon then it would be nice to show knife menu after them
Do i need to edit zombie_plague40.sma ?
Yes you MUST edit zombie_plague40.sma , but i have a better idea , on new round, start a task and open menu.

Last edited by LearninG; 08-26-2019 at 11:13.
LearninG is offline
RBE sLayeR
Member
Join Date: Jul 2019
Location: Republic of Kosovo
Old 08-26-2019 , 11:17   Re: ZP Knife Menu
Reply With Quote #8

Quote:
Originally Posted by LearninG View Post
Yes you MUST edit zombie_plague40.sma , but i have a better idea , on new round, start a task and open menu.
How can i do that because i dont know scripting
could you help me ?
__________________
Copy-and-Paste was programmed by programmers for programmers actually
RBE sLayeR is offline
DON KHAN 1
Senior Member
Join Date: Mar 2019
Location: Pakistan
Old 08-26-2019 , 11:29   Re: ZP Knife Menu
Reply With Quote #9

PHP Code:
#include <amxmodx>  
#include <fakemeta>  
#include <fun>   
#include <engine>   
#include <hamsandwich>  
#include <zombieplague> 

#define PLUGIN    "Choose knifes"  
#define VERSION    "1.0"  
#define AUTHOR    "CHyC/4e/l"  

#define VIP ADMIN_LEVEL_H 
#define VIP2 ADMIN_LEVEL_C
#define MAXPLAYERS 32  

new combat_v_model[] = "models/KnifeMenu/v_knife1.mdl"  
new combat_p_model[] = "models/KnifeMenu/p_knife1.mdl"  

new strong_v_model[] = "models/KnifeMenu/v_knife3.mdl"  
new strong_p_model[] = "models/KnifeMenu/p_knife3.mdl"  

new axe_v_model[] = "models/KnifeMenu/v_knife2.mdl"      
new axe_p_model[] = "models/KnifeMenu/p_knife2.mdl"      

new katana_v_model[] = "models/KnifeMenu/v_knife4.mdl"      
new katana_p_model[] = "models/KnifeMenu/p_knife4.mdl"  

new hammer_v_model[] = "models/KnifeMenu/v_knife6.mdl"      
new hammer_p_model[] = "models/KnifeMenu/p_knife6.mdl"      

const m_pPlayer 41   
const m_flNextPrimaryAttack 46   
const m_flNextSecondaryAttack 47   
const m_flTimeWeaponIdle 48   

new g_hasSpeed[33], SayText  
new bool:g_WasShowed[MAXPLAYERS 1]  
new 
g_knife_combat[33], cvar_knife_combat_jumpcvar_knife_combat_spdcvar_knife_combat_dmgcvar_knife_combat_knockcvar_knife_combat_spd_attack2  
new g_knife_strong[33], cvar_knife_strong_jumpcvar_knife_strong_spdcvar_knife_strong_dmgcvar_knife_strong_knockcvar_knife_strong_spd_attack2  
new g_knife_axe[33], cvar_knife_axe_jumpcvar_knife_axe_spdcvar_knife_axe_dmgcvar_knife_axe_knockcvar_knife_axe_spd_attack2  
new g_knife_katana[33], cvar_knife_katana_jumpcvar_knife_katana_spdcvar_knife_katana_dmgcvar_knife_katana_knockcvar_knife_katana_spd_attack2  
new g_knife_hammer[33], cvar_knife_hammer_jumpcvar_knife_hammer_spdcvar_knife_hammer_dmgcvar_knife_hammer_knockcvar_hammer_spd_attack2  

new const g_sound_knife[] = { "items/gunpickup2.wav" }  

new const 
combat_sounds[][] =  
{  
    
"zmwpn/zb_knife/combat_deploy.wav",  
    
"zmwpn/zb_knife/combat_hit.wav"    ,  
    
"zmwpn/zb_knife/combat_hit.wav"    ,  
    
"zmwpn/zb_knife/combat_hit.wav"    ,  
    
"zmwpn/zb_knife/combat_hit.wav"    ,  
    
"zmwpn/zb_knife/combat_hitwall.wav",  
    
"zmwpn/zb_knife/combat_slash.wav",  
    
"zmwpn/zb_knife/combat_slash.wav",  
    
"zmwpn/zb_knife/combat_stab.wav"  
}  

new const 
strong_sounds[][] =  
{  
    
"zmwpn/zb_knife/strong_deploy.wav",  
    
"zmwpn/zb_knife/strong_hit.wav",  
    
"zmwpn/zb_knife/strong_hit.wav",  
    
"zmwpn/zb_knife/strong_hit.wav",  
    
"zmwpn/zb_knife/strong_hit.wav",  
    
"zmwpn/zb_knife/strong_hitwall.wav",  
    
"zmwpn/zb_knife/strong_slash.wav",  
    
"zmwpn/zb_knife/strong_slash.wav",  
    
"zmwpn/zb_knife/strong_stab.wav"  
}  

new const 
axe_sounds[][] =  
{  
    
"zmwpn/zb_knife/axe_deploy.wav",  
    
"zmwpn/zb_knife/axe_hit.wav",  
    
"zmwpn/zb_knife/axe_hit.wav",  
    
"zmwpn/zb_knife/axe_hit.wav",  
    
"zmwpn/zb_knife/axe_hit.wav",  
    
"zmwpn/zb_knife/axe_hitwall.wav",  
    
"zmwpn/zb_knife/axe_slash.wav",  
    
"zmwpn/zb_knife/axe_slash.wav",  
    
"zmwpn/zb_knife/axe_stab.wav"  
}  

new const 
katana_sounds[][] =  
{  
    
"zmwpn/zb_knife/katana_deploy.wav",  
    
"zmwpn/zb_knife/katana_hit.wav",  
    
"zmwpn/zb_knife/katana_hit.wav",  
    
"zmwpn/zb_knife/katana_hit.wav",  
    
"zmwpn/zb_knife/katana_hit.wav",  
    
"zmwpn/zb_knife/katana_hitwall.wav",  
    
"zmwpn/zb_knife/katana_slash.wav",  
    
"zmwpn/zb_knife/katana_slash.wav",  
    
"zmwpn/zb_knife/katana_stab.wav"  
}  

new const 
hammer_sounds[][] =  
{  
    
"zmwpn/zb_knife/hammer_deploy.wav",  
    
"zmwpn/zb_knife/hammer_hit.wav",  
    
"zmwpn/zb_knife/hammer_hit.wav",  
    
"zmwpn/zb_knife/hammer_hit.wav",  
    
"zmwpn/zb_knife/hammer_hit.wav",  
    
"zmwpn/zb_knife/hammer_hitwall.wav",  
    
"zmwpn/zb_knife/hammer_slash.wav",  
    
"zmwpn/zb_knife/hammer_slash.wav",  
    
"zmwpn/zb_knife/hammer_stab.wav"  
}  

new const 
oldknife_sounds[][] =  
{  
    
"weapons/knife_deploy1.wav",  
    
"weapons/knife_hit1.wav",  
    
"weapons/knife_hit2.wav",  
    
"weapons/knife_hit3.wav",  
    
"weapons/knife_hit4.wav",  
    
"weapons/knife_hitwall1.wav",  
    
"weapons/knife_slash1.wav",  
    
"weapons/knife_slash2.wav",  
    
"weapons/knife_stab.wav"  
}  

public 
plugin_init()  
{  
    
register_plugin(PLUGIN VERSION AUTHOR);  
    
register_cvar("zp_addon_knife"VERSIONFCVAR_SERVER);  
    
SayText get_user_msgid("SayText")     

    
register_clcmd("say /knife","knife_menu",ADMIN_ALL,"knife_menu")  
    
register_clcmd("/knife","knife_menu",ADMIN_ALL,"knife_menu")  
    
register_clcmd("combat""give_combat")  
    
register_clcmd("strong""give_strong")  
    
register_clcmd("axe""give_axe")  
    
register_clcmd("katana""give_katana")  
    
register_clcmd("hammer""give_hammer")  

    
register_event("CurWeapon","checkWeapon","be","1=1");  
    
register_event("Damage" "event_Damage" "b" "2>0");  

    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink");  
    
register_forward(FM_EmitSound"fw_EmitSound");  

    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg");  

    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");  
    
RegisterHam(Ham_Weapon_SecondaryAttack"weapon_knife""fw_Knife_SecondaryAttack_Post"1)   

    
cvar_knife_combat_jumpregister_cvar("zp_knife_combat_jump""270.0");  
    
cvar_knife_combat_spd register_cvar("zp_knife_combat_spd""320.0");  
    
cvar_knife_combat_dmg register_cvar("zp_knife_combat_dmg" "4.0");  
    
cvar_knife_combat_knock register_cvar("zp_knife_combat_knock" "-1.0");  
    
cvar_knife_combat_spd_attack2 register_cvar("zp_knife_combat_spd_attack2" "2.2");  

    
cvar_knife_strong_jumpregister_cvar("zp_knife_strong_jump""265.0");  
    
cvar_knife_strong_spd register_cvar("zp_knife_strong_spd""255.0");  
    
cvar_knife_strong_dmg register_cvar("zp_knife_strong_dmg" "13.5");  
    
cvar_knife_strong_knock register_cvar("zp_knife_strong_knock" "-1.0");  
    
cvar_knife_strong_spd_attack2 register_cvar("zp_knife_strong_spd_attack2" "2.6");  

    
cvar_knife_axe_jumpregister_cvar("zp_knife_axe_jump""270.0");  
    
cvar_knife_axe_spd register_cvar("zp_knife_axe_spd""250.0");  
    
cvar_knife_axe_dmg register_cvar("zp_knife_axe_dmg" "5.0");  
    
cvar_knife_axe_knock register_cvar("zp_knife_axe_knock" "6.0");  
    
cvar_knife_axe_spd_attack2 register_cvar("zp_knife_axe_spd_attack2" "2.9");  

    
cvar_knife_katana_jumpregister_cvar("zp_knife_katana_jump""340.0");  
    
cvar_knife_katana_spd register_cvar("zp_knife_katana_spd""265.0");  
    
cvar_knife_katana_dmg register_cvar("zp_knife_katana_dmg" "5.0");  
    
cvar_knife_katana_knock register_cvar("zp_knife_katana_knock" "-1.0");  
    
cvar_knife_katana_spd_attack2 register_cvar("zp_knife_katana_spd_attack2" "2.2");  

    
cvar_knife_hammer_jumpregister_cvar("zp_knife_hammer_jump""340.0");  
    
cvar_knife_hammer_spdregister_cvar("zp_knife_hammer_spd""320.0");  
    
cvar_knife_hammer_dmg register_cvar("zp_knife_hammer_dmg" "15.0");  
    
cvar_knife_hammer_knock register_cvar("zp_knife_hammer_knock" "6.0");  
    
cvar_hammer_spd_attack2 register_cvar("zp_knife_hammer_spd_attack2" "3.2");  

    
register_event("HLTV""event_round_start""a""1=0""2=0")  
}  

public 
client_connect(id)  
{  
    
g_knife_combat[id] = false  
    g_knife_strong
[id] = false  
    g_knife_axe
[id] = false  
    g_knife_katana
[id] = false  
    g_knife_hammer
[id] = false  
    g_hasSpeed
[id] = false  
}  

public 
client_disconnected(id)  
{  
    
g_knife_combat[id] = false  
    g_knife_strong
[id] = false  
    g_knife_axe
[id] = false  
    g_knife_katana
[id] = false  
    g_knife_hammer
[id] = false  
    g_hasSpeed
[id] = false  
}  

public 
plugin_precache()  
{  
    
precache_model(combat_v_model)  
    
precache_model(combat_p_model)  
    
precache_model(strong_v_model)  
    
precache_model(strong_p_model)  
    
precache_model(axe_v_model)  
    
precache_model(axe_p_model)  
    
precache_model(katana_v_model)  
    
precache_model(katana_p_model)  
    
precache_model(hammer_v_model)  
    
precache_model(hammer_p_model)  

    
precache_sound(g_sound_knife)  

    for(new 
0sizeof combat_soundsi++)  
        
precache_sound(combat_sounds[i])  

    for(new 
0sizeof strong_soundsi++)  
        
precache_sound(strong_sounds[i])  

    for(new 
0sizeof axe_soundsi++)  
        
precache_sound(axe_sounds[i])    

    for(new 
0sizeof katana_soundsi++)  
        
precache_sound(katana_sounds[i])  

    for(new 
0sizeof hammer_soundsi++)  
        
precache_sound(hammer_sounds[i])  
}  

public 
event_round_start(id)  
{  
        for (new 
iMAXPLAYERS 1i++)  
            
g_WasShowed[i] = false  
}  

public 
knife_menu(id)  
{  
    if (
g_WasShowed[id])  
    {  
        
print_col_chat(id"^1[^4ZP^1] You can choose your knife only one time per round")  
        return 
PLUGIN_HANDLED  
    
}  

    if(
is_user_alive(id) && !zp_get_user_zombie(id))  
    {  
        
my_menu(id)  
    }  

    return 
PLUGIN_HANDLED  
}  

public 
my_menu(id)  
{  
    new 
menu menu_create("\r~|\wKnife Menu \r|~""menu_handler");  
    
menu_additem(menu"\w><|Dark Combat|>< \r~|\dSpeed\r|~""1"0);  
    
menu_additem(menu"\w><|Balorog Axe|><  \r|\dDamage \r|""2"0);  
    
menu_additem(menu"\w><|Green Katana|>< \r~|\dGravity\r|~""3"0);  
      
    
menu_additem(menu"\w><|Blue WarHammer|>< \r~|\wV\yI\rP\d|~""4"0); 
      
    
menu_additem(menu"\w><|Legendary WarHammer|>< \r~|\rA\yD\rM\yI\rN\y|~""5"0);  
      
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);  
      
    
menu_display(idmenu0);      
}   

public 
menu_handler(idmenuitem)  
{  
    if( 
item == MENU_EXIT )  
    {  
            
menu_destroy(menu);  
            return 
PLUGIN_HANDLED;      
    }  
      
    new 
data[6], iName[64];  
    new 
accesscallback;  
      
    
menu_item_getinfo(menuitemaccessdata,5iName63callback);  
      
    new 
key str_to_num(data);  
      
    switch(
key)  
    {  
            case 
1:  
            {  
            
give_combat(id)  
            
menu_destroy(menu);  
            return 
PLUGIN_HANDLED  
        
}  
        case 
2:  
        {  
            
give_strong(id)  
            
menu_destroy(menu);  
            return 
PLUGIN_HANDLED  
        
}  
        case 
3:  
        {  
            
give_axe(id)  
            
menu_destroy(menu);  
            return 
PLUGIN_HANDLED  
        
}  
        case 
4:  
        {  
            
give_katana(id)  
            
menu_destroy(menu);  
            return 
PLUGIN_HANDLED  
        
}  
        case 
5:  
        {  
            
give_hammer(id)  
            
menu_destroy(menu);  
            return 
PLUGIN_HANDLED  
        
}  
    }  
    
menu_destroy(menu);  
    return 
PLUGIN_HANDLED  
}  

public 
give_combat(id)  
{  
    
g_knife_combat[id] = true      
    g_knife_strong
[id] = false  
    g_knife_axe
[id] = false      
    g_knife_katana
[id] = false      
    g_knife_hammer
[id] = false  
    g_hasSpeed
[id] =  true  
    g_WasShowed
[id] = true  

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)  
}  

public 
give_strong(id)  
{  
    
g_knife_combat[id] = false      
    g_knife_strong
[id] = true      
    g_knife_axe
[id] = false  
    g_knife_katana
[id] = false      
    g_knife_hammer
[id] = false  
    g_hasSpeed
[id] = true  
    g_WasShowed
[id] = true  

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)  
}  

public 
give_axe(id)  
{  
    
g_knife_combat[id] = false      
    g_knife_strong
[id] = false      
    g_knife_axe
[id] = true  
    g_knife_katana
[id] = false      
    g_knife_hammer
[id] = false  
    g_hasSpeed
[id] = true  
    g_WasShowed
[id] = true  

    engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)  
}  

public 
give_katana(id)  
{  
    if (
get_user_flags(id) & VIP2
    {
    
        
g_knife_combat[id] = false      
        g_knife_strong
[id] = false      
        g_knife_axe
[id] = false  
        g_knife_katana
[id] = true      
        g_knife_hammer
[id] = false  
        g_hasSpeed
[id] = true  
        g_WasShowed
[id] = true  

        engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)  
    }  
    else   
    {  
        
client_cmd(id"/knife")  
        
g_WasShowed[id] = true  
    



public 
give_hammer(id)  
{  
    if (
get_user_flags(id) & VIP)  
    {  
        
g_knife_combat[id] = false      
        g_knife_strong
[id] = false      
        g_knife_axe
[id] = false  
        g_knife_katana
[id] = false  
        g_knife_hammer
[id] = true  
        g_hasSpeed
[id] =  true  
        g_WasShowed
[id] = true  

        engfunc
(EngFunc_EmitSoundidCHAN_BODYg_sound_knife1.0ATTN_NORM0PITCH_NORM)  
    }  
    else   
    {  
        
client_cmd(id"/knife")  
        
g_WasShowed[id] = true  
    
}  
}  

public 
checkWeapon(id)  
{  
    new 
plrWeapId  
      
    plrWeapId 
get_user_weapon(id)  
      
    if (
plrWeapId == CSW_KNIFE && (g_knife_combat[id] || g_knife_strong[id] || g_knife_axe[id] || g_knife_katana[id] || g_knife_hammer[id]))  
    {  
        
checkModel(id)  
    }  
}  

public 
checkModel(id)  
{  
    if (
zp_get_user_zombie(id))  
        return 
PLUGIN_HANDLED  
      
    
if (g_knife_combat[id])  
    {  
        
set_pev(idpev_viewmodel2combat_v_model)  
        
set_pev(idpev_weaponmodel2combat_p_model)  
    }  

    if (
g_knife_strong[id])  
    {  
        
set_pev(idpev_viewmodel2strong_v_model)  
        
set_pev(idpev_weaponmodel2strong_p_model)  
    }  

    if (
g_knife_axe[id])  
    {  
        
set_pev(idpev_viewmodel2axe_v_model)  
        
set_pev(idpev_weaponmodel2axe_p_model)  
    }  

    if (
g_knife_katana[id])  
    {  
        
set_pev(idpev_viewmodel2katana_v_model)  
        
set_pev(idpev_weaponmodel2katana_p_model)  
    }  

    if (
g_knife_hammer[id])  
    {  
        
set_pev(idpev_viewmodel2hammer_v_model)  
        
set_pev(idpev_weaponmodel2hammer_p_model)  
    }  
    return 
PLUGIN_HANDLED  
}  

public 
fw_EmitSound(idchannel, const sound[])  
{  
    if(!
is_user_alive(id) || zp_get_user_zombie(id))  
        return 
FMRES_IGNORED  
          
    
for(new 0sizeof combat_soundsi++)   
    for(new 
0sizeof strong_soundsi++)  
    for(new 
0sizeof axe_soundsi++)  
    for(new 
0sizeof katana_soundsi++)  
    for(new 
0sizeof hammer_soundsi++)  
    {  
        if(
equal(soundoldknife_sounds[i]))  
        {  
            if (
g_knife_combat[id])  
            {  
                
emit_sound(idchannelcombat_sounds[i], 1.0ATTN_NORM0PITCH_NORM)  
                return 
FMRES_SUPERCEDE  
            
}  
            if (
g_knife_strong[id])  
            {  
                
emit_sound(idchannelstrong_sounds[i], 1.0ATTN_NORM0PITCH_NORM)  
                return 
FMRES_SUPERCEDE  
            
}  
            if (
g_knife_axe[id])  
            {  
                
emit_sound(idchannelaxe_sounds[i], 1.0ATTN_NORM0PITCH_NORM)  
                return 
FMRES_SUPERCEDE  
            
}  
            if (
g_knife_katana[id])  
            {  
                
emit_sound(idchannelkatana_sounds[i], 1.0ATTN_NORM0PITCH_NORM)  
                return 
FMRES_SUPERCEDE  
            
}  
            if (
g_knife_hammer[id])  
            {  
                
emit_sound(idchannelhammer_sounds[i], 1.0ATTN_NORM0PITCH_NORM)  
                return 
FMRES_SUPERCEDE  
            
}  
            if (!
g_knife_combat[id] || !g_knife_strong[id] || !g_knife_axe[id] || !g_knife_katana[id] || !g_knife_hammer[id])  
            {  
                
emit_sound(idchanneloldknife_sounds[i], 1.0ATTN_NORM0PITCH_NORM)  
                return 
FMRES_SUPERCEDE  
            
}  
        }  
    }  
    return 
FMRES_IGNORED  
}  

public 
message_DeathMsg(msg_idmsg_destid)  
{  
    static 
szTruncatedWeapon[33], iattackerivictim  
      
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))  
      
    
iattacker get_msg_arg_int(1)  
    
ivictim get_msg_arg_int(2)  
      
    if(!
is_user_connected(iattacker) || iattacker == ivictim)  
        return 
PLUGIN_CONTINUE  

    
if (!zp_get_user_zombie(iattacker))  
    {  
        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)  
        {  
            if(
g_knife_combat[iattacker])  
                
set_msg_arg_string(4"Combat knife")  
        }  
      
        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)  
        {  
            if(
g_knife_strong[iattacker])  
                
set_msg_arg_string(4"Strong knife")  
        }  

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)  
        {  
            if(
g_knife_axe[iattacker])  
                
set_msg_arg_string(4"Axe knife")  
        }  

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)  
        {  
            if(
g_knife_katana[iattacker])  
                
set_msg_arg_string(4"Katana knife")  
        }  

        if(
equal(szTruncatedWeapon"knife") && get_user_weapon(iattacker) == CSW_KNIFE)  
        {  
            if(
g_knife_hammer[iattacker])  
                
set_msg_arg_string(4"Ice knife")  
        }  
    }  
    return 
PLUGIN_CONTINUE  
}  

stock print_col_chat(const id, const input[], any:...)    
{    
        new 
count 1players[32];    
        static 
msg[191];    
        
vformat(msg190input3);    
        
replace_all(msg190"!g""^4"); // Green Color    
        
replace_all(msg190"!y""^1"); // Default Color   
        
replace_all(msg190"!t""^3"); // Team Color    
        
if (idplayers[0] = id; else get_players(playerscount"ch");    
        {    
            for ( new 
0counti++ )    
            {    
                    if ( 
is_user_connected(players[i]) )    
                    {    
                        
message_begin(MSG_ONE_UNRELIABLESayText_players[i]);    
                        
write_byte(players[i]);    
                        
write_string(msg);    
                        
message_end();    
                    }    
            }    
        }    
}     

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

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

    if (
weapon == CSW_KNIFE && g_knife_combat[id])  
    {  
        
g_hasSpeed[id] = true  
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_combat_spd))  
    }  

    if(
weapon == CSW_KNIFE && g_knife_combat[id])          
        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))  
        {  
            new 
flags pev(idpev_flags)  
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)  
              
            
fVelocity[2] += get_pcvar_num(cvar_knife_combat_jump)  
              
            
set_pev(idpev_velocityfVelocity)  
            
set_pev(idpev_gaitsequence6)  
        }  
    if (
weapon == CSW_KNIFE && g_knife_strong[id])  
    {  
        
g_hasSpeed[id] = true  
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_strong_spd))  

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))  
        {  
            new 
flags pev(idpev_flags)  
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)  
              
            
fVelocity[2] += get_pcvar_num(cvar_knife_strong_jump)  
              
            
set_pev(idpev_velocityfVelocity)  
            
set_pev(idpev_gaitsequence6)  
        }  
    }  
    if (
weapon == CSW_KNIFE && g_knife_axe[id])  
    {  
        
g_hasSpeed[id] = true  
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_axe_spd))  

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))  
        {  
            new 
flags pev(idpev_flags)  
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)  
              
            
fVelocity[2] += get_pcvar_num(cvar_knife_axe_jump)  
              
            
set_pev(idpev_velocityfVelocity)  
            
set_pev(idpev_gaitsequence6)  
        }  
    }  
    if (
weapon == CSW_KNIFE && g_knife_katana[id])  
    {  
        
g_hasSpeed[id] = true  
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_katana_spd))  

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))  
        {  
            new 
flags pev(idpev_flags)  
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)  
              
            
fVelocity[2] += get_pcvar_num(cvar_knife_katana_jump)  
              
            
set_pev(idpev_velocityfVelocity)  
            
set_pev(idpev_gaitsequence6)  
        }  
    }  
    if (
weapon == CSW_KNIFE && g_knife_hammer[id])  
    {  
        
g_hasSpeed[id] = true  
        set_pev
(idpev_maxspeedget_pcvar_float(cvar_knife_hammer_spd))  

        if ((
pev(idpev_button) & IN_JUMP) && !(pev(idpev_oldbuttons) & IN_JUMP))  
        {  
            new 
flags pev(idpev_flags)  
            new 
waterlvl pev(idpev_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(idpev_velocityfVelocity)  
              
            
fVelocity[2] += get_pcvar_num(cvar_knife_hammer_jump)  
              
            
set_pev(idpev_velocityfVelocity)  
            
set_pev(idpev_gaitsequence6)  
        }  
    }  
    return 
FMRES_IGNORED  
}    

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)  
{  
    if(!
is_user_connected(attacker))  
        return 
HAM_IGNORED  
      
    
if(zp_get_user_zombie(attacker))  
        return 
HAM_IGNORED  

    
new weapon get_user_weapon(attacker)  

    if (
weapon == CSW_KNIFE && g_knife_combat[attacker])  
    {      
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_combat_dmg))  
    }  
    if (
weapon == CSW_KNIFE && g_knife_strong[attacker])  
    {      
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_strong_dmg))  
    }  
    if (
weapon == CSW_KNIFE && g_knife_axe[attacker])  
    {      
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_axe_dmg))  
    }  
    if (
weapon == CSW_KNIFE && g_knife_katana[attacker])  
    {      
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_katana_dmg))  
    }  
          
    if (
weapon == CSW_KNIFE && g_knife_hammer[attacker])  
    {       
        
SetHamParamFloat(4damage get_pcvar_float(cvar_knife_hammer_dmg))  
    }  

    return 
HAM_IGNORED  
}  

public 
fw_Knife_SecondaryAttack_Post(knife)   
{       
        static 
id   
        id 
get_pdata_cbase(knifem_pPlayer4)   

        if(
zp_get_user_zombie(id))  
        return 
HAM_IGNORED  
      
        
if(is_user_connected(id) && g_knife_combat[id])   
        {   
            static 
Float:flRate   
            flRate 
get_pcvar_float(cvar_knife_combat_spd_attack2)   
           
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)   
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)   
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)   
        }   
   
        if(
is_user_connected(id) && g_knife_strong[id])   
        {   
            static 
Float:flRate   
            flRate 
get_pcvar_float(cvar_knife_strong_spd_attack2)   
               
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)   
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)   
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)   
        }   

        if(
is_user_connected(id) && g_knife_axe[id])   
        {   
            static 
Float:flRate   
            flRate 
get_pcvar_float(cvar_knife_axe_spd_attack2)   
                   
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)   
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)   
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)   
        }   

        if(
is_user_connected(id) && g_knife_katana[id])   
        {   
            static 
Float:flRate   
            flRate 
get_pcvar_float(cvar_knife_katana_spd_attack2)   
                   
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)   
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)   
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)   
        }   

        if(
is_user_connected(id) && g_knife_hammer[id])   
        {   
            static 
Float:flRate   
            flRate 
get_pcvar_float(cvar_hammer_spd_attack2)   
               
            
set_pdata_float(knifem_flNextPrimaryAttackflRate4)   
            
set_pdata_float(knifem_flNextSecondaryAttackflRate4)   
            
set_pdata_float(knifem_flTimeWeaponIdleflRate4)   
        }       
     
        return 
HAM_IGNORED   
}   

public 
event_Damage(id)  
{  
    new 
weapon attacker get_user_attacker(id weapon);  

    if(!
is_user_alive(attacker))  
        return 
PLUGIN_CONTINUE;  

    if(
weapon == CSW_KNIFE && g_knife_combat[attacker])  
    {  
        new 
Float:vec[3];  
        new 
Float:oldvelo[3];  
        
get_user_velocity(idoldvelo);  
        
create_velocity_vector(id attacker vec);  
        
vec[0] += oldvelo[0];  
        
vec[1] += oldvelo[1];  
        
set_user_velocity(id vec);  
    }  

    if(
weapon == CSW_KNIFE && g_knife_strong[attacker])  
    {  
        new 
Float:vec[3];  
        new 
Float:oldvelo[3];  
        
get_user_velocity(idoldvelo);  
        
create_velocity_vector(id attacker vec);  
        
vec[0] += oldvelo[0];  
        
vec[1] += oldvelo[1];  
        
set_user_velocity(id vec);  
    }  

    if(
weapon == CSW_KNIFE && g_knife_axe[attacker])  
    {  
        new 
Float:vec[3];  
        new 
Float:oldvelo[3];  
        
get_user_velocity(idoldvelo);  
        
create_velocity_vector(id attacker vec);  
        
vec[0] += oldvelo[0];  
        
vec[1] += oldvelo[1];  
        
set_user_velocity(id vec);  
    }  

    if(
weapon == CSW_KNIFE && g_knife_katana[attacker])  
    {  
        new 
Float:vec[3];  
        new 
Float:oldvelo[3];  
        
get_user_velocity(idoldvelo);  
        
create_velocity_vector(id attacker vec);  
        
vec[0] += oldvelo[0];  
        
vec[1] += oldvelo[1];  
        
set_user_velocity(id vec);  
    }  

    if(
weapon == CSW_KNIFE && g_knife_hammer[attacker])  
    {  
        new 
Float:vec[3];  
        new 
Float:oldvelo[3];  
        
get_user_velocity(idoldvelo);  
        
create_velocity_vector(id attacker vec);  
        
vec[0] += oldvelo[0];  
        
vec[1] += oldvelo[1];  
        
set_user_velocity(id vec);  
    }  

    return 
PLUGIN_CONTINUE;  
}  

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

    new 
Float:vicorigin[3];  
    new 
Float:attorigin[3];  
    
entity_get_vector(victim   EV_VEC_origin vicorigin);  
    
entity_get_vector(attacker EV_VEC_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])>largestnumlargestnum floatabs(origin2[0]);  
    if(
floatabs(origin2[1])>largestnumlargestnum floatabs(origin2[1]);  

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

    if (
g_knife_combat[attacker])  
    {  
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_combat_knock) * 3000) ) / get_entity_distance(victim attacker);  
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_combat_knock) * 3000) ) / get_entity_distance(victim attacker);  
    }  

    if (
g_knife_strong[attacker])  
    {  
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_strong_knock) * 3000) ) / get_entity_distance(victim attacker);  
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_strong_knock) * 3000) ) / get_entity_distance(victim attacker);  
    }  

    if (
g_knife_axe[attacker])  
    {  
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_axe_knock) * 3000) ) / get_entity_distance(victim attacker);  
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_axe_knock) * 3000) ) / get_entity_distance(victim attacker);  
    }  

    if (
g_knife_katana[attacker])  
    {  
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_katana_knock) * 3000) ) / get_entity_distance(victim attacker);  
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_katana_knock) * 3000) ) / get_entity_distance(victim attacker);  
    }  

    if (
g_knife_hammer[attacker])  
    {  
        
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_hammer_knock) * 3000) ) / get_entity_distance(victim attacker);  
        
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_hammer_knock) * 3000) ) / get_entity_distance(victim attacker);  
    }  

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

    return 
1;  
}  

public 
client_putinserver(id)  
{  
    switch(
random_num(00))  
    {  
        case 
0:  
        {  
            
g_knife_combat[id] = true  
            g_hasSpeed
[id] = true  
        
}  

    }  

Added ADMIN_LEVEL_C flag for 4th knife & about showing knife menu after the choosing the primary & secondary guns so please provide us the zombie_plague40.sma because maybe u are using zombie plague special or other...
so provide zombie_plague40.sma
__________________
Facebook
My YouTube
Ro{Y}aL WarLanD CommuniTy
Selling Zombie CSO 4.3 Money System Mod
DON KHAN 1 is offline
LearninG
Senior Member
Join Date: Apr 2019
Location: Iran
Old 08-26-2019 , 11:37   Re: ZP Knife Menu
Reply With Quote #10

Quote:
Originally Posted by RBE sLayeR View Post
How can i do that because i dont know scripting
could you help me ?
since you got a new knife menu you should provide it , so we can add things to it.
LearninG is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 20:54.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode