#pragma semicolon 1 #pragma newdecls required #include <sourcemod> #include <sdktools> #define LINUX public void OnPluginStart() { GameData data = new GameData("l4d2_minigun_victim"); Address pAddr = data.GetAddress("TankAttack::Update") + view_as<Address>(data.GetOffset("PatсhOffset")); int size_t = data.GetOffset("PatchCount"); int i; for (i = 0; i <= size_t; i++) StoreToAddress (pAddr + view_as<Address>(i), 0x90, NumberType_Int8); StoreToAddress (pAddr + view_as<Address>(size_t + 1), 0x31, NumberType_Int8); #if defined LINUX StoreToAddress (pAddr + view_as<Address>(size_t + 2), 0xC0, NumberType_Int8); #else StoreToAddress (pAddr + view_as<Address>(size_t + 2), 0xC9, NumberType_Int8); #endif delete data; }
"Games" { "left4dead2" { "Addresses" { "TankAttack::Update" { "signature" "TankAttack::Update" } } "Offsets" { "PatсhOffset" { "windows" "1534" "linux" "385" } "PatchCount" { "windows" "19" "linux" "18" } } "Signatures" { "TankAttack::Update" { "windows" "\x55\x8B\xEC\x81\xEC\x9C\x00\x00\x00\x53\x8B\x5D\x0C" "linux" "@_ZN10TankAttack6UpdateEP4Tankf" } } } }