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

Lưu trữ : Quà tặng năm mới - Auto TGHM

* * * * - 1 Bình chọn

  • Chủ Đề Đã Khóa Chủ đề này đã được khóa
2294 replies to this topic

#21
phamhuy80

phamhuy80

    Thành viên mới

  • Newbies
  • 5 Bài Viết:
Thanks bác nhiều nhiều dùng hay quá giờ vãn lên lv đều đều mà ko phải cắm mặt vô màn hinh rùi
mà cái :
- Tự làm các quest như Tuần Hoàn và gia viên (chỉ bay-ko tốn tiền nhưng hơi lâu :bong nhưng mà ai cần để ý time, auto mà)
của bác xong chưa,nếu xong rồi bác share cho em 1 bản đc ko :-&

#22
Okios

Okios

    Thành viên mới

  • Newbies
  • 1 Bài Viết:
auto pro. khâm phục mecury quá :-&
Nếu cậu vẫn phát triển tiếp cái auto pro này thì cậu làm thêm
cái sửa tên cửa sổ TGHM để log dc nhiều acc nhé :bong
thx cái auto quá tuyệt :"> :"> :">

#23
xichlongthan

xichlongthan

    Thành viên mới

  • Newbies
  • 1 Bài Viết:
này mấy ông ơi , sao cái khung pick up tui xài ko được vậy , mấy cái khác thì vẫn hoạt động phình thừong , riêng có khung pick up thì nó có 1 ô trống có đánh só 0 mặc dịnh , ở dứoi là laự chọn nút pick up trong game của mình , sau đó tui chỉnh cả trong game lẫn ngoài bảng auto là F1 sau đó ấn star nó ko hề nhặt đồ mà chỉ chăm chăm đánh quái , ai giup mìn với T___T , ko lụm đồ thì lấy đâu tiền mà sửa quần áo >"<

#24
phamhuy80

phamhuy80

    Thành viên mới

  • Newbies
  • 5 Bài Viết:
tui để 3000 F1 nhặt đồ bình thường mà zzzzzzzzzzzzzz

#25
Dark Baron

Dark Baron

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

  • Advance Member
  • Pip
  • 75 Bài Viết:
Đầu tiên, tks bạn vì bản auto này :dede. Mình góp ý 1 tí nhé :
1 - Bạn nên kèm theo file Hướng dẫn cho người nào ko rành :-

2 - Nếu được thay vì chỉ có thể chọn 1 trong 2 Cửa Sổ là Element và Thế Giới Hoàn Mỹ bạn có thể cho User tùy chọn Cửa sổ mình mong muốn (giống bản AutoLevel hiện giờ ấy, get Cửa sổ nào muốn Auto).

3 - Nếu đươc nữa bạn có thể tích hợp cho phép Auto 1 lúc nhiều Acc :-

4 - Nếu được nữa bạn cho thêm tính năng tự quay về nơi ban đầu (lúc bắt đầu Auto ấy).

5 - Nếu được thêm tính năng tự đồng bò về làng sửa đồ :dede

6 - Hình như bản auto này chỉ dành cho Tanker, ko dành cho Buf ?_? Mình dùng bản AutoLevel để Auto Buf nhưng phiền nỗi Tanker mà bỏ ra xa thì VL sẽ bị hạ độ cao >>> quái đánh được rất nguy hiểm. Mong bạn thêm tính năng tự đi theo, tự bay lên cao cho VL :">

Tks again :-

Bài viết này được chỉnh sửa bởi Dark Baron: 27 February 2008 - 07:16 PM


#26
Dark Baron

Dark Baron

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

  • Advance Member
  • Pip
  • 75 Bài Viết:
Ah sao mình hay bị Sai Mục Tiêu thế nhỉ. Target quái nhưng mà phải chở quái target ngược lại thì mới bắt đầu đánh ?_? Ko thì cứ bị Sai Mục Tiêu T_T. Khi target được quái thường mình thấy bảng máu của quái trống trơn (máu = 0) như bị lỗi ấy, quái target mình thì mới đầy lên !!!

Mà đơn vị tính time là mili giây phải ko bạn ? Mình đặt 2 skill gồng (của Thần Thú ấy) là 28 phút (delay - ô đầu tiên) nhưng cứ hễ quái đánh là gồng trước :hehe

