diff --git a/Mod Sources/TSExtension/TSExtension.suo b/Mod Sources/TSExtension/TSExtension.suo index 4f15ff2..3c74cbe 100644 Binary files a/Mod Sources/TSExtension/TSExtension.suo and b/Mod Sources/TSExtension/TSExtension.suo differ diff --git a/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj b/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj index 4490b1d..a015b0d 100644 --- a/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj +++ b/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj @@ -25,6 +25,7 @@ + @@ -48,6 +49,7 @@ + diff --git a/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj.filters b/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj.filters index 174d477..f827172 100644 --- a/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj.filters +++ b/Mod Sources/TSExtension/TSExtension/TSExtension.vcxproj.filters @@ -87,6 +87,9 @@ Source Files\DXAPI + + Source Files\DXAPI + @@ -146,5 +149,8 @@ Header Files\DXAPI + + Header Files\DXAPI + \ No newline at end of file diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/DXAPI.h b/Mod Sources/TSExtension/TSExtension/include/DXAPI/DXAPI.h index 0f059a7..07c7e3e 100644 --- a/Mod Sources/TSExtension/TSExtension/include/DXAPI/DXAPI.h +++ b/Mod Sources/TSExtension/TSExtension/include/DXAPI/DXAPI.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/SimGroup.h b/Mod Sources/TSExtension/TSExtension/include/DXAPI/SimGroup.h new file mode 100644 index 0000000..6fc9cfd --- /dev/null +++ b/Mod Sources/TSExtension/TSExtension/include/DXAPI/SimGroup.h @@ -0,0 +1,14 @@ +#pragma once +#include +namespace DX +{ + class SimGroup : public SimObject + { + public: + SimGroup(unsigned int obj); + unsigned int &count; + unsigned int *simobjptr; + unsigned int SimGroup::getObject(unsigned int idx); + unsigned int SimGroup::getCount(void); + }; +}; \ No newline at end of file diff --git a/Mod Sources/TSExtension/TSExtension/include/DXAPI/SimObject.h b/Mod Sources/TSExtension/TSExtension/include/DXAPI/SimObject.h index 9f1a02b..457c606 100644 --- a/Mod Sources/TSExtension/TSExtension/include/DXAPI/SimObject.h +++ b/Mod Sources/TSExtension/TSExtension/include/DXAPI/SimObject.h @@ -8,8 +8,9 @@ namespace DX SimObject(unsigned int obj); void deleteObject(void); + const char *SimObject::getClassName(); const char *CallMethod(const char *name, unsigned int argc, ...); - + const unsigned int &type; const unsigned int &identifier; const unsigned int base_pointer_value; }; diff --git a/Mod Sources/TSExtension/TSExtension/include/DXConCmds.h b/Mod Sources/TSExtension/TSExtension/include/DXConCmds.h index e3cdd05..101b5cb 100644 --- a/Mod Sources/TSExtension/TSExtension/include/DXConCmds.h +++ b/Mod Sources/TSExtension/TSExtension/include/DXConCmds.h @@ -13,7 +13,7 @@ #pragma once #include - +bool conSetMPS(Linker::SimObject *obj, S32 argc, const char *argv[]) ; void serverProcessReplacement(unsigned int timeDelta) ; const char* conGetPosition(Linker::SimObject * obj, S32 argc, const char *argv[]); const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[]); diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/SimGroup.cpp b/Mod Sources/TSExtension/TSExtension/source/DXAPI/SimGroup.cpp new file mode 100644 index 0000000..d8ba946 --- /dev/null +++ b/Mod Sources/TSExtension/TSExtension/source/DXAPI/SimGroup.cpp @@ -0,0 +1,27 @@ +#include +#include +#include + +#include + +namespace DX +{ + + SimGroup::SimGroup(unsigned int obj) : count(*(unsigned int*)(obj+0x30)), simobjptr((unsigned int*)*(unsigned int*)(obj+0x38)), + SimObject(obj) + { + + + } + unsigned int SimGroup::getObject(unsigned int idx) { + if (idxcount) { + return simobjptr[idx]; + } else { + return 0; + } + } + unsigned int SimGroup::getCount(void) { + return this->count; + } + +}; \ No newline at end of file diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/SimObject.cpp b/Mod Sources/TSExtension/TSExtension/source/DXAPI/SimObject.cpp index ab5e7ec..2260bce 100644 --- a/Mod Sources/TSExtension/TSExtension/source/DXAPI/SimObject.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/DXAPI/SimObject.cpp @@ -6,11 +6,27 @@ namespace DX { - SimObject::SimObject(unsigned int obj) : identifier(*(unsigned int*)(obj + 32)), + SimObject::SimObject(unsigned int obj) : identifier(*(unsigned int*)(obj + 32)), type(*(unsigned int*)(obj+0x28)), base_pointer_value(obj) { } - + const char *SimObject::getClassName(){ + unsigned int bpv=this->base_pointer_value; + unsigned int cnptr=0; + unsigned int bpv2=(*(unsigned int*)bpv); + __asm { + mov ecx,bpv2 + mov eax,[ecx] + call eax + mov eax,[eax+0x1C] + mov cnptr,eax + }; + if (cnptr) { + return (char *) cnptr; + } else { + return ""; + } + } void SimObject::deleteObject(void) { void *pointer = (void*)this->base_pointer_value; diff --git a/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp b/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp index ab8c98a..bed704e 100644 --- a/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp @@ -6,22 +6,42 @@ #include #include static float counter=0; +static float mps=0.0; +void moveRecursive(unsigned int simgroup,float xoff){ + + unsigned int mainsim=(unsigned int)simgroup; + if (mainsim) { + DX::SimObject sim1=DX::SimObject(mainsim); + if (strcmp((sim1.getClassName()),"SimGroup")==0) { + DX::SimGroup sim2 = DX::SimGroup(mainsim); + for (unsigned int x=0; x=(30*180)){ - counter=0; - } - counter+=1.0; + if (Sim::findObjectc("Team1")) { + basex+=counter; + DX::SceneObject sobj = DX::SceneObject((unsigned int)Sim::findObjectc("Team1")); + moveRecursive((unsigned int)Sim::findObjectc("Team1"),(mps*((float)((timeDelta)*0.001)))); } __asm { @@ -62,6 +82,10 @@ const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[] test2[8]=0; return test2; } +bool conSetMPS(Linker::SimObject *obj, S32 argc, const char *argv[]) { + mps=atof(argv[1]); + return false; +} const char *conGetAddress(Linker::SimObject *obj, S32 argc, const char *argv[]) { // Hmm... diff --git a/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp b/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp index bb6139c..9a4a53f 100644 --- a/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp @@ -43,6 +43,7 @@ extern "C" Con::addMethodS("GrenadeProjectile", "getvelocity", &conGrenadeProjectileGetVelocity,"Gets the velocity of the GrenadeProjectile", 2, 2); Con::addMethodB("Projectile", "makeNerf", &conProjectileMakeNerf,"Makes the Projectile deal no damage", 2, 2); Con::addMethodS("SceneObject", "getPositionTest", &conGetPosition,"Gets the Rotation by alternate means as a test", 2, 2); + Con::addMethodB(NULL,"setMPS",&conSetMPS,"sets meters per second for turret", 2, 2); // TCPObject #ifdef ENABLE_TCPOBJECT Con::addMethodS("TCPObject", "connect", &conTCPObjectConnect, "Connects to a remote server", 3, 3);