Solved AssaultCube ESP

Hexui Undetected CSGO Cheats Sinkicheat PUBG Cheat

Dretch

Newbie
Full Member
Sep 17, 2015
26
229
2
Hello there!
I have been trying to create an ESP hack for AssaultCube. I have watched the tutorials that Fleep made but my I can't get it to work. The rectangles, that should reveal the enemies, are drawn only at some point nowhere near the enemies. At first, I thought I had wrong address for the view matrix. But I tried all addresses I found and it still did not work. I suppose I have got something wrong in the code OR the ESP hack for AssaultCube is done differently than in Fleep's ESP tutorial.
So my question is: does anyone have any experience with doing ESP for AssaultCube? If so, what's the actual address for view matrix (I thought it's 0x501AE8)?
This is what it looks like (no enemies behind those walls):

and if I move my mouse to the left, the rectangles fly away.
 

mambda

headass
Escobar Tier VIP
Trump Tier Donator
Jun 25, 2014
2,294
37,938
269
It seems I can't get it to work. The ESP rectangles flash in the middle of the game window only when I move my mouse and still the enemy is not there.
Here are some values that I got using your function (vec3d& out):

These values are obviously wrong. It just draws the rectangles in the middle of my screen and that's all. Sometimes they are visible, sometimes they are drawn far away from the middle of the game screen so I can't even see them. Weird. o.0

EDIT: Values of enemy coords are okay, isn't there something wrong with the function?
EDIT 2: Oh, maybe I should use it in internal hack, not external.. because ViewMatrix[1] and so on show nonsense values.
EDIT 3: Ok, now it's drawn normally, but not where the enemies are.
Do I understand it correctly if I think that from 0x501AE8 to 0x501AE8 + 0x3C are the ViewMatrix[] values?

Viewmatrix is a float[4][4] so in total you'll have 16 floats, which is 16*4 = 64d aka 0x40
So if thats your viewmatrix offset then you want to read 0x40 bytes, not 0x3C ( so just 4 more bytes. )
What value does ViewMatrix[1] and so on show?

If you want to see a complete assault cube ESP:
https://guidedhacking.com/resources/rakes-assault-cube-aimbot-multihack.20/

 
Last edited by a moderator:

Solaire

Respected Hacker
Dank Tier VIP
Dec 15, 2013
1,051
16,353
62
0x501AE8 is the correct address.

C++:
bool WorldToScreen(Vec3D In, Vec3D& Out, float * ViewMatrix){
    Out.x = In.x * ViewMatrix[0] + In.y * ViewMatrix[4] + In.z * ViewMatrix[8]  + ViewMatrix[12];
    Out.y = In.x * ViewMatrix[1] + In.y * ViewMatrix[5] + In.z * ViewMatrix[9]  + ViewMatrix[13];
    Out.z = In.x * ViewMatrix[2] + In.y * ViewMatrix[6] + In.z * ViewMatrix[10] + ViewMatrix[14];
    float w = In.x * ViewMatrix[3] + In.y * ViewMatrix[7] + In.z * ViewMatrix[11] + ViewMatrix[15];

    if (w < 0.0)
        return false;

    Out.x /= w;
    Out.y /= w;
    Out.z /= w;

    Out.x *= 800 / 2.0f;
    Out.x += 800 / 2.0f;

    Out.y *= -600 / 2.0f;
    Out.y += 600 / 2.0f;

    return true;
}
Funct works, Fleep's W2S function does not work for assaultcube.

C++:
    Out.x *= 800 / 2.0f;
    Out.x += 800 / 2.0f;

    Out.y *= -600 / 2.0f;
    Out.y += 600 / 2.0f;
Make sure you replace 800 and 600 with the game's screen width and height. You could do it without using magic numbers, but I was lazy when I put this together.
 

Dretch

Newbie
Full Member
Sep 17, 2015
26
229
2
Oh, thank you. And why doesn't the Fleep's W2S fucntion work for AssaultCube? I'm just curious.
 

Solaire