Bài viết này được chỉnh sửa bởi Dark Baron: 27 February 2008 - 07:28 PM


#27
mercury838

mercury838

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

  • Advance Member
  • Pip
  • 75 Bài Viết:

Mình cũng thắc mắc ở chỗ đó! Theo mình suy luận thì đó là điểm hp/mp tối thiểu, khi hp/mp của bạn ít hơn hoặc = số đó thì nó sẽ tự động bơm. Nhưng mình thấy nó không thực hiện được. Char của mình là 1 thần thú, hp=1935 và mp=430, mình đặt 2 thông số ở chỗ đó là 1500 và 300, nhưng đến khi cả hp và mp = 0 nó mới bơm O.o MP thì không sao, nhưng HP thì ... >.<

Cái HP/MP này tính như thế này: nếu máu bạn 1935 bạn để 1500 thì sau khi mất 1k5 máu nó mới bơm, có nghĩa là còn 435 máu.
Làm điều này là vì skill gồng máu của thần thú làm cho chỉ số máu max thay đổi , nếu để theo kiểu còn 1k5 bơm thì ko chính xác lắm và dễ hao phù.

Ah sao mình hay bị Sai Mục Tiêu thế nhỉ. Target quái nhưng mà phải chở quái target ngược lại thì mới bắt đầu đánh ?_? Ko thì cứ bị Sai Mục Tiêu T_T. Khi target được quái thường mình thấy bảng máu của quái trống trơn (máu = 0) như bị lỗi ấy, quái target mình thì mới đầy lên !!!

Mà đơn vị tính time là mili giây phải ko bạn ? Mình đặt 2 skill gồng (của Thần Thú ấy) là 28 phút (delay - ô đầu tiên) nhưng cứ hễ quái đánh là gồng trước :d


Cái này target theo kiểu write vào bộ nhớ nên bị thế bạn ah.
có nghĩa là mình target quái trên màn hình của mình. Nhưng đối với máy chủ thì nó ko hề biết mình target.
Nếu sau khi target bạn đánh skill thì ko vấn đề gì nhưng đánh thường sẽ bị hiện lên tình trạng sai mục tiêu.
----------
Chia sẽ với các bạn muốn lập trình auto như sau:
Các biến trong TGHM có 1 địa chỉ cơ bản chung để bắt đầu. Mình gọi là địa chỉ W2I_BASE_ADD. Từ địa chỉ này sẽ cho phép ta đọc các thông tin nhân vật , thông tin mob và target:
Cách làm dễ nhất là target theo kiểu write memory như sau:
::GetWindowThreadProcessId(m_hWnd,&dwProcessID);	
		m_hProcess = ::OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE,0,dwProcessID);
		if (m_hProcess == 0)
			return;
		LPBYTE MemAddr;
		unsigned int CurMonsterID;
		::ReadProcessMemory(m_hProcess, (LPCVOID) W2I_BASE_ADD, (LPVOID)&MemAddr, 4, NULL);	
		::ReadProcessMemory(m_hProcess, (LPCVOID)(MemAddr + 0x20), (LPVOID)&MemAddr, 4, NULL);
		::ReadProcessMemory(m_hProcess, (LPCVOID)(MemAddr + 0xA18), (LPVOID)&CurMonsterID, 4, NULL);
		if(CurMonsterID == 0)
		{
			::WriteProcessMemory(m_hProcess, (LPVOID)(MemAddr + 0xA18), (LPCVOID)(&MonsterID), 4, NULL);
		}
		CloseHandle(m_hProcess);
Với thông tin Mob dc đọc như sau:
AddrBegin = [[[[W2I_BASE_ADD]+8]+24]+18]
				For count = 0->768
				MobID =  [[Addr+4*count]+11C]
