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

Hammer (Knife) damage error.


Post New Thread Reply   
 
Thread Tools Display Modes
ZombieTheMan01
Senior Member
Join Date: Aug 2015
Location: Turkey
Old 02-05-2017 , 14:42   Re: Hammer (Knife) damage error.
Reply With Quote #21

Quote:
Originally Posted by yas17sin View Post
i edit it my self just try ti man oh god come on i work on it.
Hey man only from the code I gave, Only you can "damage" working arrangements have been enough. Other than that, it did not have to deal.
__________________
FREE PLUGINS:

2021 and before -> ALL PLUGIN LINK IS HERE <-

2022:
Zombie: The Original [%70 Completed]
ZombieTheMan01 is offline
yas17sin
Veteran Member
Join Date: Oct 2016
Location: Morocco/Sale
Old 02-05-2017 , 14:46   Re: Hammer (Knife) damage error.
Reply With Quote #22

Quote:
Originally Posted by ZombieTheMan01 View Post
Hey man only from the code I gave, Only you can "damage" working arrangements have been enough. Other than that, it did not have to deal.
-_- . okay give me the original code the one you change.
yas17sin is offline
Send a message via ICQ to yas17sin
ZombieTheMan01
Senior Member
Join Date: Aug 2015
Location: Turkey
Old 02-05-2017 , 14:50   Re: Hammer (Knife) damage error.
Reply With Quote #23

Quote:
Originally Posted by yas17sin View Post
-_- . okay give me the original code the one you change.
Okay I give it one more time. Here you go. Resource, you can find at the beginning..
Attached Files
File Type: sma Get Plugin or Get Source (hammer.sma - 369 views - 15.9 KB)
__________________
FREE PLUGINS:

2021 and before -> ALL PLUGIN LINK IS HERE <-

2022:
Zombie: The Original [%70 Completed]

Last edited by ZombieTheMan01; 02-05-2017 at 14:52.
ZombieTheMan01 is offline
yas17sin
Veteran Member
Join Date: Oct 2016
Location: Morocco/Sale
Old 02-05-2017 , 15:00   Re: Hammer (Knife) damage error.
Reply With Quote #24

here you go i fixed it and i test it and it's working :
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <xs>

const OFFSET_PAINSHOCK 108 // ConnorMcLeod
const OFFSET_LINUX 5
#define PLAYER_LINUX_XTRA_OFF        5
#define m_flNextAttack                83

#define ANIM_IDLESLASH            0
#define ANIM_SLASH                 1
#define ANIM_SLASHE                 2
#define ANIM_DRAW                 3
#define ANIM_IDLESTAB             4
#define ANIM_STAB                 5
#define ANIM_DRAWSTAB            6
#define ANIM_MOVESTAB             7
#define ANIM_MOVESLASH             8

new g_has_knife[33] , g_mode[33] , g_oldweap[33] , g_primaryattack[33]
new 
cvar_hammer_dmg cvar_hammer_dmg2cvar_hammer_knockbackn cvar_hammer_knockbackn2 cvar_hammer_speed cvar_hammer_speed2 cvar_hammer_radius cvar_hammer_radius2 cvar_hammer_bloodsize 
new spr_blood1 spr_blood2
new Ham:Ham_Player_ResetMaxSpeed Ham_Item_PreFrame
new knife_vmodel[64] = "models/zm/hammer/v_hammer.mdl"
new knife_pmodel[64] = "models/zm/hammer/p_hammer.mdl"
new knife_sway[64] = "weapons/"

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"
}

new 
knife_sounds[4][100]

