diff --git a/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp b/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp index 18e29f1..5b3365c 100644 --- a/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp @@ -1,40 +1,9 @@ /** * */ -#define endian(hex) (((hex & 0x000000FF) << 24)+((hex & 0x0000FF00) << 8)+((hex & 0x00FF0000)>>8)+((hex & 0xFF000000) >> 24)) #include #include -void serverProcessReplacement(unsigned int timeDelta) { - unsigned int servertickaddr=0x602350; - unsigned int serverthisptr=0x9E5EC0; - char test[256]=""; - sprintf (test,"TSTick(%f);",(float)timeDelta/1000); - Con::evaluate(test,false,NULL,false); - __asm - { - mov ecx,serverthisptr - push timeDelta - call servertickaddr - } - - return; -} -const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[]) { - char test[256] = ""; - char test2[256]=""; - int spr=(signed int)*serverProcessReplacement; - sprintf(test2,"B8%08XFFD089EC5DC3",endian(spr)); - /*test2[0]=test[6]; - test2[1]=test[7]; - test2[2]=test[4]; - test2[3]=test[5]; - test2[4]=test[2]; - test2[5]=test[3]; - test2[6]=test[0]; - test2[7]=test[1]; - test2[8]=0;*/ - return test2; -} + const char *conGetAddress(Linker::SimObject *obj, S32 argc, const char *argv[]) { // Hmm... @@ -42,6 +11,7 @@ const char *conGetAddress(Linker::SimObject *obj, S32 argc, const char *argv[]) sprintf(result, "%x", obj); return result; } + bool conShapeBaseSetCloakValue(Linker::SimObject *obj, S32 argc, const char* argv[]) { DX::ShapeBase operand = DX::ShapeBase((unsigned int)obj); @@ -60,6 +30,7 @@ bool conPlayerGetJumpingState(Linker::SimObject *obj, S32 argc, const char* argv return operand.is_jumping; } + bool conPlayerGetJettingState(Linker::SimObject *obj, S32 argc, const char* argv[]) { DX::Player operand = DX::Player((unsigned int)obj); diff --git a/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp b/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp index 45a4b51..cf4b2b4 100644 --- a/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp @@ -75,8 +75,6 @@ extern "C" // General Con::addMethodS(NULL, "sprintf", &conSprintf,"Formats a string. See the C sprintf.", 2, 20); Con::addMethodB(NULL, "tsExtensionUpdate", &conTSExtensionUpdate,"Updates the TSExtension.", 1, 1); - Con::addMethodS(NULL, "getServPAddr",&congetServPAddr,"Gets the memPatch data for ServerProcess",1,1); - // Add this Gvar to signify that TSExtension is active diff --git a/ModLoader/CoreModSystem.sln b/ModLoader/CoreModSystem.sln deleted file mode 100755 index 20d3fd5..0000000 --- a/ModLoader/CoreModSystem.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Express 2012 for Windows Desktop -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CoreModSystem", "ModLoader.vcxproj", "{8740E782-7AC2-4A57-85D5-592C914C5285}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8740E782-7AC2-4A57-85D5-592C914C5285}.Debug|Win32.ActiveCfg = Debug|Win32 - {8740E782-7AC2-4A57-85D5-592C914C5285}.Debug|Win32.Build.0 = Debug|Win32 - {8740E782-7AC2-4A57-85D5-592C914C5285}.Release|Win32.ActiveCfg = Release|Win32 - {8740E782-7AC2-4A57-85D5-592C914C5285}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/ModLoader/CoreModSystem.suo b/ModLoader/CoreModSystem.suo deleted file mode 100755 index 16edfd0..0000000 Binary files a/ModLoader/CoreModSystem.suo and /dev/null differ diff --git a/ModLoader/CoreModSystem.v11.suo b/ModLoader/CoreModSystem.v11.suo deleted file mode 100755 index 892582a..0000000 Binary files a/ModLoader/CoreModSystem.v11.suo and /dev/null differ diff --git a/ModLoader/CoreModSystem.v12.suo b/ModLoader/CoreModSystem.v12.suo deleted file mode 100644 index f54e6fe..0000000 Binary files a/ModLoader/CoreModSystem.v12.suo and /dev/null differ diff --git a/ModLoader/ModLoader.vcxproj b/ModLoader/ModLoader.vcxproj deleted file mode 100755 index e4dde57..0000000 --- a/ModLoader/ModLoader.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {8740E782-7AC2-4A57-85D5-592C914C5285} - t2dll - Win32Proj - CoreModSystem - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - false - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - false - $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;include - $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;lib\; - $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;include - $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;lib\; - t2dll - t2dll - - - - Disabled - C:\Documents and Settings\Linker\My Documents\Code\t2dll\lualib\include;%(AdditionalIncludeDirectories) - WIN32;BULLET_WINE;_DEBUG;_WINDOWS;_USRDLL;T2DLL_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - NotUsing - Level3 - ProgramDatabase - - - %(AdditionalDependencies) - - - %(DelayLoadDLLs) - true - Windows - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - C:\Documents and Settings\Linker\My Documents\Code\t2dll\lualib\include;%(AdditionalIncludeDirectories) - WIN32;BULLET_WINE;NDEBUG;_WINDOWS;_USRDLL;T2DLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - NotUsing - Level3 - ProgramDatabase - - - %(AdditionalDependencies) - - - - - %(DelayLoadDLLs) - true - Windows - true - true - MachineX86 - - - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ModLoader/ModLoader.vcxproj.filters b/ModLoader/ModLoader.vcxproj.filters deleted file mode 100755 index 5fe155e..0000000 --- a/ModLoader/ModLoader.vcxproj.filters +++ /dev/null @@ -1,30 +0,0 @@ - - - - - {47c39120-a88e-47c4-b0a8-4bf738d54a5c} - - - {9cb2992f-6959-4153-a4c4-d9ea4d86347d} - - - - - Include - - - Include - - - - - Source - - - Source - - - Source - - - \ No newline at end of file diff --git a/ModLoader/Modloader.sln b/ModLoader/Modloader.sln new file mode 100644 index 0000000..47b1275 --- /dev/null +++ b/ModLoader/Modloader.sln @@ -0,0 +1,20 @@ + +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}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {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 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ModLoader/Modloader.suo b/ModLoader/Modloader.suo new file mode 100644 index 0000000..afaf197 Binary files /dev/null and b/ModLoader/Modloader.suo differ diff --git a/ModLoader/Modloader/Debug/Modloader.lastbuildstate b/ModLoader/Modloader/Debug/Modloader.lastbuildstate new file mode 100644 index 0000000..2f7f7e3 --- /dev/null +++ b/ModLoader/Modloader/Debug/Modloader.lastbuildstate @@ -0,0 +1,2 @@ +#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 new file mode 100644 index 0000000..943b061 Binary files /dev/null and b/ModLoader/Modloader/Debug/vc100.idb differ diff --git a/ModLoader/Modloader/Modloader.vcxproj b/ModLoader/Modloader/Modloader.vcxproj new file mode 100644 index 0000000..e776834 --- /dev/null +++ b/ModLoader/Modloader/Modloader.vcxproj @@ -0,0 +1,90 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {10159605-BFF5-496F-8C23-0A1FB9850E55} + Win32Proj + Modloader + + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + false + true + Unicode + + + + + + + + + + + + + false + include;$(IncludePath) + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;MODLOADER_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;MODLOADER_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + true + true + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ModLoader/Modloader/Modloader.vcxproj.filters b/ModLoader/Modloader/Modloader.vcxproj.filters new file mode 100644 index 0000000..495211e --- /dev/null +++ b/ModLoader/Modloader/Modloader.vcxproj.filters @@ -0,0 +1,39 @@ + + + + + {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 + + + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/ModLoader/Modloader/Modloader.vcxproj.user b/ModLoader/Modloader/Modloader.vcxproj.user new file mode 100644 index 0000000..ace9a86 --- /dev/null +++ b/ModLoader/Modloader/Modloader.vcxproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ModLoader/include/modLoader.h b/ModLoader/Modloader/include/modLoader.h similarity index 100% rename from ModLoader/include/modLoader.h rename to ModLoader/Modloader/include/modLoader.h diff --git a/ModLoader/Modloader/include/stdafx.h b/ModLoader/Modloader/include/stdafx.h new file mode 100644 index 0000000..a4e3371 --- /dev/null +++ b/ModLoader/Modloader/include/stdafx.h @@ -0,0 +1,8 @@ +// +#include +#include +#include + +typedef void (*ServerProcessPointer)(unsigned int); + +void serverProcessReplacement(unsigned int timeDelta); \ No newline at end of file diff --git a/ModLoader/include/t2api.h b/ModLoader/Modloader/include/t2api.h old mode 100755 new mode 100644 similarity index 96% rename from ModLoader/include/t2api.h rename to ModLoader/Modloader/include/t2api.h index f0aefc3..930dd4e --- a/ModLoader/include/t2api.h +++ b/ModLoader/Modloader/include/t2api.h @@ -1,111 +1,111 @@ -#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, ...); +#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/source/modLoader.cpp b/ModLoader/Modloader/source/modLoader.cpp similarity index 56% rename from ModLoader/source/modLoader.cpp rename to ModLoader/Modloader/source/modLoader.cpp index 3e00477..16bf3bb 100644 --- a/ModLoader/source/modLoader.cpp +++ b/ModLoader/Modloader/source/modLoader.cpp @@ -5,6 +5,27 @@ #include "stdafx.h" #include +static std::tr1::unordered_set sServerProcessResponders; + +void serverProcessReplacement(unsigned int timeDelta) +{ + unsigned int servertickaddr=0x602350; + unsigned int serverthisptr=0x9E5EC0; + + for (auto it = sServerProcessResponders.begin(); it != sServerProcessResponders.end(); it++) + (*it)(timeDelta); + + __asm + { + mov ecx,serverthisptr + push timeDelta + call servertickaddr + } + + return; + +} + // Mod Loader Implementation bool conLoadMod(SimObject *obj,S32 argc, const char* argv[]) { @@ -35,5 +56,15 @@ bool conLoadMod(SimObject *obj,S32 argc, const char* argv[]) lpInitMod(); Con::errorf(0, "loadMod(): Loaded and executed entry point code for mod DLL '%s'", raw.c_str()); + + // Check if there's a server process responder in this DLL + ServerProcessPointer serverProcess = (ServerProcessPointer)GetProcAddress(hDLL, "ServerProcess"); // Attempt to load our entry point + + if (serverProcess != NULL) + { + sServerProcessResponders.insert(sServerProcessResponders.end(), serverProcess); + Con::errorf(0, "loadMod(): Added server process responder for mod"); + } + return true; } \ No newline at end of file diff --git a/ModLoader/source/t2api.cpp b/ModLoader/Modloader/source/t2api.cpp old mode 100755 new mode 100644 similarity index 96% rename from ModLoader/source/t2api.cpp rename to ModLoader/Modloader/source/t2api.cpp index 137e2dc..d62569a --- a/ModLoader/source/t2api.cpp +++ b/ModLoader/Modloader/source/t2api.cpp @@ -1,89 +1,89 @@ -#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; +#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/source/t2dll.cpp b/ModLoader/Modloader/source/t2dll.cpp old mode 100755 new mode 100644 similarity index 64% rename from ModLoader/source/t2dll.cpp rename to ModLoader/Modloader/source/t2dll.cpp index a0ae70a..abe7fcc --- a/ModLoader/source/t2dll.cpp +++ b/ModLoader/Modloader/source/t2dll.cpp @@ -1,49 +1,71 @@ -/* - * t2dll.cpp - * Original code by Linker - * Modified by Robert MacGregor -*/ - -#include -#include - -#include -#include - -BOOL APIENTRY DllMain( HMODULE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved - ) -{ - return true; -} - -__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); - - // 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 -} - -#ifdef _MANAGED -#pragma managed(pop) -#endif - +/* + * t2dll.cpp + * Original code by Linker + * Modified by Robert MacGregor +*/ + +#include + +#include +#include + +#include + +#define endian(hex) (((hex & 0x000000FF) << 24)+((hex & 0x0000FF00) << 8)+((hex & 0x00FF0000)>>8)+((hex & 0xFF000000) >> 24)) + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + return true; +} + +const char* congetServPAddr(SimObject *obj, S32 argc, const char *argv[]) +{ + char test[256] = ""; + char test2[256]=""; + int spr=(signed int)*serverProcessReplacement; + sprintf(test2,"B8%08XFFD089EC5DC3",endian(spr)); + /*test2[0]=test[6]; + test2[1]=test[7]; + test2[2]=test[4]; + test2[3]=test[5]; + test2[4]=test[2]; + test2[5]=test[3]; + test2[6]=test[0]; + test2[7]=test[1]; + 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 +} + +#ifdef _MANAGED +#pragma managed(pop) +#endif +