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

weapon shoot and reload anim


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
lexzor
Veteran Member
Join Date: Nov 2020
Old 08-22-2023 , 13:45   weapon shoot and reload anim
Reply With Quote #1

hello,

i'm trying to make a new weapon for a zombie mode

anyways, i have some problems in creating the weapon. the weapon is on deagle, it's shooting like a xm1014 and it's reloading like a m3

sounds crazy, right?

the problem is:
- why i can attack in reload anim, even if i set flNextPrimaryAttack in reload function
- why sometime the attack anim it's not playing?
- why i can overlap reload action? like reloading when it's already reloading

hams:

Code:
    RegisterHam(Ham_Weapon_PrimaryAttack,   WEAPON_NAME, "Weapon_PrimaryAttack_Pre")     RegisterHam(Ham_Weapon_Reload,          WEAPON_NAME, "Weapon_Reload_Pre")     RegisterHam(Ham_Weapon_WeaponIdle,      WEAPON_NAME, "Weapon_Idle_Pre")


here, in reload pre hook i'm checking the flNextPrimaryAttack expecting that the user it's shooting if the var it s higher than 0.0.

laso, i'm setting m_flNextReload, but i still can reload

Code:
public Weapon_Reload_Pre(const iWeaponEnt) {     if(GetWeapCustom(iWeaponEnt) != WEAPON_DATA)     {         return HAM_IGNORED     }     new iClip, iAmmo, iOwner = GetWeapOwner(iWeaponEnt)     if(get_member(iWeaponEnt, m_Weapon_flNextPrimaryAttack) > 0.0 ||     ((iClip = get_member(iWeaponEnt, m_Weapon_iClip)) == WEAPON_MAX_CLIP) ||     ((iAmmo = get_member(iOwner, m_rgAmmo, WEAPON_AMMO_ID)) <= 0)     )     {         return HAM_SUPERCEDE     }     new m_flInSpecialReload = get_member(iWeaponEnt, m_Weapon_fInSpecialReload)     switch(m_flInSpecialReload)     {         case 0:         {             rg_set_animation(iOwner, PLAYER_RELOAD)             SendWeaponAnim(ANIM_START_RELOAD, iWeaponEnt, iOwner)             set_member(iWeaponEnt, m_Weapon_flTimeWeaponIdle, 0.53)             set_member(iWeaponEnt, m_Weapon_flNextPrimaryAttack, 0.53)             set_member(iWeaponEnt, m_Weapon_flNextSecondaryAttack, 0.53)             client_print(iOwner, print_chat, "Starting anim")             m_flInSpecialReload = 1         }         case 1:         {             if(Float:get_member(iWeaponEnt, m_Weapon_flTimeWeaponIdle) >= 0.0)             {                 return HAM_SUPERCEDE             }             SendWeaponAnim(random_num(ANIM_INSERT1, ANIM_INSERT2), iWeaponEnt, iOwner)             client_print(iOwner, print_chat, "Inserting bullet anim")             set_member(iWeaponEnt, m_Weapon_flTimeWeaponIdle, 0.46)             set_member(iWeaponEnt, m_Weapon_flNextReload, 0.46)                         m_flInSpecialReload = 2         }         case 2:         {                         set_member(iWeaponEnt, m_Weapon_iClip, ++iClip)             set_member(iOwner, m_rgAmmo, --iAmmo, WEAPON_AMMO_ID)             client_print(iOwner, print_chat, "Increase clip size")                         SendWeaponAnim(ANIM_AFTER_RELOAD, iWeaponEnt, iOwner)                         m_flInSpecialReload = 0         }     }         set_member(iWeaponEnt, m_Weapon_fInSpecialReload, m_flInSpecialReload)     return HAM_SUPERCEDE }


Code:
public Weapon_PrimaryAttack_Pre(const iWeaponEnt) {     if(GetWeapCustom(iWeaponEnt) != WEAPON_DATA)     {         return HAM_IGNORED     }     if(get_member(iWeaponEnt, m_Weapon_flNextPrimaryAttack) > 0.0)     {         return HAM_SUPERCEDE     }     new iOwner = GetWeapOwner(iWeaponEnt)     if(get_entvar(iOwner, var_waterlevel) == 3)     {         set_member(iWeaponEnt, m_Weapon_flNextPrimaryAttack, 0.3)         return HAM_SUPERCEDE     }         rg_set_animation(iOwner, PLAYER_ATTACK1)     SendWeaponAnim(random_num(ANIM_SHOOT1, ANIM_SHOOT2), iWeaponEnt, iOwner)     rh_emit_sound2(iOwner, 0, CHAN_WEAPON, WEAPON_FIRE_SOUND)         set_member(iOwner, m_iWeaponVolume, LOUD_GUN_VOLUME)     set_member(iOwner, m_iWeaponFlash, BRIGHT_GUN_FLASH)     set_entvar(iOwner, var_effects, get_entvar(iOwner, var_effects) | EF_MUZZLEFLASH)     set_member(iWeaponEnt, m_Weapon_flNextPrimaryAttack, 0.90)     set_member(iWeaponEnt, m_Weapon_flTimeWeaponIdle, 0.90)     set_member(iWeaponEnt, m_Weapon_iClip, get_member(iWeaponEnt, m_Weapon_iClip) - 1)     client_print(iOwner, print_chat, "shooting %f", get_member(iWeaponEnt, m_Weapon_flNextPrimaryAttack))         return HAM_SUPERCEDE }

stock i'm using for sending weap anim message


credits to hamlet
Code:
stock SendWeaponAnim(animation, weapon, owner) {     set_entvar(owner, var_weaponanim, animation);     if (ExecuteHam(Ham_Weapon_UseDecrement, weapon) && engfunc(EngFunc_CanSkipPlayer, owner))     {         return;     }         message_begin(MSG_ONE, SVC_WEAPONANIM, .player = owner);     write_byte(animation);     write_byte(get_entvar(weapon, var_body));     message_end(); }

any solutions? thanks in advance

Last edited by lexzor; 08-22-2023 at 14:05.
lexzor is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 08-25-2023 , 17:46   Re: weapon shoot and reload anim
Reply With Quote #2

someone?
lexzor 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 12:05.


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