[RELEASE] Basic Ditto bot for kalonline

01/11/2019 08:16 hero780#16
A videdo tutorial would be very nice!

I tested it on some P-Servers and the bot didnīt work on P-Servers...
02/20/2019 23:45 Yogi1992#17
Still Works well on int
03/26/2019 22:27 HighGamer.#18
you just put d3d9.dll file into your kalonline folder and that should make the hack pop up on the top left corner of your screen where you can use it its auto preset to kill water dragons pretty effectively.
12/10/2019 19:58 tiimmi#19
Can you add multiclient maybe?
01/06/2020 18:36 disrevol#20
Quote:
Originally Posted by HighGamer. View Post
you just put d3d9.dll file into your kalonline folder and that should make the hack pop up on the top left corner of your screen where you can use it its auto preset to kill water dragons pretty effectively.
may u accept me on discord/skype please? ТИМОН it's me :)
01/26/2020 09:33 t0m3cki#21
Work on pserver
09/21/2020 13:19 ATBM#22
Quote:
Originally Posted by HighGamer. View Post
I attached it..

mirror link:
[Only registered and activated users can see links. Click Here To Register...]

mirror link for 4 in 1 ditto.zip
[Only registered and activated users can see links. Click Here To Register...]

This works for both international kalonline and private servers too!, completely undetected and 100% ban proof cannot get banned with this tool

To run it you basically just put the DLL it into your kalonline folder.

It comes with a advertiser (chat spammer)

and a ditto bot on top

commands are

wait 500
this waits 500 milliseconds.

keypress tab
presses the tab key inside game only.

keypress commands are
a-z,0-9,spacebar,tab,left,right,up,down.

keypresswait commands are
a-z,0-9,spacebar,tab,left,right,up,down.
but with wait time at end, example:
keypresswait left, 2000
this would hold left key for 2 seconds before letting it go.

leftclick x,y
leftclick 300,300
clicks at coordinate x:300 y:300 in game.

rightclick x,y

mousemove x,y

all these keys work flawlessly

if you remove the wait times and run this script

Code:
keypress tab
keypress spacebar
keypress 1
keypress 2
keypresswait left, 2000
you got yourself a basic water dragon killer :D

Here is the source code it add this to the d3d9 undetected hook i released.
Code:
static HWND KalHandle = NULL;

static void SendMapKey(int key)
{
	PostMessageW(KalHandle, WM_KEYDOWN, (unsigned int)key, MapVirtualKeyW((unsigned int)key, 0u) << 16);
	Sleep(5);
	PostMessageW(KalHandle, WM_KEYUP, (unsigned int)key, MapVirtualKeyW((unsigned int)key, 0u) << 16);
}

static void SendMapKeyWait(int key, int wait)
{
	PostMessageW(KalHandle, WM_KEYDOWN, (unsigned int)key, MapVirtualKeyW((unsigned int)key, 0u) << 16);
	Sleep(wait);
	PostMessageW(KalHandle, WM_KEYUP, (unsigned int)key, MapVirtualKeyW((unsigned int)key, 0u) << 16);
}

static void SendLetter(int key)
{
	PostMessageW(KalHandle, WM_CHAR, (unsigned int)key, 0);
}


static void SendMapKeyNoFlags(int key)
{
	PostMessageW(KalHandle, WM_KEYDOWN, (unsigned int)key, 0);
	PostMessageW(KalHandle, WM_KEYUP, (unsigned int)key, 0);
}

static void SendReturn()
{
	PostMessageW(KalHandle, WM_KEYDOWN, (unsigned int)VK_RETURN, 0x001C0001);
	PostMessageW(KalHandle, WM_CHAR, (unsigned int)VK_RETURN, 0);
	PostMessageW(KalHandle, WM_KEYUP, (unsigned int)VK_RETURN, 0xC01C0001);
}

static void MouseMove(unsigned short x, unsigned short y)
{
	SendMessageW(KalHandle, WM_MOUSEMOVE, 0, (((WORD)y) << 0x10) | ((WORD)x));
	Sleep(5);
}

static void SendLeftClick(int x, int y)
{
	int num = (int)((WORD)y) << 16 | (int)((WORD)x);
	PostMessageW(KalHandle, WM_LBUTTONDOWN, 1u, num);
	Sleep(5);
	PostMessageW(KalHandle, WM_LBUTTONUP, 0u, num);
}

static void SendRightClick(int x, int y)
{
	int num = (int)((WORD)y) << 16 | (int)((WORD)x);
	PostMessageW(KalHandle, WM_RBUTTONDOWN, 1u, num);
	Sleep(5);
	PostMessageW(KalHandle, WM_RBUTTONUP, 0u, num);
}

