From bed30087b370a3bbaa42c776874523a2646afc9b Mon Sep 17 00:00:00 2001 From: Jackz Date: Wed, 18 Oct 2023 08:52:12 -0500 Subject: [PATCH] Use optimized distance, reduce useless checks --- plugins/l4d2_sb_fix.smx | Bin 26590 -> 26505 bytes scripting/l4d2_sb_fix.sp | 232 +++++++++++++++++++-------------------- 2 files changed, 114 insertions(+), 118 deletions(-) diff --git a/plugins/l4d2_sb_fix.smx b/plugins/l4d2_sb_fix.smx index 5e77fbb564459b0cd957176081bd592b77411aa1..e550586344efab7d556d38e6f86e82bd06373bba 100644 GIT binary patch literal 26505 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%0Dey^Ji#2m5e`@+X7OD&pg3T0Zy`a8{;Pp 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 literal 26590 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 diff --git a/scripting/l4d2_sb_fix.sp b/scripting/l4d2_sb_fix.sp index 8b056e1..1fe9f4b 100644 --- a/scripting/l4d2_sb_fix.sp +++ b/scripting/l4d2_sb_fix.sp @@ -96,55 +96,55 @@ Change Log: // ==================================================================================================== // Handle // ==================================================================================================== -Handle sb_fix_enabled = INVALID_HANDLE; -Handle sb_fix_select_type = INVALID_HANDLE; -Handle sb_fix_select_number = INVALID_HANDLE; -Handle sb_fix_select_character_name = INVALID_HANDLE; +ConVar sb_fix_enabled; +ConVar sb_fix_select_type; +ConVar sb_fix_select_number; +ConVar sb_fix_select_character_name; -Handle sb_fix_dont_switch_secondary = INVALID_HANDLE; +ConVar sb_fix_dont_switch_secondary; -Handle sb_fix_help_enabled = INVALID_HANDLE; -Handle sb_fix_help_range = INVALID_HANDLE; -Handle sb_fix_help_shove_type = INVALID_HANDLE; -Handle sb_fix_help_shove_reloading = INVALID_HANDLE; +ConVar sb_fix_help_enabled; +ConVar sb_fix_help_range; +ConVar sb_fix_help_shove_type; +ConVar sb_fix_help_shove_reloading; -Handle sb_fix_ci_enabled = INVALID_HANDLE; -Handle sb_fix_ci_range = INVALID_HANDLE; -Handle sb_fix_ci_melee_allow = INVALID_HANDLE; -Handle sb_fix_ci_melee_range = INVALID_HANDLE; +ConVar sb_fix_ci_enabled; +ConVar sb_fix_ci_range; +ConVar sb_fix_ci_melee_allow; +ConVar sb_fix_ci_melee_range; -Handle sb_fix_si_enabled = INVALID_HANDLE; -Handle sb_fix_si_range = INVALID_HANDLE; -Handle sb_fix_si_ignore_boomer = INVALID_HANDLE; -Handle sb_fix_si_ignore_boomer_range = INVALID_HANDLE; +ConVar sb_fix_si_enabled; +ConVar sb_fix_si_range; +ConVar sb_fix_si_ignore_boomer; +ConVar sb_fix_si_ignore_boomer_range; -Handle sb_fix_tank_enabled = INVALID_HANDLE; -Handle sb_fix_tank_range = INVALID_HANDLE; +ConVar sb_fix_tank_enabled; +ConVar sb_fix_tank_range; -Handle sb_fix_si_tank_priority_type = INVALID_HANDLE; +ConVar sb_fix_si_tank_priority_type; -Handle sb_fix_bash_enabled = INVALID_HANDLE; -Handle sb_fix_bash_hunter_chance = INVALID_HANDLE; -Handle sb_fix_bash_hunter_range = INVALID_HANDLE; -Handle sb_fix_bash_jockey_chance = INVALID_HANDLE; -Handle sb_fix_bash_jockey_range = INVALID_HANDLE; +ConVar sb_fix_bash_enabled; +ConVar sb_fix_bash_hunter_chance; +ConVar sb_fix_bash_hunter_range; +ConVar sb_fix_bash_jockey_chance; +ConVar sb_fix_bash_jockey_range; -Handle sb_fix_rock_enabled = INVALID_HANDLE; -Handle sb_fix_rock_range = INVALID_HANDLE; +ConVar sb_fix_rock_enabled; +ConVar sb_fix_rock_range; -Handle sb_fix_witch_enabled = INVALID_HANDLE; -Handle sb_fix_witch_range = INVALID_HANDLE; -Handle sb_fix_witch_range_incapacitated = INVALID_HANDLE; -Handle sb_fix_witch_range_killed = INVALID_HANDLE; -Handle sb_fix_witch_shotgun_control = INVALID_HANDLE; -Handle sb_fix_witch_shotgun_range_max = INVALID_HANDLE; -Handle sb_fix_witch_shotgun_range_min = INVALID_HANDLE; +ConVar sb_fix_witch_enabled; +ConVar sb_fix_witch_range; +ConVar sb_fix_witch_range_incapacitated; +ConVar sb_fix_witch_range_killed; +ConVar sb_fix_witch_shotgun_control; +ConVar sb_fix_witch_shotgun_range_max; +ConVar sb_fix_witch_shotgun_range_min; -Handle sb_fix_prioritize_ownersmoker = INVALID_HANDLE; +ConVar sb_fix_prioritize_ownersmoker; -Handle sb_fix_incapacitated_enabled = INVALID_HANDLE; +ConVar sb_fix_incapacitated_enabled; -Handle sb_fix_debug = INVALID_HANDLE; +ConVar sb_fix_debug; // ==================================================================================================== // SendProp @@ -409,31 +409,32 @@ public void SBConfigChangeConvar(Handle convar, const char[] oldValue, const cha public void SBSelectChangeConvar(Handle convar, const char[] oldValue, const char[] intValue) { SelectImprovedTarget(); } +// all _range cvars are squared for optimized distance check void input_Help() { c_bHelp_Enabled = GetConVarBool(sb_fix_help_enabled); - c_fHelp_Range = GetConVarInt(sb_fix_help_range) * 1.0; + c_fHelp_Range = Pow(sb_fix_help_range.FloatValue, 2.0); c_iHelp_ShoveType = GetConVarInt(sb_fix_help_shove_type); c_bHelp_ShoveOnlyReloading = GetConVarBool(sb_fix_help_shove_reloading); } void input_CI() { c_bCI_Enabled = GetConVarBool(sb_fix_ci_enabled); - c_fCI_Range = GetConVarInt(sb_fix_ci_range) * 1.0; + c_fCI_Range = Pow(sb_fix_ci_range.FloatValue, 2.0); c_bCI_MeleeEnabled = GetConVarBool(sb_fix_ci_melee_allow); - c_fCI_MeleeRange = GetConVarInt(sb_fix_ci_melee_range) * 1.0; + c_fCI_MeleeRange = Pow(sb_fix_ci_melee_range.FloatValue, 2.0); } void input_SI() { c_bSI_Enabled = GetConVarBool(sb_fix_si_enabled); - c_fSI_Range = GetConVarInt(sb_fix_si_range) * 1.0; + c_fSI_Range = Pow(sb_fix_si_range.FloatValue, 2.0); c_bSI_IgnoreBoomer = GetConVarBool(sb_fix_si_ignore_boomer); - c_fSI_IgnoreBoomerRange = GetConVarInt(sb_fix_si_ignore_boomer_range) * 1.0; + c_fSI_IgnoreBoomerRange = Pow(sb_fix_si_ignore_boomer_range.FloatValue, 2.0); } void input_Tank() { c_bTank_Enabled = GetConVarBool(sb_fix_tank_enabled); - c_fTank_Range = GetConVarInt(sb_fix_tank_range) * 1.0; + c_fTank_Range = Pow(sb_fix_tank_range.FloatValue, 2.0); c_iSITank_PriorityType = GetConVarInt(sb_fix_si_tank_priority_type); } @@ -441,22 +442,22 @@ void input_Bash() { c_bBash_Enabled = GetConVarBool(sb_fix_bash_enabled); c_iBash_HunterChance = GetConVarInt(sb_fix_bash_hunter_chance); - c_fBash_HunterRange = GetConVarInt(sb_fix_bash_hunter_range) * 1.0; + c_fBash_HunterRange = Pow(sb_fix_bash_hunter_range.FloatValue, 2.0); c_iBash_JockeyChance = GetConVarInt(sb_fix_bash_jockey_chance); - c_fBash_JockeyRange = GetConVarInt(sb_fix_bash_jockey_range) * 1.0; + c_fBash_JockeyRange = Pow(sb_fix_bash_jockey_range.FloatValue, 2.0); } void input_Entity() { c_bRock_Enabled = GetConVarBool(sb_fix_rock_enabled); - c_fRock_Range = GetConVarInt(sb_fix_rock_range) * 1.0; + c_fRock_Range = Pow(sb_fix_rock_range.FloatValue, 2.0); c_bWitch_Enabled = GetConVarBool(sb_fix_witch_enabled); - c_fWitch_Range = GetConVarInt(sb_fix_witch_range) * 1.0; - c_fWitch_Range_Incapacitated = GetConVarInt(sb_fix_witch_range_incapacitated) * 1.0; - c_fWitch_Range_Killed = GetConVarInt(sb_fix_witch_range_killed) * 1.0; + c_fWitch_Range = Pow(sb_fix_witch_range.FloatValue, 2.0); + c_fWitch_Range_Incapacitated = Pow(sb_fix_witch_range_incapacitated.FloatValue, 2.0); + c_fWitch_Range_Killed = Pow(sb_fix_witch_range_killed.FloatValue, 2.0); c_bWitch_Shotgun_Control = GetConVarBool(sb_fix_witch_shotgun_control); - c_fWitch_Shotgun_Range_Max = GetConVarInt(sb_fix_witch_shotgun_range_max) * 1.0; - c_fWitch_Shotgun_Range_Min = GetConVarInt(sb_fix_witch_shotgun_range_min) * 1.0; + c_fWitch_Shotgun_Range_Max = Pow(sb_fix_witch_shotgun_range_max.FloatValue, 2.0); + c_fWitch_Shotgun_Range_Min = Pow(sb_fix_witch_shotgun_range_min.FloatValue, 2.0); } void inputConfig() @@ -725,6 +726,8 @@ public Action WeaponSwitch(int client, int weapon) return Plugin_Continue; } +// TODO: optimize it + stock Action onSBSlotActionCmd(int client, int &buttons, float vel[3], float angles[3]) { if (!isIncapacitated(client) && GetPlayerWeaponSlot(client, 0) > -1) { @@ -735,18 +738,16 @@ stock Action onSBSlotActionCmd(int client, int &buttons, float vel[3], float ang static char classname[32]; GetEntityClassname(weapon, classname, sizeof(classname)); - if (StrContains(classname, "weapon_melee", false) > -1 - || StrContains(classname, "weapon_pistol", false) > -1 - || StrContains(classname, "weapon_dual_pistol", false) > -1 - || StrContains(classname, "weapon_pistol_magnum", false) > -1) + if (StrEqual(classname, "weapon_melee", false) + || StrContains(classname, "pistol", false) > -1) { if (!g_bCommonWithinMelee[client]) { static char main_weapon[32]; GetEntityClassname(GetPlayerWeaponSlot(client, 0), main_weapon, sizeof(main_weapon)); FakeClientCommand(client, "use %s", main_weapon); } - } else if (StrContains(classname, "first_aid_kit", false) > -1 - || StrContains(classname, "defibrillator", false) > -1) + } else if (StrEqual(classname, "weapon_first_aid_kit", false) + || StrContains(classname, "weapon_defibrillator", false)) { if (g_bDanger[client]) { static char main_weapon[32]; @@ -785,10 +786,8 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) && !isIncapacitated(x) && isVisibleTo(client, x)) { - float dist; - GetClientAbsOrigin(x, target_pos); - dist = GetVectorDistance(self_pos, target_pos); + float dist = GetVectorDistance(self_pos, target_pos, true); int zombieClass = getZombieClass(x); if ((c_bSI_Enabled && zombieClass != ZC_TANK && dist <= c_fSI_Range) @@ -814,11 +813,11 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) } int aCap_Survivor = -1; - float min_dist_CapSur = 100000.0; + float min_dist_CapSur = 10000000000.0; //org was 100,000, we square here float target_pos_CapSur[3]; int aCap_Infected = -1; - float min_dist_CapInf = 100000.0; + float min_dist_CapInf = 10000000000.0; float target_pos_CapInf[3]; if (c_bHelp_Enabled && !NeedsTeammateHelp_ExceptSmoker(client)) { @@ -832,7 +831,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) float dist; GetClientAbsOrigin(x, target_pos_CapSur); - dist = GetVectorDistance(self_pos, target_pos_CapSur); + dist = GetVectorDistance(self_pos, target_pos_CapSur, true); if (dist < c_fHelp_Range) { if (dist < min_dist_CapSur) { min_dist_CapSur = dist; @@ -851,7 +850,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) float dist; GetClientAbsOrigin(x, target_pos_CapInf); - dist = GetVectorDistance(self_pos, target_pos_CapInf); + dist = GetVectorDistance(self_pos, target_pos_CapInf, true); if (dist < c_fHelp_Range) { if (dist < min_dist_CapInf) { min_dist_CapInf = dist; @@ -904,7 +903,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) float dist; GetClientAbsOrigin(x, target_pos_CapSmo); - dist = GetVectorDistance(self_pos, target_pos_CapSmo); + dist = GetVectorDistance(self_pos, target_pos_CapSmo, true); if (dist < 750.0) { if (dist < min_dist_CapSmo) { min_dist_CapSmo = dist; @@ -936,7 +935,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) GetClientAbsOrigin(x, hunjoc_pos); float hundist; - hundist = GetVectorDistance(self_pos, hunjoc_pos); + hundist = GetVectorDistance(self_pos, hunjoc_pos, true); if (hundist < c_fBash_HunterRange) { // 145.0 best if (hundist < min_dist_HunJoc) { @@ -955,7 +954,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) GetClientAbsOrigin(x, hunjoc_pos); float jocdist; - jocdist = GetVectorDistance(self_pos, hunjoc_pos); + jocdist = GetVectorDistance(self_pos, hunjoc_pos, true); if (jocdist < c_fBash_JockeyRange) { // 125.0 best if (jocdist < min_dist_HunJoc) { @@ -974,7 +973,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) //int iMaxEntities = GetMaxEntities(); int aCommonInfected = -1; int iCI_MeleeCount = 0; - float min_dist_CI = 100000.0; + float min_dist_CI = 10000000000.0; float ci_pos[3]; if (c_bCI_Enabled && !NeedsTeammateHelp(client)) { @@ -985,7 +984,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) { float dist; GetEntPropVector(iEntity, Prop_Data, "m_vecAbsOrigin", ci_pos); - dist = GetVectorDistance(self_pos, ci_pos); + dist = GetVectorDistance(self_pos, ci_pos, true); if (dist < c_fCI_Range) { int iSeq = GetEntProp(iEntity, Prop_Send, "m_nSequence", 2); @@ -1013,7 +1012,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) // Fina a rage Witch int aWitch = -1; - float min_dist_Witch = 100000.0; + float min_dist_Witch = 10000000000.0; float witch_pos[3]; if (g_bWitchActive && c_bWitch_Enabled && !NeedsTeammateHelp(client)) { for (int iEntity = MaxClients+1; iEntity <= MAXENTITIES; ++iEntity) @@ -1025,7 +1024,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) { float witch_dist; GetEntPropVector(iEntity, Prop_Data, "m_vecAbsOrigin", witch_pos); - witch_dist = GetVectorDistance(self_pos, witch_pos); + witch_dist = GetVectorDistance(self_pos, witch_pos, true); if ((g_iWitch_Process[iEntity] == 0 && witch_dist < c_fWitch_Range) || (g_iWitch_Process[iEntity] == WITCH_INCAPACITATED && witch_dist < c_fWitch_Range_Incapacitated) @@ -1041,7 +1040,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) // Find a tank rock int aTankRock = -1; - float rock_min_dist = 100000.0; + float rock_min_dist = 10000000000.0; float rock_pos[3]; if (c_bRock_Enabled && !NeedsTeammateHelp(client)) { for (int iEntity = MaxClients+1; iEntity <= MAXENTITIES; ++iEntity) @@ -1051,7 +1050,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) { float rock_dist; GetEntPropVector(iEntity, Prop_Data, "m_vecAbsOrigin", rock_pos); - rock_dist = GetVectorDistance(self_pos, rock_pos); + rock_dist = GetVectorDistance(self_pos, rock_pos, true); if (rock_dist < c_fRock_Range) { if (rock_dist < rock_min_dist) { @@ -1094,7 +1093,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) * ==================================================================================================== */ if (g_bDanger[client]) { // If have the medkit even though it is dangerous, switch to the main weapon - if (isHaveItem(AW_Classname, "first_aid_kit")) { + if (isHaveItem(AW_Classname, "weapon_first_aid_kit")) { if (main_weapon[1] != 0) { FakeClientCommand(client, "use %s", main_weapon); } else { @@ -1117,7 +1116,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) GetClientAbsOrigin(client, c_pos); GetEntPropVector(aCommonInfected, Prop_Data, "m_vecOrigin", common_e_pos); - float aimdist = GetVectorDistance(c_pos, common_e_pos); + float aimdist = GetVectorDistance(c_pos, common_e_pos, true); if (aimdist > c_fCI_MeleeRange) g_bCommonWithinMelee[client] = false; } @@ -1182,7 +1181,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) TeleportEntity(client, NULL_VECTOR, angles, NULL_VECTOR); - float aimdist = GetVectorDistance(c_pos, e_pos); + float aimdist = GetVectorDistance(c_pos, e_pos, true); if (aimdist < 100.0) buttons |= IN_ATTACK2; else { @@ -1217,7 +1216,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) e_pos[2] += -10.0; } - float aimdist = GetVectorDistance(c_pos, e_pos); + float aimdist = GetVectorDistance(c_pos, e_pos, true); MakeVectorFromPoints(c_pos, e_pos, lookat); GetVectorAngles(lookat, angles); @@ -1227,26 +1226,26 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) /****************************************************************************************************/ // If any of the following are active, Switch to the main weapon - if (isHaveItem(AW_Classname, "first_aid_kit") - || isHaveItem(AW_Classname, "defibrillator") + if (isHaveItem(AW_Classname, "weapon_first_aid_kit") + || isHaveItem(AW_Classname, "weapon_defibrillator") || HasValidEnt(client, "m_reviveTarget")) { UseItem(client, main_weapon); } // If the melee weapon is active and the dist from the target is 110 or more, switch to the main weapon - if (isHaveItem(AW_Classname, "weapon_melee") && aimdist > 110.0) { + if (isHaveItem(AW_Classname, "weapon_melee") && aimdist > 11000.0) { if (g_bCommonWithinMelee[client]) g_bCommonWithinMelee[client] = false; UseItem(client, main_weapon); } /****************************************************************************************************/ - if ((!isHaveItem(AW_Classname, "weapon_melee")) || (isHaveItem(AW_Classname, "weapon_melee") && aimdist < 110.0)) { + if (!isHaveItem(AW_Classname, "weapon_melee") || aimdist < 11000.0) { TeleportEntity(client, NULL_VECTOR, angles, NULL_VECTOR); - if (((c_iHelp_ShoveType >= 1 && HasValidEnt(aCap_Survivor, "m_tongueOwner") && aimdist < 110.0) - || (c_iHelp_ShoveType >= 2 && HasValidEnt(aCap_Survivor, "m_jockeyAttacker") && aimdist < 100.0) - || (c_iHelp_ShoveType >= 3 && HasValidEnt(aCap_Survivor, "m_pounceAttacker") && aimdist < 100.0))) + if (((c_iHelp_ShoveType >= 1 && HasValidEnt(aCap_Survivor, "m_tongueOwner") && aimdist < 12100.0) + || (c_iHelp_ShoveType >= 2 && HasValidEnt(aCap_Survivor, "m_jockeyAttacker") && aimdist < 10000.0) + || (c_iHelp_ShoveType >= 3 && HasValidEnt(aCap_Survivor, "m_pounceAttacker") && aimdist < 10000.0))) { if ((!c_bHelp_ShoveOnlyReloading) || (c_bHelp_ShoveOnlyReloading && isReloading(client))) buttons |= IN_ATTACK2; // ���� @@ -1278,7 +1277,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) else if (zombieClass == ZC_HUNTER) e_pos[2] += -14.0; } - float aimdist = GetVectorDistance(c_pos, e_pos); + float aimdist = GetVectorDistance(c_pos, e_pos, true); if (zombieClass == ZC_CHARGER && aimdist < 300.0) e_pos[2] += 10.0; @@ -1290,15 +1289,15 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) /****************************************************************************************************/ // If any of the following are active, Switch to the main weapon - if (isHaveItem(AW_Classname, "first_aid_kit") - || isHaveItem(AW_Classname, "defibrillator") + if (isHaveItem(AW_Classname, "weapon_first_aid_kit") + || isHaveItem(AW_Classname, "weapon_defibrillator") || HasValidEnt(client, "m_reviveTarget")) { UseItem(client, main_weapon); } // If the melee weapon is active and the dist from the target is 110 or more, switch to the main weapon - if (isHaveItem(AW_Classname, "weapon_melee") && aimdist > 110.0) + if (isHaveItem(AW_Classname, "weapon_melee") && aimdist > 11000.0) { if (g_bCommonWithinMelee[client]) g_bCommonWithinMelee[client] = false; UseItem(client, main_weapon); @@ -1306,10 +1305,10 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) /****************************************************************************************************/ - if ((!isHaveItem(AW_Classname, "weapon_melee")) || (isHaveItem(AW_Classname, "weapon_melee") && aimdist < 110.0)) { + if (!isHaveItem(AW_Classname, "weapon_melee") || aimdist < 11000.0) { TeleportEntity(client, NULL_VECTOR, angles, NULL_VECTOR); - if (aimdist < 100.0 + if (aimdist < 10000.0 && ((c_iHelp_ShoveType >= 1 && zombieClass == ZC_SMOKER) || (c_iHelp_ShoveType >= 2 && zombieClass == ZC_JOCKEY) || (c_iHelp_ShoveType >= 3 && zombieClass == ZC_HUNTER))) @@ -1349,9 +1348,9 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) // PrintToChatAll("---"); } - float aimdist = GetVectorDistance(c_pos, rock_e_pos); + float aimdist = GetVectorDistance(c_pos, rock_e_pos, true); - if (aimdist > 40.0 && !isHaveItem(AW_Classname, "weapon_melee")) { //�ߐڂ������Ă��Ȃ��ꍇ + if (aimdist > 1600.0 && !isHaveItem(AW_Classname, "weapon_melee")) { //�ߐڂ������Ă��Ȃ��ꍇ TeleportEntity(client, NULL_VECTOR, angles, NULL_VECTOR); if (GetRandomInt(0, 4) == 0) buttons &= ~IN_ATTACK; @@ -1376,10 +1375,10 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) TeleportEntity(client, NULL_VECTOR, angles, NULL_VECTOR); - float aimdist = GetVectorDistance(c_pos, witch_e_pos); + float aimdist = GetVectorDistance(c_pos, witch_e_pos, true); - if (c_bWitch_Shotgun_Control && isHaveItem(AW_Classname, "shotgun")) { - if (aimdist < 150.0) buttons |= IN_DUCK; + if (c_bWitch_Shotgun_Control && StrContains(AW_Classname, "shotgun") != -1) { + if (aimdist < 22500.0) buttons |= IN_DUCK; if (aimdist < c_fWitch_Shotgun_Range_Min || aimdist > c_fWitch_Shotgun_Range_Max) { // 70 ~ 300 if (GetRandomInt(0, 4) == 0) buttons &= ~IN_ATTACK; @@ -1406,7 +1405,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) * ==================================================================================================== */ if (aCommonInfected > 0) { - if (!HasValidEnt(client, "m_reviveTarget") && StrContains(AW_Classname, "first_aid_kit", false) == -1) { + if (!HasValidEnt(client, "m_reviveTarget") && StrEqual(AW_Classname, "weapon_first_aid_kit", false)) { // Even if aCommonInfected dies and disappears, the Entity may not disappear for a while.(Bot keeps shooting the place)�B Even with InValidEntity(), true appears... // When the entity disappears, m_nNextThinkTick will not advance, so skip that if NextThinkTick has the same value as before. @@ -1424,7 +1423,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) common_e_pos[2] += 40.0; - float aimdist = GetVectorDistance(c_pos, common_e_pos); + float aimdist = GetVectorDistance(c_pos, common_e_pos, true); //common_e_pos[2] += (25.0 + (aimdist * 0.05) - (height_difference * 0.1)); @@ -1495,7 +1494,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) // if (aimdist < 90.0) buttons |= IN_ATTACK; // } } else { - if (aimdist > 60.0) { + if (aimdist > 3600.0) { if (GetRandomInt(0, 4) == 0) buttons &= ~IN_ATTACK; else buttons |= IN_ATTACK; } else { @@ -1544,7 +1543,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) GetClientAbsOrigin(int_target, e_pos); if (zombieClass == ZC_HUNTER && (GetClientButtons(int_target) & IN_DUCK)) { - if (GetVectorDistance(c_pos, e_pos) > 250.0) e_pos[2] += -30.0; + if (GetVectorDistance(c_pos, e_pos, true) > 6250.0) e_pos[2] += -30.0; else e_pos[2] += -35.0; } else if (zombieClass == ZC_JOCKEY) { e_pos[2] += -30.0; @@ -1555,9 +1554,9 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) if (zombieClass == ZC_TANK && aTankRock > 0) return Plugin_Continue; // If the Tank and tank rock are visible at the same time, prioritize the tank rock - float aimdist = GetVectorDistance(c_pos, e_pos); + float aimdist = GetVectorDistance(c_pos, e_pos, true); - if (aimdist < 200.0) {if (!g_bDanger[client]) g_bDanger[client] = true;} + if (aimdist < 40000.0) {if (!g_bDanger[client]) g_bDanger[client] = true;} MakeVectorFromPoints(c_pos, e_pos, lookat); GetVectorAngles(lookat, angles); @@ -1567,7 +1566,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) if(isHaveItem(AW_Classname, "first_aid_kit") || isHaveItem(AW_Classname, "defibrillator") || HasValidEnt(client, "m_reviveTarget")) { - if (aimdist > 250.0) return Plugin_Continue; + if (aimdist > 6250.0) return Plugin_Continue; else { UseItem(client, main_weapon); } } @@ -1575,11 +1574,11 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) || isHaveItem(AW_Classname, "weapon_shotgun_spas") || isHaveItem(AW_Classname, "weapon_pumpshotgun") || isHaveItem(AW_Classname, "weapon_autoshotgun")) { - if (aimdist > 1000.0) return Plugin_Continue; + if (aimdist > 1000000.0) return Plugin_Continue; } if (isHaveItem(AW_Classname, "weapon_melee") && aCommonInfected < 1) { - if (aimdist > 100.0) UseItem(client, main_weapon); + if (aimdist > 1000000.0) UseItem(client, main_weapon); } /****************************************************************************************************/ @@ -1597,7 +1596,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) if (GetGameTime() - fVomit > 10.0) { // Survivors without vomit GetClientAbsOrigin(s, voS_pos); - float dist = GetVectorDistance(voS_pos, e_pos); // Distance between the Survivor without vomit and the Boomer + float dist = GetVectorDistance(voS_pos, e_pos, true); // Distance between the Survivor without vomit and the Boomer if (dist >= c_fSI_IgnoreBoomerRange) { isBoomer_Shoot_OK = true; } // If the survivor without vomit is farther than dist "c_fSI_IgnoreBoomerRange (def: 200)" else { isBoomer_Shoot_OK = false; break; } // If False appears even once, break } @@ -1610,7 +1609,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) || zombieClass == ZC_SMOKER || (isTargetBoomer && !isBoomer_Shoot_OK)) { - if (aimdist < 90.0 && !isStagger(int_target)) { + if (aimdist < 8100.0 && !isStagger(int_target)) { TeleportEntity(client, NULL_VECTOR, angles, NULL_VECTOR); buttons |= IN_ATTACK2; if (c_bDebug_Enabled) { @@ -1621,8 +1620,7 @@ stock Action onSBRunCmd(int client, int &buttons, float vel[3], float angles[3]) } } - if (!isHaveItem(AW_Classname, "weapon_melee") - || (aimdist < 100.0 && isHaveItem(AW_Classname, "weapon_melee"))) + if (!isHaveItem(AW_Classname, "weapon_melee") || aimdist < 10000.0) { if (c_bDebug_Enabled) { if (!isTargetBoomer) PrintToChatAll("\x01[%.2f] \x05%N\x01 int_target: \x04%N (%d)", GetGameTime(), client, int_target, int_target); @@ -1658,7 +1656,7 @@ stock Action onSBRunCmd_Incapacitated(int client, int &buttons, float vel[3], fl { if (isIncapacitated(client)) { int aCapper = -1; - float min_dist_Cap = 100000.0; + float min_dist_Cap = 10000000000.0; float self_pos[3], target_pos[3]; GetClientEyePosition(client, self_pos); @@ -1671,7 +1669,7 @@ stock Action onSBRunCmd_Incapacitated(int client, int &buttons, float vel[3], fl && (isVisibleTo(client, x) || isVisibleTo(x, client))) { GetClientAbsOrigin(x, target_pos); - float dist = GetVectorDistance(self_pos, target_pos); + float dist = GetVectorDistance(self_pos, target_pos, true); if (dist < min_dist_Cap) { min_dist_Cap = dist; aCapper = x; @@ -1684,7 +1682,7 @@ stock Action onSBRunCmd_Incapacitated(int client, int &buttons, float vel[3], fl && (isVisibleTo(client, x) || isVisibleTo(x, client))) { GetClientAbsOrigin(x, target_pos); - float dist = GetVectorDistance(self_pos, target_pos); + float dist = GetVectorDistance(self_pos, target_pos, true); if (dist < min_dist_Cap) { min_dist_Cap = dist; aCapper = x; @@ -1729,7 +1727,7 @@ stock Action onSBRunCmd_Incapacitated(int client, int &buttons, float vel[3], fl int int_target = -1; int aCommonInfected = -1; if (aCapper < 1 && !NeedsTeammateHelp(client)) { - float min_dist = 100000.0; + float min_dist = 10000000000.0; float ci_pos[3]; for (int x = 1; x <= MaxClients; ++x){ @@ -1738,7 +1736,7 @@ stock Action onSBRunCmd_Incapacitated(int client, int &buttons, float vel[3], fl && (isVisibleTo(client, x) || isVisibleTo(x, client))) { GetClientAbsOrigin(x, target_pos); - float dist = GetVectorDistance(self_pos, target_pos); + float dist = GetVectorDistance(self_pos, target_pos, true); if (dist < min_dist) { min_dist = dist; int_target = x; @@ -1754,7 +1752,7 @@ stock Action onSBRunCmd_Incapacitated(int client, int &buttons, float vel[3], fl && isVisibleToEntity(iEntity, client)) { GetEntPropVector(iEntity, Prop_Data, "m_vecAbsOrigin", ci_pos); - float dist = GetVectorDistance(self_pos, ci_pos); + float dist = GetVectorDistance(self_pos, ci_pos, true); if (dist < min_dist) { min_dist = dist; @@ -1777,7 +1775,7 @@ stock Action onSBRunCmd_Incapacitated(int client, int &buttons, float vel[3], fl MakeVectorFromPoints(c_pos, common_e_pos, lookat); GetVectorAngles(lookat, angles); - float aimdist = GetVectorDistance(c_pos, common_e_pos); + float aimdist = GetVectorDistance(c_pos, common_e_pos, true); /****************************************************************************************************/ @@ -2118,9 +2116,7 @@ stock bool isJockeyLeaping(int client) stock bool isHaveItem(const char[] FItem, const char[] SItem) { - if (StrContains(FItem, SItem, false) > -1) return true; - - return false; + return StrEqual(FItem, SItem, false); } stock void UseItem(int client, const char[] FItem)