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

Knife model


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Nbanow
Senior Member
Join Date: Dec 2010
Location: Lithuania
Old 03-28-2021 , 06:43   Knife model
Reply With Quote #1

Hello. I'm using Crowbar extra item. All works fine and plugin does its job but.. After I buy it I see its model, but after a weapon switch it goes back to a normal knife (but plugin still does it's job, does knocback and etc.) How could I fix it to remain the model if bought?

CODE:

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

#define PLUGIN "[ZP] Crowbar"
#define VERSION "1.1"
#define AUTHOR "DoNii"

#define is_valid_connected(%1) (1 <= %1 <= get_maxplayers())
#define ADMIN_FLAG ADMIN_RCON

new const CROWBAR_NAME[] = "\rCrowbar"
const CROWBAR_PRICE 60

const OFFSET_WEAPONOWNER 41
const OFFSET_LINUX_WEAPONS 4
const m_pActiveItem 373

new g_HasCrowbar[33];
new 
g_ItemCrowbar;

// Models
new CROWBAR_MODEL_V[64] = "models/crowbar/crowbar_v.mdl"
new CROWBAR_MODEL_P[64] = "models/crowbar/crowbar_p.mdl"

new const crowbar_sounds[][] =
{
    
"weapons/crowbar/knife_deploy1.wav",
    
"weapons/crowbar/knife_hit1.wav",
    
"weapons/crowbar/knife_hit2.wav",
    
"weapons/crowbar/knife_hit3.wav",
    
"weapons/crowbar/knife_hit4.wav",
    
"weapons/crowbar/knife_hitwall1.wav",
    
"weapons/crowbar/knife_slash1.wav",
    
"weapons/crowbar/knife_slash2.wav",
    
"weapons/crowbar/knife_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"
}

// Cvars
new g_crowbar_damage;
new 
g_crowbar_knockback;

public 
plugin_init() {

    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_concmd("crowbar_get""admin_get_crowbar"ADMIN_FLAG)
    
    
register_forward(FM_EmitSound"fw_EmitSound");

    
RegisterHam(Ham_Item_Deploy"weapon_knife""fw_HamDeployCrowbarPost"1)
    
RegisterHam(Ham_TakeDamage"player""fw_HamTakeDamagePre")
    
RegisterHam(Ham_Spawn"player""fw_HamSpawnPost"1)
    
    
g_ItemCrowbar zp_register_extra_item(CROWBAR_NAMECROWBAR_PRICEZP_TEAM_HUMAN)
    
    
// Cvars
    
g_crowbar_damage register_cvar("crowbar_damage""3"// Damage multiplier
    
g_crowbar_knockback register_cvar("crowbar_knockback""30"// Knockback

    // Log Cvar
    
register_cvar("crowbar_version"VERSIONFCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    
}

public 
plugin_precache() {
    
    
precache_model(CROWBAR_MODEL_V)
    
precache_model(CROWBAR_MODEL_P)

    for (new 
i=0sizeof crowbar_soundsi++ )
    
precache_sound(crowbar_sounds[i])
    
}

/* ........... Beginning Of Stocks/ Private Functions ........... */

CrowbarModel(id) {
    
    
set_pev(idpev_viewmodel2CROWBAR_MODEL_V)
    
set_pev(idpev_weaponmodel2CROWBAR_MODEL_P)
}

stock zp_get_user_human(id) {
    
    if(!
zp_get_user_survivor(id) && !zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) 
    return 
true;
    
    return 
false;
}

stock create_velocity_vector(victimattackerFloat:velocity[3])
{
    if(
zp_get_user_zombie(attacker) || !is_user_alive(attacker) || !zp_get_user_zombie(victim))
    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_HasCrowbar[attacker])
    {
        
velocity[0] = ( origin2[0] * get_pcvar_num(g_crowbar_knockback) * 3000) / get_entity_distance(victim attacker);
        
velocity[1] = ( origin2[1] * get_pcvar_num(g_crowbar_knockback) * 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;
}

/* ........... End Of Stocks/ Private Functions ........... */

public admin_get_crowbar(idlevelcid) {
    
    if (!
cmd_access(idlevelcid))
    return 
PLUGIN_HANDLED;
    
    if(!
is_user_alive(id))
    return 
PLUGIN_HANDLED;
    
    if(!
zp_get_user_human(id))
    return 
PLUGIN_HANDLED;
    
    
g_HasCrowbar[id] = true
    CrowbarModel
(id)
    
    return 
PLUGIN_HANDLED;
}

public 
zp_user_infected_post(id) {

    if(
g_HasCrowbar[id]) 
    
g_HasCrowbar[id] = false

}

public 
zp_user_humanized_post(id) {

    if(
g_HasCrowbar[id]) 
    
g_HasCrowbar[id] = false

}

public 
fw_HamSpawnPost(id) {

    if(
g_HasCrowbar[id]) 
    
g_HasCrowbar[id] = false

}

public 
zp_extra_item_selected(iditem) {
    
    if(
item == g_ItemCrowbar && is_user_alive(id) && zp_get_user_human(id)) {
        
        
engclient_cmd(id"weapon_knife")
        
CrowbarModel(id)
        
        
g_HasCrowbar[id] = true
    
}
    return 
PLUGIN_HANDLED;
}

public 
fw_HamDeployCrowbarPost(ent) {
    
    new 
id get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS);
    
    if(
pev_valid(ent) != )
    return 
HAM_IGNORED;
    
    if(!
is_valid_connected(id))
    return 
HAM_IGNORED;
    
    if(
get_pdata_cbase(idm_pActiveItem ) != ent)
    return 
HAM_IGNORED;
    
    if(!
g_HasCrowbar[id])
    return 
HAM_IGNORED;
    
    if(!
zp_get_user_human(id))
    return 
HAM_IGNORED;
    
    
CrowbarModel(id)
    
    return 
HAM_IGNORED;
}

public 
fw_HamTakeDamagePre(victiminflictorattackerFloat:damagedamagebit) {
    
    if(!
is_valid_connected(attacker))
    return 
HAM_IGNORED;
    
    if(
get_user_weapon(attacker) == CSW_KNIFE && g_HasCrowbar[attacker] && zp_get_user_human(attacker)) {
        
        new 
Float:dmg damage
        
        dmg 
*= get_pcvar_num(g_crowbar_damage)
        
SetHamParamFloat(4dmg)
        
        new 
Float:vec[3];
        new 
Float:oldvelo[3];
        
get_user_velocity(victimoldvelo);
        
create_velocity_vector(victim attacker vec);
        
vec[0] += oldvelo[0];
        
vec[1] += oldvelo[1];
        
set_user_velocity(victim vec);
    }
    
    return 
HAM_IGNORED;
}

public 
fw_EmitSound(idchannel, const sound[])
{
    if(!
is_user_alive(id) || zp_get_user_zombie(id))
    return 
FMRES_IGNORED
    
    
for(new 0sizeof crowbar_soundsi++) 
    {
        if(
equal(soundoldknife_sounds[i]))
        {
            if (
g_HasCrowbar[id])
            {
                
emit_sound(idchannelcrowbar_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}

            
emit_sound(idchanneloldknife_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED

Nbanow 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 19:44.


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