Senior Member
Join Date: Oct 2020
Location: Philippines from South K
|
02-19-2021
, 09:31
Re: Cache_TryAlloc Error
|
#2
|
Ok, so i've just found out the problem.
The problem is from this plugin:
PHP Code:
#include <amxmodx> #include <engine> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <xs> #include <zp50_core> #include <reapi> #include <crxknives>
#define PLUGIN "[ZP] Knife: Miracle Prism Sword" #define VERSION "1.2" #define AUTHOR "Asdian DX"
#define CSW_MAGICKNIFE CSW_KNIFE #define weapon_magicknife "weapon_knife"
#define v_model "models/gcg_csze/v_magicknife.mdl" #define p_model "models/gcg_csze/p_magicknife.mdl" #define spr_wpn "knife_magicknife"
new const weapon_sound[][] = { "weapons/magicknife_slash1.wav", // 0 "weapons/magicknife_slash2.wav", // 1 "weapons/magicknife_slash3.wav", // 2 "weapons/magicknife_slash4.wav", // 3 "weapons/magicknife_slash_end.wav", // 4 "weapons/magicknife_draw.wav", // 5 "weapons/magicknife_charge_start.wav", // 6 "weapons/magicknife_charge_idle2_1.wav", // 7 "weapons/magicknife_charge_idle2_2.wav", // 8 "weapons/magicknife_charge_finish.wav", // 9 "weapons/magicknife_charge_attack2.wav", // 10 "weapons/magicknife_magic_start.wav", // 11 "weapons/magicknife_magic_end.wav", // 12 "weapons/magicknife_magic_hit.wav", // 13 "weapons/magicknife_magic_end.wav", // 14 "weapons/tomahawk_slash1_hit.wav", // 15 "weapons/tomahawk_slash2_hit.wav", // 16 "weapons/combatknife_wall.wav" // 17 }
new const chara_specialsound[][] = { "weapons/buffclass19s3ct/skill/miracleprismsword1.wav", "weapons/buffclass19s3ct/skill/miracleprismsword2.wav", "weapons/buffclass19s3tr/skill/miracleprismsword1.wav", "weapons/buffclass19s3tr/skill/miracleprismsword2.wav" }
new const szMagicSprites[][] = { "sprites/gcg_csze/ef_mgknife_start.spr", //0 "sprites/gcg_csze/ef_mgknife_loop.spr", //1 "sprites/gcg_csze/ef_mgknife_end.spr", //2 "sprites/gcg_csze/ef_mgknife_exp01.spr", //3 "sprites/gcg_csze/ef_mgknife_exp02.spr" //4 }
//SLASH #define SLASH_ANGLE 120.0 #define SLASH_DAMAGE random_float(300.0,350.0) #define SLASH_RANGE 130.0 #define SLASH_KNOCKBACK 3.0
//CHARGE #define CHARGE_DAMAGE random_float(600.0,650.0) #define CHARGE_RANGE 160.0 #define CHARGE_ANGLE 179.0 #define CHARGE_KNOCKBACK 1000.0
//MAGIC #define MAGIC_EXPLOSION_DAMAGE 2000.0 #define MAGIC_SLASH_DAMAGE 1000.0
//Hit #define RESULT_HIT_NONE 0 #define RESULT_HIT_PLAYER 1 #define RESULT_HIT_WORLD 2
new g_had_magicknife[33], g_freezetime new spr_blood_spray, spr_blood_drop
new const ATTRIBUTE_BONUS_XP[] = "MAGIC"
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_logevent("LogEvent_Round_Start",2, "1=Round_Start") register_event("HLTV","Event_HLTV","a","1=0","2=0") register_event("CurWeapon", "Event_CurWeapon", "be", "1=1") register_message(get_user_msgid("DeathMsg"), "message_DeathMsg") RegisterHam(Ham_Think, "info_target", "MagicThink") RegisterHam(Ham_Item_PostFrame, weapon_magicknife, "fw_Item_PostFrame") register_clcmd(spr_wpn, "hook_rb") }
public plugin_precache() { precache_model(v_model) precache_model(p_model) new i for(i = 0; i < sizeof(chara_specialsound); i++) precache_sound(chara_specialsound[i]) for(i = 0; i < sizeof(weapon_sound); i++) precache_sound(weapon_sound[i]) for(i = 0; i < sizeof(szMagicSprites); i++) engfunc(EngFunc_PrecacheModel, szMagicSprites[i]) spr_blood_spray = precache_model("sprites/bloodspray.spr") spr_blood_drop = precache_model("sprites/blood.spr") new Txt[32] format(Txt, 31, "sprites/gcg_csze/%s.txt", spr_wpn) engfunc(EngFunc_PrecacheGeneric, Txt) }
public hook_rb(id) { engclient_cmd(id, weapon_magicknife) return PLUGIN_HANDLED }
public crxknives_knife_updated(id, iKnife, bool:bOnConnect) { static iValue
if(crxknives_get_attribute_int(id, ATTRIBUTE_BONUS_XP, iValue) && iValue == 1) { get_magicknife(id) } else { g_had_magicknife[id] = 0 } }
public zp_fw_core_infect_post(id) remove_crow9(id) public zp_fw_core_cure_post(id) remove_crow9(id)
public get_magicknife(id) { if (!is_user_alive(id)) return
g_had_magicknife[id] = 1 if (get_user_weapon(id) == CSW_MAGICKNIFE) Event_CurWeapon(id) else engclient_cmd(id,weapon_magicknife) message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id) write_string(g_had_magicknife[id] == 1 ? spr_wpn : weapon_magicknife) write_byte(-1) write_byte(-1) write_byte(-1) write_byte(-1) write_byte(2) write_byte(1) write_byte(CSW_MAGICKNIFE) write_byte(0) message_end() }
public remove_crow9(id) { g_had_magicknife[id] = 0 }
public Event_HLTV() g_freezetime = 1 public LogEvent_Round_Start() g_freezetime = 0
public Event_CurWeapon(id) { if(!is_user_alive(id)) return 1 if(get_user_weapon(id) != CSW_MAGICKNIFE) return 1 if(!g_had_magicknife[id]) return 1 set_pev(id, pev_viewmodel2, v_model) set_pev(id, pev_weaponmodel2, p_model) Set_WeaponAnim(id, 6) static iEnt; iEnt = fm_get_user_weapon_entity(id, CSW_MAGICKNIFE) if(!pev_valid(iEnt)) return 1 set_pdata_float(id, 83, 1.0) set_pdata_float(iEnt, 46, 1.03); set_pdata_float(iEnt, 47, 1.03); set_pdata_float(iEnt, 48, 1.03); set_pev(iEnt, pev_iuser1, 0) set_pev(iEnt, pev_iuser2, 0) set_pev(iEnt, pev_iuser3, 0) return 0 }
public message_DeathMsg(msg_id, msg_dest, msg_ent) { new szWeapon[64] get_msg_arg_string(4, szWeapon, charsmax(szWeapon)) if (strcmp(szWeapon, "knife")) return PLUGIN_CONTINUE
new iEntity = get_pdata_cbase(get_msg_arg_int(1), 373) if (!pev_valid(iEntity) || get_pdata_int(iEntity, 43, 4) != CSW_MAGICKNIFE || !g_had_magicknife[get_msg_arg_int(1)]) return PLUGIN_CONTINUE
set_msg_arg_string(4, "magicknife") return PLUGIN_CONTINUE }
public fw_Item_PostFrame(ent) { new id = pev(ent, pev_owner) if(!is_user_connected(id)) return HAM_IGNORED if(get_user_weapon(id) != CSW_MAGICKNIFE || !g_had_magicknife[id]) return HAM_IGNORED
new iButton = pev(id,pev_button) return AurezLegendOfBotac(id, ent, iButton) }
public AurezLegendOfBotac(id, iEnt, iButton) { if(g_freezetime) return HAM_IGNORED new iSnd = pev(iEnt, pev_iuser2); new iState = pev(iEnt, pev_iuser3) //new IsSpec = (bStab == 2) if(!(iButton & IN_ATTACK) && get_pdata_float(iEnt, 48, 4) <= 0.0 && iSnd == 1) { set_pdata_float(iEnt, 46, 0.83,4); set_pdata_float(iEnt, 47, 0.83,4); set_pdata_float(iEnt, 48, 0.85,4); Set_WeaponAnim(id, 5) set_pev(iEnt, pev_iuser1, 0) set_pev(iEnt, pev_iuser2, 0) } if(!(iButton & IN_ATTACK2)) { if(iState == 2 || iState == 3) { set_pev(iEnt, pev_iuser3, 0) Set_WeaponAnim(id, 11) set_pdata_float(id, 83, 0.3) set_pdata_float(iEnt, 46, 2.16); set_pdata_float(iEnt, 47, 2.16); set_pdata_float(iEnt, 48, 2.16) set_pev(iEnt, pev_iuser1, 1) set_pev(iEnt, pev_iuser2, 2) set_pev(iEnt, pev_fuser4, get_gametime() + get_pdata_float(id, 83)) } if(iState == 4) { set_pev(iEnt, pev_iuser3, 0) Set_WeaponAnim(id, 12) set_pdata_float(id, 83, 0.3) set_pdata_float(iEnt, 46, 2.16); set_pdata_float(iEnt, 47, 2.16); set_pdata_float(iEnt, 48, 2.16) set_pev(iEnt, pev_iuser1, 1) set_pev(iEnt, pev_iuser2, 3) set_pev(iEnt, pev_fuser4, get_gametime() + get_pdata_float(id, 83))
client_cmd(id, "spk weapons/buffclass19s3ct/skill/miracleprismsword1.wav") client_cmd(id, "spk weapons/buffclass19s3tr/skill/miracleprismsword1.wav") } } if (get_pdata_float(id, 83) <= 0.0 && pev(iEnt, pev_iuser1)) { new Float:Damage[4] Damage[0] = SLASH_RANGE Damage[1] = SLASH_ANGLE Damage[2] = SLASH_DAMAGE Damage[3] = SLASH_KNOCKBACK new iHitResult = KnifeAttack_Global(id, 0, Damage[0], Damage[1], Damage[2], Damage[3]) switch (iHitResult) { case RESULT_HIT_PLAYER : SendSound(id, CHAN_VOICE, weapon_sound[random_num(15, 16)]) case RESULT_HIT_WORLD : SendSound(id, CHAN_VOICE, weapon_sound[17]) } if(iSnd == 2) SendSound(id, CHAN_WEAPON, weapon_sound[random_num(0,3)]) if(iSnd == 3) { SendSound(id, CHAN_WEAPON, weapon_sound[10]); DoMagic(id); } set_pev(iEnt, pev_iuser1, 0); if(iSnd > 1) set_pev(iEnt, pev_iuser2, 0) } if((iButton & IN_ATTACK2) && iState == 4) { new Float:fTimer1; pev(iEnt, pev_fuser1, fTimer1) if(fTimer1 && fTimer1 < get_gametime()) { SendSound(id, CHAN_WEAPON, weapon_sound[8]) set_pev(iEnt, pev_fuser1, get_gametime() + 3.31) } } if(get_pdata_float(iEnt, 46) > 0.0) return HAM_IGNORED if(iButton & IN_ATTACK) { new iAnim = pev(iEnt, pev_iuser4) set_pdata_float(id, 83, 0.05) set_pdata_float(iEnt, 46, 0.35,4); set_pdata_float(iEnt, 47, 0.35,4); set_pdata_float(iEnt, 48, 0.45,4);
set_pev(iEnt, pev_iuser1, 1) set_pev(iEnt, pev_iuser2, 1) set_pev(iEnt, pev_fuser4, get_gametime() + get_pdata_float(id, 83)) Set_WeaponAnim(id, 1 + iAnim) SendSound(id, CHAN_WEAPON, weapon_sound[0 + iAnim]) if(iAnim > 2) iAnim = 0 else iAnim++ set_pev(iEnt, pev_iuser4, iAnim) }
if((iButton & IN_ATTACK2) && !iSnd) { switch(iState) { case 0: { Set_WeaponAnim(id, 13) set_pdata_float(iEnt, 46, 0.6) set_pdata_float(iEnt, 47, 0.6) set_pdata_float(iEnt, 48, 0.65) set_pev(iEnt, pev_iuser3, 1) } case 1: { Set_WeaponAnim(id, 7) SendSound2(id, weapon_sound[6]) set_pdata_float(iEnt, 46, 0.36); set_pdata_float(iEnt, 47, 0.36); set_pdata_float(iEnt, 48, 0.36);
set_pev(iEnt, pev_iuser3, 2) } case 2: { Set_WeaponAnim(id, 9) set_pdata_float(iEnt, 46, 1.03); set_pdata_float(iEnt, 47, 1.03); set_pdata_float(iEnt, 48, 1.03); set_pev(iEnt, pev_iuser3, 3) } case 3: { Set_WeaponAnim(id, 8) set_pdata_float(iEnt, 46, 0.36); set_pdata_float(iEnt, 47, 0.36); set_pdata_float(iEnt, 48, 0.36);
set_pev(iEnt, pev_iuser3, 4) set_pev(iEnt, pev_fuser1, get_gametime() + 0.01) client_cmd(id, "spk weapons/buffclass19s3ct/skill/miracleprismsword1.wav") client_cmd(id, "spk weapons/buffclass19s3tr/skill/miracleprismsword2.wav") } case 4: { set_pdata_float(iEnt, 46, 0.93); set_pdata_float(iEnt, 47, 0.93); set_pdata_float(iEnt, 48, 0.93); Set_WeaponAnim(id, 10) set_pev(iEnt, pev_iuser3, 4) MagicInit(id) } } } else { if(iState == 1) { set_pev(iEnt, pev_iuser3, 0) set_pdata_float(id, 83, 0.2) set_pdata_float(iEnt, 46, 1.0) set_pdata_float(iEnt, 47, 1.0) set_pdata_float(iEnt, 48, 2.6) set_pev(iEnt, pev_iuser1, 1) set_pev(iEnt, pev_iuser2, 2) set_pev(iEnt, pev_fuser4, get_gametime() + get_pdata_float(id, 83)) } } iButton &= ~IN_ATTACK; iButton &= ~IN_ATTACK2; set_pev(id, pev_button, iButton); return HAM_IGNORED }
public MagicInit(id) { static Float:vOrigin[3], Float:pOrigin[3] pev(id, pev_origin, vOrigin) for(new x = 0; x < get_maxplayers(); x ++) { if(!is_user_connected(x) || !is_user_alive(x) || !zp_core_is_zombie(x)) continue; pev(x, pev_origin, pOrigin); if(isClearLine(pOrigin, vOrigin) && vector_distance(pOrigin, vOrigin) <= 650.0 && !isLocked(x, id)) MakeMagic(id, x) } }
public MakeMagic(pevAttacker, iVictim) { static Float:pOrigin[3], Float:vOrigin[3], Float:vDir[3], Float:vAngle[3]; pev(iVictim, pev_origin, vOrigin); pev(pevAttacker, pev_origin, pOrigin); xs_vec_sub(vOrigin, pOrigin, vDir); xs_vec_normalize(vDir, vDir); static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")); dllfunc(DLLFunc_Spawn, Ent); engfunc(EngFunc_SetModel, Ent, szMagicSprites[0]) set_pev(Ent, pev_origin, vOrigin); set_pev(Ent, pev_classname, "magicknife_magic") set_pev(Ent, pev_owner, pevAttacker); set_pev(Ent, pev_rendermode, kRenderTransAdd); set_pev(Ent, pev_renderamt, 255.0); set_pev(Ent, pev_scale, 0.57); set_pev(Ent, pev_iuser1, 0); set_pev(Ent, pev_iuser2, 0); set_pev(Ent, pev_iuser3, 0); set_pev(Ent, pev_frame, 0.0); vector_to_angle(vDir, vAngle); set_pev(Ent, pev_angles, vAngle); set_pev(Ent, pev_enemy, iVictim); set_pev(Ent, pev_nextthink, get_gametime()); engfunc(EngFunc_EmitAmbientSound, Ent, vOrigin, weapon_sound[11], 1.0, 0.8, 0, 100); }
public DoMagic(id) { new pEnt = -1 while(( pEnt = engfunc(EngFunc_FindEntityByString, pEnt, "classname", "magicknife_magic")) != 0) { if(!pev_valid(pEnt) || pev(pEnt, pev_owner) != id) continue; if(pev(pEnt, pev_iuser2) == 0) set_pev(pEnt, pev_iuser1, 4); } }
public MagicThink(Ent) { if(!isMagic(Ent)) return; new Float:pOrigin[3], Float:vOrigin[3], Float:vDir[3], Float:vAngle[3], Float:flFrame, iMode, iCheck, iVictim, pevAttacker; static iStat; iStat = 0 pev(Ent, pev_origin, vOrigin); iMode = pev(Ent, pev_iuser1) iCheck = pev(Ent, pev_iuser2) switch(iMode) { case 1: { pev(Ent, pev_frame, flFrame); flFrame += 1.0 if(flFrame >= 14.0) flFrame = 0.0 set_pev(Ent, pev_frame, flFrame); } case 2: // removed { engfunc(EngFunc_SetModel, Ent, szMagicSprites[2]) set_pev(Ent, pev_iuser1, 3); set_pev(Ent, pev_iuser2, 1); set_pev(Ent, pev_frame, 0.0); engfunc(EngFunc_EmitAmbientSound, Ent, vOrigin, weapon_sound[12], 1.0, 0.8, 0, 100); } case 3: { pev(Ent, pev_frame, flFrame); flFrame = floatmin(44.0, flFrame+1.0); if(flFrame >= 44.0) { engfunc(EngFunc_RemoveEntity, Ent); return; } set_pev(Ent, pev_frame, flFrame); } case 4: // hit { engfunc(EngFunc_SetModel, Ent, szMagicSprites[3]) set_pev(Ent, pev_frame, 0.0); set_pev(Ent, pev_iuser1, 5); set_pev(Ent, pev_iuser2, 2); engfunc(EngFunc_EmitAmbientSound, Ent, vOrigin, weapon_sound[13], 1.0, 0.6, 0, 100); iStat = 1 } case 5: { pev(Ent, pev_frame, flFrame); flFrame = floatmin(34.0, flFrame+0.8); if(flFrame >= 12.0 && pev(Ent, pev_iuser3) != 1) { iStat = 2 set_pev(Ent, pev_iuser3, 1); engfunc(EngFunc_EmitAmbientSound, Ent, vOrigin, weapon_sound[14], 1.0, 0.6, 0, 100); } if(flFrame >= 34.0) { set_pev(Ent, pev_iuser1, 6); engfunc(EngFunc_SetModel, Ent, szMagicSprites[4]) flFrame = 0.0 } set_pev(Ent, pev_frame, flFrame); } case 6: { pev(Ent, pev_frame, flFrame); flFrame = floatmin(34.0, flFrame+1.0); if(flFrame >= 34.0) { engfunc(EngFunc_RemoveEntity, Ent); return; } set_pev(Ent, pev_frame, flFrame); } default: { pev(Ent, pev_frame, flFrame); flFrame = floatmin(44.0, flFrame + 0.8); if(flFrame >= 44.0) { set_pev(Ent, pev_iuser1, 1); engfunc(EngFunc_SetModel, Ent, szMagicSprites[1]) flFrame = 0.0 } set_pev(Ent, pev_frame, flFrame); } } set_pev(Ent, pev_nextthink, get_gametime()); pevAttacker = pev(Ent, pev_owner); iVictim = pev(Ent, pev_enemy);
if(!is_user_connected(pevAttacker) || !is_user_alive(pevAttacker)) { engfunc(EngFunc_RemoveEntity, Ent); return; } if(iCheck == 1) return; pev(pevAttacker, pev_origin, pOrigin); pev(iVictim, pev_origin, vOrigin); xs_vec_sub(vOrigin, pOrigin, vDir); xs_vec_normalize(vDir, vDir); vector_to_angle(vDir, vAngle); if(!iCheck) { vAngle[0] = 0.0 set_pev(Ent, pev_angles, vAngle); set_pev(Ent, pev_origin, vOrigin); } if(zp_core_is_zombie(pevAttacker) || (get_user_weapon(pevAttacker) != CSW_KNIFE || !g_had_magicknife[pevAttacker]) || !is_user_alive(iVictim) || !is_user_connected(iVictim)) { if(iMode != 2 && iCheck != 2) set_pev(Ent, pev_iuser1, 2); return; } if((vector_distance(vOrigin, pOrigin) > 650.0 || !isClearLine(vOrigin, pOrigin)) && iMode != 2 && iCheck != 2) { set_pev(Ent, pev_iuser1, 2); return; } if(iStat == 1) ShootTraceAttack(pevAttacker, vOrigin, MAGIC_SLASH_DAMAGE) else if(iStat == 2) { ExecuteHamB(Ham_TakeDamage, iVictim, pevAttacker, pevAttacker, MAGIC_EXPLOSION_DAMAGE, DMG_CLUB); HoldUp(iVictim) } HoldUp(iVictim, 0.6) }
stock isLocked(Ent, pevAttacker) { new pEnt = -1 while(( pEnt = engfunc(EngFunc_FindEntityByString, pEnt, "classname", "magicknife_magic")) != 0) { if(!pev_valid(pEnt) || pev(pEnt, pev_owner) != pevAttacker) continue; if(pev(pEnt, pev_enemy) == Ent && pev(pEnt, pev_iuser2) == 0) return 1; } return 0; }
stock isMagic(Ent) { if(!pev_valid(Ent)) return 0; static szClassName[32]; pev(Ent, pev_classname,szClassName, 31); return (equal(szClassName, "magicknife_magic")) }
stock isClearLine(Float:vOrigin1[3], Float:vOrigin2[3]) { new Float:flFraction; engfunc(EngFunc_TraceLine, vOrigin1, vOrigin2, IGNORE_MONSTERS, 0, 0); get_tr2(0, TR_flFraction, flFraction) if (flFraction < 1.0) return 0;
return 1; }
stock ShootTraceAttack(id, Float:vTarget[3], Float:flDamage, iDamageBits = DMG_BULLET) { new Float:vecSrc[3], Float:vecEnd[3], Float:vDir[3], Float:vForward[3] GetGunPosition(id, vecSrc); xs_vec_sub(vTarget, vecSrc, vDir); xs_vec_normalize(vDir, vDir); xs_vec_mul_scalar(vDir, 8192.0, vForward); xs_vec_add(vecEnd, vForward, vecEnd); new tr = create_tr2(); engfunc(EngFunc_TraceLine, vecSrc, vecEnd, 0, id, tr); new Float:flFraction; get_tr2(tr, TR_flFraction, flFraction); if (flFraction >= 1.0) engfunc(EngFunc_TraceHull, vecSrc, vecEnd, 0, 3, id, tr); get_tr2(tr, TR_flFraction, flFraction); if (flFraction < 1.0) { new pEnt = get_tr2(tr, TR_pHit); if (pev_valid(pEnt)) { rg_multidmg_clear(); ExecuteHamB(Ham_TraceAttack, pEnt, id, flDamage, vDir, tr, iDamageBits); rg_multidmg_apply(id, id); } } free_tr2(tr) }
stock HoldUp(iEnt, Float:flMultiple = 0.1) { static Float:vecVelocity[3]; pev(iEnt, pev_velocity, vecVelocity); vecVelocity[0] *= flMultiple vecVelocity[1] *= flMultiple set_pev(iEnt, pev_velocity, vecVelocity); }
stock SendSound(id, chan, sample[]) emit_sound(id, chan, sample, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) stock SendSound2(id, sample[]) client_cmd(id, "spk %s", sample)
stock KnifeAttack_Global(id, bStab, Float:flRange, Float:fAngle, Float:flDamage, Float:flKnockBack) { new iHitResult if(fAngle > 0.0) iHitResult = KnifeAttack2(id, bStab, Float:flRange, Float:fAngle, Float:flDamage, Float:flKnockBack) else iHitResult = KnifeAttack(id, bStab, Float:flRange, Float:flDamage, Float:flKnockBack)
return iHitResult }
stock KnifeAttack(id, bStab, Float:flRange, Float:flDamage, Float:flKnockBack, iHitgroup = -1, bitsDamageType = DMG_NEVERGIB | DMG_CLUB) { new Float:vecSrc[3], Float:vecEnd[3], Float:v_angle[3], Float:vecForward[3]; GetGunPosition(id, vecSrc);
pev(id, pev_v_angle, v_angle); engfunc(EngFunc_MakeVectors, v_angle);
global_get(glb_v_forward, vecForward); xs_vec_mul_scalar(vecForward, flRange, vecForward); xs_vec_add(vecSrc, vecForward, vecEnd);
new tr = create_tr2(); engfunc(EngFunc_TraceLine, vecSrc, vecEnd, 0, id, tr);
new Float:flFraction; get_tr2(tr, TR_flFraction, flFraction); if (flFraction >= 1.0) engfunc(EngFunc_TraceHull, vecSrc, vecEnd, 0, 3, id, tr); get_tr2(tr, TR_flFraction, flFraction);
new Float:EndPos2[3] get_tr2(tr, TR_vecEndPos, EndPos2) new iHitResult = RESULT_HIT_NONE; if (flFraction < 1.0) { new pEntity = get_tr2(tr, TR_pHit); iHitResult = RESULT_HIT_WORLD; if (pev_valid(pEntity) && (IsPlayer(pEntity) || IsHostage(pEntity))) { if (CheckBack(id, pEntity) && bStab && iHitgroup == -1) flDamage *= 3.0;
iHitResult = RESULT_HIT_PLAYER; }
if (pev_valid(pEntity)) { engfunc(EngFunc_MakeVectors, v_angle); global_get(glb_v_forward, vecForward);
if (iHitgroup != -1) set_tr2(tr, TR_iHitgroup, iHitgroup);
Stock_Fake_KnockBack(id, pEntity, flKnockBack)
rg_multidmg_clear(); ExecuteHamB(Ham_TraceAttack, pEntity, id, flDamage, vecForward, tr, bitsDamageType); rg_multidmg_apply(id, id); if (IsAlive(pEntity)) { free_tr2(tr); return iHitResult; } } } free_tr2(tr); return iHitResult; }
stock KnifeAttack2(id, bStab, Float:flRange, Float:fAngle, Float:flDamage, Float:flKnockBack, iHitgroup = -1, bNoTraceCheck = 0, bitsDamageType = DMG_NEVERGIB | DMG_CLUB) { new Float:vecOrigin[3], Float:vecSrc[3], Float:vecEnd[3], Float:v_angle[3], Float:vecForward[3]; pev(id, pev_origin, vecOrigin);
new iHitResult = RESULT_HIT_NONE; GetGunPosition(id, vecSrc);
pev(id, pev_v_angle, v_angle); engfunc(EngFunc_MakeVectors, v_angle);
global_get(glb_v_forward, vecForward); xs_vec_mul_scalar(vecForward, flRange, vecForward); xs_vec_add(vecSrc, vecForward, vecEnd);
new tr = create_tr2(); engfunc(EngFunc_TraceLine, vecSrc, vecEnd, 0, id, tr); new Float:EndPos2[3] get_tr2(tr, TR_vecEndPos, EndPos2) new Float:flFraction; get_tr2(tr, TR_flFraction, flFraction); if (flFraction < 1.0) iHitResult = RESULT_HIT_WORLD; new Float:vecEndZ = vecEnd[2]; new pEntity = -1; while ((pEntity = engfunc(EngFunc_FindEntityInSphere, pEntity, vecOrigin, flRange)) != 0) { if (!pev_valid(pEntity)) continue; if (id == pEntity) continue; if (!IsAlive(pEntity)) continue; if (!CheckAngle(id, pEntity, fAngle)) continue;
GetGunPosition(id, vecSrc); Stock_Get_Origin(pEntity, vecEnd); vecEnd[2] = vecSrc[2] + (vecEndZ - vecSrc[2]) * (get_distance_f(vecSrc, vecEnd) / flRange);
xs_vec_sub(vecEnd, vecSrc, vecForward); xs_vec_normalize(vecForward, vecForward); xs_vec_mul_scalar(vecForward, flRange, vecForward); xs_vec_add(vecSrc, vecForward, vecEnd);
engfunc(EngFunc_TraceLine, vecSrc, vecEnd, 0, id, tr); get_tr2(tr, TR_flFraction, flFraction);
if (flFraction >= 1.0) engfunc(EngFunc_TraceHull, vecSrc, vecEnd, 0, 3, id, tr);
get_tr2(tr, TR_flFraction, flFraction); if (flFraction < 1.0) { if (IsPlayer(pEntity) || IsHostage(pEntity)) { iHitResult = RESULT_HIT_PLAYER; if (CheckBack(id, pEntity) && bStab && iHitgroup == -1) flDamage *= 3.0; }
if (get_tr2(tr, TR_pHit) == pEntity || bNoTraceCheck) { engfunc(EngFunc_MakeVectors, v_angle); global_get(glb_v_forward, vecForward);
if (iHitgroup != -1) set_tr2(tr, TR_iHitgroup, iHitgroup);
Stock_Fake_KnockBack(id, pEntity, flKnockBack)
rg_multidmg_clear(); ExecuteHamB(Ham_TraceAttack, pEntity, id, flDamage, vecForward, tr, bitsDamageType); rg_multidmg_apply(id, id); } } free_tr2(tr); } return iHitResult; }
stock Set_WeaponAnim(id, anim) { set_pev(id, pev_weaponanim, anim) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id) write_byte(anim) write_byte(pev(id, pev_body)) message_end() }
stock Set_WeaponIdleTime(id, WeaponId ,Float:TimeIdle) { static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId) if(!pev_valid(entwpn)) return set_pdata_float(entwpn, 46, TimeIdle, 4) set_pdata_float(entwpn, 47, TimeIdle, 4) set_pdata_float(entwpn, 48, TimeIdle + 0.5, 4) }
stock Set_PlayerNextAttack(id, Float:nexttime) { set_pdata_float(id, 83, nexttime, 5) }
stock Stock_Get_Postion(id,Float:forw,Float:right,Float:up,Float:vStart[]) { static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3] pev(id, pev_origin, vOrigin) pev(id, pev_view_ofs,vUp) xs_vec_add(vOrigin,vUp,vOrigin) pev(id, pev_v_angle, vAngle) engfunc(EngFunc_AngleVectors, vAngle, vForward, vRight, vUp) vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up }
stock IsPlayer(pEntity) return is_user_connected(pEntity)
stock IsHostage(pEntity) { new classname[32]; pev(pEntity, pev_classname, classname, charsmax(classname)) return equal(classname, "hostage_entity") }
stock IsAlive(pEntity) { if (pEntity < 1) return 0 return (pev(pEntity, pev_deadflag) == DEAD_NO && pev(pEntity, pev_health) > 0) }
stock GetGunPosition(id, Float:vecScr[3]) { new Float:vecViewOfs[3] pev(id, pev_origin, vecScr) pev(id, pev_view_ofs, vecViewOfs) xs_vec_add(vecScr, vecViewOfs, vecScr) }
stock CheckBack(iEnemy,id) { new Float:anglea[3], Float:anglev[3] pev(iEnemy, pev_v_angle, anglea) pev(id, pev_v_angle, anglev) new Float:angle = anglea[1] - anglev[1] if (angle < -180.0) angle += 360.0 if (angle <= 45.0 && angle >= -45.0) return 1 return 0 }
stock CheckAngle(iAttacker, iVictim, Float:fAngle) return(Stock_CheckAngle(iAttacker, iVictim) > floatcos(fAngle,degrees))
stock Float:Stock_CheckAngle(id,iTarget) { new Float:vOricross[2],Float:fRad,Float:vId_ori[3],Float:vTar_ori[3],Float:vId_ang[3],Float:fLength,Float:vForward[3] Stock_Get_Origin(id, vId_ori) Stock_Get_Origin(iTarget, vTar_ori) pev(id,pev_angles,vId_ang) for(new i=0;i<2;i++) vOricross[i] = vTar_ori[i] - vId_ori[i] fLength = floatsqroot(vOricross[0]*vOricross[0] + vOricross[1]*vOricross[1]) if (fLength<=0.0) { vOricross[0]=0.0 vOricross[1]=0.0 } else { vOricross[0]=vOricross[0]*(1.0/fLength) vOricross[1]=vOricross[1]*(1.0/fLength) } engfunc(EngFunc_MakeVectors,vId_ang) global_get(glb_v_forward,vForward) fRad = vOricross[0]*vForward[0]+vOricross[1]*vForward[1] return fRad //-> RAD 90' = 0.5rad }
stock Stock_Get_Origin(id, Float:origin[3]) { new Float:maxs[3],Float:mins[3] if (pev(id, pev_solid) == SOLID_BSP) { pev(id,pev_maxs,maxs) pev(id,pev_mins,mins) origin[0] = (maxs[0] - mins[0]) / 2 + mins[0] origin[1] = (maxs[1] - mins[1]) / 2 + mins[1] origin[2] = (maxs[2] - mins[2]) / 2 + mins[2] } else pev(id, pev_origin, origin) }
stock SpawnBlood(const Float:vecOrigin[3], iColor, iAmount) { if(iAmount == 0) return
if (!iColor) return
iAmount *= 2 if(iAmount > 255) iAmount = 255 engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin) write_byte(TE_BLOODSPRITE) engfunc(EngFunc_WriteCoord, vecOrigin[0]) engfunc(EngFunc_WriteCoord, vecOrigin[1]) engfunc(EngFunc_WriteCoord, vecOrigin[2]) write_short(spr_blood_spray) write_short(spr_blood_drop) write_byte(iColor) write_byte(min(max(3, iAmount / 10), 16)) message_end() }
public Stock_Fake_KnockBack(id, iVic, Float:iKb) { if(iVic > 32) return new Float:vAttacker[3], Float:vVictim[3], Float:vVelocity[3], flags pev(id, pev_origin, vAttacker) pev(iVic, pev_origin, vVictim) vAttacker[2] = vVictim[2] = 0.0 flags = pev(id, pev_flags) xs_vec_sub(vVictim, vAttacker, vVictim) new Float:fDistance fDistance = xs_vec_len(vVictim) xs_vec_mul_scalar(vVictim, 1 / fDistance, vVictim) pev(iVic, pev_velocity, vVelocity) xs_vec_mul_scalar(vVictim, iKb, vVictim) xs_vec_mul_scalar(vVictim, 50.0, vVictim) vVictim[2] = xs_vec_len(vVictim) * 0.15 if(flags &~ FL_ONGROUND) { xs_vec_mul_scalar(vVictim, 1.2, vVictim) vVictim[2] *= 0.4 } if(xs_vec_len(vVictim) > xs_vec_len(vVelocity)) set_pev(iVic, pev_velocity, vVictim) }
stock Float:Stock_Get_Body_Dmg(iBody) { switch (iBody) { case HIT_GENERIC: return 0.75 case 1: return 4.0 case 2: return 1.0 case 3: return 1.25 case 4,5,6,7: return 0.75 default: return 0.75 } return 1.0 }
stock Stock_BloodEffect(Float:vecOri[3], scale) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BLOODSPRITE) engfunc(EngFunc_WriteCoord,vecOri[0]) engfunc(EngFunc_WriteCoord,vecOri[1]) engfunc(EngFunc_WriteCoord,vecOri[2]) write_short(spr_blood_spray) write_short(spr_blood_drop) write_byte(75) write_byte(scale) message_end() }
stock can_damage(id1, id2) { if(id1 <= 0 || id1 >= 33 || id2 <= 0 || id2 >= 33) return 1 // Check team return(get_pdata_int(id1, 114) != get_pdata_int(id2, 114)) }
Can someone fix this plugin, I can't find other free ones. The other one is paid one with extra features.
If someone who have the paid one, please give it to me for free.
__________________
Last edited by nG_getwreck; 02-19-2021 at 09:37.
|
|