Problema Knife Cso

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
Koayuri
Membru, skill 0
Membru, skill 0
Posts: 52
Joined: 10 Jun 2022, 13:48
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: 188.212.100.26:27015
SteamID: Luciferr1
Fond eXtream: 0
Discord: Lucifer.#0001
Has thanked: 1 time
Been thanked: 2 times

07 Jan 2023, 09:34

Am si eu cateva probleme la acest knife menu va rog sa ma ajutati cum puteti sau sa-mi lasati explicati cu lini de cod ce trebuie sters/adaugat daca aveti timp!
Am cateva erori mai jos si am nevoie de voi.
| Afiseaza codul
#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 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_jump, cvar_knife_combat_spd, cvar_knife_combat_dmg, cvar_knife_combat_knock, cvar_knife_combat_spd_attack2  
new g_knife_strong[33], cvar_knife_strong_jump, cvar_knife_strong_spd, cvar_knife_strong_dmg, cvar_knife_strong_knock, cvar_knife_strong_spd_attack2  
new g_knife_axe[33], cvar_knife_axe_jump, cvar_knife_axe_spd, cvar_knife_axe_dmg, cvar_knife_axe_knock, cvar_knife_axe_spd_attack2  
new g_knife_hammer[33], cvar_knife_hammer_jump, cvar_knife_hammer_spd, cvar_knife_hammer_dmg, cvar_knife_hammer_knock, cvar_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 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", VERSION, FCVAR_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("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_jump= register_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_jump= register_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_jump= register_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_hammer_jump= register_cvar("zp_knife_hammer_jump", "350.0");  
    cvar_knife_hammer_spd= register_cvar("zp_knife_hammer_spd", "0.7");  
    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_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_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(hammer_v_model)  
    precache_model(hammer_p_model)  

    precache_sound(g_sound_knife)  

    for(new i = 0; i < sizeof combat_sounds; i++)  
        precache_sound(combat_sounds)  

    for(new i = 0; i < sizeof strong_sounds; i++)  
        precache_sound(strong_sounds)  

    for(new i = 0; i < sizeof axe_sounds; i++)  
        precache_sound(axe_sounds)    

    for(new i = 0; i < sizeof hammer_sounds; i++)  
        precache_sound(hammer_sounds)  
}  

public event_round_start(id)  
{  
        for (new i; i < MAXPLAYERS + 1; i++)  
            g_WasShowed = false  
}  

public knife_menu(id)  
{  
    if (g_WasShowed[id])  
    {  
        print_col_chat(id, "^1[^4CSO ZM^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("\ySelect your knife", "menu_handler");  
    menu_additem(menu, "\wCombat \y[Speed]", "1", 0);  
    menu_additem(menu, "\wStrong \y[Damage]", "2", 0);  
    menu_additem(menu, "\wAxe \y[Gravity]", "3", 0);  
      
    menu_additem(menu, "\wHammer \y[\rAdmin/Vip\y]", "4", 0); 
      
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);  
      
    menu_display(id, menu, 0);      
}   

public menu_handler(id, menu, item)  
{  
    if( item == MENU_EXIT )  
    {  
            menu_destroy(menu);  
            return PLUGIN_HANDLED;      
    }  
      
    new data[6], iName[64];  
    new access, callback;  
      
    menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);  
      
    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_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_hammer[id] = false  
    g_hasSpeed[id] =  true  
    g_WasShowed[id] = true  

    engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)  
}  

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

    engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)  
}  

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

    engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_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_hammer[id] = true  
        g_hasSpeed[id] =  true  
        g_WasShowed[id] = true  

        engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_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_hammer[id]))  
    {  
        checkModel(id)  
    }  
}  

