Code:
#pragma once
#define GetPlayerByIndex(LTClientShell, dwID) (CPlayer*)(LTClientShell + (dwID * dwCPlayerSize) + dwCPlayerStart)
LPD3DXFONT pFont;
void StartFont(LPDIRECT3DDEVICE9 pDevice)
{
bool bFont = false;
if (pFont)
{
pFont->Release();
pFont = NULL;
bFont = FALSE;
}
if (!bFont)
{
D3DXCreateFont(pDevice, 14, 0, 400, 1, 0, 1, 0, 4, 0 | (0 << 4), "Arial", &pFont);
bFont = TRUE;
}
}
void lWriteText(int x, int y, DWORD color, char *text)
{
RECT rect;
SetRect(&rect, x, y, x, y);
pFont->DrawText(0, text, -1, &rect, DT_NOCLIP | DT_RIGHT, color);
}
void cWriteText(int x, int y, DWORD color, char *text)
{
RECT rect;
SetRect(&rect, x, y, x, y);
pFont->DrawText(0, text, -1, &rect, DT_NOCLIP | DT_CENTER, color);
}
void FillRGB(LPDIRECT3DDEVICE9 pDevice, int x, int y, int w, int h, D3DCOLOR color)
{
D3DRECT rec = { x, y, x + w, y + h };
pDevice->Clear(1, &rec, D3DCLEAR_TARGET, color, 0, 0);
}
void DrawBorder(LPDIRECT3DDEVICE9 pDevice, int x, int y, int w, int h, int px, D3DCOLOR BorderColor)
{
FillRGB(pDevice, x, (y + h - px), w, px, BorderColor);
FillRGB(pDevice, x, y, px, h, BorderColor);
FillRGB(pDevice, x, y, w, px, BorderColor);
FillRGB(pDevice, x + w - px, y, px, h, BorderColor);
}
bool Trans3DTo2D(LPDIRECT3DDEVICE9 pDevice, D3DXVECTOR3 *InOut)
{
D3DXVECTOR3 vScreen;
D3DXVECTOR3 PlayerPos(InOut->x, InOut->y, InOut->z);
D3DVIEWPORT9 viewPort = { 0 };
D3DXMATRIX projection, view, world;
pDevice->GetTransform(D3DTS_VIEW, &view);
pDevice->GetTransform(D3DTS_PROJECTION, &projection);
pDevice->GetTransform(D3DTS_WORLD, &world);
pDevice->GetViewport(&viewPort);
D3DXVec3Project(&vScreen, &PlayerPos, &viewPort, &projection, &view, &world);
if (vScreen.z < 1.0f && vScreen.x > 0.0f && vScreen.y > 0.0f && vScreen.x < viewPort.Width && vScreen.y < viewPort.Height)
{
*InOut = vScreen;
return true;
}
return false;
}
bool WorldToScreen(LPDIRECT3DDEVICE9 pDevice, D3DXVECTOR3 vWorld, D3DXVECTOR3 *Position)
{
D3DVIEWPORT9 ViewPort;
D3DXMATRIX Projection, View, World;
pDevice->GetTransform(D3DTS_VIEW, &View);
pDevice->GetTransform(D3DTS_PROJECTION, &Projection);
pDevice->GetTransform(D3DTS_WORLD, &World);
pDevice->GetViewport(&ViewPort);
D3DXVec3Project(Position, &vWorld, &ViewPort, &Projection, &View, &World);
if (Position->x < 0.0f || Position->y < 0.0f || Position->x > ViewPort.Width || Position->y > ViewPort.Height)
return 0;
return(Position->z < 1.0f);
}
struct D3DTLVERTEX
{
float x, y, z, rhw;
DWORD color;
};
void DrawLine(LPDIRECT3DDEVICE9 pDevice, float X, float Y, float X2, float Y2, DWORD dwColor)
{
if (!pDevice) return;
D3DTLVERTEX qV[2] =
{
{ (float)X, (float)Y, 0.0f, 1.0f, dwColor },
{ (float)X2, (float)Y2, 0.0f, 1.0f, dwColor },
};
pDevice->SetTexture(0, NULL);
pDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, 1);
pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
pDevice->DrawPrimitiveUP(D3DPT_LINELIST, 1, qV, sizeof(D3DTLVERTEX));
}
char GetMyIndex(DWORD pLTCLientShell)
{
if (pLTCLientShell)
{
BYTE clients = *(BYTE*)(pLTCLientShell + dwCPlayerStart);
if (clients < 16)
return *(char*)(pLTCLientShell + clients * dwCPlayerSize + MEOffset);
}
return -1;
}
bool IsValidClient(CPlayer* Clients)
{
if ((Clients != 0) && (Clients->Object != 0) && (!Clients->CharacterFX->IsDead))
return true;
return false;
}
bool IsTM(DWORD pLTClientShell, CPlayer* pPlayer)
{
bool IsAlly = true;
CPlayer* Me = GetPlayerByIndex(pLTClientShell, GetMyIndex(pLTClientShell));
if (Me->Team != pPlayer->Team)
IsAlly = false;
return IsAlly;
}
D3DXVECTOR3 GetMidPoint(D3DXVECTOR3 V1, D3DXVECTOR3 V2)
{
D3DXVECTOR3 Mid;
Mid.x = (V1.x + V2.x) / 2;
Mid.y = (V1.y + V2.y) / 2;
Mid.z = (V1.z + V2.z) / 2;
return Mid;
}
void GetBonePositionEx(cObject* obj, UINT Bone, Transform* Trans)
{
DWORD CShell = (DWORD)GetModuleHandleA(eCShell);
if (!CShell) return;
DWORD pLTModel = *(DWORD*)(CShell + aLTModel);
__asm
{
MOV ECX, pLTModel
MOV EDX, DWORD PTR DS : [ECX]
MOV EDX, DWORD PTR DS : [EDX + 0x3C]
PUSH 1
PUSH Trans
PUSH Bone
PUSH obj
CALL EDX
}
}
//006BAE98 68 048A1701 PUSH crossfir.01178A04
void GetNodePosition(cObject* obj, UINT Bone, D3DXVECTOR3 &Out)
{
Transform Trans;
GetBonePositionEx(obj, Bone, &Trans);
Out = Trans.Pos;
Out.y += 5;
}
void DrawBone(LPDIRECT3DDEVICE9 pDevice, cObject *Obj, UINT iStart, UINT iEnd, D3DCOLOR Color)
{
D3DXVECTOR3 StartPos, EndPos;
GetNodePosition(Obj, iStart, StartPos);
GetNodePosition(Obj, iEnd, EndPos);
if (Trans3DTo2D(pDevice, &StartPos) && Trans3DTo2D(pDevice, &EndPos))
DrawLine(pDevice, StartPos.x, StartPos.y, EndPos.x, EndPos.y, hWhite);
}
D3DXVECTOR3 GetBonePosition(cObject* obj, UINT Bone)
{
Transform Trans;
GetBonePositionEx(obj, Bone, &Trans);
return (Trans.Pos);
}
float CalculateDist(D3DXVECTOR3 from, D3DXVECTOR3 to)
{
float _x, _y, _z;
_x = to.x - from.x;
_y = to.y - from.y;
_z = to.z - from.z;
return sqrt(_x*_x + _y*_y + _z*_z);
}
IntersectQuery iQuery;
IntersectInfo iInfo;
typedef bool(*IntersectSegment)(const IntersectQuery& Query, IntersectInfo *pInfo);
IntersectSegment oIntersectSegment;
bool __cdecl IsVisible2(D3DXVECTOR3 MePos, D3DXVECTOR3 TargetPos)
{
oIntersectSegment = (IntersectSegment)(aIntersectSegment);
iQuery.m_From = MePos;
iQuery.m_To = TargetPos;
return !oIntersectSegment(iQuery, &iInfo);
}
void FillRGB2(int x, int y, int w, int h, D3DCOLOR color, IDirect3DDevice9* pDevice)
{
if (w < 0)w = 1;
if (h < 0)h = 1;
if (x < 0)x = 1;
if (y < 0)y = 1;
D3DRECT rec = { x, y, x + w, y + h };
pDevice->Clear(1, &rec, D3DCLEAR_TARGET, color, 0, 0);
}
ID3DXLine *pLine = NULL;
// DrawBordere
void DrawBordere(int x, int y, int w, int h, int px, D3DCOLOR BorderColor, IDirect3DDevice9* pDevice)
{
FillRGB2(x, (y + h - px), w, px, BorderColor, pDevice);
FillRGB2(x, y, px, h, BorderColor, pDevice);
FillRGB2(x, y, w, px, BorderColor, pDevice);
FillRGB2((x + w - px), y, px, h, BorderColor, pDevice);
}
void DrawEspBox2(CPlayer* Player, DWORD dwColor, LPDIRECT3DDEVICE9 pDevice)
{
D3DXVECTOR3 Head = GetBonePosition(Player->Object, 6);
D3DXVECTOR3 Foot = GetBonePosition(Player->Object, 28);
if (Trans3DTo2D(pDevice, &Head) && Trans3DTo2D(pDevice, &Foot))
{
D3DXVECTOR3 Box = Head - Foot;
if (Box.y < 0)
Box.y *= -1;
int BoxWidth = (int)Box.y / 2;
int DrawX = (int)Head.x - (BoxWidth / 2);
int DrawY = (int)Head.y;
DrawBordere(DrawX, DrawY, BoxWidth, Box.y, 1, dwColor, pDevice);
}
}
void DrawHealthBar2(LPDIRECT3DDEVICE9 pDevice, float x, float y, DWORD health)
{
DWORD dwColor;
if (health > 100)
health = 100;
if (health > 75)
dwColor = 0xFF00FF00;
else if (health > 40)
dwColor = 0xFFFF9B00;
else
dwColor = 0xFFFF0000;
DWORD dwDrawWidth = health / 10;
if (dwDrawWidth <= 2)
dwDrawWidth = 4;
FillRGB2(x + 8, y - 1, 12, 0xFF000000, 5, pDevice);
FillRGB2(x + 8, y, dwDrawWidth, 3, dwColor, pDevice);
}
void WriteText(int x, int y, DWORD color, char *text)
{
RECT rect;
SetRect(&rect, x, y, x, y);
pFont->DrawText(0, text, -1, &rect, DT_NOCLIP | DT_LEFT, color);
}
void DrawHealthBars(D3DXVECTOR3 head, D3DXVECTOR3 foot, WORD health, LPDIRECT3DDEVICE9 pDevice)
{
DWORD dwColor;
D3DXVECTOR3 Box = head - foot;
if (Box.y < 0)
Box.y *= -1;
int BoxWidth = (int)Box.y / 2;
int DrawX = (int)head.x - (BoxWidth / 2);
int DrawY = (int)head.y;
DWORD dwDrawWidth = health * (foot.y - head.y) / 100;
if (health > 75)
dwColor = hGreen;
else if (health > 40)
dwColor = hOrange;
else
dwColor = hRed;
FillRGB2(DrawX - 6, DrawY - 1, 5, (int)Box.y + 2, hBlack, pDevice);
FillRGB2(DrawX - 5, DrawY, 3, dwDrawWidth, dwColor, pDevice);
}
void DrawBBox(D3DXVECTOR3 Head, D3DXVECTOR3 Foot, DWORD dwColor, LPDIRECT3DDEVICE9 pDevice)
{
D3DXVECTOR3 Box = Head - Foot;
if (Box.y < 0)
Box.y *= -1;
int BoxWidth = (int)Box.y / 2;
int DrawX = (int)Head.x - (BoxWidth / 2);
int DrawY = (int)Head.y;
DrawBordere(DrawX + 1, DrawY, BoxWidth, (int)Box.y, 1, hBlack, pDevice);
DrawBordere(DrawX, DrawY, BoxWidth, (int)Box.y, 1, dwColor, pDevice);
}
void PlayerESP(LPDIRECT3DDEVICE9 pDevice)
{
if (!GetModuleHandle(eCShell)) return;
if (!GetModuleHandle(eClient)) return;
DWORD CShell = (DWORD)GetModuleHandleA(eCShell);
DWORD pLTClientShell = *(DWORD*)(CShell + aLTClientShell);
CPlayer* Me = GetPlayerByIndex(pLTClientShell, GetMyIndex(pLTClientShell));
CPlayer *pLocal;
for (int i = 0; i < 16; i++)
{
CPlayer* pPlayer = GetPlayerByIndex(pLTClientShell, i);
D3DXVECTOR3 Body = GetBonePosition(pPlayer->Object, 2);
D3DXVECTOR3 Head = GetBonePosition(pPlayer->Object, 6);
D3DXVECTOR3 Foot = GetBonePosition(pPlayer->Object, 23);
D3DXVECTOR3 MidPosition = GetMidPoint(GetBonePosition(pPlayer->Object, 6), GetBonePosition(pPlayer->Object, 3));
D3DXVECTOR3 pLeftFoot = MidPosition + D3DXVECTOR3(-50, -180, 0); // <- Left Bottom
Transform Foot2, vHead, vFoot;
int BONE_ID = 6;
DWORD ESP_Color = 0;
DWORD healthcolor = 0xFF00FF00;
CPlayer* Target = GetPlayerByIndex(pLTClientShell, i);
if (Me->Team != pPlayer->Team)
{
if (IsVisible2(GetBonePosition(Me->Object, BONE_ID), GetBonePosition(Target->Object, BONE_ID)))
{
if (VisibleCheck)
{
ESP_Color = YourColor;
}
else
{
ESP_Color = YourColor;
}
}
else
{
ESP_Color = YourColor;
}
}
else
{
ESP_Color = YourColor;
}
DWORD pCLTPlayerClient = *(DWORD*)(CShell + aCLTPlayerClient + CLTPlayerClientOffset);
if (WorldToScreen(pDevice, Foot, &vFoot.Pos) && WorldToScreen(pDevice, Head, &vHead.Pos) && WorldToScreen(pDevice, pLeftFoot, &Foot2.Pos))
{
if (pCLTPlayerClient != 0)
{
if (IsValidClient(pPlayer) && pPlayer != Me)
{
if (pPlayer->CharacterFX->IsVulnerable)
{
ESP_Color = hWhite;
pPlayer->Health = 100;
}
if (pPlayer->CharacterFX->IsDead && pPlayer->Health == 0)
{
pPlayer->Health = 100;
}
D3DVIEWPORT9 viewP;
pDevice->GetViewport(&viewP);
DWORD ScreenCenterX = viewP.Width / 2;
DWORD ScreenCenterY = viewP.Height / 20;
char pNAME[10000];
char pHealth[10000];
char Weapon[100000];
char szRank[100];
char txt[0x30];
char txtt[0x30];
char *HasC4 = "->Has C4<-";
if (NameESP)
{
sprintf_s(pNAME, "%s", (int)pPlayer->Name);
draw.Text(vHead.Pos.x - 4, vHead.Pos.y - 20, pNAME, ESP_Color, false, kCenter);
}
if (BoxESP)
{
//DrawEspBox2(pPlayer, ESP_Color, pDevice);
DrawBBox(vHead.Pos, Foot2.Pos, ESP_Color, pDevice);
}
if (DistanceESP)
{
sprintf_s(txt, "[%d M]", (DWORD)(CalculateDist(Me->Object->Body, pPlayer->Object->Body) / 100));
draw.Text(vHead.Pos.x - 4, Foot2.Pos.y, txt, ESP_Color, false, kCenter);
}
if (HealthBarESP)
{
int drawY = vHead.Pos.y - 15;
if (pPlayer->Health > 100)
{
pPlayer->Health = 100;
}
//DrawHealthBar2(pDevice, vHead.Pos.x - 13, drawY + 8, pPlayer->Health);
DrawHealthBars(vHead.Pos, Foot2.Pos, pPlayer->Health, pDevice);
}
if (LineESP)
{
DrawLine(pDevice, ScreenCenterX, ScreenCenterY, vHead.Pos.x, vHead.Pos.y, ESP_Color);
}
if (SkeletonESP)
{
DrawBone(pDevice, pPlayer->Object, 6, 0, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 5, 6, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 4, 5, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 3, 4, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 2, 3, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 1, 2, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 21, 1, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 22, 21, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 23, 22, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 24, 23, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 25, 1, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 26, 25, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 27, 26, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 28, 27, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 14, 5, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 15, 14, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 16, 15, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 17, 16, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 18, 17, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 19, 17, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 20, 17, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 7, 5, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 8, 7, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 9, 8, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 10, 9, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 11, 10, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 12, 10, ESP_Color);
DrawBone(pDevice, pPlayer->Object, 13, 10, ESP_Color);
}
}
}
}
}
}
Code:
#pragma once
typedef unsigned int uint;
typedef char int8;
typedef unsigned char uint8;
typedef short int int16;
typedef unsigned short int uint16;
typedef int int32;
typedef unsigned int uint32;
typedef unsigned int LTBOOL;
typedef float LTFLOAT;
typedef double LTDOUBLE;
typedef uint32 LTRESULT;
typedef void* HOBJECT;
typedef void* HLOCALOBJ;
typedef uint32 HMODELPIECE;
#define INVALID_MODEL_PIECE ((HMODELPIECE)-1)
typedef uint32 HMODELSOCKET;
#define INVALID_MODEL_SOCKET ((HMODELSOCKET)-1)
typedef uint32 HMODELNODE;
#define INVALID_MODEL_NODE ((HMODELNODE)-1)
typedef uint32 HMODELWEIGHTSET;
#define INVALID_MODEL_WEIGHTSET ((HMODELWEIGHTSET)-1)
typedef uint32 HMODELANIM;
#define INVALID_MODEL_ANIM ((HMODELANIM)-1)
struct UnkStruct
{
char spacer[0x11740];
short CurrentGun;
char spacer2[3];
char IsMutant;
char IsVisible;
bool IsDead;
};
struct Transform
{
D3DXVECTOR3 Pos;
unsigned char Spacer[0x100];
};
struct cObject
{
public:
char Spacer[4];
D3DXVECTOR3 Body;
D3DXVECTOR3 Foot;
D3DXVECTOR3 Head;
};
class CCharacterHitBox
{
public:
char pad_0000[324]; //0x0000
}; //Size: 0x0144
class LTVector
{
public:
float x, y, z;
};
class LTRotation
{
public:
float x, y, z, w;
};
class LTObject
{
public:
char _0x0000[4];
LTVector BoxMin; //0x0004
LTVector BoxMax; //0x0010
char _0x001C[128];
LTVector Scale; //0x009C
char _0x00A8[4];
unsigned int Type; //0x00AC
char _0x00B0[8];
LTVector Dimentions; //0x00B8
char _0x00C4[12];
LTVector ModelCullingPosition; //0x00D0
char _0x00DC[4];
LTVector Position; //0x00E0
LTRotation Rotation; //0x00EC
D3DXVECTOR3 Velocity; //0x00FC
LTVector GlobalForceOverride; //0x0108
char _0x0114[8];
LTVector Acceleration; //0x011C
};//Size=0x0128
class cLTCharacterFX
{
public:
char pad_0000[0x204]; //0x0000
BYTE IsDead; //0x204
char pad_0208[0xF]; //0x0205
BYTE IsVulnerable; //0x0214
char pad_0218[0x49667]; //0x0215
unsigned int CurrentWeapon; //0x4987C
};
struct CPlayer
{
char Spacer00[8];
cObject* Object;
char ClientID;
char Team;
char Name[12];
char Spacer01[2];
cLTCharacterFX* CharacterFX;
int PlayerSlotTeam;
int unkstruct1;
bool Has_C4;
int State;
int Rank;
int unkstruct2;
int unkstruct3;
short Health;
short Kills;
__int32 Deaths;
__int32 HeadShots;
__int32 TeamID;
__int32 Ping;
};
struct CPlayer2
{
char Spacer00[8];
LTObject* Object;
char ClientID;
char Team;
char Name[12];
char Spacer01[2];
UnkStruct *unk; //int SHIT; //
int PlayerSlotTeam;
int unkstruct1;
bool Has_C4;
int State;
int Rank;
int unkstruct2;
int unkstruct3;
short Health;
short Kills;
__int32 Deaths;
__int32 HeadShots;
__int32 TeamID;
__int32 Ping;
};
typedef bool(*ObjectFilterFn)(cObject* hObj, void *pUserData);
struct IntersectInfo
{
D3DXVECTOR3 vImpactPos; //0x0000
char unknown12[16];
cObject* hObjImpact; //0x001C
DWORD nSomething; //0x0020
DWORD nSomething2; //0x0024
DWORD nSomething3; //0x0028
};
struct IntersectQuery
{
D3DXVECTOR3 m_From; //0x0000
D3DXVECTOR3 m_To; //0x000C
char unknown24[12];
unsigned int Flags; //0x0024
ObjectFilterFn FilterFn; //0x0028
void* FilterIntersectParam; //0x002C
ObjectFilterFn FilterIntersectFn; //0x0030
void* FilterParam; //0x0034
void* PolyFilterParam; //0x0038
//PolyFilterFn PolyFilterFn; //0x003C
};
class CPlayerPos
{
public:
char Spacer[0xDC];
D3DXVECTOR3 Pos;
};
class thirdperson
{
public:
char _0x0000[100];
__int32 Mode;
};
class CLTPlayerClient
{
public:
char _0x0000[40];
thirdperson *thrdperson;
};
static char* ranks[] =
{
"Trainee 1",
"Trainee 2",
"Private",
"PFC",
"Corporal",
"Sergeant 1",
"Sergeant 2",
"Sergeant 3",
"Sergeant 4",
"Staff Sergeant 1",
"Staff Sergeant 2",
"Staff Sergeant 3",
"Staff Sergeant 4",
"Staff Sergeant 5",
"Staff Sergeant 6",
"SFC 1",
"SFC 2",
"SFC 3",
"SFC 4",
"SFC 5",
"SFC 6",
"Master Sergeant 1",
"Master Sergeant 2",
"Master Sergeant 3",
"Master Sergeant 4",
"Master Sergeant 5",
"Master Sergeant 6",
"2nd Lieutenant 1",
"2nd Lieutenant 2",
"2nd Lieutenant 3",
"2nd Lieutenant 4",
"2nd Lieutenant 5",
"2nd Lieutenant 6",
"2nd Lieutenant 7",
"2nd Lieutenant 8",
"1st Lieutenant 1",
"1st Lieutenant 2",
"1st Lieutenant 3",
"1st Lieutenant 4",
"1st Lieutenant 5",
"1st Lieutenant 6",
"1st Lieutenant 7",
"1st Lieutenant 8",
"Captain 1",
"Captain 2",
"Captain 3",
"Captain 4",
"Captain 5",
"Captain 6",
"Captain 7",
"Captain 8",
"Major 1",
"Major 2",
"Major 3",
"Major 4",
"Major 5",
"Major 6",
"Major 7",
"Major 8",
"Lieutenant Colonel 1",
"Lieutenant Colonel 2",
"Lieutenant Colonel 3",
"Lieutenant Colonel 4",
"Lieutenant Colonel 5",
"Lieutenant Colonel 6",
"Lieutenant Colonel 7",
"Lieutenant Colonel 8",
"Colonel 1",
"Colonel 2",
"Colonel 3",
"Colonel 4",
"Colonel 5",
"Colonel 6",
"Colonel 7",
"Colonel 8",
"Brigadiar General 1",
"Brigadiar General 2",
"Brigadiar General 3",
"Brigadiar General 4",
"Brigadiar General 5",
"Brigadiar General 6",
"Major General 1",
"Major General 2",
"Major General 3",
"Major General 4",
"Major General 5",
"Major General 6",
"Lieutenant General 1",
"Lieutenant General 2",
"Lieutenant General 3",
"Lieutenant General 4",
"Lieutenant General 5",
"Lieutenant General 6",
"General 1",
"General 2",
"General 3",
"General 4",
"General 5",
"General 6",
"Marshal"
};