|
901 | 901 | } |
902 | 902 | } |
903 | 903 |
|
| 904 | + "L4DD::CDirector::AddSurvivorBot" |
| 905 | + { |
| 906 | + "signature" "CDirector::AddSurvivorBot" |
| 907 | + "callconv" "thiscall" |
| 908 | + "return" "void" |
| 909 | + "this" "ignore" |
| 910 | + "arguments" |
| 911 | + { |
| 912 | + "a1" |
| 913 | + { |
| 914 | + "type" "int" |
| 915 | + } |
| 916 | + } |
| 917 | + } |
| 918 | + |
904 | 919 | "L4DD::CThrow::ActivateAbililty" |
905 | 920 | { |
906 | 921 | "signature" "CThrow::ActivateAbililty" |
|
2013 | 2028 | "read" "0" |
2014 | 2029 | } |
2015 | 2030 |
|
| 2031 | + "gEntList" |
| 2032 | + { |
| 2033 | + "windows" |
| 2034 | + { |
| 2035 | + "signature" "gEntList" |
| 2036 | + "read" "116" |
| 2037 | + } |
| 2038 | + "linux" |
| 2039 | + { |
| 2040 | + "signature" "gEntList" |
| 2041 | + } |
| 2042 | + "read" "0" |
| 2043 | + } |
| 2044 | + |
2016 | 2045 | "L4DD::ScriptVM" |
2017 | 2046 | { |
2018 | 2047 | "windows" |
|
3350 | 3379 | /* Search: "unsticking %s from %.1f %.1f %.1f to %.1f %.1f %.1f\n" */ |
3351 | 3380 | } |
3352 | 3381 |
|
| 3382 | + "CDirector::IsLocationFoggedToSurvivors" |
| 3383 | + { |
| 3384 | + "library" "server" |
| 3385 | + "linux" "@_ZNK9CDirector27IsLocationFoggedToSurvivorsERK6Vector" |
| 3386 | + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x83\x2A\x2A\x33\x2A\x85\x2A\x0F\x2A\x2A\x52\x68\x2A\x2A\x2A\x2A\xE8" |
| 3387 | + /* ? ? ? ? ? ? ? ? 8B ? ? 83 ? ? 33 ? 85 ? 0F ? ? 52 68 ? ? ? ? E8 */ |
| 3388 | + /* Search: "ZombieSpawnInFog" */ |
| 3389 | + } |
| 3390 | + |
3353 | 3391 | /** |
3354 | 3392 | * CTerrorPlayer::GetSpecialInfectedDominatingMe(CTerrorPlayer *this) |
3355 | 3393 | * |
|
3404 | 3442 | // /* ? ? ? ? ? ? 8B ? ? 85 ? 74 ? 8B ? 8B ? ? FF ? 8B ? 89 ? ? EB ? C7 45 ? ? ? ? ? 8D ? ? 51 8D 8E ? ? ? ? E8 ? ? ? ? 33 */ |
3405 | 3443 | } |
3406 | 3444 |
|
| 3445 | + "CGlobalEntityList::FindEntityByClassnameNearest" |
| 3446 | + { |
| 3447 | + "library" "server" |
| 3448 | + "linux" "@_ZN17CGlobalEntityList28FindEntityByClassnameNearestEPKcRK6Vectorf" |
| 3449 | + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x53\x33\x2A\xF3\x2A\x2A\x2A\x0F\x2E\x2A\x2A\x2A\x2A\x2A\x9F" |
| 3450 | + /* ? ? ? ? ? ? ? ? ? 53 33 ? F3 ? ? ? 0F 2E ? ? ? ? ? 9F */ |
| 3451 | + /* Search: "CheckpointDoorClosed". Target is sub call with "info_changelevel" as param. */ |
| 3452 | + } |
| 3453 | + |
| 3454 | + "CGlobalEntityList::FindEntityByClassnameWithin" |
| 3455 | + { |
| 3456 | + "library" "server" |
| 3457 | + "linux" "@_ZN17CGlobalEntityList27FindEntityByClassnameWithinEP11CBaseEntityPKcRK6Vectorf" |
| 3458 | + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\xF3\x2A\x2A\x2A\x0F\x2E\x2A\x2A\x2A\x2A\x2A\x9F\xF6\x2A\x2A\x7A\x2A\x8B" |
| 3459 | + /* ? ? ? ? ? ? ? ? 83 ? ? F3 ? ? ? 0F 2E ? ? ? ? ? 9F F6 ? ? 7A ? 8B */ |
| 3460 | + /* Search: "info_ladder_dismount" and target calls twice with this param. */ |
| 3461 | + } |
| 3462 | + |
3407 | 3463 | /* |
3408 | 3464 | * CDirector::HasAnySurvivorLeftSafeArea(CDirector *this) |
3409 | 3465 | */ |
|
4252 | 4308 | /* 55 8B EC 51 83 7D 08 00 56 8B F1 89 */ |
4253 | 4309 | } |
4254 | 4310 |
|
| 4311 | + /* |
| 4312 | + * CDirector::AddSurvivorBot(SurvivorCharacterType) const |
| 4313 | + * |
| 4314 | + * Windows: find string "sb_add" → xref to ConCommand registration → |
| 4315 | + * handler calls AddSurvivorBot(char*) wrapper → wrapper tail-calls this function |
| 4316 | + */ |
| 4317 | + "CDirector::AddSurvivorBot" |
| 4318 | + { |
| 4319 | + "library" "server" |
| 4320 | + "linux" "@_ZNK9CDirector14AddSurvivorBotE21SurvivorCharacterType" |
| 4321 | + "windows" "\x55\x8B\xEC\x8B\x89\x2A\x2A\x2A\x2A\x83\xEC\x2A\x56\x8D\x45\xFF" |
| 4322 | + /* 55 8B EC 8B 89 ? ? ? ? 83 EC ? 56 8D 45 FF */ |
| 4323 | + } |
| 4324 | + |
4255 | 4325 | /* |
4256 | 4326 | * CThrow::ActivateAbililty() |
4257 | 4327 | * Start a tank rock throw |
|
4779 | 4849 | /* Search: "Created new fencetop area %d(%x) between %d(%x) and %d(%x)\n" - target call is within the if statement below */ |
4780 | 4850 | } |
4781 | 4851 |
|
| 4852 | + /* |
| 4853 | + * CNavArea::IsBlocked(CNavArea *this, int, bool) |
| 4854 | + */ |
| 4855 | + "CNavArea::IsBlocked" |
| 4856 | + { |
| 4857 | + "library" "server" |
| 4858 | + "linux" "@_ZNK8CNavArea9IsBlockedEib" |
| 4859 | + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x74\x2A\x8B\x2A\x2A\x85\x2A\x79\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x83" |
| 4860 | + /* ? ? ? ? ? ? ? 74 ? 8B ? ? 85 ? 79 ? 8B ? ? ? ? ? 83 */ |
| 4861 | + /* Search: "Flow Error: Goal area is blocked!\n", target function is call above with "-1" */ |
| 4862 | + } |
| 4863 | + |
4782 | 4864 | /* |
4783 | 4865 | * CTerrorPlayer::GetFlowDistance(TerrorNavArea::FlowType) |
4784 | 4866 | */ |
|
5710 | 5792 | "linux" "@g_pGameRules" |
5711 | 5793 | } |
5712 | 5794 |
|
| 5795 | + /* Used on Windows to resolve the "gEntList" pointer */ |
| 5796 | + /* ResolveFollowupTargetToEntity(char *) */ |
| 5797 | + "gEntList" |
| 5798 | + { |
| 5799 | + "library" "server" |
| 5800 | + "linux" "@gEntList" |
| 5801 | + "windows" "\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x57\x8B\x2A\x68\x2A\x2A\x2A\x2A\x57\xE8\x2A\x2A\x2A\x2A\x83" |
| 5802 | + /* ? ? ? ? ? 8B ? ? 57 8B ? 68 ? ? ? ? 57 E8 ? ? ? ? 83 */ |
| 5803 | + /* Search: "Couldn't resolve response target %s\n". Call with "0, v3, 0, 0, 0, 0" as params has target ptr. */ |
| 5804 | + } |
| 5805 | + |
5713 | 5806 | /* This signature sometimes has multiple matches, but this |
5714 | 5807 | * does not matter as g_pGameRules is involved in all of them. |
5715 | 5808 | * The same g_pGameRules offset applies to each match. |
|
5767 | 5860 | /* 55 8B EC 81 EC ? ? ? ? A1 ? ? ? ? 33 C5 89 45 FC 8B 45 14 53 8B 5D 08 */ |
5768 | 5861 | } |
5769 | 5862 |
|
| 5863 | + /* Search: "Frame %8d/tick %8d: frame out of budget (%.2fms > %.2fms)\n" - xref to this function is our target |
| 5864 | + */ |
| 5865 | + "TheNextBots" |
| 5866 | + { |
| 5867 | + "library" "server" |
| 5868 | + "linux" "@_Z11TheNextBotsv" |
| 5869 | + "windows" "\x2A\x2A\x2A\x2A\x2A\x84\x05\x2A\x2A\x2A\x2A\x0F\x85\x2A\x2A\x2A\x2A\x09\x2A\x2A\x2A\x2A\x2A\x33\x2A\xB9\x2A\x2A\x2A\x2A\x33" |
| 5870 | + /* ? ? ? ? ? 84 05 ? ? ? ? 0F 85 ? ? ? ? 09 ? ? ? ? ? 33 ? B9 ? ? ? ? 33 */ |
| 5871 | + } |
| 5872 | + |
| 5873 | + /* Search: "Chainsaw.Die" - You will see "TheNextBots" above the call, and below is a sub call with "1.0" as param |
| 5874 | + */ |
| 5875 | + "NextBotManager::RushVictim" |
| 5876 | + { |
| 5877 | + "library" "server" |
| 5878 | + "linux" "@_ZN14NextBotManager10RushVictimEP13CTerrorPlayerf" |
| 5879 | + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x0F\x2E\x2A\x2A\x2A\x2A\x2A\x9F\xF6\x2A\x2A\x7A\x2A\xA1\x2A\x2A\x2A\x2A\xF3" |
| 5880 | + /* ? ? ? ? ? ? ? ? 83 ? ? 0F 2E ? ? ? ? ? 9F F6 ? ? 7A ? A1 ? ? ? ? F3 */ |
| 5881 | + } |
| 5882 | + |
| 5883 | + /* Search: "Going into Old ClearNWait" - Below is a call, click into that and into the function it calls, this is the target |
| 5884 | + */ |
| 5885 | + "NextBotManager::StartAssault" |
| 5886 | + { |
| 5887 | + "library" "server" |
| 5888 | + "linux" "@_ZN14NextBotManager12StartAssaultEv" |
| 5889 | + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x3D\x2A\x2A\x2A\x2A\x74\x2A\x56\x57\x0F\x2A\x2A\x8B\x2A\x2A\x03\x2A\x03\x2A\x03\x2A\x8B\x2A\x2A\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xFF\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x83" |
| 5890 | + /* ? ? ? ? ? ? ? 3D ? ? ? ? 74 ? 56 57 0F ? ? 8B ? ? 03 ? 03 ? 03 ? 8B ? ? 8B ? 8B ? ? ? ? ? 8B ? FF ? 8B ? E8 ? ? ? ? 83 */ |
| 5891 | + } |
| 5892 | + |
5770 | 5893 | "nav_update_lighting" |
5771 | 5894 | { |
5772 | 5895 | "library" "server" |
|
0 commit comments