public checkModel(id)  
{  
    if (zp_get_user_zombie(id))  
        return PLUGIN_HANDLED  
      
    if (g_knife_combat[id])  
    {  
        set_pev(id, pev_viewmodel2, combat_v_model)  
        set_pev(id, pev_weaponmodel2, combat_p_model)  
    }  

    if (g_knife_strong[id])  
    {  
        set_pev(id, pev_viewmodel2, strong_v_model)  
        set_pev(id, pev_weaponmodel2, strong_p_model)  
    }  

    if (g_knife_axe[id])  
    {  
        set_pev(id, pev_viewmodel2, axe_v_model)  
        set_pev(id, pev_weaponmodel2, axe_p_model)  
    }  

    if (g_knife_hammer[id])  
    {  
        set_pev(id, pev_viewmodel2, hammer_v_model)  
        set_pev(id, pev_weaponmodel2, hammer_p_model)  
    }  
    return PLUGIN_HANDLED  
}  

public fw_EmitSound(id, channel, const sound[])  
{  
    if(!is_user_alive(id) || zp_get_user_zombie(id))  
        return FMRES_IGNORED  
          
    for(new i = 0; i < sizeof combat_sounds; i++)   
    for(new i = 0; i < sizeof strong_sounds; i++)  
    for(new i = 0; i < sizeof axe_sounds; i++)    
    for(new i = 0; i < sizeof hammer_sounds; i++)  
    {  
        if(equal(sound, oldknife_sounds))  
        {  
            if (g_knife_combat[id])  
            {  
                emit_sound(id, channel, combat_sounds, 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
            if (g_knife_strong[id])  
            {  
                emit_sound(id, channel, strong_sounds, 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
            if (g_knife_axe[id])  
            {  
                emit_sound(id, channel, axe_sounds, 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
            if (g_knife_hammer[id])  
            {  
                emit_sound(id, channel, hammer_sounds, 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
            if (!g_knife_combat[id] || !g_knife_strong[id] || !g_knife_axe[id] || !g_knife_hammer[id])  
            {  
                emit_sound(id, channel, oldknife_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
        }  
    }  
    return FMRES_IGNORED  
}  

public message_DeathMsg(msg_id, msg_dest, id)  
{  
    static szTruncatedWeapon[33], iattacker, ivictim  
      
    get_msg_arg_string(4, szTruncatedWeapon, charsmax(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_hammer[iattacker])  
                set_msg_arg_string(4, "Hammer knife")  
        }  
    }  
    return PLUGIN_CONTINUE  
}  

stock print_col_chat(const id, const input[], any:...)    
{    
        new count = 1, players[32];    
        static msg[191];    
        vformat(msg, 190, input, 3);    
        replace_all(msg, 190, "!g", "^4"); // Green Color    
        replace_all(msg, 190, "!y", "^1"); // Default Color   
        replace_all(msg, 190, "!t", "^3"); // Team Color    
        if (id) players[0] = id; else get_players(players, count, "ch");    
        {    
            for ( new i = 0; i < count; i++ )    
            {    
                    if ( is_user_connected(players[i]) )    
                    {    
                        message_begin(MSG_ONE_UNRELIABLE, SayText, _, 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(id, temp[0], temp[1])  

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

    if(weapon == CSW_KNIFE && g_knife_combat[id])          
        if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))  
        {  
            new flags = pev(id, pev_flags)  
            new waterlvl = pev(id, pev_waterlevel)  
              
            if (!(flags & FL_ONGROUND))  
                return FMRES_IGNORED  

            if (flags & FL_WATERJUMP)  
                return FMRES_IGNORED  

            if (waterlvl > 1)  
                return FMRES_IGNORED  
              
            new Float:fVelocity[3]  
            pev(id, pev_velocity, fVelocity)  
              
            fVelocity[2] += get_pcvar_num(cvar_knife_combat_jump)  
              
            set_pev(id, pev_velocity, fVelocity)  
            set_pev(id, pev_gaitsequence, 6)  
        }  
    if (weapon == CSW_KNIFE && g_knife_strong[id])  
    {  
        g_hasSpeed[id] = true  
        set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_strong_spd))  

        if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))  
        {  
            new flags = pev(id, pev_flags)  
            new waterlvl = pev(id, pev_waterlevel)  
              
            if (!(flags & FL_ONGROUND))  
                return FMRES_IGNORED  

            if (flags & FL_WATERJUMP)  
                return FMRES_IGNORED  

            if (waterlvl > 1)  
                return FMRES_IGNORED  
              
            new Float:fVelocity[3]  
            pev(id, pev_velocity, fVelocity)  
              
            fVelocity[2] += get_pcvar_num(cvar_knife_strong_jump)  
              
            set_pev(id, pev_velocity, fVelocity)  
            set_pev(id, pev_gaitsequence, 6)  
        }  
    }  
    if (weapon == CSW_KNIFE && g_knife_axe[id])  
    {  
        g_hasSpeed[id] = true  
        set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_axe_spd))  

        if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))  
        {  
            new flags = pev(id, pev_flags)  
            new waterlvl = pev(id, pev_waterlevel)  
              
            if (!(flags & FL_ONGROUND))  
                return FMRES_IGNORED  

            if (flags & FL_WATERJUMP)  
                return FMRES_IGNORED  

            if (waterlvl > 1)  
                return FMRES_IGNORED  
              
            new Float:fVelocity[3]  
            pev(id, pev_velocity, fVelocity)  
              
            fVelocity[2] += get_pcvar_num(cvar_knife_axe_jump)  
              
            set_pev(id, pev_velocity, fVelocity)  
            set_pev(id, pev_gaitsequence, 6)  
        }  
    }  
    if (weapon == CSW_KNIFE && g_knife_hammer[id])  
    {  
        g_hasSpeed[id] = true  
        set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_hammer_spd))  

        if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))  
        {  
            new flags = pev(id, pev_flags)  
            new waterlvl = pev(id, pev_waterlevel)  
              
            if (!(flags & FL_ONGROUND))  
                return FMRES_IGNORED  

            if (flags & FL_WATERJUMP)  
                return FMRES_IGNORED  

            if (waterlvl > 1)  
                return FMRES_IGNORED  
              
            new Float:fVelocity[3]  
            pev(id, pev_velocity, fVelocity)  
              
            fVelocity[2] += get_pcvar_num(cvar_knife_hammer_jump)  
              
            set_pev(id, pev_velocity, fVelocity)  
            set_pev(id, pev_gaitsequence, 6)  
        }  
    }  
    return FMRES_IGNORED  
}    

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

    new weapon = get_user_weapon(attacker)  

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

    return HAM_IGNORED  
}  

