From 527474ff2494debffe0555fa399133f95b7b1a30 Mon Sep 17 00:00:00 2001 From: Robert MacGregor Date: Sat, 27 Jun 2015 13:36:30 -0400 Subject: [PATCH] Restructured project structure to use a singular SLN; made the T2API common to all projects; adjusted watchdog timer to 8 seconds --- CommonAPI/Common.sln | 20 +++ CommonAPI/Common.suo | Bin 0 -> 8192 bytes CommonAPI/Common/Common.vcxproj | 124 +++++++++++++++++ CommonAPI/Common/Common.vcxproj.filters | 129 ++++++++++++++++++ .../Common/Common.vcxproj.user | 0 .../Common}/include/DXAPI/DXAPI.h | 0 .../Common}/include/DXAPI/FlyingVehicle.h | 0 .../Common}/include/DXAPI/GameBase.h | 0 .../Common}/include/DXAPI/GameConnection.h | 0 .../Common}/include/DXAPI/GrenadeProjectile.h | 0 .../Common}/include/DXAPI/NetConnection.h | 0 .../Common}/include/DXAPI/NetObject.h | 0 .../Common}/include/DXAPI/Player.h | 0 .../Common}/include/DXAPI/Point3F.h | 0 .../Common}/include/DXAPI/Projectile.h | 0 .../Common}/include/DXAPI/SceneObject.h | 0 .../Common}/include/DXAPI/ScriptObject.h | 0 .../Common}/include/DXAPI/ShapeBase.h | 0 .../Common}/include/DXAPI/SimObject.h | 0 .../Common}/include/DXAPI/StaticShape.h | 0 .../Common}/include/DXAPI/TCPObject.h | 0 .../Common}/include/DXAPI/Vehicle.h | 0 .../Common}/include/LinkerAPI.h | 0 .../Common}/source/DXAPI/DXAPI.cpp | 0 .../Common}/source/DXAPI/FlyingVehicle.cpp | 0 .../Common}/source/DXAPI/GameBase.cpp | 0 .../Common}/source/DXAPI/GameConnection.cpp | 0 .../source/DXAPI/GrenadeProjectile.cpp | 0 .../Common}/source/DXAPI/NetConnection.cpp | 0 .../Common}/source/DXAPI/NetObject.cpp | 0 .../Common}/source/DXAPI/Player.cpp | 0 .../Common}/source/DXAPI/Point3F.cpp | 0 .../Common}/source/DXAPI/Projectile.cpp | 0 .../Common}/source/DXAPI/SceneObject.cpp | 0 .../Common}/source/DXAPI/ScriptObject.cpp | 0 .../Common}/source/DXAPI/ShapeBase.cpp | 0 .../Common}/source/DXAPI/SimObject.cpp | 0 .../Common}/source/DXAPI/StaticShape.cpp | 0 .../Common}/source/DXAPI/TCPObject.cpp | 0 .../Common}/source/DXAPI/Vehicle.cpp | 0 .../Common}/source/LinkerAPI.cpp | 0 Everything.sln | 56 ++++++++ Everything.suo | Bin 0 -> 16896 bytes Mod Sources/RandomMod/RandomMod.sln | 9 ++ Mod Sources/RandomMod/RandomMod.suo | Bin 23552 -> 25600 bytes .../RandomMod/RandomMod/RandomMod.vcxproj | 10 +- .../RandomMod/RandomMod.vcxproj.filters | 6 - .../RandomMod/RandomMod/include/randomCmds.h | 18 +-- .../RandomMod/RandomMod/include/t2api.h | 111 --------------- .../RandomMod/RandomMod/source/BaseMod.cpp | 2 +- .../RandomMod/RandomMod/source/randomCmds.cpp | 12 +- .../RandomMod/RandomMod/source/t2api.cpp | 85 ------------ Mod Sources/TSExtension/TSExtension.opensdf | Bin 64 -> 0 bytes Mod Sources/TSExtension/TSExtension.sln | 9 ++ Mod Sources/TSExtension/TSExtension.suo | Bin 47616 -> 38912 bytes .../TSExtension/TSExtension.vcxproj | 48 +------ .../TSExtension/TSExtension.vcxproj.filters | 114 ---------------- .../TSExtension/source/DXConCmds.cpp | 4 + Mod Sources/Watchdog/Release/WatchDog.exp | Bin 850 -> 0 bytes .../Release/WatchDog.lastbuildstate | 2 - Mod Sources/Watchdog/Watchdog.sln | 2 +- Mod Sources/Watchdog/Watchdog.suo | Bin 39936 -> 39424 bytes .../TSExtension.vcxproj.filters | 0 .../Watchdog/TSExtension.vcxproj.user | 3 + .../Watchdog.vcxproj} | 4 +- .../Watchdog/Watchdog/Watchdog.vcxproj.user | 3 + .../script/tsExtension.cs | 0 .../source/dllmain.cpp | 2 +- ModLoader/Modloader.sln | 9 ++ ModLoader/Modloader.suo | Bin 12800 -> 15872 bytes .../Modloader/Debug/Modloader.lastbuildstate | 2 - ModLoader/Modloader/Debug/vc100.idb | Bin 789504 -> 0 bytes ModLoader/Modloader/Modloader.vcxproj | 9 +- ModLoader/Modloader/Modloader.vcxproj.filters | 6 - ModLoader/Modloader/include/modLoader.h | 4 +- ModLoader/Modloader/include/t2api.h | 111 --------------- ModLoader/Modloader/source/modLoader.cpp | 6 +- ModLoader/Modloader/source/t2api.cpp | 89 ------------ ModLoader/Modloader/source/t2dll.cpp | 86 ++++++++---- 79 files changed, 469 insertions(+), 626 deletions(-) create mode 100644 CommonAPI/Common.sln create mode 100644 CommonAPI/Common.suo create mode 100644 CommonAPI/Common/Common.vcxproj create mode 100644 CommonAPI/Common/Common.vcxproj.filters rename Mod Sources/Watchdog/TSExtension/TSExtension.vcxproj.user => CommonAPI/Common/Common.vcxproj.user (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/DXAPI.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/FlyingVehicle.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/GameBase.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/GameConnection.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/GrenadeProjectile.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/NetConnection.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/NetObject.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/Player.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/Point3F.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/Projectile.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/SceneObject.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/ScriptObject.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/ShapeBase.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/SimObject.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/StaticShape.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/TCPObject.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/DXAPI/Vehicle.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/include/LinkerAPI.h (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/DXAPI.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/FlyingVehicle.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/GameBase.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/GameConnection.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/GrenadeProjectile.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/NetConnection.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/NetObject.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/Player.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/Point3F.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/Projectile.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/SceneObject.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/ScriptObject.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/ShapeBase.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/SimObject.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/StaticShape.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/TCPObject.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/DXAPI/Vehicle.cpp (100%) rename {Mod Sources/TSExtension/TSExtension => CommonAPI/Common}/source/LinkerAPI.cpp (100%) create mode 100644 Everything.sln create mode 100644 Everything.suo delete mode 100644 Mod Sources/RandomMod/RandomMod/include/t2api.h delete mode 100644 Mod Sources/RandomMod/RandomMod/source/t2api.cpp delete mode 100644 Mod Sources/TSExtension/TSExtension.opensdf delete mode 100644 Mod Sources/Watchdog/Release/WatchDog.exp delete mode 100644 Mod Sources/Watchdog/TSExtension/Release/WatchDog.lastbuildstate rename Mod Sources/Watchdog/{TSExtension => Watchdog}/TSExtension.vcxproj.filters (100%) create mode 100644 Mod Sources/Watchdog/Watchdog/TSExtension.vcxproj.user rename Mod Sources/Watchdog/{TSExtension/TSExtension.vcxproj => Watchdog/Watchdog.vcxproj} (96%) create mode 100644 Mod Sources/Watchdog/Watchdog/Watchdog.vcxproj.user rename Mod Sources/Watchdog/{TSExtension => Watchdog}/script/tsExtension.cs (100%) rename Mod Sources/Watchdog/{TSExtension => Watchdog}/source/dllmain.cpp (94%) delete mode 100644 ModLoader/Modloader/Debug/Modloader.lastbuildstate delete mode 100644 ModLoader/Modloader/Debug/vc100.idb delete mode 100644 ModLoader/Modloader/include/t2api.h delete mode 100644 ModLoader/Modloader/source/t2api.cpp diff --git a/CommonAPI/Common.sln b/CommonAPI/Common.sln new file mode 100644 index 0000000..27e5eb8 --- /dev/null +++ b/CommonAPI/Common.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Common\Common.vcxproj", "{9B3A3214-400B-4245-85FD-EA12D5F791D4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Debug|Win32.ActiveCfg = Debug|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Debug|Win32.Build.0 = Debug|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Release|Win32.ActiveCfg = Release|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CommonAPI/Common.suo b/CommonAPI/Common.suo new file mode 100644 index 0000000000000000000000000000000000000000..3641d984d71cedb6a6c621241d75906c68b471ce GIT binary patch literal 8192 zcmeHMO>7%Q6n>#C{Yh!*4+TO2w@Lp~6Q?OHEh)rF`Xds>5H|s-LR#Bvv(46ycGqnq zC_+LA2??oOxFC=~MM7{Wy>N#cr&I_ooag~n;=~P*Xv6o-?!=B8+Z)>;D)m`!XLfdW z-kUdXzV~K*eRjhypI+;@Ar*8?mdWk8)pCDXdmHLxMGuPHhYIg+&&|#GjUuStqr1og zx1j6tU=3HGTnXlyuLiFIw}aP!9{{ffuLE+5ao_ZA%slz_y7oRw3Mo<(g~F8U8bUbg^+%2y%eYXbOEloUf; znUWE)PWe^950qeoEA)jpwO5JY@ z?jHs}0;X*`z>k5qf*%Jz0cPJwP;N)r3GM>#0Ph6v2eZ$fpwwgQl5@RB&0FA=kH5Nl z`sT5bw?Ek${cPQ~r(o_S(eH!wkS2(mfzx0~T1)SIb;2DoQ^j1uF&npm+~pjy#eAR z-UJWI5jiuDUM}iH_LRaEqWdUtE-fd3GN$D4#6gcCl*E{n6w#JbeJ9b+L(kW6R}cHB zZUp$l{k{pzWn^1DB3=BN<#yPJPqwE6_aY|u^aN4vrslk4O-{I{_h2SD&;f& z5PPR#1q&MF>sVnY%O&@~&ec)#m zIoQvDmJy*!#CeYV~RSdkrnR}>blrKb7ERG@` zFSNiR+@FFc52HMf@p#W&WJ7iq_ac}7N1AcI9`tD)(e{jfV~?J%y#;aB_NSp(?Ti#l5l;r$rueR4^n@XZSqa>o>Ul}lx|Mo+#|x9a#a1Mf{? zSJ+g%Dgl4yu{SLKFo)9vR>~j6E+ww;95M-u<}tqlW>_r-bT=TMYnBWYsFc5W{3+K& zYwnkQ0sazG!_J?vQsY14jfXiqm?;sbgjD)uWCB4vg}B6MjnrC;BMr=dq5TUOzZ3(? zXPSWJc_yh9341Vqo(CRU!u%Qg>5(MnAl2mSv)GVAQ^S9u;u>vo{)}uk=C9|-$i|bX zg?xzdmpJa{0TqISTlilaGhm*J!mdAUbv6LVG3>FkKoG_%Uv_DYCx8I;XglOHhVm>H zR{oRd8xIEdy^C0}N}an}iA_i4IY?>ch*4yQOvdjK-y_{no&~_rE=P?dLCN zH+??2eni%N-(ml~x^wLE+`E6yes^V#h>!{qoW+- z;52k$nzI-BP8mDc>AD%dwZ;b@@s1>A1ccH!k` zg8>%WI|(g{@I`O_d$5CSuvQF4{-NwoRBgom6Y%#)#j5MMg(>mQ2srTN$bQtHd#gSwNKC40R#W z^B;^U{4aq7T&mA=&6iO-FX{NKD;X}z$xtF_zOfdBE| z4DJDv{+~tv|1yr;jWK}VAeoidL%>G-zZ-J(`AaF$ + + + + Debug + Win32 + + + Release + Win32 + + + + {9B3A3214-400B-4245-85FD-EA12D5F791D4} + Win32Proj + Common + + + + StaticLibrary + true + Unicode + + + StaticLibrary + false + true + Unicode + + + + + + + + + + + + + true + include;$(IncludePath) + Common + $(SolutionDir) + + + false + include;$(IncludePath) + $(SolutionDir) + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;COMMON_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;COMMON_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CommonAPI/Common/Common.vcxproj.filters b/CommonAPI/Common/Common.vcxproj.filters new file mode 100644 index 0000000..22dc68d --- /dev/null +++ b/CommonAPI/Common/Common.vcxproj.filters @@ -0,0 +1,129 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/Mod Sources/Watchdog/TSExtension/TSExtension.vcxproj.user b/CommonAPI/Common/Common.vcxproj.user similarity index 100% rename from Mod Sources/Watchdog/TSExtension/TSExtension.vcxproj.user rename to CommonAPI/Common/Common.vcxproj.user diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/DXAPI.h b/CommonAPI/Common/include/DXAPI/DXAPI.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/DXAPI.h rename to CommonAPI/Common/include/DXAPI/DXAPI.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/FlyingVehicle.h b/CommonAPI/Common/include/DXAPI/FlyingVehicle.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/FlyingVehicle.h rename to CommonAPI/Common/include/DXAPI/FlyingVehicle.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/GameBase.h b/CommonAPI/Common/include/DXAPI/GameBase.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/GameBase.h rename to CommonAPI/Common/include/DXAPI/GameBase.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/GameConnection.h b/CommonAPI/Common/include/DXAPI/GameConnection.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/GameConnection.h rename to CommonAPI/Common/include/DXAPI/GameConnection.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/GrenadeProjectile.h b/CommonAPI/Common/include/DXAPI/GrenadeProjectile.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/GrenadeProjectile.h rename to CommonAPI/Common/include/DXAPI/GrenadeProjectile.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/NetConnection.h b/CommonAPI/Common/include/DXAPI/NetConnection.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/NetConnection.h rename to CommonAPI/Common/include/DXAPI/NetConnection.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/NetObject.h b/CommonAPI/Common/include/DXAPI/NetObject.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/NetObject.h rename to CommonAPI/Common/include/DXAPI/NetObject.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/Player.h b/CommonAPI/Common/include/DXAPI/Player.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/Player.h rename to CommonAPI/Common/include/DXAPI/Player.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/Point3F.h b/CommonAPI/Common/include/DXAPI/Point3F.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/Point3F.h rename to CommonAPI/Common/include/DXAPI/Point3F.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/Projectile.h b/CommonAPI/Common/include/DXAPI/Projectile.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/Projectile.h rename to CommonAPI/Common/include/DXAPI/Projectile.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/SceneObject.h b/CommonAPI/Common/include/DXAPI/SceneObject.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/SceneObject.h rename to CommonAPI/Common/include/DXAPI/SceneObject.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/ScriptObject.h b/CommonAPI/Common/include/DXAPI/ScriptObject.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/ScriptObject.h rename to CommonAPI/Common/include/DXAPI/ScriptObject.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/ShapeBase.h b/CommonAPI/Common/include/DXAPI/ShapeBase.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/ShapeBase.h rename to CommonAPI/Common/include/DXAPI/ShapeBase.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/SimObject.h b/CommonAPI/Common/include/DXAPI/SimObject.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/SimObject.h rename to CommonAPI/Common/include/DXAPI/SimObject.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/StaticShape.h b/CommonAPI/Common/include/DXAPI/StaticShape.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/StaticShape.h rename to CommonAPI/Common/include/DXAPI/StaticShape.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/TCPObject.h b/CommonAPI/Common/include/DXAPI/TCPObject.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/TCPObject.h rename to CommonAPI/Common/include/DXAPI/TCPObject.h diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/Vehicle.h b/CommonAPI/Common/include/DXAPI/Vehicle.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/DXAPI/Vehicle.h rename to CommonAPI/Common/include/DXAPI/Vehicle.h diff --git a/Mod Sources/TSExtension/TSExtension/include/LinkerAPI.h b/CommonAPI/Common/include/LinkerAPI.h similarity index 100% rename from Mod Sources/TSExtension/TSExtension/include/LinkerAPI.h rename to CommonAPI/Common/include/LinkerAPI.h diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/DXAPI.cpp b/CommonAPI/Common/source/DXAPI/DXAPI.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/DXAPI.cpp rename to CommonAPI/Common/source/DXAPI/DXAPI.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/FlyingVehicle.cpp b/CommonAPI/Common/source/DXAPI/FlyingVehicle.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/FlyingVehicle.cpp rename to CommonAPI/Common/source/DXAPI/FlyingVehicle.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/GameBase.cpp b/CommonAPI/Common/source/DXAPI/GameBase.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/GameBase.cpp rename to CommonAPI/Common/source/DXAPI/GameBase.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/GameConnection.cpp b/CommonAPI/Common/source/DXAPI/GameConnection.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/GameConnection.cpp rename to CommonAPI/Common/source/DXAPI/GameConnection.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/GrenadeProjectile.cpp b/CommonAPI/Common/source/DXAPI/GrenadeProjectile.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/GrenadeProjectile.cpp rename to CommonAPI/Common/source/DXAPI/GrenadeProjectile.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/NetConnection.cpp b/CommonAPI/Common/source/DXAPI/NetConnection.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/NetConnection.cpp rename to CommonAPI/Common/source/DXAPI/NetConnection.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/NetObject.cpp b/CommonAPI/Common/source/DXAPI/NetObject.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/NetObject.cpp rename to CommonAPI/Common/source/DXAPI/NetObject.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/Player.cpp b/CommonAPI/Common/source/DXAPI/Player.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/Player.cpp rename to CommonAPI/Common/source/DXAPI/Player.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/Point3F.cpp b/CommonAPI/Common/source/DXAPI/Point3F.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/Point3F.cpp rename to CommonAPI/Common/source/DXAPI/Point3F.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/Projectile.cpp b/CommonAPI/Common/source/DXAPI/Projectile.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/Projectile.cpp rename to CommonAPI/Common/source/DXAPI/Projectile.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/SceneObject.cpp b/CommonAPI/Common/source/DXAPI/SceneObject.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/SceneObject.cpp rename to CommonAPI/Common/source/DXAPI/SceneObject.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/ScriptObject.cpp b/CommonAPI/Common/source/DXAPI/ScriptObject.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/ScriptObject.cpp rename to CommonAPI/Common/source/DXAPI/ScriptObject.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/ShapeBase.cpp b/CommonAPI/Common/source/DXAPI/ShapeBase.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/ShapeBase.cpp rename to CommonAPI/Common/source/DXAPI/ShapeBase.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/SimObject.cpp b/CommonAPI/Common/source/DXAPI/SimObject.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/SimObject.cpp rename to CommonAPI/Common/source/DXAPI/SimObject.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/StaticShape.cpp b/CommonAPI/Common/source/DXAPI/StaticShape.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/StaticShape.cpp rename to CommonAPI/Common/source/DXAPI/StaticShape.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/TCPObject.cpp b/CommonAPI/Common/source/DXAPI/TCPObject.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/TCPObject.cpp rename to CommonAPI/Common/source/DXAPI/TCPObject.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/Vehicle.cpp b/CommonAPI/Common/source/DXAPI/Vehicle.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/DXAPI/Vehicle.cpp rename to CommonAPI/Common/source/DXAPI/Vehicle.cpp diff --git a/Mod Sources/TSExtension/TSExtension/source/LinkerAPI.cpp b/CommonAPI/Common/source/LinkerAPI.cpp similarity index 100% rename from Mod Sources/TSExtension/TSExtension/source/LinkerAPI.cpp rename to CommonAPI/Common/source/LinkerAPI.cpp diff --git a/Everything.sln b/Everything.sln new file mode 100644 index 0000000..c09b743 --- /dev/null +++ b/Everything.sln @@ -0,0 +1,56 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "CommonAPI\Common\Common.vcxproj", "{9B3A3214-400B-4245-85FD-EA12D5F791D4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Modloader", "ModLoader\Modloader\Modloader.vcxproj", "{10159605-BFF5-496F-8C23-0A1FB9850E55}" + ProjectSection(ProjectDependencies) = postProject + {9B3A3214-400B-4245-85FD-EA12D5F791D4} = {9B3A3214-400B-4245-85FD-EA12D5F791D4} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RandomMod", "Mod Sources\RandomMod\RandomMod\RandomMod.vcxproj", "{2A498B2D-84B2-4BBF-9532-EA17E5BA51BB}" + ProjectSection(ProjectDependencies) = postProject + {9B3A3214-400B-4245-85FD-EA12D5F791D4} = {9B3A3214-400B-4245-85FD-EA12D5F791D4} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TSExtension", "Mod Sources\TSExtension\TSExtension\TSExtension.vcxproj", "{08220905-AEC1-49C9-84E6-78672F9EF5F1}" + ProjectSection(ProjectDependencies) = postProject + {9B3A3214-400B-4245-85FD-EA12D5F791D4} = {9B3A3214-400B-4245-85FD-EA12D5F791D4} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WatchDog", "Mod Sources\Watchdog\Watchdog\Watchdog.vcxproj", "{1C8B5AA4-B172-45DD-9D27-55F41B6F1755}" + ProjectSection(ProjectDependencies) = postProject + {9B3A3214-400B-4245-85FD-EA12D5F791D4} = {9B3A3214-400B-4245-85FD-EA12D5F791D4} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Debug|Win32.ActiveCfg = Debug|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Debug|Win32.Build.0 = Debug|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Release|Win32.ActiveCfg = Release|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Release|Win32.Build.0 = Release|Win32 + {10159605-BFF5-496F-8C23-0A1FB9850E55}.Debug|Win32.ActiveCfg = Debug|Win32 + {10159605-BFF5-496F-8C23-0A1FB9850E55}.Debug|Win32.Build.0 = Debug|Win32 + {10159605-BFF5-496F-8C23-0A1FB9850E55}.Release|Win32.ActiveCfg = Release|Win32 + {10159605-BFF5-496F-8C23-0A1FB9850E55}.Release|Win32.Build.0 = Release|Win32 + {2A498B2D-84B2-4BBF-9532-EA17E5BA51BB}.Debug|Win32.ActiveCfg = Debug|Win32 + {2A498B2D-84B2-4BBF-9532-EA17E5BA51BB}.Debug|Win32.Build.0 = Debug|Win32 + {2A498B2D-84B2-4BBF-9532-EA17E5BA51BB}.Release|Win32.ActiveCfg = Release|Win32 + {2A498B2D-84B2-4BBF-9532-EA17E5BA51BB}.Release|Win32.Build.0 = Release|Win32 + {08220905-AEC1-49C9-84E6-78672F9EF5F1}.Debug|Win32.ActiveCfg = Debug|Win32 + {08220905-AEC1-49C9-84E6-78672F9EF5F1}.Debug|Win32.Build.0 = Debug|Win32 + {08220905-AEC1-49C9-84E6-78672F9EF5F1}.Release|Win32.ActiveCfg = Release|Win32 + {08220905-AEC1-49C9-84E6-78672F9EF5F1}.Release|Win32.Build.0 = Release|Win32 + {1C8B5AA4-B172-45DD-9D27-55F41B6F1755}.Debug|Win32.ActiveCfg = Debug|Win32 + {1C8B5AA4-B172-45DD-9D27-55F41B6F1755}.Debug|Win32.Build.0 = Debug|Win32 + {1C8B5AA4-B172-45DD-9D27-55F41B6F1755}.Release|Win32.ActiveCfg = Release|Win32 + {1C8B5AA4-B172-45DD-9D27-55F41B6F1755}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Everything.suo b/Everything.suo new file mode 100644 index 0000000000000000000000000000000000000000..3f597800da4b6854df20654c71fd75831aba8bb0 GIT binary patch literal 16896 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 diff --git a/Mod Sources/RandomMod/RandomMod/RandomMod.vcxproj b/Mod Sources/RandomMod/RandomMod/RandomMod.vcxproj index d2a5ba6..408d3cf 100644 --- a/Mod Sources/RandomMod/RandomMod/RandomMod.vcxproj +++ b/Mod Sources/RandomMod/RandomMod/RandomMod.vcxproj @@ -15,13 +15,11 @@ - - {2A498B2D-84B2-4BBF-9532-EA17E5BA51BB} @@ -53,11 +51,13 @@ false - include;$(IncludePath) + include;..\..\..\CommonAPI\Common\include;$(IncludePath) + $(SolutionDir)\Mods\ false - include;$(IncludePath) + include;..\..\..\CommonAPI\Common\include;$(IncludePath) + $(SolutionDir)\Mods\ @@ -69,6 +69,7 @@ Windows true + $(SolutionDir)\Common.lib;%(AdditionalDependencies) @@ -85,6 +86,7 @@ true true true + $(SolutionDir)\Common.lib;%(AdditionalDependencies) diff --git a/Mod Sources/RandomMod/RandomMod/RandomMod.vcxproj.filters b/Mod Sources/RandomMod/RandomMod/RandomMod.vcxproj.filters index 1dee843..7735c67 100644 --- a/Mod Sources/RandomMod/RandomMod/RandomMod.vcxproj.filters +++ b/Mod Sources/RandomMod/RandomMod/RandomMod.vcxproj.filters @@ -18,9 +18,6 @@ Source Files - - Source Files - Source Files @@ -32,9 +29,6 @@ - - Header Files - Header Files diff --git a/Mod Sources/RandomMod/RandomMod/include/randomCmds.h b/Mod Sources/RandomMod/RandomMod/include/randomCmds.h index c4f0d95..021f731 100644 --- a/Mod Sources/RandomMod/RandomMod/include/randomCmds.h +++ b/Mod Sources/RandomMod/RandomMod/include/randomCmds.h @@ -1,14 +1,14 @@ -#include +#include -const char* conGuiTsCtrlProject(SimObject *obj,S32 argc, const char* argv[]); -bool conNetObjectSetGhostable(SimObject *obj,S32 argc, const char* argv[]); -const char* conGetVariable(SimObject *obj,S32 argc, const char* argv[]); +const char* conGuiTsCtrlProject(Linker::SimObject *obj,S32 argc, const char* argv[]); +bool conNetObjectSetGhostable(Linker::SimObject *obj,S32 argc, const char* argv[]); +const char* conGetVariable(Linker::SimObject *obj,S32 argc, const char* argv[]); // Merscenne Random -const char *conMRandom(SimObject *obj, S32 argc, const char *argv[]); -const char *conMSeed(SimObject *obj, S32 argc, const char *argv[]); -const char *conMRandomFloat(SimObject *obj, S32 argc, const char *argv[]); +const char *conMRandom(Linker::SimObject *obj, S32 argc, const char *argv[]); +const char *conMSeed(Linker::SimObject *obj, S32 argc, const char *argv[]); +const char *conMRandomFloat(Linker::SimObject *obj, S32 argc, const char *argv[]); // Clock -const char*conQPCBegin(SimObject *obj, S32 argc, const char *argv[]); -const char*conQPCEnd(SimObject *obj, S32 argc, const char *argv[]); \ No newline at end of file +const char*conQPCBegin(Linker::SimObject *obj, S32 argc, const char *argv[]); +const char*conQPCEnd(Linker::SimObject *obj, S32 argc, const char *argv[]); \ No newline at end of file diff --git a/Mod Sources/RandomMod/RandomMod/include/t2api.h b/Mod Sources/RandomMod/RandomMod/include/t2api.h deleted file mode 100644 index 930dd4e..0000000 --- a/Mod Sources/RandomMod/RandomMod/include/t2api.h +++ /dev/null @@ -1,111 +0,0 @@ -#pragma once - -#include - -void initT2Api(); - - -//api stuff - -typedef unsigned int U32; -typedef int S32; -typedef float F32; - -typedef unsigned int dsize_t; - -//for addvariable -#define TypeS32 1 -#define TypeBool 3 -#define TypeF32 5 - - -//dshit -inline dsize_t dStrlen(const char *str) -{ - return (dsize_t)strlen(str); -} - -class Namespace { - const char* mName; -}; - - - -class SimObject{ - SimObject* group; - const char* objectName; //04h: objectName - SimObject* nextNameObject; //8 - SimObject* nextManagerNameObject; //c - SimObject* nextIdObject; //10h: nextIdObject - U32 stuff; //14 - U32 mFlags; //18h - U32 mNotifyList; //actually a pointer - U32 mId; //20h: mId - //more stuff -}; - -class SimIdDictionary -{ - enum - { - DefaultTableSize = 4096, - TableBitMask = 4095 - }; - SimObject *table[DefaultTableSize]; -}; -extern SimIdDictionary* gIdDictionary; - -class Point3F -{ - public: - F32 x; - F32 y; - F32 z; -}; - - -//GuiTSCtrl -class GuiTSCtrl {}; -class HoverVehicle {}; -void GuiTSCtrl_project(GuiTSCtrl *obj, const Point3F &pt, Point3F *dest); //fake - - -namespace Sim { - extern SimObject* (*findObject)(U32 id); -} - - -//console - -typedef const char * (*StringCallback)(SimObject *obj, S32 argc, const char *argv[]); -typedef S32 (*IntCallback)(SimObject *obj, S32 argc, const char *argv[]); -typedef F32 (*FloatCallback)(SimObject *obj, S32 argc, const char *argv[]); -typedef void (*VoidCallback)(SimObject *obj, S32 argc, const char *argv[]); -typedef bool (*BoolCallback)(SimObject *obj, S32 argc, const char *argv[]); - - -extern void (*someTest)(void); -//functions -namespace Con{ - -extern char * (*getReturnBuffer)(U32 bufferSize); - -extern void (*addMethodB)(const char *nsName, const char *name, BoolCallback cb, const char *usage, S32 minArgs, S32 maxArgs); -extern void (*addMethodS)(const char *nsName, const char *name, StringCallback cb, const char *usage, S32 minArgs, S32 maxArgs); - -extern bool (*addVariable)(const char *name, S32 t, void *dp); - -extern void (*printf)(const char* fmt,...); -extern void (*errorf)(U32 type, const char* fmt,...); - -extern const char * (*getVariable)(const char *name); -extern const char * (*execute)(S32 argc, const char *argv[]); -extern const char * (*executef)(S32 argc, ...); -extern const char * (*executem)(SimObject *object, S32 argc, const char *argv[]); -extern const char * (*evaluate)(const char* string, bool echo, const char *fileName, bool cf); -} - -//d-util -extern int (*dSscanf)(const char *buffer, const char *format, ...); -extern int (*dSprintf)(char *buffer, dsize_t bufferSize, const char *format, ...); -extern bool (*dAtob)(const char *str); \ No newline at end of file diff --git a/Mod Sources/RandomMod/RandomMod/source/BaseMod.cpp b/Mod Sources/RandomMod/RandomMod/source/BaseMod.cpp index 9eb1904..df3d729 100644 --- a/Mod Sources/RandomMod/RandomMod/source/BaseMod.cpp +++ b/Mod Sources/RandomMod/RandomMod/source/BaseMod.cpp @@ -3,7 +3,7 @@ #include "BaseMod.h" -#include "t2api.h" +#include "LinkerAPI.h" #include "randomCmds.h" extern "C" diff --git a/Mod Sources/RandomMod/RandomMod/source/randomCmds.cpp b/Mod Sources/RandomMod/RandomMod/source/randomCmds.cpp index b4eae65..d87d498 100644 --- a/Mod Sources/RandomMod/RandomMod/source/randomCmds.cpp +++ b/Mod Sources/RandomMod/RandomMod/source/randomCmds.cpp @@ -8,11 +8,11 @@ #include "mt.h" -#include "t2api.h" +#include "LinkerAPI.h" // Merscenne Twister MersenneTwister *mt = NULL; -const char *conMRandom(SimObject *obj, S32 argc, const char *argv[]) +const char *conMRandom(Linker::SimObject *obj, S32 argc, const char *argv[]) { if (!mt) { @@ -56,7 +56,7 @@ const char *conMRandom(SimObject *obj, S32 argc, const char *argv[]) return mem; } -const char *conMRandomFloat(SimObject *obj, S32 argc, const char *argv[]) +const char *conMRandomFloat(Linker::SimObject *obj, S32 argc, const char *argv[]) { if (!mt) { @@ -95,7 +95,7 @@ const char *conMRandomFloat(SimObject *obj, S32 argc, const char *argv[]) return mem; } -const char *conMSeed(SimObject *obj, S32 argc, const char *argv[]) +const char *conMSeed(Linker::SimObject *obj, S32 argc, const char *argv[]) { if (!mt) { @@ -125,7 +125,7 @@ static unsigned int CURRENT_STOPWATCH_COUNT = 0; static __int64 QPC_STOPWATCHES[QPC_MAX_STOPWATCHES]; __int64 STARTING_QPC_TIME; -const char*conQPCBegin(SimObject *obj, S32 argc, const char *argv[]) +const char*conQPCBegin(Linker::SimObject *obj, S32 argc, const char *argv[]) { if (!QueryPerformanceCounter((LARGE_INTEGER*)&QPC_STOPWATCHES[CURRENT_STOPWATCH_COUNT])) { @@ -147,7 +147,7 @@ const char*conQPCBegin(SimObject *obj, S32 argc, const char *argv[]) return result; } -const char*conQPCEnd(SimObject *obj, S32 argc, const char *argv[]) +const char*conQPCEnd(Linker::SimObject *obj, S32 argc, const char *argv[]) { __int64 ENDING_QPC_TIME; if (!QueryPerformanceCounter((LARGE_INTEGER*)&ENDING_QPC_TIME)) diff --git a/Mod Sources/RandomMod/RandomMod/source/t2api.cpp b/Mod Sources/RandomMod/RandomMod/source/t2api.cpp deleted file mode 100644 index e3688cc..0000000 --- a/Mod Sources/RandomMod/RandomMod/source/t2api.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "t2api.h" - -SimIdDictionary* gIdDictionary = reinterpret_cast(0x009E9194); - -//439550 -namespace Sim { - SimObject* (*findObject)(U32 id) = - (SimObject* (_cdecl *)(U32 id) ) - 0x439550; -} - -//hackey way to do member functions, .... -void GuiTSCtrl_project(GuiTSCtrl *obj, const Point3F &pt, Point3F *dest) { - typedef void (__cdecl *projFunc)(const Point3F &pt, Point3F *dest); - static projFunc p = (projFunc)0x4d0b40; - - __asm { - push dest; - push pt; - mov ecx,obj; - lea eax, p; - mov eax, [eax]; - call eax; - } -} - -namespace Con { - -char* (*getReturnBuffer)(U32 bufferSize) = - (char *(__cdecl *)(U32)) - 0x42caa0; - -void (*addMethodB)(const char *nsName, const char *name, BoolCallback cb, const char *usage, S32 minArgs, S32 maxArgs) = - (void (__cdecl *)(const char *, const char *,BoolCallback,const char *,S32,S32)) - 0x426510; - -void (*addMethodS)(const char *, const char *,StringCallback, const char *, S32, S32) = - (void (__cdecl *)(const char *,const char *,StringCallback,const char *,S32,S32)) - 0x426410; - -bool (*addVariable)(const char *name, S32 t, void *dp) = - (bool (__cdecl *)(const char *name, S32 t, void *dp)) - 0x4263B0; - -const char * (*execute)(S32 argc, const char *argv[]) = - (const char * (__cdecl *)(S32 argc, const char *argv[])) - 0x4267A0; - -const char * (*executef)(S32 argc, ...) = - (const char * (__cdecl *)(S32 argc, ...)) - 0x4269E0; - -const char * (*evaluate)(const char* string, bool echo, const char *fileName, bool cf) = - (const char * (__cdecl *)(const char* string, bool echo, const char *fileName, bool cf)) - 0x426690; - -const char * (*executem)(SimObject *object, S32 argc, const char *argv[]) = - (const char * (__cdecl *)(SimObject *object, S32 argc, const char *argv[])) - 0x426800; - -const char * (*getVariable)(const char *name) = - (const char * (__cdecl *)(const char *name)) - 0x4261F0; - -void (*printf)(const char* fmt,...) = - (void (__cdecl *)(const char* fmt,...)) - 0x425F30; - -void (*errorf)(U32 type, const char* fmt,...)= - (void (__cdecl *)(U32, const char*,...)) - 0x425FB0; - -} - -int (*dSscanf)(const char *buffer, const char *format, ...) = - (int (__cdecl *)(const char *,const char *,...)) - 0x55b640; - -int (*dSprintf)(char *buffer, dsize_t bufferSize, const char *format, ...) = - (int (__cdecl *)(char *,dsize_t,const char *,...)) - 0x55b5e0; - -bool (*dAtob)(const char *str) = - (bool (__cdecl *)(const char *str)) - 0x55B490; diff --git a/Mod Sources/TSExtension/TSExtension.opensdf b/Mod Sources/TSExtension/TSExtension.opensdf deleted file mode 100644 index 4c4fcb5cb1b2ad6523b9cb1545db786dc5a75429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64 zcmWN{F%CdL6adk86cErZY`5qL|s_G-|#|bF8Us8mGx-9n&f4ch{vE9QmWBzUB9w$9L{I z_nv$1xj5VkhfCpdEA$UWM@I#68DmbRS(^cx2R!H~y6lvyCjEMRQ_df*vs?+Ct$>=P zFQf>tWX_JGVVy)9RfST(n8M*N(eJ8sX|qsR)%od1!NdR}!c@>{Kr9dkOb4C>W&js~ z1VGr$0=*2-usU7(3XId|1$_(XbHE|-q0VP}sIYWEDCz7QSblS1{?_**W_C@QGK-Gu z5@nm_q(ZqJmWHGA{A<~2ww_h9a#q6{SUsH^O5qX}wd9bP?it^^G-60n>EY{5x~I?6 zas^l)K&(-2@GDSiIf9K&@~X%kP^b|K-!Vmlp@2rDB=y%&^fS6|$kX_N4fcLlmw@S$ zsM(mS;v&yv&M;G=q$juW;lNNRYhV!A%%kZ};2|H*<}-g7`UQo^!$BK)PAbb}DQppt z%#zq_Bx^QH#4ppsB}1A6&WiV9W(SuI+a%c9J(_te6_TCJremfoI$>I3T- zk@T=qR*Z28EQ=N5R|;B-E6id*vlAEiFI+n6KT!=9SMQ( zoSI$YiLQm{$rct75R{zuuCFaSbK9Rk8!z7NxIo2W@z@fHPR5I^kwk5)L?KjC zQcwY135(Q<#k_(vQ+9CA3>MI4Yc%!6#PessP4=r@y}r7< zrlG#HI5{E9X|a21G05v)wGhn5)MWWwBTlT@tCkz4o>6ObtOv7FFiP5O<)>&-+T#vK zDjBnlvN54XL#up)G>qYoeZ;8KY9UvfncA(!Bii$)N^3Y1789cfNy|H zfN*xjO9g)w{57w9UC@rAcKWt0fvj((@GF#PU8@;e5|zCkPsiTS(#@?Yew=YpzT#PH zL)M-ZtAEtg$Kypovv!+hTbiWMOo4eS@USw{izT&JklpF|8d~{w+C*-0DXLSii-Wm% z>=Vz7%66Jekq^y0?_|8AJRIG21=DvCPZ_S3>uxxgzxd0p=*xTCKhZoNNQUe{GA0<6 z_3Xq1n_ohOy%s}h|Dm33raQ}y?D7wOy7iJ(?HRdaFtppD;p8yIg@{|ia~8%oC3!TL z>*oBs&h%1n_J7vp?gqE`c)JgEhQ`pXP_tGfrwW%qJ^c_Gn=Pc(<0t>mJE}aooGX0L zR@tj;0o4Xi=8OjIPtc9F*wFmkrAtH*b$ZSEsw#0R@zk(26Lly5e00{OYzgyYqE#@u z9T7;4raW@QTWCv~kx!L*SB9diR6)xYhs!JW{-|`WIxWo?rs6JkuR5!-LRjEc_)4hU z-yjHiUF;mWq4x}TR+u}A11PbgOprYl#e>Cq-fcU;ht}G;r;lU_bNExO0CS6)D)Y4H z`izO|QRroNr5Mr2yQ&p*Vn!A2N%8N%$qAN~JowB~a62UidGEVP8WYL08BXWpy z^N5zIAcUI%_(YQyhhQ4F$O8v!m0b9L rT${voa==Id-Jv{&Rt~&R*Aqqm^O delta 5372 zcmc&&3s93+7XJT`goI}h3=b88gqJ0fAZX-e68?a^3alVLvT6*!5DW<>0Rgc|o!uR` z-PMxQQCq9CTOHTd?)r$fyIZ$q#L?Ee>S(vqv9k`l-KTB0Zl&vETG?~|5DciexTC$y zncV-}bItC2J&_T%SuY(@`Igl-ofs!8v{ULnl64de| zaR_93!W4l!k`Ffpg?!=wsD)L9GjWtCl_L>m8vdpuWgulD%|dz#DGP~=6XV$S@QqXdRQ+06{HiK-braNylwOVKBrm8H9n-qauq96z z+C@1jma0R z2ryS;I8vx+kkM&S*$^LUpcq_kEmcdEgQ+1MxoaEZ;{&)jH=x0A+ziN#my`AGQ}XFn zP{q{1$MK0`8C6XgDHBx&!|{xmnue2Nk^HFxXM$Upii~e)@9l(g%wm{Ipuq1Y=uWKQ za*@u#UA(Tf3n? zr=+&lPz_7s<;++KiU#Uddwv-s?B`js^1p8s}}|9j1IQi)&%GDIw?tqzeQt*Y}fnG`@R6p zP%)6qpXw>FVjv0L_wsvb5pFALKGNMaEUf1fQ9r{wR9Gc~RW1$KEx9Ck?^RD44HCB! zaxGTxJ1;iTa0FH$Lju-<1W<1O5v1`WJhd~uGb^r$={JGy@=l#iwNS!_&9S>X@@`%J z%}X!r{PV6s2}J3$Ne!V-qRcT!%#uVM$Wk;PyeJDPU$%G4C;zNp7=$vJ9*xW^TRce9 zCpft)IT2B(lbx#V+OWhe-`lESuYS!XuYyNQI_~B0= zmPjPgXM7qI(kT1q|G0T#(L3(yUlnvLZ5%#A##2Vdhk9dB!$A1qt@O7hID zA79}lIA09ti%-+;Olj1NADo}@$8WxR{k3G%folm`&gT^RJ+$-|3@U{)ba-YQSc*sv zZv6VQ-@UwhUj(({&8odZdneJEN}uJtI?*jftMZ?2cz%cH%i@mSO0jgse>khj^eG~d zQcKw=GnO(y7!7w4REHnV-g=s_+7h|x=4u4CK7$iMXDH6ib-~H?9 zAnUnT!ygFER-IY#VcA~Kr%X19H0g+$p+#zRz68m?V+A6de+{}@E5x)G`2-UEW8R_G zFmCO-kCC;3`W8vl_8$-Z>+Q_46Q6!@K`xG>E4g)kwT(x%rP&Kta>8PLk*6?k9qzdi zx^vC)19$9StXxL~$>s!E`yMf+Lo=EHQ+tNmX@MMF8S>s*7aT-_u^)qz-3d|I^_PFY ztt0c)CA~uaTyNqMq9^G{X9-rqGETt=-a6MK*6>x{q4iZf`a_>Hs_7%n^#A1Zw%d+d zVLN_%eAUf=pB^Ae;(hxBj0j5qKdbAI_BKJzPp$Wwx$m?TB9xF+U3r@B~^P1X>yN>4~PHGX?bd zhe(JbIS@50YB9F61gwZVu9qHvq8;WogOzpGtZrpZPAbUc9*q$D8#$1#U@ z-RICegZ^Nm$+6=m*IJC-tbJtWq|81&8UVROWY8BUGMhNgEKbHNh!w*(+pHtjKblCv z%yA0veq=Q^v9)#^$swMW5hdg*^1v;cG+v3ZjlIW>NySlW={8%N7qcy9)2It)CUQYK z&IR8!j>{nA&kuKfM`gyp386@x!jGYJmq`rMM(dTSqm8vX9fmTqb79Bo@uxn*cZ|v~ zoBmV8({X8x8`a>ic;$xj@zcka1D9^c<3E6HMrVtmt=j0co4fp>k6fY2`E%)ZK7Joa z5pbATD|>Gl0IfR7#eBCFALgsmVYpQ4x=!xcTubQx68q#W#XPxfDj5TZxLBmv5XYn} z!oRO2^gFRXg*f(5hzi(kk}W z74D#DwwrJqM1^?fR&-d4{(+ADEiqd{rQf-AEVy%jH7f?%=B%Bdh~e6;YtOOcS4 diff --git a/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj b/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj index 15dfc68..cdd2c05 100644 --- a/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj +++ b/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj @@ -12,51 +12,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {2A498B2D-84B2-4BBF-9532-EA17E5BA51BB} + {08220905-AEC1-49C9-84E6-78672F9EF5F1} Win32Proj BaseMod TSExtension @@ -85,11 +49,13 @@ false - include;$(IncludePath) + include;..\..\..\CommonAPI\Common\include;$(IncludePath) + $(SolutionDir)\Mods false - include;$(IncludePath) + include;..\..\..\CommonAPI\Common\include;$(IncludePath) + $(SolutionDir)\Mods @@ -101,7 +67,7 @@ Windows true - ws2_32.lib;Dnsapi.lib;%(AdditionalDependencies) + ws2_32.lib;Dnsapi.lib;$(SolutionDir)\Common.lib;%(AdditionalDependencies) @@ -118,7 +84,7 @@ true true true - ws2_32.lib;Dnsapi.lib;%(AdditionalDependencies) + ws2_32.lib;Dnsapi.lib;$(SolutionDir)\Common.lib;%(AdditionalDependencies) diff --git a/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj.filters b/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj.filters index 1a4e732..0be7ba1 100644 --- a/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj.filters +++ b/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj.filters @@ -13,138 +13,24 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - {6d8e53d2-8590-4c42-b4e2-ff67cedefcce} - - - {5269716c-2798-40ef-aa8a-2c8e784cf99b} - Source Files - - Source Files - Source Files - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - - - Source Files\DXAPI - Source Files Source Files - - Source Files\DXAPI - - - Header Files - Header Files - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - - - Header Files\DXAPI - \ No newline at end of file diff --git a/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp b/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp index 5b3365c..074350e 100644 --- a/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp @@ -23,7 +23,9 @@ bool conShapeBaseSetCloakValue(Linker::SimObject *obj, S32 argc, const char* arg } operand.setMaskBits(0x40); + return true; } + bool conPlayerGetJumpingState(Linker::SimObject *obj, S32 argc, const char* argv[]) { DX::Player operand = DX::Player((unsigned int)obj); @@ -155,6 +157,7 @@ bool conclientCmdSetGhostTicks(Linker::SimObject *obj, S32 argc, const char* arg } return 1; } + bool conclientCmdSetProcessTicks(Linker::SimObject *obj, S32 argc, const char* argv[]) { unsigned int result_ptr = 0; unsigned int my_ptr = 0; @@ -186,6 +189,7 @@ bool conclientCmdSetProcessTicks(Linker::SimObject *obj, S32 argc, const char* a } return 1; } + bool conSetProcessTicks(Linker::SimObject *obj, S32 argc, const char* argv[]) { unsigned int result_ptr = 0; diff --git a/Mod Sources/Watchdog/Release/WatchDog.exp b/Mod Sources/Watchdog/Release/WatchDog.exp deleted file mode 100644 index 0d4a94281850e979cd9160a3c0fcef26cb0b670e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 zcmbtS!EVz)5FMvLTEu|}xF8NIltU`ON-KmSRHTR$P(%}=xJ?hNR5{+ktZ=;1uAN3z zzkwfsFY4d$1!ZPUN*i%wD6t%u)_&T9a7!CMfbii@~P7?E6&UvNUU zN#3O=R5&fuX2cxZGyr%^e%-oo|1IbIj}^~b=y%>%+`rcVj^iTvx^L1@Wf=^N>gT%9 zai-4@BD4#%BWn_L4&dIOigkEG(FS=P1mP_oH3@I~s71&V)S*py$4Aczw|w-{BfsVE zevwb8-Oms-D1_c?dF0SKIW|+Yg&4%i2aBn(a^EE74D-Ut!`&CX(MVFSA~L0==A<7& znN*H3!`NX(@Km^*!!y`x)TubPTp0^t76A-&VvRFj3eg&Gi-Z2~Bm9In4ML~Gf3wJra)Fww4zGZ7V~(njpG!?v9CH(j-P%;Y0e#4+ A6951J diff --git a/Mod Sources/Watchdog/TSExtension/Release/WatchDog.lastbuildstate b/Mod Sources/Watchdog/TSExtension/Release/WatchDog.lastbuildstate deleted file mode 100644 index f03e48f..0000000 --- a/Mod Sources/Watchdog/TSExtension/Release/WatchDog.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Users\Robert MacGregor\Documents\T2-CPP\Mod Sources\Watchdog\| diff --git a/Mod Sources/Watchdog/Watchdog.sln b/Mod Sources/Watchdog/Watchdog.sln index a04ee26..5f5e963 100644 --- a/Mod Sources/Watchdog/Watchdog.sln +++ b/Mod Sources/Watchdog/Watchdog.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual C++ Express 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TSExtension", "TSExtension\TSExtension.vcxproj", "{2A498B2D-84B2-4BBF-9532-EA17E5BA51BB}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WatchDog", "Watchdog\Watchdog.vcxproj", "{2A498B2D-84B2-4BBF-9532-EA17E5BA51BB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Mod Sources/Watchdog/Watchdog.suo b/Mod Sources/Watchdog/Watchdog.suo index 311d0217a83c6d4033ab3b255d185583c3522317..2f4512067aedd88570d26a30e69623ab761dfc36 100644 GIT binary patch delta 847 zcmZvaUr1A76u`gl?z{6|+uYpzH%+~k73h>{AdM7PY1xoe(EibbnVDOrCNtC|Z=>j; zD7W*Fq6E$!3#Q)^AA(l)AOtz;DT?T&=Uyfhh3i~taiPA;;hyvR&fj~kx+6sHq7 z@iMJz@9hIGjf+gPcz?!6QKmWQl%dPQ1LlN5%0;q6MX1u{m4$p{%DevGBC6v~I_!@;yq@xMOkwtX-bUKCV8w^$Hz zG1><;Ic>QO|0@p*hwKn{crs3JXu}dX7IgEt;{c_T@T1TRN30E8Em{*`jn#-1=ui*i zB|pVV)J9;u^g3;X&C)4a1*6Iot%glyL((>8)l&W06i=452{I`|WYl2@lqaMj1d0yw zz@E28vy21>#s?2vJz4{*^M3zp*4+|!Qk!_#B#Zwqgz5we@@5NRn{R3!?*E>Fap3GepWK%KS1*Ijvh_4Yaq zdljyn{6b;5r4Xj~)8re>Gwvi2=HpA9ol`p7-Zt{A%jIGB8F(+AUz1< dnn5QT@qaTz)710jpvM8Wu6ArV3m(n({052o2j2hy delta 1650 zcmd5+ZA@EL7(VCrgLZ30D1%bmXamfT(eCz^c9t=?K+6PiEixyVn<@PeXi9I>Uh4QT zZ5DoP$#jEv8M-XSbU*x>4t8f^;*8+-L;bOl_)}v@Ow4|$KTMZsOjh4AV4aTtJ2%fg z?|I&P-uJoZocCm|GMO)!g&d=6BZS<|=ko>3DH>J1g|Tc`?5B^hXTQ6BVqt|UkmCLF zr1B6|D$xeB*9@#u1DR4K{H40I^O^M+jqAN_y0Cw|fmi^eJ%0egjy9w;cnzjqP`;fR%Z<*%#V zlwO6uO+9d3XP2d#TTH=F?ZLFYFtO_&l@+ZNOw>+M9`4kp>0TH&rzs0}%(pb<=zAQo zxx_h(kI_;KQtBcar1}+2DH2Z z2=OuE6T~INr-;uGmk|qyMa0_H&-PWxtFDkrQ-X{eu_;Ju>D5+=G2w8(_m~upB}c`W zEfqW#Pl%CeI9XSd7K7ts;h2;Z4s+H{zh8Jk44M1I@kB736kZ;Zf+HbuxOldZTyqMc zXmo67G-eCN54dsel;b(!Q>j{i!tN0^KJj4~@Q z5O~cmpEzQP}38%tdsReh+lwb6927mJTw6l^!NGto}GY^CxqEeEIaj zZ+`iGrCwV`pDzTd%Z@Sh2GB7Xe&%%YlBg)vQWXZ>Ruouy07U_vY{N@a51#Zj;I%v) zchp0J(^T4mS4J@DIE^AA& HskMIr+Aiga diff --git a/Mod Sources/Watchdog/TSExtension/TSExtension.vcxproj.filters b/Mod Sources/Watchdog/Watchdog/TSExtension.vcxproj.filters similarity index 100% rename from Mod Sources/Watchdog/TSExtension/TSExtension.vcxproj.filters rename to Mod Sources/Watchdog/Watchdog/TSExtension.vcxproj.filters diff --git a/Mod Sources/Watchdog/Watchdog/TSExtension.vcxproj.user b/Mod Sources/Watchdog/Watchdog/TSExtension.vcxproj.user new file mode 100644 index 0000000..ace9a86 --- /dev/null +++ b/Mod Sources/Watchdog/Watchdog/TSExtension.vcxproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Mod Sources/Watchdog/TSExtension/TSExtension.vcxproj b/Mod Sources/Watchdog/Watchdog/Watchdog.vcxproj similarity index 96% rename from Mod Sources/Watchdog/TSExtension/TSExtension.vcxproj rename to Mod Sources/Watchdog/Watchdog/Watchdog.vcxproj index fe300ad..232e908 100644 --- a/Mod Sources/Watchdog/TSExtension/TSExtension.vcxproj +++ b/Mod Sources/Watchdog/Watchdog/Watchdog.vcxproj @@ -14,7 +14,7 @@ - {2A498B2D-84B2-4BBF-9532-EA17E5BA51BB} + {1C8B5AA4-B172-45DD-9D27-55F41B6F1755} Win32Proj BaseMod WatchDog @@ -44,10 +44,12 @@ false include;$(IncludePath) + $(SolutionDir)\Mods false include;$(IncludePath) + $(SolutionDir)\Mods diff --git a/Mod Sources/Watchdog/Watchdog/Watchdog.vcxproj.user b/Mod Sources/Watchdog/Watchdog/Watchdog.vcxproj.user new file mode 100644 index 0000000..ace9a86 --- /dev/null +++ b/Mod Sources/Watchdog/Watchdog/Watchdog.vcxproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Mod Sources/Watchdog/TSExtension/script/tsExtension.cs b/Mod Sources/Watchdog/Watchdog/script/tsExtension.cs similarity index 100% rename from Mod Sources/Watchdog/TSExtension/script/tsExtension.cs rename to Mod Sources/Watchdog/Watchdog/script/tsExtension.cs diff --git a/Mod Sources/Watchdog/TSExtension/source/dllmain.cpp b/Mod Sources/Watchdog/Watchdog/source/dllmain.cpp similarity index 94% rename from Mod Sources/Watchdog/TSExtension/source/dllmain.cpp rename to Mod Sources/Watchdog/Watchdog/source/dllmain.cpp index 00cb668..ba1c494 100644 --- a/Mod Sources/Watchdog/TSExtension/source/dllmain.cpp +++ b/Mod Sources/Watchdog/Watchdog/source/dllmain.cpp @@ -30,7 +30,7 @@ DWORD WINAPI WatchDogThread(LPVOID lpParam) time_t now = clock(); time_t seconds = (now - lastPet) / CLOCKS_PER_SEC; - if (!sDogPetted && seconds > 2) // Wait 2 seconds to be safe + if (!sDogPetted && seconds > 8) // Wait 8 seconds to be safe { CloseHandle(sMainThread); exit(0); diff --git a/ModLoader/Modloader.sln b/ModLoader/Modloader.sln index 47b1275..b93e2d6 100644 --- a/ModLoader/Modloader.sln +++ b/ModLoader/Modloader.sln @@ -2,6 +2,11 @@ Microsoft Visual Studio Solution File, Format Version 11.00 # Visual C++ Express 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Modloader", "Modloader\Modloader.vcxproj", "{10159605-BFF5-496F-8C23-0A1FB9850E55}" + ProjectSection(ProjectDependencies) = postProject + {9B3A3214-400B-4245-85FD-EA12D5F791D4} = {9B3A3214-400B-4245-85FD-EA12D5F791D4} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "..\CommonAPI\Common\Common.vcxproj", "{9B3A3214-400B-4245-85FD-EA12D5F791D4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -13,6 +18,10 @@ Global {10159605-BFF5-496F-8C23-0A1FB9850E55}.Debug|Win32.Build.0 = Debug|Win32 {10159605-BFF5-496F-8C23-0A1FB9850E55}.Release|Win32.ActiveCfg = Release|Win32 {10159605-BFF5-496F-8C23-0A1FB9850E55}.Release|Win32.Build.0 = Release|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Debug|Win32.ActiveCfg = Debug|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Debug|Win32.Build.0 = Debug|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Release|Win32.ActiveCfg = Release|Win32 + {9B3A3214-400B-4245-85FD-EA12D5F791D4}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ModLoader/Modloader.suo b/ModLoader/Modloader.suo index afaf197f13b56622935d428274a5f2dbae1abc76..baa90d6d5ab1eb342deb100be652e1965693b2a8 100644 GIT binary patch delta 2055 zcmc&#YfPI}7(NHSuNUqum$I%MbcInU?OG^qOqUfXAdHQ|)J?+=$SAT6C?eaq&DA;P z1ctzCh|xc~O#f&$p}&j-7?3P76E`nEOuX!uCMG6cs*XihpHqulvi&fbiQkv!doSnx z-gCb5KIi=ct%0ElH;e%>roAYN5qAiTY%(l(Oy!BujKtenomlI3^Sp z>9|nl6ancup}3WWQom5Tm2R(?zYB&R=mvz{1Nkh_3mgTG0m9!Gl>?B2zz}dE>N^P; z0A^JylB9q_bJju%CDf~V3@oMaV6nm8#QIn@&xV;4bx|nAt3vj0{JNu8Gp=k_GbXbY zx^6m70quDuXAiSvLCGOMBFa}vED`&;53@Bnw=3+L$fxA4S6~QWjwjIwZ=7Cm;SSMmV5zjWf?}YB6 zaKUYpY%KT?>!7gSn37hs29p2J6m_DCzRXQ?x8O2aMHvfG;~{GFZtt}<^;RErAonp~Uj89UTMElI2N;31@ zyEZp{y(OVha91$R^FJ)mO;__0WU=LjpeDC~C;B2M6SlbMn|$Y%JrPx&PEYxD!Cy0G zj>~#~IO*~G)Z9P;%VGXDsPZx`6{N}Scu|2W@1pL4MjE$jX(WGj%KC<8L;KMm-}+%; z@6FY#!JRvvyr`xbE2%{LNfeWcp3_^1gDvPeTF zPxHn&DJ>c*cR*1E*KC(!G*5lkKtDbD?O^|nWA=)+pFfJlRMp_7n-=0^8diNk0of4m zL7rncX%1!ucQ>dCSPU19QuG+P6H1u+v-0>uWRlIQ&9F6MP@JM+D65gd5_)sfKKUis zE2OdPrWM;GZ z$1KjKTnQ&9P3|~S?#&PsUB5){DUKLq%G2`;#O)ETh&*eXr1_FZG7%A p4${?3Sr7c1Z_T^^w_bdw=Rotq%4^Dk>HRc2`biQ}*3%8g;$KME6#@VN delta 824 zcmY*X-Ahwp7(efP&(4`T_mTT(AG)o%HXVM2A+%uSK}4ikPp zbH6Tx2rRs}dAbZ;HjoOe=&FCA3nAD=ba9f{^`_|wTb=Y4_!turZVp+i_pdL%`pg;xGCvmh2l+6eR&tcO z;wUw8%!%Wi8$`~=@l$-twc^N|<8|=HoU4Phl&phUDUCVP_?BGevY(QhjRKYCj76a2 zs-!b&)|zR+JKl$ieOz`C+hl07juq({>9|maEqoU_=SzxC2sZk<$4-x$KE#>aLh436 z!|WySLc&7pC=`3D;8J7@F;?T+M_|T;1=pyoP3+WpR9xFw98l2B8w;L$i1-!@-XROq z9G0X=>F=Rhk2+pxvm=99W+Gp;es|^!=2jAB>*Y?RG z*okxKxoV}|$8h<`LtKgs(z(laXoIU_w*SiPG*&x05sH4LzpDICr(MUXfMM-AP_zQr zjJdIO^bC4B&Qehc+tC4ya~o>ytc^;iQlf4TYP~mO5ivnjC%*7#)07YrhJ|V2hA@S& zwH=e83&_Q1Q1+)#@&wd_gp(oEyNuH|H+p#s(y0j?Bt{&O=lMIunD-;T4KGQSk(3$5 zF34?EI7nW5tJ!3xzKrA}OoSAakEQhVxSH#Zn;a{i{q^~a`@84E{kIcK-`5+|A1NC{ HzG?6;ew6Id diff --git a/ModLoader/Modloader/Debug/Modloader.lastbuildstate b/ModLoader/Modloader/Debug/Modloader.lastbuildstate deleted file mode 100644 index 2f7f7e3..0000000 --- a/ModLoader/Modloader/Debug/Modloader.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Debug|Win32|C:\Users\Robert MacGregor\Documents\T2-CPP\ModLoader\| diff --git a/ModLoader/Modloader/Debug/vc100.idb b/ModLoader/Modloader/Debug/vc100.idb deleted file mode 100644 index 943b061fbdf4a99c5302a47d8bc9c06fe852b82a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 789504 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%0A4Vr&RNaEgc<);&_E#_|y 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 false - include;$(IncludePath) + include;..\..\CommonAPI\Common\include;$(IncludePath) + IFC22 false + include;..\..\CommonAPI\Common\include;$(IncludePath) + IFC22 @@ -55,6 +58,7 @@ Windows true + $(SolutionDir)\Common.lib;%(AdditionalDependencies) @@ -72,17 +76,16 @@ true true true + $(SolutionDir)\Common.lib;%(AdditionalDependencies) - - diff --git a/ModLoader/Modloader/Modloader.vcxproj.filters b/ModLoader/Modloader/Modloader.vcxproj.filters index 495211e..0cebee3 100644 --- a/ModLoader/Modloader/Modloader.vcxproj.filters +++ b/ModLoader/Modloader/Modloader.vcxproj.filters @@ -18,9 +18,6 @@ Source Files - - Source Files - Source Files @@ -29,9 +26,6 @@ Header Files - - Header Files - Header Files diff --git a/ModLoader/Modloader/include/modLoader.h b/ModLoader/Modloader/include/modLoader.h index ee8c045..f2d795e 100644 --- a/ModLoader/Modloader/include/modLoader.h +++ b/ModLoader/Modloader/include/modLoader.h @@ -2,7 +2,7 @@ * modLoader.h */ -#include +#include // Mod Loader Implementation -bool conLoadMod(SimObject *obj,S32 argc, const char* argv[]); \ No newline at end of file +bool conLoadMod(Linker::SimObject *obj,S32 argc, const char* argv[]); \ No newline at end of file diff --git a/ModLoader/Modloader/include/t2api.h b/ModLoader/Modloader/include/t2api.h deleted file mode 100644 index 930dd4e..0000000 --- a/ModLoader/Modloader/include/t2api.h +++ /dev/null @@ -1,111 +0,0 @@ -#pragma once - -#include - -void initT2Api(); - - -//api stuff - -typedef unsigned int U32; -typedef int S32; -typedef float F32; - -typedef unsigned int dsize_t; - -//for addvariable -#define TypeS32 1 -#define TypeBool 3 -#define TypeF32 5 - - -//dshit -inline dsize_t dStrlen(const char *str) -{ - return (dsize_t)strlen(str); -} - -class Namespace { - const char* mName; -}; - - - -class SimObject{ - SimObject* group; - const char* objectName; //04h: objectName - SimObject* nextNameObject; //8 - SimObject* nextManagerNameObject; //c - SimObject* nextIdObject; //10h: nextIdObject - U32 stuff; //14 - U32 mFlags; //18h - U32 mNotifyList; //actually a pointer - U32 mId; //20h: mId - //more stuff -}; - -class SimIdDictionary -{ - enum - { - DefaultTableSize = 4096, - TableBitMask = 4095 - }; - SimObject *table[DefaultTableSize]; -}; -extern SimIdDictionary* gIdDictionary; - -class Point3F -{ - public: - F32 x; - F32 y; - F32 z; -}; - - -//GuiTSCtrl -class GuiTSCtrl {}; -class HoverVehicle {}; -void GuiTSCtrl_project(GuiTSCtrl *obj, const Point3F &pt, Point3F *dest); //fake - - -namespace Sim { - extern SimObject* (*findObject)(U32 id); -} - - -//console - -typedef const char * (*StringCallback)(SimObject *obj, S32 argc, const char *argv[]); -typedef S32 (*IntCallback)(SimObject *obj, S32 argc, const char *argv[]); -typedef F32 (*FloatCallback)(SimObject *obj, S32 argc, const char *argv[]); -typedef void (*VoidCallback)(SimObject *obj, S32 argc, const char *argv[]); -typedef bool (*BoolCallback)(SimObject *obj, S32 argc, const char *argv[]); - - -extern void (*someTest)(void); -//functions -namespace Con{ - -extern char * (*getReturnBuffer)(U32 bufferSize); - -extern void (*addMethodB)(const char *nsName, const char *name, BoolCallback cb, const char *usage, S32 minArgs, S32 maxArgs); -extern void (*addMethodS)(const char *nsName, const char *name, StringCallback cb, const char *usage, S32 minArgs, S32 maxArgs); - -extern bool (*addVariable)(const char *name, S32 t, void *dp); - -extern void (*printf)(const char* fmt,...); -extern void (*errorf)(U32 type, const char* fmt,...); - -extern const char * (*getVariable)(const char *name); -extern const char * (*execute)(S32 argc, const char *argv[]); -extern const char * (*executef)(S32 argc, ...); -extern const char * (*executem)(SimObject *object, S32 argc, const char *argv[]); -extern const char * (*evaluate)(const char* string, bool echo, const char *fileName, bool cf); -} - -//d-util -extern int (*dSscanf)(const char *buffer, const char *format, ...); -extern int (*dSprintf)(char *buffer, dsize_t bufferSize, const char *format, ...); -extern bool (*dAtob)(const char *str); \ No newline at end of file diff --git a/ModLoader/Modloader/source/modLoader.cpp b/ModLoader/Modloader/source/modLoader.cpp index 16bf3bb..9a936b1 100644 --- a/ModLoader/Modloader/source/modLoader.cpp +++ b/ModLoader/Modloader/source/modLoader.cpp @@ -3,7 +3,7 @@ */ #include "stdafx.h" -#include +#include static std::tr1::unordered_set sServerProcessResponders; @@ -27,7 +27,7 @@ void serverProcessReplacement(unsigned int timeDelta) } // Mod Loader Implementation -bool conLoadMod(SimObject *obj,S32 argc, const char* argv[]) +bool conLoadMod(Linker::SimObject *obj,S32 argc, const char* argv[]) { typedef void (*LPMODINIT)(void); HINSTANCE hDLL = NULL; @@ -42,7 +42,7 @@ bool conLoadMod(SimObject *obj,S32 argc, const char* argv[]) hDLL = LoadLibrary(modification.c_str()); if (hDLL == NULL) { - Con::errorf(0, "loadMod(): Failed to load DLL '%s'. Does it exist in GameData\mods? (%u)", raw.c_str(), GetLastError()); + Con::errorf(0, "loadMod(): Failed to load DLL '%s'. Does it exist in GameData\\mods? (%u)", raw.c_str(), GetLastError()); return false; // The DLL doesn't exist } diff --git a/ModLoader/Modloader/source/t2api.cpp b/ModLoader/Modloader/source/t2api.cpp deleted file mode 100644 index d62569a..0000000 --- a/ModLoader/Modloader/source/t2api.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include - -SimIdDictionary* gIdDictionary = reinterpret_cast(0x009E9194); - -//439550 -namespace Sim { - SimObject* (*findObject)(U32 id) = - (SimObject* (_cdecl *)(U32 id) ) - 0x439550; -} - -//hackey way to do member functions, .... -void GuiTSCtrl_project(GuiTSCtrl *obj, const Point3F &pt, Point3F *dest) { - typedef void (__cdecl *projFunc)(const Point3F &pt, Point3F *dest); - static projFunc p = (projFunc)0x4d0b40; - - __asm { - push dest; - push pt; - mov ecx,obj; - lea eax, p; - mov eax, [eax]; - call eax; - } -} - -void (*someTest)(void) = - (void (__cdecl *)(void)) - 0x4FD9B3; - -namespace Con { - -char* (*getReturnBuffer)(U32 bufferSize) = - (char *(__cdecl *)(U32)) - 0x42caa0; - -void (*addMethodB)(const char *nsName, const char *name, BoolCallback cb, const char *usage, S32 minArgs, S32 maxArgs) = - (void (__cdecl *)(const char *, const char *,BoolCallback,const char *,S32,S32)) - 0x426510; - -void (*addMethodS)(const char *, const char *,StringCallback, const char *, S32, S32) = - (void (__cdecl *)(const char *,const char *,StringCallback,const char *,S32,S32)) - 0x426410; - -bool (*addVariable)(const char *name, S32 t, void *dp) = - (bool (__cdecl *)(const char *name, S32 t, void *dp)) - 0x4263B0; - -const char * (*execute)(S32 argc, const char *argv[]) = - (const char * (__cdecl *)(S32 argc, const char *argv[])) - 0x4267A0; - -const char * (*executef)(S32 argc, ...) = - (const char * (__cdecl *)(S32 argc, ...)) - 0x4269E0; - -const char * (*evaluate)(const char* string, bool echo, const char *fileName, bool cf) = - (const char * (__cdecl *)(const char* string, bool echo, const char *fileName, bool cf)) - 0x426690; - -const char * (*executem)(SimObject *object, S32 argc, const char *argv[]) = - (const char * (__cdecl *)(SimObject *object, S32 argc, const char *argv[])) - 0x426800; - -const char * (*getVariable)(const char *name) = - (const char * (__cdecl *)(const char *name)) - 0x4261F0; - -void (*printf)(const char* fmt,...) = - (void (__cdecl *)(const char* fmt,...)) - 0x425F30; - -void (*errorf)(U32 type, const char* fmt,...)= - (void (__cdecl *)(U32, const char*,...)) - 0x425FB0; - -} - -int (*dSscanf)(const char *buffer, const char *format, ...) = - (int (__cdecl *)(const char *,const char *,...)) - 0x55b640; - -int (*dSprintf)(char *buffer, dsize_t bufferSize, const char *format, ...) = - (int (__cdecl *)(char *,dsize_t,const char *,...)) - 0x55b5e0; - -bool (*dAtob)(const char *str) = - (bool (__cdecl *)(const char *str)) - 0x55B490; diff --git a/ModLoader/Modloader/source/t2dll.cpp b/ModLoader/Modloader/source/t2dll.cpp index abe7fcc..73b2176 100644 --- a/ModLoader/Modloader/source/t2dll.cpp +++ b/ModLoader/Modloader/source/t2dll.cpp @@ -6,7 +6,7 @@ #include -#include +#include #include #include @@ -21,7 +21,7 @@ BOOL APIENTRY DllMain( HMODULE hModule, return true; } -const char* congetServPAddr(SimObject *obj, S32 argc, const char *argv[]) +const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[]) { char test[256] = ""; char test2[256]=""; @@ -38,33 +38,63 @@ const char* congetServPAddr(SimObject *obj, S32 argc, const char *argv[]) test2[8]=0;*/ return test2; } - -__declspec(dllexport) void initT2Dll(void) -{ - Con::addVariable("$cpuspeed",TypeS32,reinterpret_cast(0x8477F8)); //1 - S32, this is so i can set my cpu speed to 31337 or osmething =P - Con::addVariable("$GameBase::showBoundingBox",TypeBool,reinterpret_cast(0x9ECF24)); - - // Mod Loader Function - Con::addMethodB(NULL, "loadMod", &conLoadMod, "Loads a C++ modification.",2,2); - Con::addMethodS(NULL, "getServPAddr",&congetServPAddr,"Gets the memPatch data for ServerProcess",1,1); - - // Load the original TribesNext DLL if available - typedef void (*LPINITT2DLL)(void); - HINSTANCE hDLL = NULL; - LPINITT2DLL lpinitT2DLL = NULL; - hDLL = LoadLibrary(L"tribesnext.dll"); // AfxLoadLibrary is probably better. - - if (hDLL == NULL) - return; // The DLL doesn't exist - else - lpinitT2DLL = (LPINITT2DLL)GetProcAddress(hDLL, "_Z9initT2Dllv"); // Attempt to load our entry point - - if (lpinitT2DLL == NULL) - return; // Unable to load entry point - else - lpinitT2DLL(); // The function was loaded, call TribesNext and move on to postTN Startup -} + +class CImmCompoundEffect +{ + public: + _declspec(dllexport) int Start(unsigned long x, unsigned long y) { return 8; } + _declspec(dllexport) int Stop() { return 1; } +}; + +class CImmDevice +{ + public: + _declspec(dllexport) static CImmDevice * CreateDevice(HINSTANCE__ *, HWND__ *) + { + Con::addVariable("$cpuspeed",TypeS32,reinterpret_cast(0x8477F8)); //1 - S32, this is so i can set my cpu speed to 31337 or osmething =P + Con::addVariable("$GameBase::showBoundingBox",TypeBool,reinterpret_cast(0x9ECF24)); + + // Mod Loader Function + Con::addMethodB(NULL, "loadMod", &conLoadMod, "Loads a C++ modification.",2,2); + Con::addMethodS(NULL, "getServPAddr",&congetServPAddr,"Gets the memPatch data for ServerProcess",1,1); + + // Load the original TribesNext DLL if available + typedef void (*LPINITT2DLL)(void); + HINSTANCE hDLL = NULL; + LPINITT2DLL lpinitT2DLL = NULL; + hDLL = LoadLibrary(L"tribesnext.dll"); // AfxLoadLibrary is probably better. + + if (hDLL == NULL) + return 0; // The DLL doesn't exist + else + lpinitT2DLL = (LPINITT2DLL)GetProcAddress(hDLL, "_Z9initT2Dllv"); // Attempt to load our entry point + + if (lpinitT2DLL == NULL) + return 0; // Unable to load entry point + else + lpinitT2DLL(); // The function was loaded, call TribesNext and move on to postTN Startup + + return 0; + } + + _declspec(dllexport) int UsesWin32MouseServices(int) { return 4; } +}; + +class CImmProject +{ + public: + _declspec(dllexport) CImmProject() {} + _declspec(dllexport) ~CImmProject() {} + + _declspec(dllexport) CImmCompoundEffect *GetCreatedEffect(int) { return 0; } + _declspec(dllexport) CImmCompoundEffect *GetCreatedEffect(const char *) { return 0; } + _declspec(dllexport) CImmCompoundEffect *CreateEffect(char const *, CImmDevice *, unsigned long) { return 0; } + _declspec(dllexport) int Start(char const *, unsigned long, unsigned long, class CImmDevice *) { return 1; } + _declspec(dllexport) int Stop(const char *) { return 1; } + _declspec(dllexport) int LoadProjectFromMemory(void *, CImmDevice *) { return 1; } +}; + #ifdef _MANAGED #pragma managed(pop) #endif