| ZombieTheMan01 |
03-27-2017 14:48 |
CROW-9 2nd mode damage bugs
1 Attachment(s)
CROW-9 CSO is one of the weapons. My problem is this: I went into the damage mode in the second mode of the bomb. But whatever it is, it does not damage it and there are some bugs. And the animations do not fix somehow, problems occur in the second mode.
For those who don't know:
ORIGINAL VIDEO
MY VIDEO BUGS PLUGIN
PHP Code:
#include <amxmodx> #include <engine> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <xs>
#define NAME "CROW-9" #define VERSION "1.0" #define AUTHOR "Zombie-Mod.ru/YunusReyiz"
#define BUY_KNIFE "say crow9"
#define DAMAGE_SLASH 10.0 #define DAMAGE_STAB 30.0 #define RANGE_SLASH 50.0 #define RANGE_STAB 70.0 #define NEXTATTACK_SLASH 0.3 #define NEXTATTACK_STAB 1.0 #define KNIFE_KNOCK 5 #define BLOOD 3
#define Reload_Time 1.0 #define CROW_Time 1.5 #define Normal_Time 1.8 #define NEXTATTACK_SLASH 0.3 #define NEXTATTACK_STAB_CROW 2.5 #define NEXTATTACK_STAB_NORMAL 3.1
static const v_knife[] = "models/v_crow9.mdl" static const p_knife[] = "models/p_crow9.mdl"
static const SoundList[6][] = { "weapons/nata_draw.wav", "weapons/nata_wall.wav", "weapons/nata_slash.wav", "weapons/nata_stab.wav", "weapons/crow9_slasha_1.wav", "weapons/crow9_slasha_1.wav" }
static const Blood[][] = { "sprites/blood.spr", "sprites/bloodspray.spr" } static g_Blood[sizeof Blood] static bool:Knife[33] new g_MaxPlayers, attack[33] new mode[33] enum { normal = 0, crow, notattacked }
public plugin_init() { register_plugin(NAME, VERSION, AUTHOR) register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0") RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Pre", 0) RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Post", 1) RegisterHam(Ham_Item_Deploy, "weapon_knife", "ChangeModel", 1) //RegisterHam(Ham_Player_PreThink, "player", "PreThink") register_forward(FM_EmitSound, "KnifeSound") register_forward(FM_TraceLine, "fw_TraceLine") register_forward(FM_TraceHull, "fw_TraceHull") RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fw_nata_primaryattack_post", 1) RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fw_nata_secondaryattack_post", 1) register_clcmd(BUY_KNIFE, "BuyKnife") g_MaxPlayers = get_maxplayers() }
public BuyKnife(id) { Knife[id] = true change(id) engclient_cmd(id, "weapon_knife") }
public Event_NewRound() { for(new i = 0; i < g_MaxPlayers; i++) Knife[i] = false }
public ChangeModel(weapon) { if(!pev_valid(weapon)) return HAM_IGNORED static player player = pev(weapon, pev_owner) if(!is_user_alive(player)) return HAM_IGNORED if(!Knife[player]) return HAM_IGNORED change(player) return HAM_HANDLED }
public KnifeSound(id, channel, sample[], Float:volume, Float:attn, flags, pitch) { if(!equal(sample, "weapons/knife_", 14) || !Knife[id]) return FMRES_IGNORED if(equal(sample[8], "knife_hitwall", 13)) PlaySound(id, 1) else if(equal(sample[8], "knife_hit", 9)) switch(random(2)) { case 0:PlaySound(id, 4) case 1:PlaySound(id, 5) } if(equal(sample[8], "knife_slash", 11)) PlaySound(id, 2) if(equal(sample[8], "knife_stab", 10)) PlaySound(id, 3) if(equal(sample[8], "knife_deploy", 12)) PlaySound(id, 0) return FMRES_SUPERCEDE }
public TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damagetype) { if(!is_user_alive(attacker)) return HAM_IGNORED if(!Knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE) return HAM_IGNORED new hit, target get_user_aiming(attacker, target, hit)
new Float:mult_dmg = 1.0 if(pev(attacker, pev_button, IN_ATTACK)) mult_dmg = DAMAGE_SLASH else if(mode[attacker] == normal) mult_dmg = DAMAGE_STAB else if(mode[attacker] == crow) mult_dmg = DAMAGE_STAB + 2.5 SetHamParamFloat(4, damage * mult_dmg) if(mode[attacker] == crow) set_task(1.0, "crow_damaged", attacker)
return HAM_HANDLED }
public crow_damaged(id) { set_weapons_timeidle(id, NEXTATTACK_STAB_CROW) set_player_nextattack(id, NEXTATTACK_STAB_CROW) }
public TakeDamage_Post(victim, inflictor, attacker, Float:damage, damagetype) { if(!is_user_alive(attacker) || !is_user_alive(victim)) return HAM_IGNORED if(!Knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE) return HAM_IGNORED new Float:Origin[3], Float:Origin2[3], Float:Velocity[3] pev(attacker, pev_origin, Origin) pev(victim, pev_origin, Origin2) xs_vec_sub(Origin2, Origin, Velocity) xs_vec_normalize(Velocity, Velocity) xs_vec_mul_scalar(Velocity, (KNIFE_KNOCK * 100.0), Velocity) if(Velocity[2] <= 100.0) Velocity[2] = random_float(150.0, 250.0) message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BLOODSPRITE); engfunc(EngFunc_WriteCoord, Origin2[0]) engfunc(EngFunc_WriteCoord, Origin2[1]) engfunc(EngFunc_WriteCoord, Origin2[2]) write_short(g_Blood[0]) write_short(g_Blood[1]) write_byte(77) write_byte(BLOOD) message_end() set_pev(victim, pev_velocity, Velocity) return HAM_HANDLED }
public fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monster, id, handle) { if (!is_user_alive(id)) return FMRES_IGNORED if (get_user_weapon(id) != CSW_KNIFE) return FMRES_IGNORED if(!Knife[id]) return FMRES_IGNORED static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3] pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, view_ofs) xs_vec_add(fOrigin, view_ofs, vecStart) pev(id, pev_v_angle, v_angle) engfunc(EngFunc_MakeVectors, v_angle) get_global_vector(GL_v_forward, v_forward) static Float:scalar static buttons ; buttons = pev(id, pev_button) if (buttons & IN_ATTACK) scalar = RANGE_SLASH else if (buttons & IN_ATTACK2) { if(mode[id] == normal) scalar = RANGE_STAB else if(mode[id] == crow) scalar = RANGE_STAB + 100.0 } xs_vec_mul_scalar(v_forward, scalar, v_forward) xs_vec_add(vecStart, v_forward, vecEnd) engfunc(EngFunc_TraceLine, vecStart, vecEnd, ignored_monster, id, handle) return FMRES_SUPERCEDE }
public fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monster, hull, id, handle) { if (!is_user_alive(id)) return FMRES_IGNORED if (get_user_weapon(id) != CSW_KNIFE) return FMRES_IGNORED if(!Knife[id]) return FMRES_IGNORED static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3] pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, view_ofs) xs_vec_add(fOrigin, view_ofs, vecStart) pev(id, pev_v_angle, v_angle) engfunc(EngFunc_MakeVectors, v_angle) get_global_vector(GL_v_forward, v_forward) static Float:scalar static buttons ; buttons = pev(id, pev_button) if (buttons & IN_ATTACK) scalar = RANGE_SLASH else if (buttons & IN_ATTACK2) scalar = RANGE_STAB xs_vec_mul_scalar(v_forward, scalar, v_forward) xs_vec_add(vecStart, v_forward, vecEnd) engfunc(EngFunc_TraceHull, vecStart, vecEnd, ignored_monster, hull, id, handle) return FMRES_SUPERCEDE }
/*public PreThink(id) { if(!is_user_alive(id)) return HAM_IGNORED if(!Knife[id]) return HAM_IGNORED if(get_user_weapon(id) != CSW_KNIFE) { set_pev(id, pev_gravity, 0.8) set_pev(id, pev_maxspeed, 240.0) return HAM_IGNORED } return HAM_HANDLED }*/
public plugin_precache() { precache_model(v_knife) precache_model(p_knife) static i for(i = 0; i <= charsmax(SoundList); i++) precache_sound(SoundList[i]) for(i = 0; i <= charsmax(Blood); i++) g_Blood[i] = precache_model(Blood[i]) } // Primary Attack Speed public fw_nata_primaryattack_post(ent) { if(pev_valid(ent) != 2) return HAM_IGNORED new id id = get_pdata_cbase(ent, 41 , 4) if(!Knife[id]) return HAM_IGNORED switch(attack[id]) { case 0: { set_anim(id, 1) attack[id] = 1 } case 1: { set_anim(id, 2) attack[id] = 0 } } set_weapons_timeidle(id, NEXTATTACK_SLASH) set_player_nextattack(id, NEXTATTACK_SLASH) return HAM_HANDLED } // Secondary Attack Speed public fw_nata_secondaryattack_post(ent) { if(pev_valid(ent) != 2) return HAM_IGNORED new id id = get_pdata_cbase(ent, 41 , 4) if(!Knife[id]) return HAM_IGNORED
set_task(0.0, "reloading_before", id) if(mode[id] == normal) { if(mode[id] == crow) { if((pev(id, pev_oldbuttons) & IN_ATTACK2)) { set_task(Reload_Time, "crow_reload", id) } set_weapons_timeidle(id, NEXTATTACK_STAB_CROW) set_player_nextattack(id, NEXTATTACK_STAB_CROW) } else if(mode[id] == notattacked) { if(!(pev(id, pev_oldbuttons) & IN_ATTACK2)) { set_task(Reload_Time, "normal_reload", id) } set_weapons_timeidle(id, NEXTATTACK_STAB_NORMAL) set_player_nextattack(id, NEXTATTACK_STAB_NORMAL) } } return HAM_HANDLED }
public reloading_before(id) { set_anim(id, 4) //new wpn = pev(id, pev_owner) mode[id] = normal set_task(Reload_Time, "crow_reload", id) set_task(Reload_Time, "normal_reload", id) }
public crow_reload(id) { new wpn = pev(id, pev_owner) if((pev(id, pev_oldbuttons) & IN_RELOAD) && (pev(id, pev_oldbuttons) & IN_ATTACK2)) { mode[id] = crow set_anim(id, 5) set_pdata_float(wpn, 48, CROW_Time, 4) set_pdata_float(id, 83, CROW_Time, 5) } } public normal_reload(id) { new wpn = pev(id, pev_owner) if(!(pev(id, pev_oldbuttons) & IN_RELOAD)) { mode[id] = notattacked set_anim(id, 6) set_pdata_float(wpn, 48, Normal_Time, 4) set_pdata_float(id, 83, Normal_Time, 5) } }
change(id) { set_pev(id, pev_viewmodel2, v_knife) set_pev(id, pev_weaponmodel2, p_knife) }
stock PlaySound(Ent, Sound) engfunc(EngFunc_EmitSound, Ent, CHAN_WEAPON, SoundList[_:Sound], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) stock is_user_admin(id) { new __flags=get_user_flags(id); return (__flags>0 && !(__flags&ADMIN_USER)); }
stock fm_set_user_money(index, money, flash) { set_pdata_int(index, 115, money) message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Money"), _, index) write_long(money) write_byte(flash ? 1 : 0) message_end() }
stock fm_get_user_money(index) return get_pdata_int(index, 115) stock ColorChat(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, "!team", "^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, get_user_msgid("SayText"), _, players[i]) write_byte(players[i]); write_string(msg); message_end(); } } } }
stock set_weapons_timeidle(id, Float:TimeIdle) { if(!is_user_alive(id)) return new entwpn = fm_get_user_weapon_entity(id, CSW_KNIFE) if (pev_valid(entwpn)) { set_pdata_float(entwpn, 46, TimeIdle, 4) set_pdata_float(entwpn, 47, TimeIdle, 4) set_pdata_float(entwpn, 48, TimeIdle + 1.0, 4) } }
stock set_player_nextattack(id, Float:nexttime) { if(!is_user_alive(id)) return const m_flNextAttack = 83 set_pdata_float(id, m_flNextAttack, nexttime, 5) }
stock set_anim(const Player, const Sequence) { set_pev(Player, pev_weaponanim, Sequence) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player) write_byte(Sequence) write_byte(pev(Player, pev_body)) message_end() }
Thanks in advance.
|