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);