Open fearts opened 4 months ago
A number of gamedata updates were merged in on #91, though there's still about a dozen things left that are failing.
Looks like almost all the plugins that previously wouldn't load are now at least loading. I don't know if they are working I haven't had time to test them but I assume if they are loading then they should be working right?
The only one I have that isn't loading this this one:
L 05/18/2024 - 22:17:50: [custom-attr-starter-pack\flare_mods.smx] Address for CTFProjectile_Flare::Explode_Air()::SelfDamageRadius contains unexpected value 74000010 (40564896578555790000000000000000.000000)
L 05/18/2024 - 22:19:03: [SM] Exception reported: Failed to create detour CTFMechanicalArm::ShockAttack()
L 05/18/2024 - 22:19:03: [SM] Blaming: custom-attr-starter-pack\weapon_overheat.smx
L 05/18/2024 - 22:19:03: [SM] Call stack trace:
L 05/18/2024 - 22:19:03: [SM] [0] SetFailState
L 05/18/2024 - 22:19:03: [SM] [1] Line 90, scripting/weapon_overheat.sp::OnPluginStart
L 05/18/2024 - 22:19:03: [SM] Unable to load plugin "custom-attr-starter-pack\weapon_overheat.smx": Error detected in plugin startup (see error logs)
If you ever have time to fix it that would be very nice of you. Thanks for the update so far!
I assume if they are loading then they should be working right?
Very much untested; I try to at least spot check that the signatures appear to be for the correct function but binaries for both Windows and Linux have been compiled with aggressive optimizations — the former may have signatures generated for the caller of a previously non-inlined function which would likely break any hooks assuming specific behavior, and the latter may now have non-standard calling conventions (.part.0
) symbols which would never actually be hooked outright.
ShockAttack()
was inlined and no longer exists as noted in the PR, and without looking at the plugin again I'm not sure on how it was supposed to behave and how to adjust that.
attr_sapper_reprograms_buildings
The above subplugin also had to be removed as it loads but when someone joins the server it crashes the server.
sourcemod.logic.dll!LoadFromAddress [smn_core.cpp:889 + 0x0]
sourcepawn.jit.x86.dll!sp::Environment::Invoke(sp::PluginContext *,ke::RefPtr<sp::MethodInfo> const &,int *) [environment.cpp:346 + 0x18]
sourcepawn.jit.x86.dll!sp::PluginContext::Invoke(unsigned int,int const *,unsigned int,int *) [plugin-context.cpp:461 + 0x10]
sourcepawn.jit.x86.dll!sp::ScriptedInvoker::Invoke(int *) [scripted-invoker.cpp:290 + 0x21]
sourcemod.logic.dll!FakeNativeRouter(SourcePawn::IPluginContext *,int const *,void *) [smn_fakenatives.cpp:90 + 0xf]
sourcemod.logic.dll!DynamicNative::Invoke(SourcePawn::IPluginContext *,int const *) [ShareSys.cpp:418 + 0xe]
sourcepawn.jit.x86.dll!sp::NativeInvokeThunk [jit_x86.cpp:1384 + 0x8]
sourcepawn.jit.x86.dll!sp::Environment::Invoke(sp::PluginContext *,ke::RefPtr<sp::MethodInfo> const &,int *) [environment.cpp:346 + 0x18]
sourcepawn.jit.x86.dll!sp::PluginContext::Invoke(unsigned int,int const *,unsigned int,int *) [plugin-context.cpp:461 + 0x10]
sourcepawn.jit.x86.dll!sp::ScriptedInvoker::Invoke(int *) [scripted-invoker.cpp:290 + 0x21]
sourcepawn.jit.x86.dll!sp::ScriptedInvoker::Execute(int *) [scripted-invoker.cpp:190 + 0x13]
dhooks.ext.dll!HandleDetour(HookType_t,CHook *) [dynhooks_sourcepawn.cpp:385 + 0xb]
dhooks.ext.dll!CHook::HookHandler(HookType_t) [hook.cpp:186 + 0xb]
server.dll + 0x4f0da9
Looking at the Raw I saw it was related to this plugin with the line:
jit_code_1048051712_1048576 + 0xc42df [ custom-attr-starter-pack\attr_sapper_reprograms_buildings.smx::.14280.OnRemoveAllObjectsPre ]
Also above this in the raw I noticed these two:
jit_code_1048051712_1048576 + 0xa1107 [ tf2utils.smx::.5616.LoadEntityHandleFromAddress ]
jit_code_1048051712_1048576 + 0xd3c73 [ tf2utils.smx::.17712.Native_GetPlayerObject ]
If you need more information I can DM you on Discord.
That specific issue should be resolved by nosoop/SM-TFUtils#15.
It seem I've made some mistakes with the gamedata.
CTFWeaponBase::ApplyOnHitAttributes()::RemoveSlowness
fix:
------------- addons/sourcemod/gamedata/tf2.cattr_starterpack.txt -------------
index 9fe63bf9..0f57caa1 100644
@@ -915,9 +915,9 @@
}
"windows"
{
- "offset" "D20h"
- "verify" "\x0F\x85"
- "patch" "\x90\xE9"
+ "offset" "CD9h"
+ "verify" "\x74"
+ "patch" "\xEB"
}
}
"CWeaponMedigun::DrainCharge()::PatchExtraDrainRate"
CTFPlayer::ApplyPushFromDamage()::NoHeavyKnockbackRage
fix (not totally sure why old one didn't work):
"windows"
{
- "offset" "88Ch"
+ "offset" "86Eh"
"verify" "\x0F\x84"
"patch" "\x90\xE9" // unconditional JMP
}
Windows server 32bit after last TF2 update.