Raised This Month: $32 Target: $400
 8% 

Delay Knife Attack


Post New Thread Reply   
 
Thread Tools Display Modes
Randomize
BANNED
Join Date: May 2012
Location: in your heart
Old 10-07-2013 , 17:46   Re: Delay Knife Attack
Reply With Quote #11

Hmmm, can we not to block the damage? I just want to delay it.

Last edited by Randomize; 10-08-2013 at 05:05.
Randomize is offline
Black Rose
Veteran Member
Join Date: Feb 2011
Location: Stockholm, Sweden
Old 10-11-2013 , 14:03   Re: Delay Knife Attack
Reply With Quote #12

If it's wrong I'm sure someone will correct it.
Code:
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <hamsandwich> #define m_pPlayer            41 #define m_flNextAttack      83 #define P_MODEL "models/nst_wpn/p_knife.mdl" #define V_MODEL "models/nst_wpn/v_knife.mdl" new primary_delay, secondary_delay, primary_damage, secondary_damage, primary_distance, secondary_distance; new bool:g_has_knife[33]; public plugin_init() {         register_plugin("", "", "");         register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");         register_concmd("amok","cmd_buy");         RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwd_Weapon_PrimaryAttack_Pre");     RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fwd_Weapon_SecondaryAttack_Pre");         primary_delay = register_cvar("knife_attack1", "1.4");     secondary_delay = register_cvar("knife_attack2", "1.8");     primary_damage = register_cvar("knife_damage1", "0.7");     secondary_damage = register_cvar("knife_damage2", "0.8");     primary_distance = register_cvar("knife_distance1", "70");     secondary_distance = register_cvar("knife_distance2", "90"); } public plugin_precache() {         precache_model(P_MODEL);     precache_model(V_MODEL); } public client_connect(id)     g_has_knife[id] = false; public cmd_buy(id)     g_has_knife[id] = true; public Event_CurWeapon(id) {         if ( g_has_knife[id] && get_user_weapon(id) == CSW_KNIFE ) {         set_pev(id, pev_weaponmodel2, P_MODEL);         set_pev(id, pev_viewmodel2, V_MODEL);     } } public fwd_Weapon_PrimaryAttack_Pre(ent) {         new id = get_pdata_cbase(ent, m_pPlayer, 4);         if ( g_has_knife[id] && get_user_weapon(id) == CSW_KNIFE )         set_pdata_float(id, m_flNextAttack, get_pcvar_float(primary_delay), 4); } public fwd_Weapon_SecondaryAttack_Pre(ent) {         new id = get_pdata_cbase(ent, m_pPlayer, 4);         if ( g_has_knife[id] && get_user_weapon(id) == CSW_KNIFE )         set_pdata_float(id, m_flNextAttack, get_pcvar_float(secondary_delay), 4); }
__________________

Last edited by Black Rose; 10-11-2013 at 14:10.
Black Rose is offline
Randomize
BANNED
Join Date: May 2012
Location: in your heart
Old 10-11-2013 , 20:58   Re: Delay Knife Attack
Reply With Quote #13

Still not delay the damage
Randomize is offline
Black Rose
Veteran Member
Join Date: Feb 2011
Location: Stockholm, Sweden
Old 10-12-2013 , 05:06   Re: Delay Knife Attack
Reply With Quote #14

I gave you two examples to chose from in PM. This is what you chose.
Explain what you want.
__________________

Last edited by Black Rose; 10-12-2013 at 05:09.
Black Rose is offline
RapZzw3rR
Member
Join Date: May 2012
Location: Romania
Old 10-12-2013 , 05:11   Re: Delay Knife Attack
Reply With Quote #15

Quote:
Originally Posted by ~Ice*shOt View Post
PHP Code:
    RegisterHam(Ham_Weapon_PrimaryAttack"weapon_knife""Fwd_AttackSpeed"1)
    
RegisterHam(Ham_Item_Deploy "weapon_knife""Fwd_AttackSpeed"1)