int KeyConverter(char *key) {

	char c;
	int i = 0;
	while (key[i])
	{
		key[i] = tolower(key[i]);
		i++;
	}

	if (strcmp(key, "left") == 0)
		return VK_LEFT;
	if (strcmp(key, "right") == 0)
		return VK_RIGHT;
	if (strcmp(key, "up") == 0)
		return VK_UP;
	if (strcmp(key, "down") == 0)
		return VK_DOWN;

	if (strcmp(key, "spacebar") == 0)
		return VK_SPACE;
	if (strcmp(key, "tab") == 0)
		return VK_TAB;
	if (strcmp(key, "0") == 0)
		return VK_0;
	if (strcmp(key, "1") == 0)
		return VK_1;
	if (strcmp(key, "2") == 0)
		return VK_2;
	if (strcmp(key, "3") == 0)
		return VK_3;
	if (strcmp(key, "4") == 0)
		return VK_4;
	if (strcmp(key, "5") == 0)
		return VK_5;
	if (strcmp(key, "6") == 0)
		return VK_6;
	if (strcmp(key, "7") == 0)
		return VK_7;
	if (strcmp(key, "8") == 0)
		return VK_8;
	if (strcmp(key, "9") == 0)
		return VK_9;
	if (strcmp(key, "a") == 0)
		return VK_A;
	if (strcmp(key, "b") == 0)
		return VK_B;
	if (strcmp(key, "c") == 0)
		return VK_C;
	if (strcmp(key, "d") == 0)
		return VK_D;
	if (strcmp(key, "e") == 0)
		return VK_E;
	if (strcmp(key, "f") == 0)
		return VK_F;
	if (strcmp(key, "g") == 0)
		return VK_G;
	if (strcmp(key, "h") == 0)
		return VK_H;
	if (strcmp(key, "i") == 0)
		return VK_I;
	if (strcmp(key, "j") == 0)
		return VK_J;
	if (strcmp(key, "k") == 0)
		return VK_K;
	if (strcmp(key, "l") == 0)
		return VK_L;
	if (strcmp(key, "m") == 0)
		return VK_M;
	if (strcmp(key, "n") == 0)
		return VK_N;
	if (strcmp(key, "o") == 0)
		return VK_O;
	if (strcmp(key, "p") == 0)
		return VK_P;
	if (strcmp(key, "q") == 0)
		return VK_Q;
	if (strcmp(key, "r") == 0)
		return VK_R;
	if (strcmp(key, "s") == 0)
		return VK_S;
	if (strcmp(key, "t") == 0)
		return VK_T;
	if (strcmp(key, "u") == 0)
		return VK_U;
	if (strcmp(key, "v") == 0)
		return VK_V;
	if (strcmp(key, "w") == 0)
		return VK_W;
	if (strcmp(key, "x") == 0)
		return VK_X;
	if (strcmp(key, "y") == 0)
		return VK_Y;
	if (strcmp(key, "z") == 0)
		return VK_Z;

}
HWND FindProcessWindow()
{
	char szBuffer[200];
	TCHAR szBuffer2[200];
	DWORD dwTemp;

	for (HWND hWnd = GetTopWindow(NULL); hWnd != NULL; hWnd = GetNextWindow(hWnd, GW_HWNDNEXT))
	{
		GetWindowThreadProcessId(hWnd, &dwTemp);

		if (dwTemp != GetCurrentProcessId()) continue;
		if (!GetClassName(hWnd, szBuffer, sizeof(szBuffer) / sizeof(char))) continue;
		if (strstr(szBuffer, "KalOnline") || strstr(szBuffer, "D3D Window"))
			return hWnd;
		if (!GetClassName(hWnd, szBuffer2, _countof(szBuffer2))) continue;
		if (strstr(szBuffer2, "KalOnline") || strstr(szBuffer2, "D3D Window"))
			return hWnd;

	}
	return NULL;
}
keypresswait & mousemove are not working
03/11/2021 09:16 CoOkYy#23
if i try to open multiple kalonlines with ditto the games are crashing. i can just open 1 kal with dito. Also i cant change the size of the window instant crash.
anyone else got that problem?
12/22/2023 23:36 ataulphogyn#24
Bro, why can't I run it on more than one client at the same time?
how to put one to fight and the other just to attack
I can't open other clients because the bot stops attacking
01/29/2025 02:51 HighGamer.#25
fixed it download 2025 version.. u can run as much clients as u want.. everytime u run new client it will spawn new ditto bot.

Update Added showing of mouse coordinates for help with leftclick / leftdblclick / rightclick / rightdblclick / mousemove commands so you know what coordinates to put in and not say it doesn't work lol. Tested works good

[Only registered and activated users can see links. Click Here To Register...]
02/10/2025 19:50 srime01#26
anyway to bypass timo hackshield?
05/29/2025 08:14 GoKu1988#27
how to use ditto if there is tab function disabled in game?
06/26/2025 20:57 HighGamer.#28
Quote:
Originally Posted by GoKu1988 View Post
how to use ditto if there is tab function disabled in game?
keypress tab

re-enables disabled tab key and uses it.
10/24/2025 00:22 ArreQ#29
Hoi,

Is it possible to add shift key?
When holding shift, it prevent chars from walking when using skills.
I believe this would help my pt to not walk around the room after mobs are spawned and out of "stand still" spot in the middle of the room.

I have your very first sourcecode and was trying to add shfit (0x10 and 0xa0) to "keypress" function but apparently this doesn't work.

Or... to add an extra button (on/off) which will simulate hold SHIFT out of script window.

[Only registered and activated users can see links. Click Here To Register...]