Respected Hacker
Dank Tier VIP
Dec 15, 2013
1,051
16,353
62
Oh, thank you. And why doesn't the Fleep's W2S fucntion work for AssaultCube? I'm just curious.
Probably something to do with the differences in how coords are worked, + how the viewmatrix works between OpenGL and DirectX (Not sure if they do work differently, but judging based on different W2S sources, I'd say yeh).

AssaultCube has coords where X and Y are the ground coords, and CSS has it where X and Z are the ground coords. This could easily fudge up his function if you didn't switch things around. There is also the matter of the W2S stuff.
 

Dretch

Newbie
Full Member
Sep 17, 2015
26
229
2
0x501AE8 is the correct address.

C++:
bool WorldToScreen(Vec3D In, Vec3D& Out, float * ViewMatrix){
    Out.x = In.x * ViewMatrix[0] + In.y * ViewMatrix[4] + In.z * ViewMatrix[8]  + ViewMatrix[12];
    Out.y = In.x * ViewMatrix[1] + In.y * ViewMatrix[5] + In.z * ViewMatrix[9]  + ViewMatrix[13];
    Out.z = In.x * ViewMatrix[2] + In.y * ViewMatrix[6] + In.z * ViewMatrix[10] + ViewMatrix[14];
    float w = In.x * ViewMatrix[3] + In.y * ViewMatrix[7] + In.z * ViewMatrix[11] + ViewMatrix[15];

    if (w < 0.0)
        return false;

    Out.x /= w;
    Out.y /= w;
    Out.z /= w;

    Out.x *= 800 / 2.0f;
    Out.x += 800 / 2.0f;

    Out.y *= -600 / 2.0f;
    Out.y += 600 / 2.0f;

    return true;
}
It seems I can't get it to work. The ESP rectangles flash in the middle of the game window only when I move my mouse and still the enemy is not there.
Here are some values that I got using your function (vec3d& out):

These values are obviously wrong. It just draws the rectangles in the middle of my screen and that's all. Sometimes they are visible, sometimes they are drawn far away from the middle of the game screen so I can't even see them. Weird. o.0

EDIT: Values of enemy coords are okay, isn't there something wrong with the function?
EDIT 2: Oh, maybe I should use it in internal hack, not external.. because ViewMatrix[1] and so on show nonsense values.
EDIT 3: Ok, now it's drawn normally, but not where the enemies are.
Do I understand it correctly if I think that from 0x501AE8 to 0x501AE8 + 0x3C are the ViewMatrix[] values?
 
Last edited:

Rake

Cesspool Admin
Administrator
Jan 21, 2014
12,073
78,998
2,371
So if thats your viewmatrix offset then you want to read 0x40 bytes, not 0x3C ( so just 4 more bytes. )
I think that's it, everything else looks good nice catch mambda
 

Dretch

Newbie
Full Member
Sep 17, 2015
26
229
2
Viewmatrix is a float[4][4] so in total you'll have 16 floats, which is 16*4 = 64d aka 0x40
So if thats your viewmatrix offset then you want to read 0x40 bytes, not 0x3C ( so just 4 more bytes. )
What value does ViewMatrix[1] and so on show?
Well, I thought it worked like this:

The numbers are the numbers of the float array (for example ViewMatrix[5], etc.) and these were the current values. I am a bit confused now, I am sorry. =D
 

Solaire

Respected Hacker
Dank Tier VIP
Dec 15, 2013
1,051
16,353
62
Well, I thought it worked like this:

The numbers are the numbers of the float array (for example ViewMatrix[5], etc.) and these were the current values. I am a bit confused now, I am sorry. =D
Structure dissect has a tendency to mess things up sometimes. Delete 0x39, 0x3A, and 0x3B by pressing Delete / Del. That should realign things. Btw, 0x3C is actually the 16th float. The offsets just happen to be messed up because CE structure dissect tends to do that.
 

mambda

headass
Escobar Tier VIP
Trump Tier Donator
Jun 25, 2014
2,294
37,938
269
Looks good to me.
Here's a nice article for it: https://www.codinglabs.net/article_world_view_projection_matrix.aspx scroll down a bit and you'd see the generic layout of a vmatrix

xx yx zx wx
xy yy zy wy
xz yz zz wz
0 0 0 1

can be transposed of course so you can see it in different ways in certain games

So anyways, could possibly make due with this bit: A snippet from w2s that i used to use for a few games

C++:
		float fl1DBw = 1 / w; //Divide 1 by the angle.
		vScreen.x = (Width / 2) + (0.5 * ((worldToScreen[0][0] * vOrigin[0] + worldToScreen[0][1] * vOrigin[1] + worldToScreen[0][2] * vOrigin[2] + worldToScreen[0][3]) * fl1DBw) * Width + 0.5); //Get the X dimension and push it in to the Vector.
		vScreen.y = (Height / 2) - (0.5 * ((worldToScreen[1][0] * vOrigin[0] + worldToScreen[1][1] * vOrigin[1] + worldToScreen[1][2] * vOrigin[2] + worldToScreen[1][3]) * fl1DBw) * Height + 0.5); //Get the Y dimension and push it in to the Vector.
vOrigin just being a vector of xyz, wordlToScreen being a float[4][4] , width/height being game width/height (? maybe screen ?)

Your mileage may vary, havent done anything esp related in a whiiiiiiiiiiileeee.
 

Dretch

Newbie
Full Member
Sep 17, 2015
26
229
2


What structure dissect should actually look like.
Yeah, I understand. I read all those values correctly but the ESP rectangles are drawn somewhere else than the enemies are. I am using the function you posted here.
 

Solaire

Respected Hacker
Dank Tier VIP
Dec 15, 2013
1,051
16,353
62
Yeah, I understand. I read all those values correctly but the ESP rectangles are drawn somewhere else than the enemies are. I am using the function you posted here.
Weird. I'll test it out later today and see if I and see if I can figure out the issue. That function should work, I could have sworn I tested it to make sure it was usable at one point.
 

Dretch

Newbie
Full Member
Sep 17, 2015
26
229
2
Weird. I'll test it out later today and see if I and see if I can figure out the issue. That function should work, I could have sworn I tested it to make sure it was usable at one point.
I believe that your function is alright, I think that there is a problem in my code. Maybe if you could just tell me how do you read the values because I use windows' ReadProcessMemory and I save the value into float ViewM[16] and pass it to your function. Maybe that's wrong.
I mean
C++:
float ViewM[16];
for (int i = 0; i < 16; i++)
{
	ReadProcessMemory(hProcHandle, (PBYTE*)dw_VMatrix + i, &ViewM[i], sizeof(float), NULL);
}
float * W2SMatrix = ViewM;
if (WorldToScreen(EnPos, EnemyXY, W2SMatrix))
{
...
}
and it just draws the rectangles "randomly", not at the enemies.
 
Last edited:

Solaire

Respected Hacker
Dank Tier VIP
Dec 15, 2013
1,051
16,353
62
I believe that your function is alright, I think that there is a problem in my code. Maybe if you could just tell me how do you read the values because I use windows' ReadProcessMemory and I save the value into float ViewM[16] and pass it to your function. Maybe that's wrong.
I mean
C++:
float ViewM[16];
for (int i = 0; i < 16; i++)
{
    ReadProcessMemory(hProcHandle, (PBYTE*)dw_VMatrix + i, &ViewM[i], sizeof(float), NULL);
}
float * W2SMatrix = ViewM;
if (WorldToScreen(EnPos, EnemyXY, W2SMatrix))
{
...
}
and it just draws the rectangles "randomly", not at the enemies.
ReadProcessMemory(hProcHandle, (LPCVOID)dw_VMatrix, &ViewM, sizeof(float) * 16, NULL);

Do it in one read, then try.

EDIT:
To explain why yours does not work, dw_VMatrix + i. dw_VMatrix is not a pointer, so adding 1 to it does not increase it by 4 bytes. It only increases the address by 1. So instead of reading offset 0x4 on the next turn, it reads 0x1, which causes your issue.
 

Dretch

Newbie
Full Member
Sep 17, 2015
26
229
2
ReadProcessMemory(hProcHandle, (LPCVOID)dw_VMatrix, &ViewM, sizeof(float) * 16, NULL);

Do it in one read, then try.

EDIT:
To explain why yours does not work, dw_VMatrix + i. dw_VMatrix is not a pointer, so adding 1 to it does not increase it by 4 bytes. It only increases the address by 1. So instead of reading offset 0x4 on the next turn, it reads 0x1, which causes your issue.
Actually, I have no idea why, it works with dw_VMatrix + i. All the values and addresses were correct when I did cout << dw_VMatrix + i; I know it's weird, but it worked. Anyway, I tried it in one read as you have suggested, but still the same result.
Now I tried
C++:
float * ViewM;
ReadProcessMemory(hProcHandle, (LPCVOID)dw_VMatrix, &ViewM, sizeof(float) * 16, NULL);
if (WorldToScreen(EnPos, EnemyXY, ViewM))
{
...
}
And it gave me an exception: access violation reading location ...
EDIT: But with using
C++:
float ViewM[16]
the rectangles are drawn like on the other side of the map than the enemies are, not alway though, I think.
 
Last edited:

Solaire

Respected Hacker
Dank Tier VIP
Dec 15, 2013
1,051
16,353
62
Actually, I have no idea why, it works with dw_VMatrix + i. All the values and addresses were correct when I did cout << dw_VMatrix + i; I know it's weird, but it worked. Anyway, I tried it in one read as you have suggested, but still the same result.
Now I tried
C++:
float * ViewM;
ReadProcessMemory(hProcHandle, (LPCVOID)dw_VMatrix, &ViewM, sizeof(float) * 16, NULL);
if (WorldToScreen(EnPos, EnemyXY, ViewM))
{
...
}
And it gave me an exception: access violation reading location ...
EDIT: But with using
C++:
float ViewM[16]
the rectangles are drawn like on the other side of the map than the enemies are, not alway though, I think.
EnemyXY.x *= 800 / 2.0f;
EnemyXY.y *= -600 / 2.0f;
EnemyXY.x += 800 / 2.0f;
EnemyXY.y += 600 / 2.0f;

Old wisdom from and Old member Spock. Do this directly after the W2S transformation in your if statment.

EDIT:
Disregard that, I realized that I did that inside of the W2S function. Could you post your source?
 
Last edited:

Dretch

Newbie
Full Member
Sep 17, 2015
26
229
2
EnemyXY.x *= 800 / 2.0f;
EnemyXY.y *= -600 / 2.0f;
EnemyXY.x += 800 / 2.0f;
EnemyXY.y += 600 / 2.0f;

Old wisdom from and Old member Spock. Do this directly after the W2S transformation in your if statment.
Well, you have already included this in your first post in your function and I have the correct height and width of the game: 800 and 600.
I know I am annyoing, but I still don't quite understand why it doesn't work.
I might also mention that I am using Fleep's drawing methods
C++:
void DrawFilledRect(int x, int y, int w, int h)
{
	//We create our rectangle to draw on screen
	RECT rect = { x, y, x + w, y + h };
	//We clear that portion of the screen and display our rectangle
	FillRect(HDC_Desktop, &rect, EnemyBrush);
}

void DrawBorderBox(int x, int y, int w, int h, int thickness)
{
	//Top horiz line
	DrawFilledRect(x, y, w, thickness);
	//Left vertical line
	DrawFilledRect(x, y, thickness, h);
	//right vertical line
	DrawFilledRect((x + w), y, thickness, h);
	//bottom horiz line
	DrawFilledRect(x, y + h, w + thickness, thickness);
}

DrawBorderBox(EnemyXY.x, EnemyXY.y, width, height, 2);
So if there's any mistake. I don't know. It's weird.
EDIT: My source is confusing even for myself. I wanted to have it quickly, so I apologize for that.
C++:
if (GetAsyncKeyState(VK_F9))
		{
			DWORD XCoordBuffer;
			DWORD YCoordBuffer;
			DWORD ZCoordBuffer;
			DWORD EnemyXCoord;
			DWORD EnemyYCoord;
			DWORD EnemyZCoord;
			DWORD EnemyXCoordBuffer;
			DWORD EnemyYCoordBuffer;
			DWORD EnemyZCoordBuffer;
			vector<DWORD> EnemyXCoordArray;
			vector<DWORD> EnemyYCoordArray;
			vector<DWORD> EnemyZCoordArray;
			vector<double>DistanceArray;
			float enX;
			float enY;
			float enZ;
			vector<float> HAngleArray;
			vector<float> VAngleArray;
			float HAngle;
			float VAngle;
			DWORD Health;
			vector<int> HealthArray;
			vector<ESPTar> ESPEnemy;
			vector<Targets> Enemy2;
			int aimLoop = 1;
			int HealthBuff;
			DWORD dw_HAngle;
			DWORD dw_VAngle;
			float CurHAngle;
			float CurVAngle;
			TargetWnd = FindWindow(NULL, "AssaultCube");
			HDC_Desktop = GetDC(TargetWnd);
			SetupDrawing(HDC_Desktop, TargetWnd);
			int playerLoop = 0;
			while (1)
			{
				// Get the base address of local player information and teamnum
				ReadProcessMemory(hProcHandle, (PBYTE*)dw_Player_Base, &LocalPlayer, sizeof(DWORD), NULL);
				TeamNum = LocalPlayer + 0x32C;
				ReadProcessMemory(hProcHandle, (PBYTE*)TeamNum, &TeamNumBuffer, sizeof(DWORD), NULL);

				// Get the number of players on server
				ReadProcessMemory(hProcHandle, (PBYTE*)dw_NumOfPlayersAddress, &NumOfPlayers, sizeof(int), NULL);

				// Get the BaseEntity for a list of enemies
				ReadProcessMemory(hProcHandle, (PBYTE*)dw_Entity_List, &BaseEntity, sizeof(DWORD), NULL);

				// Get basic addresses of all player on the server (excluding local player)
				for (int i = 1; i <= NumOfPlayers - 1; i++)
				{
					ReadProcessMemory(hProcHandle, (PBYTE*)BaseEntity + i, &Entities, sizeof(DWORD), NULL);
					BaseEntities.push_back(Entities);
				}

				// Get teamnum of other players
				for (auto i = BaseEntities.begin(); i != BaseEntities.end(); ++i)
				{
					TeamNumOfOthers = *i + 0x32C;
					ReadProcessMemory(hProcHandle, (LPCVOID)TeamNumOfOthers, &TeamNumOfOthersBuffer, sizeof(DWORD), NULL);
					TeamNumOfOthersArray.push_back(TeamNumOfOthersBuffer);
				}

				// Get the coordinates of local player
				dw_XCoord = LocalPlayer + 0x38;
				ReadProcessMemory(hProcHandle, (PBYTE*)dw_XCoord, &XCoordBuffer, sizeof(DWORD), NULL);
				dw_YCoord = LocalPlayer + 0x34;
				ReadProcessMemory(hProcHandle, (PBYTE*)dw_YCoord, &YCoordBuffer, sizeof(DWORD), NULL);
				dw_ZCoord = LocalPlayer + 0x3C;
				ReadProcessMemory(hProcHandle, (PBYTE*)dw_ZCoord, &ZCoordBuffer, sizeof(DWORD), NULL);
				XValue = *(float*)&XCoordBuffer;
				YValue = *(float*)&YCoordBuffer;
				ZValue = *(float*)&ZCoordBuffer;

				// Get the coordinates of all other players
				for (auto j = BaseEntities.begin(); j != BaseEntities.end(); ++j)
				{
					DWORD EnemyXCoordBuffer;
					DWORD EnemyYCoordBuffer;
					DWORD EnemyZCoordBuffer;
					DWORD EnemyXCoord = *j + 0x38;
					ReadProcessMemory(hProcHandle, (PBYTE*)EnemyXCoord, &EnemyXCoordBuffer, sizeof(DWORD), NULL);
					DWORD EnemyYCoord = *j + 0x34;
					ReadProcessMemory(hProcHandle, (PBYTE*)EnemyYCoord, &EnemyYCoordBuffer, sizeof(DWORD), NULL);
					DWORD EnemyZCoord = *j + 0x3C;
					ReadProcessMemory(hProcHandle, (PBYTE*)EnemyZCoord, &EnemyZCoordBuffer, sizeof(DWORD), NULL);
					EnemyXCoordArray.push_back(EnemyXCoordBuffer);
					EnemyYCoordArray.push_back(EnemyYCoordBuffer);
					EnemyZCoordArray.push_back(EnemyZCoordBuffer);
				}
				aimLoop = 1;
				playerLoop = 1;
				for (auto x = EnemyXCoordArray.begin(), y = EnemyYCoordArray.begin(), z = EnemyZCoordArray.begin(), i = BaseEntities.begin(); x != EnemyXCoordArray.end(), y != EnemyYCoordArray.end(), z != EnemyZCoordArray.end(), i != BaseEntities.end(); ++x, ++y, ++z, ++i)
				{
					enX = *(float*)&*x;
					enY = *(float*)&*y;
					enZ = *(float*)&*z;
					double Distance = sqrt(pow(double(enX - XValue), 2.0) +
						pow(double(enY - YValue), 2.0) +
						pow(double(enZ - ZValue), 2.0));
					DistanceArray.push_back(Distance);

					// Get Health of others
					Health = *i + 0xF8;
					ReadProcessMemory(hProcHandle, (LPCVOID)Health, &HealthBuff, sizeof(int), NULL);
					HealthArray.push_back(HealthBuff);

					// Get team number of others
					TeamNumOfOthers = *i + 0x32C;
					ReadProcessMemory(hProcHandle, (LPCVOID)TeamNumOfOthers, &TeamNumOfOthersBuffer, sizeof(DWORD), NULL);
					int MyTeamNum = TeamNumBuffer;
					if (aimLoop <= NumOfPlayers - 1)
					{
						//Enemy[aimLoop] = Targets(HAngle, VAngle, Distance, HealthBuff);
						ESPEnemy.push_back({ Distance, HealthBuff, TeamNumOfOthersBuffer, MyTeamNum, enX, enY, enZ });
					}
					aimLoop++;
				}

				// ESP Funct
				GetWindowRect(FindWindow(NULL, "AssaultCube"), &m_Rect);
				for (int i = 0; i < NumOfPlayers - 1; i++)
				{
					if (ESPEnemy[i].t_Health <= 0)
						continue;
					if (ESPEnemy[i].t_Team == ESPEnemy[i].t_MyTeam)
						continue;

					vec3d EnemyXY;
					vec3d EnPos = { ESPEnemy[i].t_X, ESPEnemy[i].t_Y, ESPEnemy[i].t_Z };
					// Get VMatrix
					float ViewM[16];
					/*for (int i = 0; i < 16; i++)
					{
						ReadProcessMemory(hProcHandle, (LPCVOID*)dw_VMatrix + i, &ViewM[i], sizeof(float), NULL);
					}
					float * W2SMatrix = ViewM;*/
					ReadProcessMemory(hProcHandle, (LPCVOID)dw_VMatrix, &ViewM, sizeof(float) * 16, NULL);
					//float * W2SMatrix = ViewM;
					if (WorldToScreen(EnPos, EnemyXY, ViewM))
					{
						/*cout << EnemyXY.x << endl;
						cout << EnemyXY.y << endl;
						Sleep(1000);*/
						
						//ESP RECTANGLE
						int width = 1500 / ESPEnemy[i].t_Distance;
						int height = 3000 / ESPEnemy[i].t_Distance;
						DrawBorderBox(EnemyXY.x, EnemyXY.y, width, height, 2);
						//DrawBorderBox((EnemyXY[0] - m_Rect.left) - (width / 2), (EnemyXY[1] - m_Rect.top) - height, width, height, 1);
						//Sandwich ++
						/*DrawLine((m_Rect.right - m_Rect.left) / 2,
							m_Rect.bottom - m_Rect.top, (EnemyXY[0] - m_Rect.left), (EnemyXY[1] - m_Rect.top),
							SnapLineCOLOR);*/


						/*std::stringstream ss;
						ss << (int)ESPEnemy[i].t_Distance;

						char * distanceInfo = new char[ss.str().size() + 1];
						strcpy(distanceInfo, ss.str().c_str());

						DrawString(EnemyXY.x, EnemyXY.y, TextCOLOR, distanceInfo);
						//DrawString(EnemyXY[0] - m_Rect.left, EnemyXY[1] - m_Rect.top, TextCOLOR, distanceInfo);

						delete[] distanceInfo;*/
					}
				}

				ESPEnemy.clear();
				BaseEntities.clear();
				TeamNumOfOthersArray.clear();
				EnemyXCoordArray.clear();
				EnemyYCoordArray.clear();
				EnemyZCoordArray.clear();
				HealthArray.clear();
				EnemyXCoordArray.clear();
				EnemyYCoordArray.clear();
				EnemyZCoordArray.clear();
				DistanceArray.clear();
				HAngleArray.clear();
				VAngleArray.clear();
				HealthArray.clear();
			}
Warning: There is a lot of unused variables and other stuff that I did not bother with removing, there are also some commented sections - the source may give you a headache.
If you'd like source of any of the function used or anything, just ask.
 
Last edited:
Attention! Before you post:

Read the How to Ask Questions Guide
99% of questions are answered in the Beginner's Guide, do it before asking a question.

No Hack Requests. Post in the correct section.  Search the forum first. Read the rules.

How to make a good post:

  • Fill out the form correctly
  • Tell us the game name & coding language
  • Post everything we need to know to help you
  • Ask specific questions, be descriptive
  • Post errors, line numbers & screenshots
  • Post code snippets using code tags
  • If it's a large project, zip it up and attach it

If you do not comply, your post may be deleted.  We want to help, please make a good post and we will do our best to help you.

Community Mods