diff --git a/addons/sourcemod/gamedata/shavit.games.txt b/addons/sourcemod/gamedata/shavit.games.txt index c839bff3..ac99c646 100644 --- a/addons/sourcemod/gamedata/shavit.games.txt +++ b/addons/sourcemod/gamedata/shavit.games.txt @@ -160,6 +160,13 @@ "windows" "\xF3\x0F\x10\x80\x2A\x2A\x2A\x2A\xF3\x0F\x59\x45\x2A\xF3\x0F\x11\x45" "linux" "\xF3\x0F\x10\xB8\x2A\x2A\x2A\x2A\xA1" } + // search "sv_maxusrcmdprocessticks_warning at server" to find CPlayerMove::RunCommand + // then sig the the `mov REG1,dword ptr [REG2 + OFFSET_TO_BUTTON_DISABLED_HERE]` + "CBasePlayer->m_afButtonDisabled" + { + "windows" "\x8B\x87\x2A\x2A\x2A\x2A\xF7\xD0\x21\x43" + "linux" "\x8B\x83\x2A\x2A\x2A\x2A\xF7\xD0" + } } } diff --git a/addons/sourcemod/scripting/shavit-core.sp b/addons/sourcemod/scripting/shavit-core.sp index 68a26a36..0b6ccfaf 100644 --- a/addons/sourcemod/scripting/shavit-core.sp +++ b/addons/sourcemod/scripting/shavit-core.sp @@ -3097,7 +3097,7 @@ public MRESReturn DHook_AcceptInput_player_speedmod_Post(int pThis, DHookReturn char buf[128]; hParams.GetString(1, buf, sizeof(buf)); - if (!StrEqual(buf, "ModifySpeed") || hParams.IsNull(2)) + if (!StrEqual(buf, "ModifySpeed", false) || hParams.IsNull(2)) { return MRES_Ignored; } diff --git a/addons/sourcemod/scripting/shavit-misc.sp b/addons/sourcemod/scripting/shavit-misc.sp index cb9c4375..df284257 100644 --- a/addons/sourcemod/scripting/shavit-misc.sp +++ b/addons/sourcemod/scripting/shavit-misc.sp @@ -283,7 +283,7 @@ public void OnPluginStart() gCV_WeaponCommands = new Convar("shavit_misc_weaponcommands", "2", "Enable sm_usp, sm_glock, sm_knife, and infinite ammo?\n0 - Disabled\n1 - Enabled\n2 - Also give infinite reserve ammo for USP & Glocks.\n3 - Also give infinite clip ammo for USP & Glocks.\n4 - Also give infinite reserve for all weapons (and grenades).\n5 - Also give infinite clip ammo for all weapons (and grenades).", 0, true, 0.0, true, 5.0); gCV_PlayerOpacity = new Convar("shavit_misc_playeropacity", "69", "Player opacity (alpha) to set on spawn.\n-1 - Disabled\nValue can go up to 255. 0 for invisibility.", 0, true, -1.0, true, 255.0); gCV_StaticPrestrafe = new Convar("shavit_misc_staticprestrafe", "1", "Force prestrafe for every pistol.\n250 is the default value and some styles will have 260.\n0 - Disabled\n1 - Enabled", 0, true, 0.0, true, 1.0); - gCV_NoclipMe = new Convar("shavit_misc_noclipme", "1", "Allow +noclip, sm_p and all the noclip commands?\n0 - Disabled\n1 - Enabled\n2 - requires 'admin_noclipme' override or ADMFLAG_CHEATS flag.", 0, true, 0.0, true, 2.0); + gCV_NoclipMe = new Convar("shavit_misc_noclipme", "1", "Allow +noclip, sm_noclip and all the noclip commands?\n0 - Disabled\n1 - Enabled\n2 - requires 'admin_noclipme' override or ADMFLAG_CHEATS flag.", 0, true, 0.0, true, 2.0); gCV_AdvertisementInterval = new Convar("shavit_misc_advertisementinterval", "600.0", "Interval between each chat advertisement.\nConfiguration file for those is configs/shavit-advertisements.cfg.\nSet to 0.0 to disable.\nRequires server restart for changes to take effect.", 0, true, 0.0); gCV_RemoveRagdolls = new Convar("shavit_misc_removeragdolls", "1", "Remove ragdolls after death?\n0 - Disabled\n1 - Only remove replay bot ragdolls.\n2 - Remove all ragdolls.", 0, true, 0.0, true, 2.0); gCV_ClanTag = new Convar("shavit_misc_clantag", "{tr}{styletag} :: {time}", "Custom clantag for players.\n0 - Disabled\n{styletag} - style tag.\n{style} - style name.\n{time} - formatted time.\n{tr} - first letter of track.\n{rank} - player rank.\n{cr} - player's chatrank from shavit-chat, trimmed, with no colors", 0); diff --git a/addons/sourcemod/scripting/shavit-zones.sp b/addons/sourcemod/scripting/shavit-zones.sp index cc12c292..f465bcb5 100644 --- a/addons/sourcemod/scripting/shavit-zones.sp +++ b/addons/sourcemod/scripting/shavit-zones.sp @@ -4087,11 +4087,15 @@ bool InStartOrEndZone(float point1[3], float point2[3], int track, int type) for (int i = 0; i < gI_MapZones; i++) { - if ((gA_ZoneCache[i].iTrack == track && gA_ZoneCache[i].iType == type) - || (gA_ZoneCache[i].iType != Zone_End && gA_ZoneCache[i].iType != Zone_Start)) - { + // we only care about start/end zones + if (gA_ZoneCache[i].iType != Zone_End && gA_ZoneCache[i].iType != Zone_Start) + continue; + // we don't care about start/end zones from other tracks + if (gA_ZoneCache[i].iTrack != track) + continue; + // placing multiple overlapping startzones, or multiple overlapping endzones, is fine + if (gA_ZoneCache[i].iType == type) continue; - } float bmin[3], bmax[3]; BoxPointsToMinsMaxs(gV_MapZones_Visual[i][0], gV_MapZones_Visual[i][7], bmin, bmax);