Jump to content

Welcome to [ iT ] Forums
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!
Cộng đồng Âm nhạc Việt Nam

Hình ảnh

Tổng hợp các hàm trong Kiếm thế

- - - - -

  • Please log in to reply
16 replies to this topic

#1
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
- Bài này mình sẽ tổng hợp các hàm lại cho dễ theo dõi... và tìm kiếm

- Không bình luận hay thắc mắc trong bài này (mọi bài viết sẽ bị xóa ko cần thông báo, chỉ để lại những bài có hàm trong game)

- Thảo luận vui lòng wa Topic này:
http://forum.cuasoti...howtopic=388979

- Để có những hàm này thì cũng phải cám ơn các bạn như Kirimaru, monthienvuong, decolua, Trư Bát Giới, mocluu, Huỳnh Văn Thâm, Rong Dia Nguc...

Địa chỉ các hàm, phiên bản hiện thời
#define FUNC_SELMENU_ADDR   0x0043b900
#define FUNC_RUN_ADDR	   0x0057E670
#define FUNC_ONOFFAUTO_ADDR 0x005ECE60 
#define FUNC_USEITEM_ADDR   0x005D3A70

#define KCORESHELL_ADDR	 0x00782B44 //KCORESHELL
#define KCS_OPERREQ_ADDR	0x004B8AD0	/*	return type: int, param: (int nOper, int uParam, int nParam1, int nParam2)	*/

Bài viết này được chỉnh sửa bởi oxconan: 22 October 2009 - 11:38 AM

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#2
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Hàm MoveTo (giống hàm RUN VL1)

#define NPC_RX_OFF		  0x0000ACCC
#define NPC_RY_OFF		  NPC_RX_OFF + 4
#define NPC_RZ_OFF		  NPC_RY_OFF + 4

#define FUNC_RUN_ADDR	   0x0057E670

void MoveTo()
{	
	__asm {		
		push eax;
		push ecx;				  
		mov ecx,NPC_BASE_ADDR;
		mov ecx,[ecx];
		add ecx,NPC_DATA_SIZE;
		push DS:[ecx+NPC_RZ_OFF];
		push DS:[ecx+NPC_RY_OFF];	
		push DS:[ecx+NPC_RX_OFF];			
		mov eax,FUNC_RUN_ADDR;
		call eax;		
		pop	ecx;
		pop	eax;
	}
	
}

Cách gọi bên chương trình, chú ý x,y tọa độ thực trong game
PostMessage(.., .., (WPARAM)(m_lpBaseAdd + NPC_DATA_SIZE + NPC_RX_OFF),x);
PostMessage(.., .., (WPARAM)(m_lpBaseAdd + NPC_DATA_SIZE + NPC_RY_OFF),y);
PostMessage(.., .., (WPARAM)(m_lpBaseAdd + NPC_DATA_SIZE + NPC_RZ_OFF),0);				
PostMessage(.., .., CMD_MOVE,0);

Bài viết này được chỉnh sửa bởi oxconan: 22 October 2009 - 11:27 AM

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#3
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Hàm sử dụng Item:
#define KPLAYER_PTR_ADDR 0x78AEB4
#define KPLAYER_SIZE 0x5A50
#define KITEMLIST_OFF 0x1F80
#define KITEMLIST_USEITEM 0x5D3A70
typedef struct
{
	int		nPlace;
	int		nX;
	int		nY;
} ItemPos;
BOOL UseItem(ItemPos* pPos)
{
	BOOL bRet;
	__asm
	{
		pushad
		mov eax, KPLAYER_PTR_ADDR
		mov ecx, [eax]
		add ecx, KPLAYER_SIZE
		add ecx, KITEMLIST_OFF
		mov eax, pPos
		push eax
		mov eax, KITEMLIST_USEITEM
		call eax
		mov bRet, eax
		popad
	}
	return bRet;
}
nPlace = 2, hành trang
Dùng item tại vị trí x = 2, y = 1 trong hành trang
ItemPos pos;
pos.nPlace = 2;
pos.nX = 2;
pos.nY = 1;
UseItem(&pos);

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#4
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Hàm sửa đồ:
#define KITEMLIST_REPAIRITEM 0x5D3160
enum
{
	repair_none, 
	repair_nomal, // sửa thường
	repair_special, // sửa kỹ
	repair_jinxi, // sửa dùng kim tê, phải có kim tê trong hành trang
};
BOOL RepairItem(int nItemIdx, int nRepairType)
{
	BOOL bRet;
	__asm
	{
		pushad
		mov eax, KPLAYER_PTR_ADDR
		mov ecx, [eax]
		add ecx, KPLAYER_SIZE
		add ecx, KITEMLIST_OFF
		mov eax, nRepairType
		push eax
		mov eax, nItemIdx
		push eax
		mov eax, KITEMLIST_REPAIRITEM
		call eax
		mov bRet, eax
		popad
	}
	return bRet;
}

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#5
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Hàm AutoFight

bAuto= true: bật auto
bAuto= false: Tắt auto