public fw_Knife_SecondaryAttack_Post(knife)   
{       
        static id   
        id = get_pdata_cbase(knife, m_pPlayer, 4)   

        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(knife, m_flNextPrimaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)   
        }   
   
        if(is_user_connected(id) && g_knife_strong[id])   
        {   
            static Float:flRate   
            flRate = get_pcvar_float(cvar_knife_strong_spd_attack2)   
               
            set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)   
        }   

        if(is_user_connected(id) && g_knife_axe[id])   
        {   
            static Float:flRate   
            flRate = get_pcvar_float(cvar_knife_axe_spd_attack2)   
                   
            set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)   
        }   

        if(is_user_connected(id) && g_knife_hammer[id])   
        {   
            static Float:flRate   
            flRate = get_pcvar_float(cvar_hammer_spd_attack2)   
               
            set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)   
        }       
     
        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(id, oldvelo);  
        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(id, oldvelo);  
        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(id, oldvelo);  
        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(id, oldvelo);  
        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])>largestnum) largestnum = floatabs(origin2[0]);  
    if(floatabs(origin2[1])>largestnum) largestnum = 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_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(0, 0))  
    {  
        case 0:  
        {  
            g_knife_combat[id] = true  
            g_hasSpeed[id] = true  
        }  

    }  
} 