Cách tìm W2I_BASE_ADD dễ nhất là lần ngc từ chỉ số máu như sau:
[[[W2I_BASE_ADD]+0x20]+0x450]
Có nghĩa là: có địa chỉ chứa chỉ số máu trừ cho 450 (hexa) rồi dùng CE tìm địa chỉ vừa có.
Lấy dc địa chỉ chứa địa chỉ vừa có ta lại trừ tiếp cho 20h.
sau đó dùng CE tìm lại 1 lần nữa.
Còn cách target bằng gọi code của chương trình thì ko bị Sai Mục Tiêu nhưng khó xài cũng nói qua cho bạn nào quan tâm thi sử dụng.Mình dùng nó trong bản auto mới. ko bao giờ bị target nhầm.
static DWORD WINAPI SelectMonster(LPCVOID lpParam)
{
	DWORD Address= 0x582630;
	DWORD MonsterID = (DWORD)lpParam;
	__try
	{
		_asm
		{
			mov edx, 0x0090318C;
			push MonsterID;
			mov ecx, dword ptr[edx+0x20];
			mov ecx,0xEC;
			call Address;
		}
	}
	__except(1)
	{
	}
	return 0;
}
Gọi hàm như sau:
bool CGameControl::CallRemoteFunction(pGameProcess pProcess)
{
	//Remote Thread Handle
	HANDLE hProcess=NULL;
	//Inject Thread handle
	HANDLE hThread=NULL;
	//Inject Fuction Address after allocate
	LPVOID ThreadCodeAddr=NULL;
	//Inject Function
	LPVOID Func=SelectMonster;
	//Inject Fuction Stack Address after allocate
	LPVOID ThreadDataAddr=NULL;
	//Inject Fuction Stack Data
	LPCVOID lpParam = NULL;
	DWORD Value = 0; // Đưa Mob ID tìm dc vào đây
	lpParam = &Value;

	hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pProcess->dwProcessId);
	if (!hProcess)
	{
		Error(_T("OpenProcess"));
		return false;
	}
	ThreadCodeAddr=VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_READWRITE);
	ThreadDataAddr=VirtualAllocEx(hProcess, NULL, 256, MEM_COMMIT, PAGE_READWRITE);
	WriteProcessMemory (hProcess, ThreadCodeAddr, Func, 4096, NULL); 
	WriteProcessMemory (hProcess, ThreadDataAddr, lpParam, 256, NULL);
	hThread = CreateRemoteThread(hProcess, NULL, NULL,(LPTHREAD_START_ROUTINE)ThreadCodeAddr, ThreadDataAddr, NULL, NULL); 
	if (!hThread)
		Error(_T("CreateRemoteThread"));
	else
		WaitForSingleObject(hThread, INFINITE);
	CloseHandle(hThread);
	VirtualFreeEx(hProcess, ThreadCodeAddr, 4096, MEM_RELEASE);
	VirtualFreeEx(hProcess, ThreadDataAddr, 256, MEM_RELEASE);
	CloseHandle(hProcess);
	return false;
}

Chúc các bạn chơi game vui vẻ
Ko kí nữa

#28
polaris2490

polaris2490

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

  • Advance Member
  • Pip
  • 64 Bài Viết:
tr'c tiên mình muốn cảm ơn bạn đã chia sẽ , mình mướn hỏi 1 tý về W2I_Base_Add

mình tìm theo hp thì đc như hình

Attached File  hinh.jpg   184.46KB   242 Lượi tải
giá trị máu là 187 trong add : 053b86a8

ở cửa sổ "The following opcodes......." mình luôn đc giá trị như nhau . Mình thấy lúc nào biến esi + 450 củng đc add của hp .
Mình làm thế nào để tìm đc W2I_Base_Add .
Cảm ơn bạn rất nhiều

Bài viết này được chỉnh sửa bởi polaris2490: 28 February 2008 - 02:37 PM


#29
phamhuy80

phamhuy80

    Thành viên mới

  • Newbies
  • 5 Bài Viết:
bác mercury838 viết xong cái auto làm Q KBC chưa có thể share cho em 1 bản đc ko ? Em viết = autoit thì nó kích ko đúng vào NPC T_____T

#30
vodanhinls2000

vodanhinls2000

    Thành viên mới

  • Newbies
  • 1 Bài Viết:

bạn ơi sao lúc down về nó lại hiện ra file index.php vậy
giúp tó cái

Mình cũng gặp tình trạn tương tự ai biết chỉ hộ mình cái

#31
Giangho_ansi

Giangho_ansi

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

  • Advance Member
  • Pip
  • 86 Bài Viết:
Nói thẳng mình đang tập chơi TGHM nên mình rất nud, có bạn nào chơi tiên thú giúp mình post ảnh cách cắm auto cho phượng hoàng hộ mình với, cám ơn rất nhiều :yes
Cha ông mẫu mực muôn đời rượu
Con cháu thảo hiền vạn kiếp say