void AutoFight(BOOL bAuto)
{
   __asm
   {
	   pushad
	   mov ecx, 0xB26198
	   mov eax, bAuto
	   push eax
	   mov eax, 0x5ECE60
	   Call eax
	   popad
   }
}

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#6
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Hàm AutoPath:
#define KCORESHELL_PTR_ADDR	0x782B44
#define KCORESHELL_OPERATIONREQUEST 0x4B8AD0	/*	return type: int, param: (int nOper, int uParam, int nParam1, int nParam2)	*/
void AutoPath(int nX, int nY)
{
	__asm
	{
		pushad
		mov eax, KCORESHELL_PTR_ADDR
		mov ecx, [eax]
		xor eax, eax
		push eax
		mov eax, nY
		push eax
		mov eax, nX
		push eax
		mov eax, 0x24
		push eax
		mov eax, KCORESHELL_OPERATIONREQUEST
		call eax
		popad
	}
}
Lưu ý là nX, nY tính bằng cell ( cell width = 32, cell height = 32).
Nên từ tọa độ tuyệt đối trong game X, Y, có thể đổi sang tọa độ cell bằng công thức:
nX = X >> 5; // /32
nY = Y >> 5; // /32
Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#7
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Hàm lên, xuống ngựa:
TRUE = xuống, FALSE = lên
void UnmountHorse(BOOL bUnmount)
{
	__asm
	{
		pushad
		mov eax, KCORESHELL_PTR_ADDR
		mov ecx, [eax]
		xor eax, eax
		push eax
		push eax
		mov eax, bUnmount
		push eax
		mov eax, 0x0F
		push eax
		mov eax, KCORESHELL_OPERATIONREQUEST
		call eax
		popad
	}
}
Chưa test, ai ranh test giùm :jeje:
Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#8
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
:jeje: Hàm Sit() : nhân vật ngồi xuống
void Sit()
{
	__asm
	{
		pushad
		push 1
		mov ecx, ds:[0x78AEAC]
		add ecx, 0x0B00C
		mov eax, 0x57E860
		call eax
		popad
	}
}

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#9
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Hàm Get Map ID
#define KNPC_GETMAPID	0x57EF20	/*	return type: int, param: none	*/
int		GetMapId()
{
	int nMapId;
	__asm
	{
		pushad
		mov eax, KNPC_PTR_ADDR
		mov ecx, [eax]
		add ecx, KNPC_SIZE
		mov eax, KNPC_GETMAPID
		call eax
		mov nMapId, eax
		popad
	}
	return nRet;
}

Bài viết này được chỉnh sửa bởi oxconan: 22 October 2009 - 11:28 AM

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#10
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Sau 1 đêm debug cũng viết được hàm SelectMenuItem

#define MENU_HANDLE_ADDR	0x00777008
#define MENU_SELECT_OFF	 0x00003910
#define FUNC_SELMENU_ADDR   0x0043b900

//idx bat dau tu 1
void SelectMenuItem(int idx)
{
__asm {
		push eax;		
		push ecx;
		mov eax, idx;
		push eax;		
		mov ecx,MENU_HANDLE_ADDR;
		mov ecx,[ecx];
		add ecx,MENU_SELECT_OFF;
		mov eax, FUNC_SELMENU_ADDR;
		call eax;								  
		  pop	ecx;
		pop eax;		
	}
}

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#11
oxconan

oxconan

    Tiến sĩ CSTH

  • Super Moderator
  • PipPipPipPipPipPipPip
  • 3359 Bài Viết:
Đối với các game sau này đa phần đề là unicode nên cần phải có hàm chuyển đổi nếu GUI trong Visual C++ của bạn dịch ở UNICODE

int _imbstowcsz(wchar_t* wcstr, const char* mbstr, size_t count)
{

	if (count == 0 && wcstr != NULL)
		return 0;
 
	int result = ::MultiByteToWideChar(CP_UTF8, 0, mbstr, -1,
		wcstr, count);	
	if (result > 0) {
		wcstr[result-1] = 0;
	} else if (result == 0 && strlen(mbstr)>0) {
		wcstr[strlen(mbstr)] = 0;
	}
	return result;
}


CString _ReadProcessString(HANDLE hProcess,LPCVOID lpBaseAddress) 
{
	char szTmp[64]; 
	TCHAR buff[128];
	ReadProcessMemory(hProcess, lpBaseAddress, (LPVOID)szTmp, sizeof(szTmp), NULL);					
	_imbstowcsz(buff,szTmp,strlen(szTmp));		
	return CString(buff); 
}

Các chủ đề vi phạm sẽ bị xóa hoặc close topic nếu:
- Bài viết không bỏ dấu Tiếng Việt
- Nội dung không đúng với chủ đề của BOX
- Nội dung liên quan đến chính trị, đồi trụy, virus

#12
autokiem

autokiem

    Căn bản tin học tốt

  • Newbies
  • Pip
  • 40 Bài Viết:
sdjkashdjkasdasdasdhgasdgashjasgdasgsj

#13
autokiem

autokiem

    Căn bản tin học tốt

  • Newbies
  • Pip
  • 40 Bài Viết:
ehajkfhasjkfhasdjiashjkdhasjkdhasjkdhasjkdhasjkdhasjkhdasjkdhasjk

#14
iYenTanPhong

iYenTanPhong

    Thành viên mới

  • Newbies
  • 1 Bài Viết:
Bạn ơi cho mình hởi, khi test may hàm trên bạn lấy cái gì để test
thanks

#15
t3rmjkut3

t3rmjkut3

    Thành viên mới

  • Newbies
  • 1 Bài Viết:
Có ai biết cách chỉnh đổi hình hiển thị huyền tinh 4 kô? Chỉ cho e với, e đang tìm cách sửa plugin

#16
Canvil Kelly

Canvil Kelly

    Thành viên mới

  • Newbies
  • 1 Bài Viết:
oxconan cho mình hỏi làm sao để có được các hàm này được không?

#17
CrazyboyCk_9x

CrazyboyCk_9x

    Thành viên mới

  • Newbies
  • 13 Bài Viết:
Bác nào có thể giúp e cách dùng hàm DoBuffer(char const *, char const *); của engine.dll






Perfumista - Thong tin nuoc hoa

Stars Counter Game

Balloon vs. Thorns

MU Phuc Hung

Làm Việc Tài Nhà

Mu Da Nang

Tuyển Nhân Viên Bán Hàng

Tư vấn sức khỏe trực tuyến

Close [X]