cso_knifemenu.sma(640) : warning 217: loose indentation
cso_knifemenu.sma(640) : error 029: invalid expression, assumed zero
cso_knifemenu.sma(640) : error 017: undefined symbol "fw_Knife_SecondaryAttack_Post"
cso_knifemenu.sma(643) : error 017: undefined symbol "knife"
cso_knifemenu.sma(653) : error 017: undefined symbol "knife"
cso_knifemenu.sma(653) : warning 215: expression has no effect
cso_knifemenu.sma(653) : warning 215: expression has no effect
cso_knifemenu.sma(653) : warning 215: expression has no effect
cso_knifemenu.sma(653) : error 001: expected token: ";", but found ")"
cso_knifemenu.sma(653) : error 029: invalid expression, assumed zero
cso_knifemenu.sma(653) : fatal error 107: too many error messages on one line
RoyalServer
lexz
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 917
Joined: 02 Nov 2020, 01:57
Detinator Steam: Da
Fond eXtream: 0
Discord: lexzor#0630
Has thanked: 71 times
Been thanked: 136 times

10 Jan 2023, 20:48

Code: Select all

#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 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_jump, cvar_knife_combat_spd, cvar_knife_combat_dmg, cvar_knife_combat_knock, cvar_knife_combat_spd_attack2  
new g_knife_strong[33], cvar_knife_strong_jump, cvar_knife_strong_spd, cvar_knife_strong_dmg, cvar_knife_strong_knock, cvar_knife_strong_spd_attack2  
new g_knife_axe[33], cvar_knife_axe_jump, cvar_knife_axe_spd, cvar_knife_axe_dmg, cvar_knife_axe_knock, cvar_knife_axe_spd_attack2  
new g_knife_hammer[33], cvar_knife_hammer_jump, cvar_knife_hammer_spd, cvar_knife_hammer_dmg, cvar_knife_hammer_knock, cvar_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 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", VERSION, FCVAR_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("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_jump= register_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_jump= register_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_jump= register_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_hammer_jump= register_cvar("zp_knife_hammer_jump", "350.0");  
    cvar_knife_hammer_spd= register_cvar("zp_knife_hammer_spd", "0.7");  
    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_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_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(hammer_v_model)  
    precache_model(hammer_p_model)  

    precache_sound(g_sound_knife)  

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

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

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

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

public event_round_start(id)  
{  
    new iPlayers[MAX_PLAYERS], iNum;
    get_players(iPlayers, iNum, "ch");

    for(new i = 0, iPlayer; i < iNum; i++)
    {
        iPlayer = iPlayers[i];

        if(is_user_connected(iPlayer))
            g_WasShowed[id] = false;
    }
}  

public knife_menu(id)  
{  
    if (g_WasShowed[id])  
    {  
        print_col_chat(id, "^1[^4CSO ZM^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("\ySelect your knife", "menu_handler");  
    menu_additem(menu, "\wCombat \y[Speed]", "1", 0);  
    menu_additem(menu, "\wStrong \y[Damage]", "2", 0);  
    menu_additem(menu, "\wAxe \y[Gravity]", "3", 0);  
      
    menu_additem(menu, "\wHammer \y[\rAdmin/Vip\y]", "4", 0); 
      
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);  
      
    menu_display(id, menu, 0);      
}   

public menu_handler(id, menu, item)  
{  
    if( item == MENU_EXIT )  
    {  
            menu_destroy(menu);  
            return PLUGIN_HANDLED;      
    }  
      
    new data[6], iName[64];  
    new access, callback;  
      
    menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);  
      
    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_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_hammer[id] = false  
    g_hasSpeed[id] =  true  
    g_WasShowed[id] = true  

    engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)  
}  

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

    engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)  
}  

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

    engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_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_hammer[id] = true  
        g_hasSpeed[id] =  true  
        g_WasShowed[id] = true  

        engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_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_hammer[id]))  
    {  
        checkModel(id)  
    }  
}  