` »-(¯`v´¯)-»" I LoVe You "»-(¯`v´¯)-»" Ga'i Ca`ng -Dep. Ca`ng Kho^ng Chung Thuy>|||| |||| -Die^u' Thuo^c' Ta`n Chi ky? -Do*i` Trai |||| |||| Uo^ng' Ruou. Say Nga`y Mai Ta Tinh? |||| |||| Uo^ng' Ruou. Tinh` Kho' Tinh? La(m' Ai O*i |||| ||||Em Ye^u O*i Xin Em -Du*ng` De^n' |||| |||| Em -De^n' Ro^i` Xin -Du*n`g Quay -Di |||| "»-(¯`v´¯)-»"

Giang hồ nổi phong ba, Nhân sĩ đều có mặt, Riêng mình ta ở lại, Thu mình nơi tuyệt địa, Tránh xa chuyện thế gian. Ngày ngày đi nhặt rác, Kiếm tiền đủ chi tiêu, Không liều mình đánh boss, Vì chết trong tầm tay. Võ công ta thấp kém, Đẳng cấp chẳng bằng ai Luyện công không chăm chỉ, mới max có 3 đường, Ra ngõ sợ ăn mày, Vào thành tránh thiên nhẫn, Nhưng vẫn không ngán ai, Kẻ ác đều chiến hết, Ngũ độc cho một bổng, Đường môn cho 2 đao, Lăn quay ra giữa đường.

#32
mercury838

mercury838

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

  • Advance Member
  • Pip
  • 75 Bài Viết:

giá trị máu là 187 trong add : 053b86a8

ở cửa sổ "The following opcodes......." mình luôn đc giá trị như nhau . Mình thấy lúc nào biến esi + 450 củng đc add của hp .
Mình làm thế nào để tìm đc W2I_Base_Add .
Cảm ơn bạn rất nhiều

Lấy 053b86a8 trừ cho 450 sẽ dc giá trị thứ 2
Gõ giá trị vừa tìm dc vào ô search Sẽ tìm dc giá trị địa chỉ tiếp theo
Lấy đia chỉ vừa tìm dc -20 sẽ có địa chỉ thứ 3
lấy địa chỉ này Search 1 lần nữa sẽ có địa chỉ thứ 4. Nó là BASE_ADD. Khi tìm dc BASE address bạn sẽ thấy nó có màu xanh trong ô địa chỉ tìm dc thay vì màu đen.

Tình hình là ban quản trị muốn dẹp sub box TGHM nếu như có quá it ng vào như hiện nay. Các bạn nào nhận dc auto mà cảm thấy nó hữu ích hãy post bài ủng hộ và đưa kinh nghiệm set auto của mình cho mọi người tham khảo.
Nếu sub box này close thì mình cũng ngưng việc post auto lên diễn đàn lun. Mong các bạn ủng hộ.


@Giangho_ansi: mình cũng chưa auto tiên thú full LL bao giờ :d" vì TT hóa cáo đánh cả ngày chả hao tí máu nào. Bơm máu bình chưa đến 10 bình. Hi vọng có ai set rùi đưa lại cho bạn.
Ko kí nữa

#33
kysilangthang

kysilangthang

    Thành viên mới

  • Newbies
  • 9 Bài Viết:
[size="2"]thank! mình đã auto thử. ko biết sau này có bị @hắc hiếc gì ko thôi. mình auto PS giáp nhẹ nên cũng đỡ vất vả. mình để các ô deley là 7500 hết, nó đánh skill loạn xì ngầu, đôi lúc thì bị ngắt quãng ko biết vì sao. mà cho mình hỏi là thời gian thi triển ở đây có tính đến thời gian chuẩn bị ko? à, và khi mình xài skill phượng hoàng lửa ấy, do tầm xa của nó hạn chế nên bị ngắt quãng dãy skill luôn. vui lòng post dùm mình cái chỉ dẫn cụ tỉ ( cụ thể & tỉ mỉ ) thank alot!! (hi vọng là ko bị @hắc, lần đầu tiên xài auto TGHM )

#34
polaris2490

polaris2490

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

  • Advance Member
  • Pip
  • 64 Bài Viết:
cảm ơn mecury nhiều .

Đề nghị Ban Quản Trị tiếp tục Box TGHM này , còn nhiều bạn rất quan tâm .

Cảm ơn

#35
gongon

gongon

    Trình độ A CSTH

  • Advance Member
  • PipPip
  • 186 Bài Viết:
đặt tiên thú ko khó chú ý chiêu bù pet đặt tầm 25000 o số 1 và ô số 2 là 500 la oki...... Bạn mercury838 co thể thêm vào bản auto nhưng vấn đề sau đc ko vi chơi tit nên thấy nên có nhưng cái sau.
1: Thêm nút ctrl+1 khi đã bắt đc tọa độ mod (có tác dụng tự điều khiển pet ) chỉ cần ấn mỗi lần mỗi khi bảng mod hiện lên màn hinh mình nghĩ sẽ thêm đc.
2: Thêm luôn phần buf Hp cho pet thì wua hay.(có thể bạn chơi TT nên ko chú ý, Tit mà chết pet thì amen....)
3: cắm nhiều acc oki bạn đang để là 2 của sổ (vậy nếu ai ko rành sẽ chỉ cắm đc 2 mà có khi chỉ là` 1 cửa sổ, mình dang dung voi cách của mình là n của sổ tùy thuộc vao CPU chui đc hay ko) thiết nghĩ bạn nên nới rộng cái khối lượng đặt cửa sổ. Cách của mình như sau mong ban nghiên cứu để đưa ra bản update hoàn thiện nhất (khi log 1 acc cửa sổ game sẽ là Element Client khi đó bắt đầu bật auto khi check dc ID bắt đầu đổi tên của sổ, cư như trên thi` sẽ cám đc n acc, muốn hiệu chinh của sổ nào thì cần chuyển cửa sổ đó về cửa Element Client là điều chỉnh bình thường ) Đây là cách của mình mong bạn chuyển hóa điều này cho dễ hiểu để nhiều người cung biết và sử dụng ....
Cảm ơn bạn đã post AUTO ... ko có auto nay chắc mình cũng nghỉ game hehehe. Mong bản update của bạn....
Đừng làm những công việc mà mình không thạo, hãy để chuyên gia giúp.

#36
toquangthuy08

toquangthuy08

    Thành viên mới

  • Newbies
  • 1 Bài Viết:
bạn nào chơi KK làm ơn chỉ mình cách thiết lập thông số với.mình cảm ơn rất nhiều :jeje:

#37
tieuyuki

tieuyuki

    Thành viên mới

  • Newbies
  • 4 Bài Viết:
Auto này rất hay với nhiều chức năng và có thể ứng dụng cho nhiều class nếu các bạn biết ứng dụng! Tuy nhiên mình chơi PS nên việc nhặt đồ hơi bị khó khăn (đánh quái từ xa)! Bạn có thể thêm chức năng cho nó có thể tự động chạy đến món đồ và nhặt được không? Với lại có thể tự thay phù khi hết thì hay quá (chỉ mong muốn chứ không yêu cầu nha! :jeje: )

#38
hong1919

hong1919

    Trình độ A CSTH

  • Advance Member
  • PipPip
  • 128 Bài Viết:
Hi! Mecury838
Auto của bạn rất hay, mình rất mong có thể viết auto như bạn, không biết bạn có thể giúp mình không.
Mình biết ASM, C, VB.net mong bạn liên lạc với mình.
Email cua minh [email protected]

Thanks bạn trước!!!

(Ah bạn có biết tin mới chưa Tru Tien VN sắp được thử nghiệm rồi đấy nếu quan tân thi email mình nhé.)

#39
mercury838

mercury838

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

  • Advance Member
  • Pip
  • 75 Bài Viết:

Hi! Mecury838
Auto của bạn rất hay, mình rất mong có thể viết auto như bạn, không biết bạn có thể giúp mình không.
Mình biết ASM, C, VB.net mong bạn liên lạc với mình.
Email cua minh [email protected]

Thanks bạn trước!!!

(Ah bạn có biết tin mới chưa Tru Tien VN sắp được thử nghiệm rồi đấy nếu quan tân thi email mình nhé.)


mình sẽ gửi code mẫu cho các bạn quan tâm.

Mình từng chơi Tru Tiên china và cũng tham gia viết auto cho nó, nếu có thông tin thì gửi cho mình nha.

Có 1 số khái niệm các bạn cần nắm rõ như sau:
Ví dụ 1 skill có các thông số sau:
Thời gian thi triển: 1s
Thời gian chuẩn bị : 2s
Có thể thi triển lại sau: 5s

Thì auto sẽ set như sau:

Ô thứ 2 = thời gian thi triển + thời gian chuẩn bị = 1 + 2
Ô thứ 1 = thời gian thi triển lại - thời gian thi triển = 5 - 2
Hi vọng thông tin này có thể giúp cho các bạn set các giá trị auto phù hợp hơn

Bài viết này được chỉnh sửa bởi mercury838: 01 March 2008 - 11:48 PM

Ko kí nữa

#40
mercury838

mercury838

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

  • Advance Member
  • Pip
  • 75 Bài Viết:
Demo Source
#include "StdAfx.h"
#include "w2i-toolClient.h"

CW2IClient::CW2IClient(void)
: m_iPickCount(0)
{
}
CW2IClient::CW2IClient(HWND	hWnd)
{
	this->m_hWnd = hWnd;
	m_bRunning = true;
	m_bEnable = true;
	for(int i = 0;i<7;i++)
	{
		pInfo[i] = new Skill;
		pInfo[i]->Key = 0x41;
		pInfo[i]->Cast = 0;
		pInfo[i]->Delay = 0;
		pInfo[i]->Enable = false;
		pInfo[i]->m_hWnd = m_hWnd;
	}
	pParam = new PickParam;
	pParam->m_hWnd = m_hWnd;
	pParam->Key = 0x41;
	pParam->count = 5;
	m_bRestoreHP = false;
	m_bRestoreMP = false;
	m_iCountdownHP = 0;
	m_iCountdownMP = 0;
	m_sTarget.lvmin = 1;
	m_sTarget.lvmax = 80;
	m_sTarget.distance = 120;
	m_psMonster = NULL;
}
CW2IClient::~CW2IClient(void)
{
	if(m_psMonster)
		delete m_psMonster;
	for(int i = 0;i<7;i++)
	{
		if(pInfo[i])	
			delete pInfo[i];
	}
	if(pParam)
	delete pParam;
}

int CW2IClient::ReadPlayerInfo(void)
{
	GetWindowThreadProcessId(m_hWnd, &dwProcessID);
	m_hProcess = OpenProcess(PROCESS_VM_READ, FALSE, dwProcessID);
	if (!m_hProcess)
		return 0x01;
	LPBYTE lpBaseAdd,lpCharBaseAdd,lpTempAdd;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)W2I_BASE_ADD, (LPVOID)&lpBaseAdd, 4, NULL))
		return 0x02;	
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)(lpBaseAdd + 0x20), (LPVOID)&lpCharBaseAdd, 4, NULL))
		return 0x03;
	lpTempAdd = lpCharBaseAdd + 0x3C;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrCorX), 4, NULL))
		return 0x04;
	lpTempAdd = lpCharBaseAdd + 0x40;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrCorZ), 4, NULL))
		return 0x05;
	lpTempAdd = lpCharBaseAdd + 0x44;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrCorY), 4, NULL))
		return 0x06;
	lpTempAdd = lpCharBaseAdd + 0x448;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrLV), 4, NULL))
		return 0x07;
	lpTempAdd = lpCharBaseAdd + 0x450;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrCurHP), 4, NULL))
		return 0x08;
	lpTempAdd = lpCharBaseAdd + 0x454;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrCurMP), 4, NULL))
		return 0x09;
	lpTempAdd = lpCharBaseAdd + 0x478;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrMaxHP), 4, NULL))
		return 0x0A;
	lpTempAdd = lpCharBaseAdd + 0x47C;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrMaxMP), 4, NULL))
		return 0x0B;
	lpTempAdd = lpCharBaseAdd + 0x458;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrCurEXP), 4, NULL))
		return 0x0C;
	lpTempAdd = (LPBYTE)W2I_EXP_ARRAY + (m_sPlayer.plrLV-1)*4;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)lpTempAdd, (LPVOID)&(m_sPlayer.plrMaxEXP), 4, NULL))
		return 0x0D;

	if (this->m_iCountdownHP > 0)
		this->m_iCountdownHP--;

	if (this->m_iCountdownMP > 0)
		this->m_iCountdownMP--;

	if((m_sPlayer.plrCurHP < (m_sPlayer.plrMaxHP - m_iRestoreHP))&&(m_bRestoreHP)&&(this->m_iCountdownHP == 0))
	{
		::SendMessage(m_hWnd, WM_KEYDOWN, m_wParamKeyHP, NULL);
		m_iCountdownHP = m_iCountdown;
	}

	if((m_sPlayer.plrCurMP < (m_sPlayer.plrMaxMP - m_iRestoreMP))&&(m_bRestoreMP)&&(this->m_iCountdownMP == 0))
	{
		::SendMessage(m_hWnd, WM_KEYDOWN, m_wParamKeyMP, NULL);
		m_iCountdownMP = 16;
	}
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)(W2I_NAMEB_ADD), (LPVOID)&lpTempAdd, 4, NULL))
		return 0x0E;
	if (!ReadProcessMemory(m_hProcess, (LPCVOID)(lpTempAdd), (LPVOID)&(m_sPlayer.Name), 24, NULL))
		return 0x0F;

	CloseHandle(m_hProcess);
	return 0x00;
}

