Hướng dẫn làm auto game

Mình hay chơi game và ko biết gì về lập trình! Cũng muốn mày mò để viết được auto chơi game đơn giản (game trên giả lập)

Cho mình hỏi mình cần bắt đầu học ngôn ngữ nào! Như học C# cơ bản! rồi học thêm chuyên sâu hơn ? để viết được 1 auto!

Ở phần này tôi sẽ nêu các ví dụ mẫu để kiểm tra các thông số HP, STM, Mana của nhân vật, nếu thấy nhỏ hơn giá trị được thiết lập thì Send key tương ứng để Pos bơm HP hay STM và Mana

Để sử dụng nó bạn có thể đưa vào sự kiện ontime. Bạn tạo một Timer control trong tab System của Delphi set time là 100 hay 500 milisecon tùy ý bạn muốn sau bao lâu chương trình kiểm tra HP hoặc STM, mana một lần. Theo tôi thì Check HP được ưu tiên cao nhất nên để 50 đến 100ms check một lần còn STM với mana thì 500 hoặc 1000ms là phù hợp, nếu check liên tục quá sẽ làm ảnh hưởng tới khả năng xử lý của máy tính, khiến chương trình nặng quá mức cần thiết

Nếu bạn không muốn dùng sự kiện OnTime để check và muốn nâng cao khả năng chống lỗi gây die, bạn có thể tìm hiểu cách tạo riêng các process cho phần auto pot chạy độc lập với chương trình auto. Điều này sẽ làm giảm thiểu khả năng die do chương trình đang bạn xử lý các tình huống khác. Trong delphi các bạn có thể sử dụng cách sau để tạo process :

Khai báo:

Type
AutoHpT = CLASS(TThread)

protected
procedure Execute; override;
end;

Tạo process

if StopHPRun then begin
HpThead:= AutoHpT.Create(true);
HpThead.Resume;
end;

Đây là đoạn mã được chạy trong process. Lặp vô tận để kiểm tra HP liên tục, nó sẽ dừng và giải phóng Process khi bạn Bấm nút stop đặt giá trị biến toàn cục STOPhp=True.

Procedure AutoHpT.execute;
begin
FreeOnTerminate := true;
repeat
StopHPRun:=False; // Dang chay autoHP
AutoHP;
sleep (Form1.ThoigiancheckHP.Value);
Until STOPhp;
StopHPRun:=True; // dung autoHP
end;

Để nghiên cứu sâu hơn về lập trình munti process và thead các bạn tìm đọc trong giáo trình delphi nhá 🙂

Các hàm mẫu như sau:

Read the rest of this entry »

Advertisement

 

2 bình luận

Posted by khavaq trên 15/12/2011 in Hướng dẫn viết phần mềm Auto game

 

Hướng dẫn lập trình auto game bằng Delphi 7 (phần 3 làm việc với memory)

22 Th11

Ở phần này tôi sẽ tiếp tục giới thiệu với các bạn cách sử dụng các hàm Read và writeprocessmemory để thực hiện việc lấy giá trị trong bộ nhớ game thay cho phương pháp sử dụng Getpixel cũ.

Chú ý quan trọng khi làm việc với memory là bạn phải nắm vững các kiểu dữ liệu của Delphi để khai báo cho đúng các biến thì việc đọc ghi memory mới thành công và không bị lỗi. Ví dụ để đọc 2byte kiểu interger thì bạn phải khai báo biến dữ liệu là Word. Chi tiết về kiểu biến bạn có thể dọc ngay trong Help của Delphi IDE hoặc tham khảo tài liệu hướng dẫn lập trình Delphi, ở đây tôi chỉ đưa các ví dụ cụ thể giúp bạn có thể hiểu được việc sử dụng thực tế các hàm này chứ không giải thích sâu về lý thuyết.

Chú ý quan trọng Hàm API Readprocessmemory dung để đọc dữa liệu thì bạn có thể sử dụng tùy ý. Nhưng hàm Writeprocessmemory thì không như vậy. Có một số game chống hack cấm thi hành phương thức này để thay đổi giá trị game. Hoặc rất dễ gây xung đột với chính việc cập nhật giá trị game nên bạn phải sử dụng nó thật cẩn thận để tránh xung đột. Hạn chế tối đa việc ghi đè bằng cách trước khi ghi thì đọc kiểm tra giá trị hiện tại, Nếu không thỏa mãn mới thực hiện việc ghi đè. Nếu không thể thực hiện thành công việc ghi đè do game chông hack hoặc bị xung đột, bạn sẽ phải sử dụng kỹ thuật inject Dll để làm việc này. Trong phạm vi bài viết này tôi không giới thiệu kỹ thuật phức tạp đó. Nhưng có một bí quyết là có thể sử dụng các file Dll inject đã được viết sẵn cho các auto game khác để làm việc này một cách đơn giản. Tận dụng các hàm Inject và Unmap đã được thiết kế sẵn cho nhanh. Trừ các trương hợp đặc biệt cần thiết mới phải tự thực hiện

Sau đây là các ví dụ : Read the rest of this entry »

 

1 bình luận

Posted by khavaq trên 22/11/2011 in Hướng dẫn viết phần mềm Auto game

 

Hướng dẫn lập trình auto game bằng Delphi 7 (phần 2 mouse và key)

16 Th11

CÁC HÀM ĐIỀU KHIỂN MOUSE VÀ PHÍM