public checkModel(id)  
{  
    if (zp_get_user_zombie(id))  
        return PLUGIN_HANDLED  
      
    if (g_knife_combat[id])  
    {  
        set_pev(id, pev_viewmodel2, combat_v_model)  
        set_pev(id, pev_weaponmodel2, combat_p_model)  
    }  

    if (g_knife_strong[id])  
    {  
        set_pev(id, pev_viewmodel2, strong_v_model)  
        set_pev(id, pev_weaponmodel2, strong_p_model)  
    }  

    if (g_knife_axe[id])  
    {  
        set_pev(id, pev_viewmodel2, axe_v_model)  
        set_pev(id, pev_weaponmodel2, axe_p_model)  
    }  

    if (g_knife_hammer[id])  
    {  
        set_pev(id, pev_viewmodel2, hammer_v_model)  
        set_pev(id, pev_weaponmodel2, hammer_p_model)  
    }  
    return PLUGIN_HANDLED  
}  

public fw_EmitSound(id, channel, const sound[])  
{  
    if(!is_user_alive(id) || zp_get_user_zombie(id))  
        return FMRES_IGNORED  
          
    for(new i = 0; i < sizeof combat_sounds; i++)   
    for(new i = 0; i < sizeof strong_sounds; i++)  
    for(new i = 0; i < sizeof axe_sounds; i++)    
    for(new i = 0; i < sizeof hammer_sounds; i++)  
    {  
        if(equal(sound, oldknife_sounds[i]))  
        {  
            if (g_knife_combat[id])  
            {  
                emit_sound(id, channel, combat_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
            if (g_knife_strong[id])  
            {  
                emit_sound(id, channel, strong_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
            if (g_knife_axe[id])  
            {  
                emit_sound(id, channel, axe_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
            if (g_knife_hammer[id])  
            {  
                emit_sound(id, channel, hammer_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
            if (!g_knife_combat[id] || !g_knife_strong[id] || !g_knife_axe[id] || !g_knife_hammer[id])  
            {  
                emit_sound(id, channel, oldknife_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)  
                return FMRES_SUPERCEDE  
            }  
        }  
    }  
    return FMRES_IGNORED  
}  

public message_DeathMsg(msg_id, msg_dest, id)  
{  
    static szTruncatedWeapon[33], iattacker, ivictim  
      
    get_msg_arg_string(4, szTruncatedWeapon, charsmax(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_hammer[iattacker])  
                set_msg_arg_string(4, "Hammer knife")  
        }  
    }  
    return PLUGIN_CONTINUE  
}  

stock print_col_chat(const id, const input[], any:...)    
{    
        new count = 1, players[32];    
        static msg[191];    
        vformat(msg, 190, input, 3);    
        replace_all(msg, 190, "!g", "^4"); // Green Color    
        replace_all(msg, 190, "!y", "^1"); // Default Color   
        replace_all(msg, 190, "!t", "^3"); // Team Color    
        if (id) players[0] = id; else get_players(players, count, "ch");    
        {    
            for ( new i = 0; i < count; i++ )    
            {    
                    if ( is_user_connected(players[i]) )    
                    {    
                        message_begin(MSG_ONE_UNRELIABLE, SayText, _, 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(id, temp[0], temp[1])  

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

    if(weapon == CSW_KNIFE && g_knife_combat[id])          
        if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))  
        {  
            new flags = pev(id, pev_flags)  
            new waterlvl = pev(id, pev_waterlevel)  
              
            if (!(flags & FL_ONGROUND))  
                return FMRES_IGNORED  

            if (flags & FL_WATERJUMP)  
                return FMRES_IGNORED  

            if (waterlvl > 1)  
                return FMRES_IGNORED  
              
            new Float:fVelocity[3]  
            pev(id, pev_velocity, fVelocity)  
              
            fVelocity[2] += get_pcvar_num(cvar_knife_combat_jump)  
              
            set_pev(id, pev_velocity, fVelocity)  
            set_pev(id, pev_gaitsequence, 6)  
        }  
    if (weapon == CSW_KNIFE && g_knife_strong[id])  
    {  
        g_hasSpeed[id] = true  
        set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_strong_spd))  

        if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))  
        {  
            new flags = pev(id, pev_flags)  
            new waterlvl = pev(id, pev_waterlevel)  
              
            if (!(flags & FL_ONGROUND))  
                return FMRES_IGNORED  

            if (flags & FL_WATERJUMP)  
                return FMRES_IGNORED  

            if (waterlvl > 1)  
                return FMRES_IGNORED  
              
            new Float:fVelocity[3]  
            pev(id, pev_velocity, fVelocity)  
              
            fVelocity[2] += get_pcvar_num(cvar_knife_strong_jump)  
              
            set_pev(id, pev_velocity, fVelocity)  
            set_pev(id, pev_gaitsequence, 6)  
        }  
    }  
    if (weapon == CSW_KNIFE && g_knife_axe[id])  
    {  
        g_hasSpeed[id] = true  
        set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_axe_spd))  

        if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))  
        {  
            new flags = pev(id, pev_flags)  
            new waterlvl = pev(id, pev_waterlevel)  
              
            if (!(flags & FL_ONGROUND))  
                return FMRES_IGNORED  

            if (flags & FL_WATERJUMP)  
                return FMRES_IGNORED  

            if (waterlvl > 1)  
                return FMRES_IGNORED  
              
            new Float:fVelocity[3]  
            pev(id, pev_velocity, fVelocity)  
              
            fVelocity[2] += get_pcvar_num(cvar_knife_axe_jump)  
              
            set_pev(id, pev_velocity, fVelocity)  
            set_pev(id, pev_gaitsequence, 6)  
        }  
    }  
    if (weapon == CSW_KNIFE && g_knife_hammer[id])  
    {  
        g_hasSpeed[id] = true  
        set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_hammer_spd))  

        if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))  
        {  
            new flags = pev(id, pev_flags)  
            new waterlvl = pev(id, pev_waterlevel)  
              
            if (!(flags & FL_ONGROUND))  
                return FMRES_IGNORED  

            if (flags & FL_WATERJUMP)  
                return FMRES_IGNORED  

            if (waterlvl > 1)  
                return FMRES_IGNORED  
              
            new Float:fVelocity[3]  
            pev(id, pev_velocity, fVelocity)  
              
            fVelocity[2] += get_pcvar_num(cvar_knife_hammer_jump)  
              
            set_pev(id, pev_velocity, fVelocity)  
            set_pev(id, pev_gaitsequence, 6)  
        }  
    }  
    return FMRES_IGNORED  
}    

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

    new weapon = get_user_weapon(attacker)  

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

    return HAM_IGNORED    
}