void CW2IClient::SetRestore(BOOL isHPRestore, int RestorePointHP, WPARAM KeyHP,int Delay, BOOL isMPRestore, int RestorePointMP, WPARAM KeyMP)
{
	m_bRestoreHP = isHPRestore;
	m_bRestoreMP = isMPRestore;
	m_iRestoreHP = RestorePointHP;
	m_iRestoreMP = RestorePointMP;
	m_iCountdown = Delay;
	m_wParamKeyHP = KeyHP;
	m_wParamKeyMP = KeyMP;
}

CString CW2IClient::GetHP(void)
{
	CString m_sHP = _T("0/0");
	m_sHP.Format(_T("%d/%d"),this->m_sPlayer.plrCurHP,this->m_sPlayer.plrMaxHP);
	return m_sHP;
}

CString CW2IClient::GetMP(void)
{
	CString m_sMP = _T("0/0");
	m_sMP.Format(_T("%d/%d"),this->m_sPlayer.plrCurMP,this->m_sPlayer.plrMaxMP);
	return m_sMP;
}

CString CW2IClient::GetName(void)
{
	CString m_sName(this->m_sPlayer.Name,9);
	return m_sName;
}

CString CW2IClient::GetEXP(void)
{
	CString m_sEXP = _T("0%");
	float Exp = ((float)this->m_sPlayer.plrCurEXP/this->m_sPlayer.plrMaxEXP)*100;
	m_sEXP.Format(_T("%.3f%%"),Exp);
	return m_sEXP;
}