public 
Fwd_AttackSpeed(const Entity)
{
    if (!
pev_valid(Entity))
        return 
HAM_IGNORED

    set_pdata_float
(Entity461.14)
    
set_pdata_float(Entity471.254)

    return 
HAM_IGNORED


Can somebody explain me this two lines?

PHP Code:
set_pdata_float(Entity461.14)
set_pdata_float(Entity471.254
RapZzw3rR is offline
Black Rose
Veteran Member
Join Date: Feb 2011
Location: Stockholm, Sweden
Old 10-12-2013 , 05:27   Re: Delay Knife Attack
Reply With Quote #16

Code:
#define    m_flNextPrimaryAttack    46 #define    m_flNextSecondaryAttack    47

It's telling the game that this entity can't perform a primary attack for 1.1 seconds and a secondary for 1.25 seconds.
Didn't work when I tested it if I remember correctly.
__________________

Last edited by Black Rose; 10-12-2013 at 05:30.
Black Rose is offline
RapZzw3rR
Member
Join Date: May 2012
Location: Romania
Old 10-12-2013 , 17:00   Re: Delay Knife Attack
Reply With Quote #17

Quote:
Originally Posted by Black Rose View Post
Code:
#define    m_flNextPrimaryAttack    46 #define    m_flNextSecondaryAttack    47

It's telling the game that this entity can't perform a primary attack for 1.1 seconds and a secondary for 1.25 seconds.
Didn't work when I tested it if I remember correctly.
Aha thank you Black Rose.
RapZzw3rR is offline
Randomize
BANNED
Join Date: May 2012
Location: in your heart
Old 10-12-2013 , 23:22   Re: Delay Knife Attack
Reply With Quote #18

Black Rose, I mean number 1. When I hit someone, the damage is delayed.
Randomize is offline
Black Rose
Veteran Member
Join Date: Feb 2011
Location: Stockholm, Sweden
Old 10-13-2013 , 06:44   Re: Delay Knife Attack
Reply With Quote #19

I'm not overconfident in this code, but it seems to work.

There should probably be a check if the user is alive before ExecuteHam() is sent.
The easiest way would probably be:
Code:
client_disconnect(id)     remove_task(id)

Code:
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <hamsandwich> #define m_pPlayer      41 // CBasePlayerItem, Linux +4 #define m_iId         43 // CBasePlayerItem, Linux +4 #define m_flNextAttack  83 // CBasePlayer?, Linux +5? #define m_pActiveItem   373 // CBasePlayer, Linux +5 /* #define P_MODEL "models/nst_wpn/p_knife.mdl" #define V_MODEL "models/nst_wpn/v_knife.mdl" */ #define P_MODEL "models/p_knife.mdl" #define V_MODEL "models/v_knife.mdl" new primary_delay, secondary_delay;//, primary_damage, secondary_damage, primary_distance, secondary_distance; new bool:g_has_knife[33]; new HamHook:gp_fwd_TakeDamage; new Float:gDelay; new gKnifeEntity; public plugin_init() {         register_plugin("", "", "");         register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");         register_concmd("amok","cmd_buy");         RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwd_Weapon_PrimaryAttack_Pre");     RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fwd_Weapon_SecondaryAttack_Pre");         RegisterHam(Ham_Killed, "player", "fwd_Killed");         gp_fwd_TakeDamage = RegisterHam(Ham_TakeDamage, "player", "fwd_TakeDamage_Pre");     DisableHamForward(gp_fwd_TakeDamage);         primary_delay = register_cvar("knife_attack1", "1.4");     secondary_delay = register_cvar("knife_attack2", "1.8");         if ( ( gKnifeEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "weapon_knife")) ) )         set_pdata_int(gKnifeEntity, m_iId, 29, 4); // Just so Ham won't deny us.         /*     primary_damage = register_cvar("knife_damage1", "0.7");     secondary_damage = register_cvar("knife_damage2", "0.8");     primary_distance = register_cvar("knife_distance1", "70");     secondary_distance = register_cvar("knife_distance2", "90");     */ } public plugin_precache() {         precache_model(P_MODEL);     precache_model(V_MODEL); } public client_connect(id)     g_has_knife[id] = false; public cmd_buy(id)     g_has_knife[id] = true; public Event_CurWeapon(id) {         if ( g_has_knife[id] && get_user_weapon(id) == CSW_KNIFE ) {         set_pev(id, pev_weaponmodel2, P_MODEL);         set_pev(id, pev_viewmodel2, V_MODEL);     } } public fwd_Killed(victim, attacker, shouldgib)     remove_task(victim); public fwd_TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damagebits) {         new any:gTakeDamageData[5];         gTakeDamageData[0] = victim;     gTakeDamageData[1] = gKnifeEntity;     gTakeDamageData[2] = attacker;     gTakeDamageData[3] = damage;     gTakeDamageData[4] = damagebits;         set_task(gDelay, "task_DelayDamage", victim, gTakeDamageData, 5);     DisableHamForward(gp_fwd_TakeDamage);         return HAM_SUPERCEDE; } public task_DelayDamage(any:Parameters[])     ExecuteHam(Ham_TakeDamage, Parameters[0], Parameters[1], Parameters[2], Parameters[3], Parameters[4]); public fwd_Weapon_PrimaryAttack_Pre(ent) {         new id = get_pdata_cbase(ent, m_pPlayer, 4);         if ( g_has_knife[id] ) {         EnableHamForward(gp_fwd_TakeDamage);         gDelay = get_pcvar_float(primary_delay);     } } public fwd_Weapon_SecondaryAttack_Pre(ent) {         new id = get_pdata_cbase(ent, m_pPlayer, 4);         if ( g_has_knife[id] ) {         EnableHamForward(gp_fwd_TakeDamage);         gDelay = get_pcvar_float(secondary_delay);     } }
__________________

Last edited by Black Rose; 10-13-2013 at 06:49.
Black Rose is offline
Randomize
BANNED
Join Date: May 2012
Location: in your heart
Old 10-13-2013 , 07:51   Re: Delay Knife Attack
Reply With Quote #20

How does it work? Will it block the default damage and execute Ham_TakeDamage?
I tested your code nothing happens.
Randomize 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 23:18.


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