Việc đầu tiên cần làm để  gửi phím và chuột đến cửa sổ game bất kỳ để điều khiển là bạn phải tìm Handler của cái cửa sổ củ chuối đó đã ví dụ:

WindowNameS := FindWindow(nil,’Windows Name’);

// Một số game chặn auto bằng việc can thiệp vào tiến trình này, nên nếu gặp trường hợp chỉ send được lệch đầu tiên rồi các lần kế tiếp không send được nữa, thì có lẽ bạn đang bị chống hack nó xxx. Cách xử lý là chạy lại đoạn mã trên để cập nhật lại giá trị  của WindowsNameS mỗi lần sử dụng lện send

Giờ chỉ việc dùng hàm API Sendmessage hoặc Posmessage để gửi lệnh điều khiển tới cửa sổ game. Tôi sẽ đưa luôn các code mẫu để các bạn tham khảo:

Di chuyển chuột tới tọa độ cần thiết (in game) nếu không có nhu cầu làm việc khác thì bạn có thể xài API

SetCursorPos(X,Y); để thay thế cho sendmessage các này có nhược điểm là vì hàm API SetcusorPos chiếm quyền điều khiển con trỏ chuột hệ thống. Nên nếu bạn sử dụng hàm này thì khi auto không làm được việc gì khác.

Procedure MouseMoveTomS(X,Y:integer);
begin
  SendMessage(WindownameS, WM_MOUSEMOVE, 0, MakeLParam(X,Y));    
    // Hoac xai ham duoi de thay the (khuyen cao ko nen dung neu ham tren dap ung duoc yeu cau)
   //SetCursorPos(X,Y);
end;

Read the rest of this entry »

 

3 bình luận

Posted by khavaq trên 16/11/2011 in Hướng dẫn viết phần mềm Auto game

 

Sử dụng Cheat Engine để search base address dùng cho auto play

14 Th11

Nguồn: Bài này tham khảo trên mạng chả nhớ nó ở đâu nữa, gom vào đây cho  đõ phải tìm lại

Chú ý: Quan trọng nhất khi tìm địa chỉ ADD game là phải biết được kiểu dữ liệu định tìm. Ví dụ khi tìm cho PTV game là HP có kiểu Real, HP max có kiểu integer 2 byte tương tự cho STM Mana. Mấu chốt là bạn tìm kiểu này không thấy thì thử kiểu khác, bao giờ đúng thì thôi. Đây là quá trình mệt mỏi nhất khi code Auto game

Có một số game chặn CE để chống Hack, bạn sẽ cần phải thực hiện thêm một số kỹ thuật nữa để vượt qua, như chạy game với user khác hoặc sử dụng hide tool… Cái này tôi sẽ hướng dẫn cụ thể trong một bài viết khác.

1. Mở CE và chọn process cần debug (lưu ý: bạn phải chọn được đúng cửa sổ nào sẽ được attach vào CE).Bước 1: Ví dụ bạn muốn search địa chỉ của HP, chúng ta đọc thông tin HP của nhân vật giá trị là 5111

Bước 2: Dùng cheat Engine chọn process và search giá trị này, là search lần đầu tiên “New Scan”, giá trị là decimal nên không check Hexa

Hướng dẫn làm auto game

2

Read the rest of this entry »

 

2 bình luận

Posted by khavaq trên 14/11/2011 in Hướng dẫn viết phần mềm Auto game

 

Hướng dẫn lập trình auto game bằng Delphi 7 (phần 1)

14 Th11

Ở loạt bài viết này, tôi sẽ cung cấp cho các bạn các Function cần thiết để viết một chương trình auto game. Bài cuối cùng các bạn sẽ được cung cấp một chương trình auto game hoàn chỉnh. Được code theo phương pháp Read Memory game để lấy số liệu cần thiết, thay cho phương pháp Getpixel được sử dụng trong chương trình viết bằng Autohotkey đã biết. Phương pháp này khắc phục được nhược điểm phải thiết lập màn hình và không thể làm việc khác khi auto. Nhưng có nhược điểm là bạn phải Debug game để tìm ra các địa chỉ Memory cần thiết cho auto hoạt động.  Cách thực hiện tôi sẽ trình bày trong một bài viết riêng.

Read the rest of this entry »

 

1 bình luận

Posted by khavaq trên 14/11/2011 in Hướng dẫn viết phần mềm Auto game

 

Hướng dẫn viết auto PTV bằng autohotkey

14 Th11

Lời tác giả: Đoạn mã này là kỷ niệm một thời tham gia PTV game online của tôi. Nó được xây dựng trong một thời gian rất dài. Phát triển từ các loại auto bằng phần cứng chuột, phím … Bằng tất cả sự đam mê của nhóm bạn bè trong clan Commandos. Chúng tôi là những kỹ sư cơ khí ô tô đi code phần mềm. Giai đoạn đầu bỡ ngỡ, vạn sự khởi đầu nan. Nhưng dù sao nó vẫn có giá trị kỷ niệm rất lớn trong lòng mọi người!!!

Đây là bài đầu tiên trong loạt bài về phổ biến kinh nghiệm, mã nguồn các chương trình auto tôi đã từng viết cho game PTV. Bản đầu tiên này được viết băng Autohotkey các bạn có thể tìm thấy nó ở đây http://www.autohotkey.com/download/