CString CW2IClient::GetLoc(void)
{
	CString m_sLoc;
	m_sLoc.Format(_T("%d %d ↑ %d"),(int)((this->m_sPlayer.plrCorX / 10) + 400),(int)(550 + (this->m_sPlayer.plrCorY / 10)),(int)(this->m_sPlayer.plrCorZ / 10));
	return m_sLoc;
}

void CW2IClient::ReadMonsterInfo(void)
{
	if(m_psMonster)
		delete m_psMonster;
	m_psMonster = new Monster[768];
	LPBYTE ECXI,eax,tmp2;
	int tmp1;
	::GetWindowThreadProcessId(m_hWnd,&dwProcessID);	
	m_hProcess = ::OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE,0,dwProcessID);
	if (m_hProcess == 0)
		return;
	int MonsterSL;
	::ReadProcessMemory(m_hProcess,(LPCVOID)W2I_BASE_ADD,(LPVOID)&ECXI,4,NULL);
	::ReadProcessMemory(m_hProcess,(LPCVOID)(ECXI+0x8),(LPVOID)&eax,4,NULL);
	::ReadProcessMemory(m_hProcess,(LPCVOID)(eax+0x24),(LPVOID)&ECXI,4,NULL);
	::ReadProcessMemory(m_hProcess,(LPCVOID)(ECXI+0x24),(LPVOID)&tmp1,4,NULL);
	::ReadProcessMemory(m_hProcess,(LPCVOID)(ECXI+0x18),(LPVOID)&tmp2,4,NULL);	
	::ReadProcessMemory(m_hProcess,(LPCVOID)(ECXI+0x14),(LPVOID)&MonsterSL,4,NULL);
	int i = 0;
	m_iMonTotal = 0;	
	while (i<768)
	{
		Monster tmpMons;
		::ReadProcessMemory(m_hProcess,(LPCVOID)(tmp2 + 4 * i),(LPVOID)&eax,4,NULL);
		if(eax > 0)
		{
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x4), (LPVOID)&eax, 4, 0);		
			tmpMons.MonsterAdd = eax;
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x12C), (LPVOID)&(tmpMons.MonsterHP), 4, 0);		
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x154), (LPVOID)&(tmpMons.MonsterHPMax), 4, 0);	
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x124), (LPVOID)&(tmpMons.MonsterLevel), 2, 0);		
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x3C), (LPVOID)&(tmpMons.MonsterX), 4, 0);			
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x44), (LPVOID)&(tmpMons.MonsterY), 4, 0);			
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x40), (LPVOID)&(tmpMons.MonsterZ), 4, 0);			
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x254), (LPVOID)&(tmpMons.MonsterDistance), 4, 0);		
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x120), (LPVOID)&(tmpMons.MonsterClass), 4, 0);	
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0xB4), (LPVOID)&(tmpMons.MonsterType), 4, 0);		
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x11C), (LPVOID)&(tmpMons.MonsterID), 4, 0);		
			//Read Monster Name
			::ReadProcessMemory(m_hProcess, (LPCVOID) (eax + 0x230), (LPVOID)&ECXI, 4, 0);			
			::ReadProcessMemory(m_hProcess, (LPCVOID) (ECXI), (LPVOID)&(tmpMons.MonsterName), 64, 0);
			if (tmpMons.MonsterLevel != 0)
			{
				m_psMonster[m_iMonTotal] = tmpMons;
				m_iMonTotal++;
			}
		  }
		 i++;
		 if(i >= tmp1) 
			 break;
		}	
		CloseHandle(m_hProcess);
}