public fw_Knife_SecondaryAttack_Post(knife)   
{       
        static id   
        id = get_pdata_cbase(knife, m_pPlayer, 4)   

        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(knife, m_flNextPrimaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)   
        }   
   
        if(is_user_connected(id) && g_knife_strong[id])   
        {   
            static Float:flRate   
            flRate = get_pcvar_float(cvar_knife_strong_spd_attack2)   
               
            set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)   
        }   

        if(is_user_connected(id) && g_knife_axe[id])   
        {   
            static Float:flRate   
            flRate = get_pcvar_float(cvar_knife_axe_spd_attack2)   
                   
            set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)   
        }   

        if(is_user_connected(id) && g_knife_hammer[id])   
        {   
            static Float:flRate   
            flRate = get_pcvar_float(cvar_hammer_spd_attack2)   
               
            set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)   
            set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)   
        }       
     
        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(id, oldvelo);  
        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(id, oldvelo);  
        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(id, oldvelo);  
        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(id, oldvelo);  
        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])>largestnum) largestnum = floatabs(origin2[0]);  
    if(floatabs(origin2[1])>largestnum) largestnum = 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_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(0, 0))  
    {  
        case 0:  
        {  
            g_knife_combat[id] = true  
            g_hasSpeed[id] = true  
        }  

    }  
} 
nu stiu prin cate calculatoare a trecut pluginul asta de zici ca a fost prin razboi. sursa de mai sus o poti compila, a avut mai multe erori. bafta.
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 7 guests