Hi guys, here is how to send a Skill using SkillId ( not using a keyboard press )
Code:
//Retrieves the skill ID from the actual slotbar
ULONG myGetSkillIdFromSlotBar( ULONG lpSlot, ULONG lpBase = 0x0179D9B0 )
{
ULONG dwDelta = ( lpSlot - 1 ) * 4, dwRes = NULL;
__asm
{
mov eax, lpBase;
mov eax, [ eax ];
mov edi, dwDelta;
mov eax, [ eax + 0x00000004 ];
mov eax, [ eax + 0x0000000C ];
mov eax, [ eax + 0x00000604 ];
mov eax, [ eax + 0x00000004 ];
mov eax, [ eax + edi ];
mov dwRes, eax;
}
return dwRes;
}
//Send skill by Id
VOID mySendSkillID( ULONG lpSkillId, ULONG lpBase = 0x0179D87C, ULONG lpFunction = 0x006F1DA0 )
{
__asm
{
mov edi, lpBase;
mov edi, [ edi ];
mov edi, [ edi + 0x000000A0 ];
mov edi, [ edi + 0x00000010 ];
mov eax, 0x00000000;
mov esi, lpSkillId;
push eax;
push eax;
mov eax, [ esi + 0x00000008 ];
shr eax, 0x0C;
and eax, 0x0000FFFF;
push eax;
mov ecx, edi;
call lpFunction;
}
}
//here is an example for sending the skill that is on your number 1 key using game engine.
mySendSkillID( myGetSkillIdFromSlotBar( 1 ) );
Here is how you can query your current target agro information, can be tweaked to index the treasures drops or index the nearest monster on your Field of Vision. ( Usefull to stop using the tab key aswell just need to get select target function )
/*
Sometimes the monsters are in your field of vision but they are so far away
that you cannot tab it for selection just change the maximum view distance.
Dont forget to VirtualProtect it to PAGE_EXECUTE_READWRITE
before writting, or just use cheat engine on address
00E07C78 ( FLOAT ) and set it to ur needs.
*/
*( PFLOAT )0x00E07C78 = 3600;
Based on Thr!ce research this ( linked list ) will index the items on your inventory you can get the SlotBase structure ( thx Thr!ce )
//This will allow you to move to a specific position, usefull for melee classes return back to spot
when botting.
INT MoveToPosition( FLOAT lpX, FLOAT lpY, ULONG lpFunction = 0x00885CB0 )
{
ULONG dwRes = NULL;
__asm
{
mov eax, lpFunction;
call eax;
cmp eax, dwRes;
je Finnish;
mov ecx, eax;
mov eax, [ eax ];
mov eax, [ eax + 0x00000014 ];
push lpY;
push lpX;
call eax;
mov dwRes, eax;
Finnish:
;
}
return dwRes;
}
//usage
MoveToPosition( 800, 500 );//will make your character walk to position 800,500 of current map
Warp to position
Code:
/*
This is usefull to warp directly into bosses on dungeons, by clicking the boss name on the
quest list.
006E1E63 ( BYTE ) and set it to 0xD8 = On, 0xD9 = Off
*/
*( PBYTE )0x006E1E63 = 0xD8;// D8 On/ D9 Off
a simple LUA editable bot and source code example using Thr!ce AFKLoader and these functions.
If this is usefull for you please credit me and press thanks button( this will keep me happy enough to make some of my research public in the future )
Here is some suggestions to have a look at:
-
-
-
-
-
-
CODE SHARES:
-
-
-
-
-
-
-
-
-
-
-
You are welcome to post your findings on this thread aswell.
I know this is supposed to be the basics but how did you find your lpBase ? On which client version are you using this ?
Thanks for feedback Alain this is working with the current client ( Katar Update ), i just searched for the shortest pointer i could find and rescanned it ( closing and starting the game several times ) since it was returning valid values for every session i just assumed these are correct and are not DMA.
Great work ntKid Hopefully more bots will surface soon. Personally, I'm only looking for a way to just spam keys without doing anything else (basically to speed up AFK farming a little). Appreciate you sharing your findings bud Thanks pressed!
Python Functions von Mt2 per C++ Code Inject ausführen? 12/02/2011 - C/C++ - 5 Replies Hallo, wollte fragen, ob mir eventuell jemand beantworten kann, wie man Python Functions nützt, welche in den Metin2 - pack Files gespeichert sind.
Und ob das überhaupt so wie ich mir das vorstelle möglich ist.
[Code / C++] Basic hooking of API Functions 07/19/2010 - Coding Tutorials - 2 Replies Global:
typedef BOOL (__stdcall * ReadProcessMemory_t)(HANDLE hProcess,LPVOID lpBaseAddress,LPCVOID lpBuffer,SIZE_T nSize,SIZE_T *lpNumberOfBytesRead);
ReadProcessMemory_t pReadProcessMemory;
Functions:
//Credits to GD ; You can do it manually, too.
SOX findings, place ur sox findiings here 06/04/2007 - Silkroad Online - 8 Replies place ur sox finds here :D
i just found a sos lvl 8 glaive =P
<hr>Append on Jun 4 2007, 01:11<hr> 20 mins later i find another sos chest.. lvl 13