Monster* CW2IClient::GetMonsters(void)
{
	if(m_psMonster != NULL)
		return m_psMonster;
	return NULL;
}

int CW2IClient::GetMonsterNum(void)
{
	return m_iMonTotal;
}

bool CW2IClient::IsTargetMonster(void)
{
		::GetWindowThreadProcessId(m_hWnd,&dwProcessID);	
		m_hProcess = ::OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE,0,dwProcessID);
		if (m_hProcess == 0)
			return NULL;
		LPBYTE MemAddr;
		int CurMonsterID;
		::ReadProcessMemory(m_hProcess, (LPCVOID) W2I_BASE_ADD, (LPVOID)&MemAddr, 4, NULL);
		::ReadProcessMemory(m_hProcess, (LPCVOID)(MemAddr + 0x20), (LPVOID)&MemAddr, 4, NULL);
		::ReadProcessMemory(m_hProcess, (LPCVOID)(MemAddr + 0xA18), (LPVOID)&CurMonsterID, 4, NULL);
		CloseHandle(m_hProcess);
		if(CurMonsterID != 0)
		{			
			return true;
		}
	return false;
}

int CW2IClient::NextTarget(int LVmin, int LVmax, float Distance)
{
	for(int i = 0;i < this->m_iMonTotal; i++)
	{
		if((this->m_psMonster[i].MonsterLevel>=LVmin)&&(this->m_psMonster[i].MonsterLevel<=LVmax)&&(this->m_psMonster[i].MonsterDistance<=Distance))
			return i;
	}
	return -1;
}

void CW2IClient::StartSkill(void)
{
	m_bRunning = true;	
	for(int i = 0;i < 5; i++)
	{
		if(pInfo[i]->Enable)
		{
			pThread[i] = AfxBeginThread(ThreadSkill,(LPVOID) pInfo[i]);
			pThread[i]->m_bAutoDelete = TRUE;
			pThread[i]->ResumeThread();	
		}
	}

	for(int i = 5;i < 7; i++)
	{
		if(pInfo[i]->Enable)
		{
			pThread[i] = AfxBeginThread(ThreadBuff,(LPVOID) pInfo[i]);
			pThread[i]->m_bAutoDelete = TRUE;
			pThread[i]->ResumeThread();	
		}
	}

	pThread[7] = AfxBeginThread(ThreadPick,(LPVOID) pParam);
	pThread[7]->m_bAutoDelete = TRUE;
	pThread[7]->ResumeThread();   
}

Tệp Đính Kèm


Ko kí nữa






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]