public 
plugin_init( )
{
    
register_plugin("[Knife]: Hammer","0.1","=)/Exolent[jNr]/CHyC")

    
RegisterHam(Ham_TakeDamage"player""fw_takedamage"0)
    
RegisterHam(Ham_TakeDamage"player""fw_takedamage_post"1)

    
register_forward(FM_EmitSound"fw_emitsound")
    
register_forward(FM_CmdStart"fw_cmdstart")
    
register_forward(FM_TraceLine"fw_traceline")
    
register_forward(FM_UpdateClientData"fw_updateclientdata_post"1)
    
register_forward(FM_PlayerPreThink"fw_playerprethink")
    
register_event("CurWeapon","ev_curweapon","be","1=1"

    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_knife""fw_knifeprimpost"1)
    
RegisterHam(Ham_Weapon_WeaponIdle,"weapon_knife","fw_knifeidleanim")
    
RegisterHam(Ham_TraceAttack,"player","fw_knifetraceattack")
    
RegisterHam(Ham_Spawn,"player","fw_spawnpost")

    
cvar_hammer_dmg register_cvar("hammer_dmg""9.0")
    
cvar_hammer_dmg2 register_cvar("hammer_dmg2""15.0")
    
cvar_hammer_knockbackn register_cvar("hammer_nemknockback""10.0")
    
cvar_hammer_knockbackn2 register_cvar("hammer_nemknockback2""20.0")
    
cvar_hammer_speed register_cvar("hammer_speed""320.0")
    
cvar_hammer_speed2 register_cvar("hammer_speed2""100.0")
    
cvar_hammer_radius register_cvar("hammer_radius""80.0")
    
cvar_hammer_radius2 register_cvar("hammer_radius2""100.0")
    
cvar_hammer_bloodsize register_cvar("hammer_bloodsize""8")
    
register_clcmd("say hammer""get_hammer")
}

public 
plugin_precache()
{
    
precache_model(knife_vmodel)
    
precache_model(knife_pmodel)

    
spr_blood1 precache_model("sprites/blood.spr")
    
spr_blood2 precache_model("sprites/bloodspray.spr")

    
formatex(knife_sounds[0],99,"%shammer_draw.wav",knife_sway)
    
formatex(knife_sounds[1],99,"%shammer_hit_slash.wav",knife_sway)
    
formatex(knife_sounds[2],99,"%shammer_hit_stab.wav",knife_sway)
    
formatex(knife_sounds[3],99,"%shammer_swing.wav",knife_sway)

    for(new 
04i++)
        
precache_sound(knife_sounds[i])
}

public 
get_hammer(id)
{
    
g_has_knife[id] = 1
    g_mode
[id] = 0
    g_primaryattack
[id] = 0
    remove_task
(id)

    if(
get_user_weapon(id) == CSW_KNIFE
    {
        
update_model(id)
        
util_playweaponanimation(idANIM_DRAW
        
set_pdata_float(idm_flNextAttack1.5 PLAYER_LINUX_XTRA_OFF)
        
emit_sound(idCHAN_WEAPONknife_sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
    }
}

public 
fw_spawnpost(id)
{
    if(!
is_user_alive(id))
        return;

    
g_oldweap[id] = get_user_weapon(id)
}

public 
fw_knifetraceattack(idattackerFloat:dmgFloat:direction[3], ptrdmgtype)
{
    if(!
is_user_alive(attacker) || !is_user_alive(id)  || get_user_weapon(attacker) != CSW_KNIFE || !g_has_knife[attacker] || g_mode[attacker] == || g_mode[attacker] == || g_mode[attacker] == 4)
        return 
HAM_IGNORED;

    new 
Float:end[3
    
get_tr2(ptrTR_vecEndPosend); 

    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY
    
write_byte(TE_BLOODSPRITE
    
engfunc(EngFunc_WriteCoordend[0]) 
    
engfunc(EngFunc_WriteCoordend[1]) 
    
engfunc(EngFunc_WriteCoordend[2]) 
    
write_short(spr_blood1
    
write_short(spr_blood2
    
write_byte(249// color index 
    
write_byte(get_pcvar_num(cvar_hammer_bloodsize)) // size 
    
message_end() 

    return 
HAM_SUPERCEDE;
}

public 
fw_emitsound(idchannel, const sound[])
{
    if(!
is_user_alive(id) || get_user_weapon(id) != CSW_KNIFE || !g_has_knife[id])
        return 
FMRES_IGNORED

    
for(new 0sizeof oldknife_soundsi++)
    {
        if(
equal(soundoldknife_sounds[i]))
        {
            if(
== 1|| == || == || == || == || == 8)
            {
                if(
g_mode[id] == 0emit_sound(idchannelknife_sounds[1], VOL_NORMATTN_NORM0PITCH_NORM)
                if(
g_mode[id] == 1emit_sound(idchannelknife_sounds[2], VOL_NORMATTN_NORM0PITCH_NORM)
            }
            if(
== 6|| == 7)
            {
                
emit_sound(idchannelknife_sounds[3], VOL_NORMATTN_NORM0PITCH_NORM)
            }

            return 
FMRES_SUPERCEDE
        
}
    }
            
    return 
FMRES_IGNORED
}

public 
fw_cmdstart(iduc_handleseed)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
            return 
FMRES_IGNORED;

    new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

    if(
g_primaryattack[id] && !g_mode[id])
    {
        if(
flNextAttack 0.1)
            return 
FMRES_IGNORED;

        
set_pdata_float(idm_flNextAttack0.1PLAYER_LINUX_XTRA_OFF)

        return 
FMRES_SUPERCEDE;
    }

    if((
get_uc(uc_handleUC_Buttons) & IN_ATTACK) && !g_mode[id])
    {
        if(
flNextAttack 0.1)
            return 
FMRES_IGNORED;

        
g_primaryattack[id] = 1
        util_playweaponanimation
(idANIM_SLASH)
        
remove_task(id)
        
set_task(1.0,"knife_attack",id)

        
set_pdata_float(idm_flNextAttack0.1PLAYER_LINUX_XTRA_OFF)
        return 
FMRES_IGNORED;
    }

    if(
g_primaryattack[id]) return FMRES_IGNORED;

    if(
get_uc(uc_handleUC_Buttons) & IN_ATTACK)
    {
        if(
g_mode[id] == || g_mode[id] == || g_mode[id] == 4)
        {
            if(
flNextAttack 0.1)
                return 
FMRES_IGNORED;

            
set_pdata_float(idm_flNextAttack0.1PLAYER_LINUX_XTRA_OFF)
        }

        return 
FMRES_IGNORED;
    }

    if(
flNextAttack 0.1)
        return 
FMRES_IGNORED;

    if((
get_uc(uc_handleUC_Buttons) & IN_ATTACK2))
    {
        if(
g_mode[id] == 0)
        {
            
remove_task(id)
            
g_mode[id] = 2
            util_playweaponanimation
(idANIM_MOVESTAB
            
set_task(1.4,"change_stab",id)
            
set_pdata_float(idm_flNextAttack1.5PLAYER_LINUX_XTRA_OFF)
        }else if(
g_mode[id] == 1){
            
remove_task(id)
            
g_mode[id] = 3
            util_playweaponanimation
(idANIM_MOVESLASH
            
set_task(0.4,"change_slash1",id)
            
set_pdata_float(idm_flNextAttack1.5PLAYER_LINUX_XTRA_OFF)
        }

        
set_pev(idpev_button pev(id,pev_button) & ~IN_ATTACK2)
        return 
FMRES_SUPERCEDE;
    }

    return 
FMRES_IGNORED;
}

public 
fw_knifeprimpost(Weapon)
{
    new 
id get_pdata_cbase(Weapon414)

    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
HAM_IGNORED;

    if(
g_mode[id])
    {
        
util_playweaponanimation(idANIM_STAB)
        
set_pdata_float(idm_flNextAttack2.0PLAYER_LINUX_XTRA_OFF)
    }

    return 
HAM_IGNORED;
}

public 
fw_knifeidleanim(Weapon)
{
    new 
id get_pdata_cbase(Weapon414)

    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
HAM_IGNORED;

    if(
g_mode[id] == || g_mode[id] == || g_mode[id] == || g_primaryattack[id]) 
        return 
HAM_SUPERCEDE;

    if(
g_mode[id] == 1
    {
        
util_playweaponanimation(idANIM_IDLESTAB)
        return 
HAM_SUPERCEDE;
    }

    return 
HAM_IGNORED;
}

public 
ev_curweapon(id)
{
    if(!
is_user_alive(id))
        return 
PLUGIN_CONTINUE

    
if(read_data(2) != CSW_KNIFE)
    {
        
remove_task(id)
        
g_primaryattack[id] = 0
        
if(g_mode[id] == 3g_mode[id] = 1
        
if(g_mode[id] == 4g_mode[id] = 1
        
if(g_mode[id] == 2g_mode[id] = 0
        g_oldweap
[id] = read_data(2)
        
        return 
PLUGIN_CONTINUE
    
}

    if(!
g_has_knife[id])
        return 
PLUGIN_CONTINUE

    update_model
(id)

    if(
g_oldweap[id] != CSW_KNIFE
    {
        if(!
g_mode[id]) 
        {
            
util_playweaponanimation(idANIM_DRAW
            
set_pdata_float(idm_flNextAttack1.5 PLAYER_LINUX_XTRA_OFF)
            
emit_sound(idCHAN_WEAPONknife_sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        }else{
            
util_playweaponanimation(idANIM_DRAWSTAB
            
set_pdata_float(idm_flNextAttack1.5 PLAYER_LINUX_XTRA_OFF)
            
emit_sound(idCHAN_WEAPONknife_sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        }
    }

    
g_oldweap[id] = read_data(2)

    return 
PLUGIN_CONTINUE    
}

public 
change_stab(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
PLUGIN_CONTINUE;

    
g_mode[id] = 1

    
return PLUGIN_CONTINUE;    
}

public 
change_slash1(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
PLUGIN_CONTINUE;

    
g_mode[id] = 4
    set_task
(1.0,"change_slash2",id)

    return 
PLUGIN_CONTINUE;
}

public 
change_slash2(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
PLUGIN_CONTINUE;

    
g_mode[id] = 0

    
return PLUGIN_CONTINUE;    
}

public 
fw_takedamage(victiminflictorattackerFloat:damage)
{
    if(!
is_user_alive(attacker) || !is_user_alive(victim) || !g_has_knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE || victim == attacker)
        return 
HAM_IGNORED;

    if(
g_mode[attacker] == || g_mode[attacker] == 3
        return 
HAM_SUPERCEDE;

    if(
g_mode[attacker] == 0SetHamParamFloat(4damage get_pcvar_float(cvar_hammer_dmg))

    if(
g_mode[attacker] == && g_mode[attacker] == && g_mode[attacker] == && g_mode[attacker] == 4SetHamParamFloat(4damage get_pcvar_float(cvar_hammer_dmg2))

    new 
Float:vec[3], 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_takedamage_post(victiminflictorattackerFloat:damage)
{
    if(!
is_user_alive(attacker) || !is_user_alive(victim) || !g_has_knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE || victim == attacker)
        return;

    
/*if(zp_get_user_nemesis(victim))
    {
        if(g_mode[attacker] == 0 && get_pcvar_num(cvar_hammer_knockbackn) > 0)
        {
            set_pdata_float(victim, OFFSET_PAINSHOCK, 1.0, OFFSET_LINUX)
        }
        if(g_mode[attacker] == 1 && get_pcvar_num(cvar_hammer_knockbackn2) > 0)
        {
            set_pdata_float(victim, OFFSET_PAINSHOCK, 1.0, OFFSET_LINUX)
        }
    }*/

    
if(g_mode[attacker] == 0)
    {
        
set_pdata_float(victimOFFSET_PAINSHOCK1.0OFFSET_LINUX)
    }
    if(
g_mode[attacker] == 1)
    {
        
set_pdata_float(victimOFFSET_PAINSHOCK1.0OFFSET_LINUX)
    }

    return;
}

public 
fw_traceline(Float:vector_start[3], Float:vector_end[3], ignored_monsteridhandle)
{
    if (!
is_user_alive(id))
        return 
FMRES_IGNORED;
    
    if (!
g_has_knife[id] || g_mode[id] == 2|| g_mode[id] == || get_user_weapon(id) != CSW_KNIFE)
        return 
FMRES_IGNORED;
    
    
pev(idpev_v_anglevector_end)
    
angle_vector(vector_endANGLEVECTOR_FORWARDvector_end)
    
    if(
g_mode[id] == 0xs_vec_mul_scalar(vector_endget_pcvar_float(cvar_hammer_radius), vector_end)
    if(
g_mode[id] == 1xs_vec_mul_scalar(vector_endget_pcvar_float(cvar_hammer_radius2), vector_end)
    
    
xs_vec_add(vector_startvector_endvector_end)
    
engfunc(EngFunc_TraceLinevector_startvector_endignored_monsteridhandle)

    return 
FMRES_SUPERCEDE;
}

public 
update_model(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
            return 
PLUGIN_CONTINUE;

    
entity_set_string(idEV_SZ_viewmodelknife_vmodel)
    
entity_set_string(idEV_SZ_weaponmodelknife_pmodel)

    return 
PLUGIN_CONTINUE;    
}

public 
clear_values(id)
{
    
g_has_knife[id] = 0
    g_mode
[id] = 0
    g_primaryattack
[id] = 0
    g_oldweap
[id] = -3
    remove_task
(id)
}

public 
knife_attack(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE || g_mode[id])
        return;

    new 
knife find_ent_by_owner ( -1"weapon_knife"id )
    
    
ExecuteHam(Ham_Weapon_PrimaryAttackknife)

    
g_primaryattack[id] = 2
    remove_task
(id)
    
set_task(1.0,"knife_clear",id)
    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
    
util_playweaponanimation(idANIM_SLASHE)
}

public 
knife_clear(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE || g_mode[id])
        return;

    
g_primaryattack[id] = 0
}

public 
fw_updateclientdata_post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || get_user_weapon(Player) != CSW_KNIFE || !g_has_knife[Player])
        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time() + 0.001 )

    if(
get_cd(CD_HandleCD_WeaponAnim) != ANIM_MOVESTAB && g_mode[Player] == 2
    {
        
set_cd(CD_HandleCD_WeaponAnimANIM_MOVESTAB); 
        return 
FMRES_SUPERCEDE
    }

    if(
get_cd(CD_HandleCD_WeaponAnim) != ANIM_MOVESLASH && g_mode[Player] == 3
    {
        
set_cd(CD_HandleCD_WeaponAnimANIM_MOVESLASH); 
        return 
FMRES_SUPERCEDE
    }

    return 
FMRES_HANDLED
}

public 
fw_playerprethink(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id])
            return 
PLUGIN_CONTINUE
    
if(get_user_weapon(id) != CSW_KNIFE){
    
ExecuteHamB(Ham_Player_ResetMaxSpeedid)
    return 
PLUGIN_CONTINUE
    
}

    if(
pev(idpev_maxspeed) == 1.0)     
        return 
PLUGIN_CONTINUE

    
if(g_mode[id] == 0set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed))
    if(
g_mode[id] == 1set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed2))
    if(
g_mode[id] == 2set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed2))
    if(
g_mode[id] == 3set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed2))
    if(
g_mode[id] == 4set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed))

    return 
PLUGIN_CONTINUE
}

stock util_playweaponanimation(const Player, const Sequence)
{
    
set_pev(Playerpev_weaponanimSequence)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player)
    
write_byte(Sequence)
    
write_byte(pev(Playerpev_body))
    
message_end()
}

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

    new 
knockback 0

    
/*if(!zp_get_user_nemesis(victim))
    {
        if(!g_mode[attacker])
        {
            knockback = get_pcvar_num(cvar_hammer_knockback)
        }else{
            knockback = get_pcvar_num(cvar_hammer_knockback2)
        }
    }else*/
    
if(!g_mode[attacker])
    {
        
knockback get_pcvar_num(cvar_hammer_knockbackn)
    }
    else
    {
        
knockback get_pcvar_num(cvar_hammer_knockbackn2)
    }
    

    if(
knockback == 0
        return 
;

    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;

    
velocity[0] = ( origin2[0] * (knockback 3000) ) / get_entity_distance(victim attacker);
    
velocity[1] = ( origin2[1] * (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;
}

public 
client_disconnect(idclear_values(id)
public 
client_connect(idclear_values(id
yas17sin is offline
Send a message via ICQ to yas17sin
ZombieTheMan01
Senior Member
Join Date: Aug 2015
Location: Turkey
Old 02-05-2017 , 15:05   Re: Hammer (Knife) damage error.
Reply With Quote #25

Quote:
Originally Posted by yas17sin View Post
here you go i fixed it and i test it and it's working :
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <xs>

const OFFSET_PAINSHOCK 108 // ConnorMcLeod
const OFFSET_LINUX 5
#define PLAYER_LINUX_XTRA_OFF        5
#define m_flNextAttack                83

#define ANIM_IDLESLASH            0
#define ANIM_SLASH                 1
#define ANIM_SLASHE                 2
#define ANIM_DRAW                 3
#define ANIM_IDLESTAB             4
#define ANIM_STAB                 5
#define ANIM_DRAWSTAB            6
#define ANIM_MOVESTAB             7
#define ANIM_MOVESLASH             8

new g_has_knife[33] , g_mode[33] , g_oldweap[33] , g_primaryattack[33]
new 
cvar_hammer_dmg cvar_hammer_dmg2cvar_hammer_knockbackn cvar_hammer_knockbackn2 cvar_hammer_speed cvar_hammer_speed2 cvar_hammer_radius cvar_hammer_radius2 cvar_hammer_bloodsize 
new spr_blood1 spr_blood2
new Ham:Ham_Player_ResetMaxSpeed Ham_Item_PreFrame
new knife_vmodel[64] = "models/zm/hammer/v_hammer.mdl"
new knife_pmodel[64] = "models/zm/hammer/p_hammer.mdl"
new knife_sway[64] = "weapons/"

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"
}

new 
knife_sounds[4][100]

public 
plugin_init( )
{
    
register_plugin("[Knife]: Hammer","0.1","=)/Exolent[jNr]/CHyC")

    
RegisterHam(Ham_TakeDamage"player""fw_takedamage"0)
    
RegisterHam(Ham_TakeDamage"player""fw_takedamage_post"1)

    
register_forward(FM_EmitSound"fw_emitsound")
    
register_forward(FM_CmdStart"fw_cmdstart")
    
register_forward(FM_TraceLine"fw_traceline")
    
register_forward(FM_UpdateClientData"fw_updateclientdata_post"1)
    
register_forward(FM_PlayerPreThink"fw_playerprethink")
    
register_event("CurWeapon","ev_curweapon","be","1=1"

    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_knife""fw_knifeprimpost"1)
    
RegisterHam(Ham_Weapon_WeaponIdle,"weapon_knife","fw_knifeidleanim")
    
RegisterHam(Ham_TraceAttack,"player","fw_knifetraceattack")
    
RegisterHam(Ham_Spawn,"player","fw_spawnpost")

    
cvar_hammer_dmg register_cvar("hammer_dmg""9.0")
    
cvar_hammer_dmg2 register_cvar("hammer_dmg2""15.0")
    
cvar_hammer_knockbackn register_cvar("hammer_nemknockback""10.0")
    
cvar_hammer_knockbackn2 register_cvar("hammer_nemknockback2""20.0")
    
cvar_hammer_speed register_cvar("hammer_speed""320.0")
    
cvar_hammer_speed2 register_cvar("hammer_speed2""100.0")
    
cvar_hammer_radius register_cvar("hammer_radius""80.0")
    
cvar_hammer_radius2 register_cvar("hammer_radius2""100.0")
    
cvar_hammer_bloodsize register_cvar("hammer_bloodsize""8")
    
register_clcmd("say hammer""get_hammer")
}

public 
plugin_precache()
{
    
precache_model(knife_vmodel)
    
precache_model(knife_pmodel)

    
spr_blood1 precache_model("sprites/blood.spr")
    
spr_blood2 precache_model("sprites/bloodspray.spr")

    
formatex(knife_sounds[0],99,"%shammer_draw.wav",knife_sway)
    
formatex(knife_sounds[1],99,"%shammer_hit_slash.wav",knife_sway)
    
formatex(knife_sounds[2],99,"%shammer_hit_stab.wav",knife_sway)
    
formatex(knife_sounds[3],99,"%shammer_swing.wav",knife_sway)

    for(new 
04i++)
        
precache_sound(knife_sounds[i])
}

public 
get_hammer(id)
{
    
g_has_knife[id] = 1
    g_mode
[id] = 0
    g_primaryattack
[id] = 0
    remove_task
(id)

    if(
get_user_weapon(id) == CSW_KNIFE
    {
        
update_model(id)
        
util_playweaponanimation(idANIM_DRAW
        
set_pdata_float(idm_flNextAttack1.5 PLAYER_LINUX_XTRA_OFF)
        
emit_sound(idCHAN_WEAPONknife_sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
    }
}

public 
fw_spawnpost(id)
{
    if(!
is_user_alive(id))
        return;

    
g_oldweap[id] = get_user_weapon(id)
}

public 
fw_knifetraceattack(idattackerFloat:dmgFloat:direction[3], ptrdmgtype)
{
    if(!
is_user_alive(attacker) || !is_user_alive(id)  || get_user_weapon(attacker) != CSW_KNIFE || !g_has_knife[attacker] || g_mode[attacker] == || g_mode[attacker] == || g_mode[attacker] == 4)
        return 
HAM_IGNORED;

    new 
Float:end[3
    
get_tr2(ptrTR_vecEndPosend); 

    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY
    
write_byte(TE_BLOODSPRITE
    
engfunc(EngFunc_WriteCoordend[0]) 
    
engfunc(EngFunc_WriteCoordend[1]) 
    
engfunc(EngFunc_WriteCoordend[2]) 
    
write_short(spr_blood1
    
write_short(spr_blood2
    
write_byte(249// color index 
    
write_byte(get_pcvar_num(cvar_hammer_bloodsize)) // size 
    
message_end() 

    return 
HAM_SUPERCEDE;
}

public 
fw_emitsound(idchannel, const sound[])
{
    if(!
is_user_alive(id) || get_user_weapon(id) != CSW_KNIFE || !g_has_knife[id])
        return 
FMRES_IGNORED

    
for(new 0sizeof oldknife_soundsi++)
    {
        if(
equal(soundoldknife_sounds[i]))
        {
            if(
== 1|| == || == || == || == || == 8)
            {
                if(
g_mode[id] == 0emit_sound(idchannelknife_sounds[1], VOL_NORMATTN_NORM0PITCH_NORM)
                if(
g_mode[id] == 1emit_sound(idchannelknife_sounds[2], VOL_NORMATTN_NORM0PITCH_NORM)
            }
            if(
== 6|| == 7)
            {
                
emit_sound(idchannelknife_sounds[3], VOL_NORMATTN_NORM0PITCH_NORM)
            }

            return 
FMRES_SUPERCEDE
        
}
    }
            
    return 
FMRES_IGNORED
}

public 
fw_cmdstart(iduc_handleseed)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
            return 
FMRES_IGNORED;

    new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

    if(
g_primaryattack[id] && !g_mode[id])
    {
        if(
flNextAttack 0.1)
            return 
FMRES_IGNORED;

        
set_pdata_float(idm_flNextAttack0.1PLAYER_LINUX_XTRA_OFF)

        return 
FMRES_SUPERCEDE;
    }

    if((
get_uc(uc_handleUC_Buttons) & IN_ATTACK) && !g_mode[id])
    {
        if(
flNextAttack 0.1)
            return 
FMRES_IGNORED;

        
g_primaryattack[id] = 1
        util_playweaponanimation
(idANIM_SLASH)
        
remove_task(id)
        
set_task(1.0,"knife_attack",id)

        
set_pdata_float(idm_flNextAttack0.1PLAYER_LINUX_XTRA_OFF)
        return 
FMRES_IGNORED;
    }

    if(
g_primaryattack[id]) return FMRES_IGNORED;

    if(
get_uc(uc_handleUC_Buttons) & IN_ATTACK)
    {
        if(
g_mode[id] == || g_mode[id] == || g_mode[id] == 4)
        {
            if(
flNextAttack 0.1)
                return 
FMRES_IGNORED;

            
set_pdata_float(idm_flNextAttack0.1PLAYER_LINUX_XTRA_OFF)
        }

        return 
FMRES_IGNORED;
    }

    if(
flNextAttack 0.1)
        return 
FMRES_IGNORED;

    if((
get_uc(uc_handleUC_Buttons) & IN_ATTACK2))
    {
        if(
g_mode[id] == 0)
        {
            
remove_task(id)
            
g_mode[id] = 2
            util_playweaponanimation
(idANIM_MOVESTAB
            
set_task(1.4,"change_stab",id)
            
set_pdata_float(idm_flNextAttack1.5PLAYER_LINUX_XTRA_OFF)
        }else if(
g_mode[id] == 1){
            
remove_task(id)
            
g_mode[id] = 3
            util_playweaponanimation
(idANIM_MOVESLASH
            
set_task(0.4,"change_slash1",id)
            
set_pdata_float(idm_flNextAttack1.5PLAYER_LINUX_XTRA_OFF)
        }

        
set_pev(idpev_button pev(id,pev_button) & ~IN_ATTACK2)
        return 
FMRES_SUPERCEDE;
    }

    return 
FMRES_IGNORED;
}

public 
fw_knifeprimpost(Weapon)
{
    new 
id get_pdata_cbase(Weapon414)

    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
HAM_IGNORED;

    if(
g_mode[id])
    {
        
util_playweaponanimation(idANIM_STAB)
        
set_pdata_float(idm_flNextAttack2.0PLAYER_LINUX_XTRA_OFF)
    }

    return 
HAM_IGNORED;
}

public 
fw_knifeidleanim(Weapon)
{
    new 
id get_pdata_cbase(Weapon414)

    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
HAM_IGNORED;

    if(
g_mode[id] == || g_mode[id] == || g_mode[id] == || g_primaryattack[id]) 
        return 
HAM_SUPERCEDE;

    if(
g_mode[id] == 1
    {
        
util_playweaponanimation(idANIM_IDLESTAB)
        return 
HAM_SUPERCEDE;
    }

    return 
HAM_IGNORED;
}

public 
ev_curweapon(id)
{
    if(!
is_user_alive(id))
        return 
PLUGIN_CONTINUE

    
if(read_data(2) != CSW_KNIFE)
    {
        
remove_task(id)
        
g_primaryattack[id] = 0
        
if(g_mode[id] == 3g_mode[id] = 1
        
if(g_mode[id] == 4g_mode[id] = 1
        
if(g_mode[id] == 2g_mode[id] = 0
        g_oldweap
[id] = read_data(2)
        
        return 
PLUGIN_CONTINUE
    
}

    if(!
g_has_knife[id])
        return 
PLUGIN_CONTINUE

    update_model
(id)

    if(
g_oldweap[id] != CSW_KNIFE
    {
        if(!
g_mode[id]) 
        {
            
util_playweaponanimation(idANIM_DRAW
            
set_pdata_float(idm_flNextAttack1.5 PLAYER_LINUX_XTRA_OFF)
            
emit_sound(idCHAN_WEAPONknife_sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        }else{
            
util_playweaponanimation(idANIM_DRAWSTAB
            
set_pdata_float(idm_flNextAttack1.5 PLAYER_LINUX_XTRA_OFF)
            
emit_sound(idCHAN_WEAPONknife_sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        }
    }

    
g_oldweap[id] = read_data(2)

    return 
PLUGIN_CONTINUE    
}

public 
change_stab(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
PLUGIN_CONTINUE;

    
g_mode[id] = 1

    
return PLUGIN_CONTINUE;    
}

public 
change_slash1(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
PLUGIN_CONTINUE;

    
g_mode[id] = 4
    set_task
(1.0,"change_slash2",id)

    return 
PLUGIN_CONTINUE;
}

public 
change_slash2(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
        return 
PLUGIN_CONTINUE;

    
g_mode[id] = 0

    
return PLUGIN_CONTINUE;    
}

public 
fw_takedamage(victiminflictorattackerFloat:damage)
{
    if(!
is_user_alive(attacker) || !is_user_alive(victim) || !g_has_knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE || victim == attacker)
        return 
HAM_IGNORED;

    if(
g_mode[attacker] == || g_mode[attacker] == 3
        return 
HAM_SUPERCEDE;

    if(
g_mode[attacker] == 0SetHamParamFloat(4damage get_pcvar_float(cvar_hammer_dmg))

    if(
g_mode[attacker] == && g_mode[attacker] == && g_mode[attacker] == && g_mode[attacker] == 4SetHamParamFloat(4damage get_pcvar_float(cvar_hammer_dmg2))

    new 
Float:vec[3], 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_takedamage_post(victiminflictorattackerFloat:damage)
{
    if(!
is_user_alive(attacker) || !is_user_alive(victim) || !g_has_knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE || victim == attacker)
        return;

    
/*if(zp_get_user_nemesis(victim))
    {
        if(g_mode[attacker] == 0 && get_pcvar_num(cvar_hammer_knockbackn) > 0)
        {
            set_pdata_float(victim, OFFSET_PAINSHOCK, 1.0, OFFSET_LINUX)
        }
        if(g_mode[attacker] == 1 && get_pcvar_num(cvar_hammer_knockbackn2) > 0)
        {
            set_pdata_float(victim, OFFSET_PAINSHOCK, 1.0, OFFSET_LINUX)
        }
    }*/

    
if(g_mode[attacker] == 0)
    {
        
set_pdata_float(victimOFFSET_PAINSHOCK1.0OFFSET_LINUX)
    }
    if(
g_mode[attacker] == 1)
    {
        
set_pdata_float(victimOFFSET_PAINSHOCK1.0OFFSET_LINUX)
    }

    return;
}

public 
fw_traceline(Float:vector_start[3], Float:vector_end[3], ignored_monsteridhandle)
{
    if (!
is_user_alive(id))
        return 
FMRES_IGNORED;
    
    if (!
g_has_knife[id] || g_mode[id] == 2|| g_mode[id] == || get_user_weapon(id) != CSW_KNIFE)
        return 
FMRES_IGNORED;
    
    
pev(idpev_v_anglevector_end)
    
angle_vector(vector_endANGLEVECTOR_FORWARDvector_end)
    
    if(
g_mode[id] == 0xs_vec_mul_scalar(vector_endget_pcvar_float(cvar_hammer_radius), vector_end)
    if(
g_mode[id] == 1xs_vec_mul_scalar(vector_endget_pcvar_float(cvar_hammer_radius2), vector_end)
    
    
xs_vec_add(vector_startvector_endvector_end)
    
engfunc(EngFunc_TraceLinevector_startvector_endignored_monsteridhandle)

    return 
FMRES_SUPERCEDE;
}

public 
update_model(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE)
            return 
PLUGIN_CONTINUE;

    
entity_set_string(idEV_SZ_viewmodelknife_vmodel)
    
entity_set_string(idEV_SZ_weaponmodelknife_pmodel)

    return 
PLUGIN_CONTINUE;    
}

public 
clear_values(id)
{
    
g_has_knife[id] = 0
    g_mode
[id] = 0
    g_primaryattack
[id] = 0
    g_oldweap
[id] = -3
    remove_task
(id)
}

public 
knife_attack(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE || g_mode[id])
        return;

    new 
knife find_ent_by_owner ( -1"weapon_knife"id )
    
    
ExecuteHam(Ham_Weapon_PrimaryAttackknife)

    
g_primaryattack[id] = 2
    remove_task
(id)
    
set_task(1.0,"knife_clear",id)
    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
    
util_playweaponanimation(idANIM_SLASHE)
}

public 
knife_clear(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id] || get_user_weapon(id) != CSW_KNIFE || g_mode[id])
        return;

    
g_primaryattack[id] = 0
}

public 
fw_updateclientdata_post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || get_user_weapon(Player) != CSW_KNIFE || !g_has_knife[Player])
        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time() + 0.001 )

    if(
get_cd(CD_HandleCD_WeaponAnim) != ANIM_MOVESTAB && g_mode[Player] == 2
    {
        
set_cd(CD_HandleCD_WeaponAnimANIM_MOVESTAB); 
        return 
FMRES_SUPERCEDE
    }

    if(
get_cd(CD_HandleCD_WeaponAnim) != ANIM_MOVESLASH && g_mode[Player] == 3
    {
        
set_cd(CD_HandleCD_WeaponAnimANIM_MOVESLASH); 
        return 
FMRES_SUPERCEDE
    }

    return 
FMRES_HANDLED
}

public 
fw_playerprethink(id)
{
    if(!
is_user_alive(id) || !g_has_knife[id])
            return 
PLUGIN_CONTINUE
    
if(get_user_weapon(id) != CSW_KNIFE){
    
ExecuteHamB(Ham_Player_ResetMaxSpeedid)
    return 
PLUGIN_CONTINUE
    
}

    if(
pev(idpev_maxspeed) == 1.0)     
        return 
PLUGIN_CONTINUE

    
if(g_mode[id] == 0set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed))
    if(
g_mode[id] == 1set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed2))
    if(
g_mode[id] == 2set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed2))
    if(
g_mode[id] == 3set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed2))
    if(
g_mode[id] == 4set_pev(idpev_maxspeedget_pcvar_float(cvar_hammer_speed))

    return 
PLUGIN_CONTINUE
}

stock util_playweaponanimation(const Player, const Sequence)
{
    
set_pev(Playerpev_weaponanimSequence)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player)
    
write_byte(Sequence)
    
write_byte(pev(Playerpev_body))
    
message_end()
}

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

    new 
knockback 0

    
/*if(!zp_get_user_nemesis(victim))
    {
        if(!g_mode[attacker])
        {
            knockback = get_pcvar_num(cvar_hammer_knockback)
        }else{
            knockback = get_pcvar_num(cvar_hammer_knockback2)
        }
    }else*/
    
if(!g_mode[attacker])
    {
        
knockback get_pcvar_num(cvar_hammer_knockbackn)
    }
    else
    {
        
knockback get_pcvar_num(cvar_hammer_knockbackn2)
    }
    

    if(
knockback == 0
        return 
;

    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;

    
velocity[0] = ( origin2[0] * (knockback 3000) ) / get_entity_distance(victim attacker);
    
velocity[1] = ( origin2[1] * (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;
}

public 
client_disconnect(idclear_values(id)
public 
client_connect(idclear_values(id
Sorry. Unfortunately the same problem.
__________________
FREE PLUGINS:

2021 and before -> ALL PLUGIN LINK IS HERE <-

2022:
Zombie: The Original [%70 Completed]
ZombieTheMan01 is offline
yas17sin
Veteran Member
Join Date: Oct 2016
Location: Morocco/Sale
Old 02-05-2017 , 15:10   Re: Hammer (Knife) damage error.
Reply With Quote #26

i think the problem is with other plugin because it's working with me i test it.
yas17sin is offline
Send a message via ICQ to yas17sin
ZombieTheMan01
Senior Member
Join Date: Aug 2015
Location: Turkey
Old 02-05-2017 , 15:23   Re: Hammer (Knife) damage error.
Reply With Quote #27

Quote:
Originally Posted by yas17sin View Post
i think the problem is with other plugin because it's working with me i test it.
Damage is not work. I turned off all plugins. The result is the same. Does it damage you?
__________________
FREE PLUGINS:

2021 and before -> ALL PLUGIN LINK IS HERE <-

2022:
Zombie: The Original [%70 Completed]
ZombieTheMan01 is offline
yas17sin
Veteran Member
Join Date: Oct 2016
Location: Morocco/Sale
Old 02-05-2017 , 15:27   Re: Hammer (Knife) damage error.
Reply With Quote #28

yes i can kill players and cause damage to players i can see it because i am added advanced damage bullet plugin.
yas17sin is offline
Send a message via ICQ to yas17sin
ZombieTheMan01
Senior Member
Join Date: Aug 2015
Location: Turkey
Old 02-05-2017 , 15:31   Re: Hammer (Knife) damage error.
Reply With Quote #29

Quote:
Originally Posted by yas17sin View Post
yes i can kill players and cause damage to players i can see it because i am added advanced damage bullet plugin.
I have the same, but I can not see. Certainly because of the extension.
__________________
FREE PLUGINS:

2021 and before -> ALL PLUGIN LINK IS HERE <-

2022:
Zombie: The Original [%70 Completed]
ZombieTheMan01 is offline
ZombieTheMan01
Senior Member
Join Date: Aug 2015
Location: Turkey
Old 02-05-2017 , 15:34   Re: Hammer (Knife) damage error.
Reply With Quote #30

In the meantime, will you show the contents of plugins.ini and modules.ini?
__________________
FREE PLUGINS:

2021 and before -> ALL PLUGIN LINK IS HERE <-

2022:
Zombie: The Original [%70 Completed]
ZombieTheMan01 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 04:56.


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