Hướng Dẫn Code Đánh Quái Theo Danh Sách Xịn Sò Như WapVip

Hí mọi người , dạo này dịch bệnh covid đang rất căng thẳng mọi người ra ngoài nhớ đeo khẩu trang để bảo vệ mình và mọi người xung quanh nhé ! Như các bạn đã biết thì một công việc sẽ có rất nhiều hướng giải quyết ở đây mình chỉ gợi ý hướng đi gần hay xa còn phụ thuộc vào bản thân các bạn , code nhiều khi mình nhìn lại còn đéo hiểu mình đang làm cái gì nữa luôn .

Để đánh quái theo danh sách mình mong muốn đầu tiên chúng ta cần xác định hàm để thực hiện điều đó , chắc các bạn cũng không còn xa lạ với hàm autoPlay() trong class GameScr phải không ? trước còn bug được tdlt miễn phí giờ thì vẫn thế nhưng tdlt giờ rẻ bèo mọi người nên sử dụng vừa không bị delay quái vừa có thể nhặt đồ nhanh gọn nhé .

autoPlay() xem có gì thú vị không nào , dạo qua một vòng thì mình có thấy 2 vòng for để để xác định id của quái cần đánh trong map (id này sẽ khác với id của quái ở trong danh sách mob ) cứ coi là nó xác định vị trí của quái trong map đi :

Rồi xong giờ chúng ta chỉ cần tạo ra một danh sách để lưu id quái cần đánh thay vì chúng ta lấy từ GameScr.vMob.size() Có rất nhiều cách để lưu trữ như là dùng Array , List nhưng mình khuyên các bạn nên dùng List bởi vì nó cung cắp sẵn cho chúng ta rất nhiều phương thức thuận tiện trong việc xử lý dữ liệu như: thêm,sửa ,xóa .

Thư viện hỗ trợ :

using System.Collections.Generic;

Cùng tìm hiểu một số thuộc tính cũng như phương thức mà nó cung cấp sẵn để thấy được sự linh hoạt trong việc thao tác dữ liệu nè :

  • Count :   Trả về 1 số nguyên là số phần tử hiện có trong List.
  •  Add(object Value) : Thêm đối tượng Value vào cuối List.
  • Clear() : Xoá tất cả các phần tử trong List.
  • Remove(object Value) : Xoá đối tượng Value xuất hiện đầu tiên trong List.

Bắt tay vào code thôi nào đầu tiên chúng ta sẽ khai báo một List để lưu danh sách id quái cần đánh , nhớ là phải thêm thư viện bên trên vào trước mới sử dụng list dc nhé :

public static List<int> ListMob = new List<int>(); 

Giờ chúng ta sẽ code hiển thị danh sách quái dưới dạng menu để dễ dàng lựa chọn hơn nhé , các bạn có thể tham khảo video bên dưới để xem cách tạo menu:

Ở đây mình gắn phím tắt cho nhanh nhé đỡ phải chat bằng câu lệnh :

MyVector myVector = new MyVector();
for (int i = 0; i < GameScr.vMob.size(); i++){
	Mob mob = (Mob)GameScr.vMob.elementAt(i);
		if (!mob.isMobMe)){
			myVector.addElement(new Command(mob.getTemplate().name, 3));
		}
	}
GameCanvas.menu.startAt(myVector, 3);

Nhưng nếu cứ in như thế sẽ dẫn đến tình trạng trùng dữ liệu nhìn khá ngứa mắt :

Ở đây thì có thể có rất nhiều cách để xử lý , mình thì cứ sau mỗi lần thêm vào vector mình sẽ thêm tên đó vào một chuỗi mới và kiểm tra nếu đã tồn tại rồi thì sẽ không thêm vào vector nữa:

string checkname = "";
MyVector myVector = new MyVector();
for (int i = 0; i < GameScr.vMob.size(); i++){
	Mob mob = (Mob)GameScr.vMob.elementAt(i);
		if (!mob.isMobMe && !checkname.Contains(mob.getTemplate().name)){
			myVector.addElement(new Command(mob.getTemplate().name, 3));
			checkname += mob.getTemplate().name; // += cộng chuỗi
		}
	}
GameCanvas.menu.startAt(myVector, 3);

Giờ thì chúng ta chỉ cần xử lý hành động khi nhấn vào menu để lựa chọn loại quái cần đánh , ở trên mình để idAction = 3 .

Trước tiên chúng ta cần xóa hết danh sách cũ và thêm id quái mà chúng ta cần đánh vào, kiểm tra theo tên quái cần thêm vào danh sách theo ý muốn :

if (idAction == 3){
GameScr.ListMob.Clear();
for (int k = 0; k < GameScr.vMob.size(); k++)
{
	Mob mob = (Mob)GameScr.vMob.elementAt(k);
	if (((Command)GameCanvas.menu.menuItems.elementAt(GameCanvas.menu.menuSelectedItem)).caption == mob.getTemplate().name) // kiểm tra xem có trùng với tên ở menu để add id quái cần đánh trong map vào list
	{
		GameScr.ListMob.Add(mob.mobId);
	}
}
// GameCanvas.menu.menuSelectedItem - lấy giá trị index của menu mà chúng ta lựa chọn
}

Oke ! Xong giờ chúng ta đã lấy được danh sách vị trí quái cần đánh theo loại quái , giờ thì mình sẽ thêm một số cái đánh theo vị trí chẳng hạn , ở đây mình sẽ sử dụng câu lệnh chat:

public void onChatFromMe(string text, string to) .......
if (text == "them")
{
	GameScr.ListMob.Add(global::Char.myCharz().mobFocus.mobId); // thêm vị trí quái mà ta forcus vào danh sách.
	GameScr.info1.addInfo("Bạn đã thêm quái tại vị trí : " + global::Char.myCharz().mobFocus.mobId, 0);
}
if (text == "xoa")
{
	GameScr.ListMob.Remove(global::Char.myCharz().mobFocus.mobId); // xóa vị trí quái mà ta forcus vào danh sách
	GameScr.info1.addInfo("Bạn đã xóa quái tại vị trí : " + global::Char.myCharz().mobFocus.mobId, 0);
}
if (text == "xoaall")
{
	GameScr.ListMob.Clear();
 // xóa hết danh sách vị trí quái.
	GameScr.info1.addInfo("Bạn đã xóa danh sách quái ", 0);
}
// global::Char.myCharz().mobFocus.mobId lấy giá trị vị trí của quái mà ta forcus vào.

Đơn giản phải không mọi người ? giờ thì chúng ta sẽ sửa danh sách quái mặc định trong hàm autoPlay() nhé :

Chú ý : Nếu các bạn muốn đánh bỏ qua siêu quái thì thêm điều kiện .leverboss != 1 vào nhé :

Cảm ơn mọi người đã đọc tới dòng này , hôm nay tạm dừng ở đây thôi. Nếu các bạn cảm thấy bài viết/ video này hữu ích thì các bạn có thể like , đăng kí kênh để ủng hộ mình ra thêm nhiều hướng dẫn về mod hơn nữa nhé . THANKS ALL !

29 thoughts on “Hướng Dẫn Code Đánh Quái Theo Danh Sách Xịn Sò Như WapVip

  1. Lộc says:

    Anh chỉ rõ thật , cảm ơn , anh ơi hàm giaodich() chỗ index với num em cho chạy index sao cho trùng vị trí có id vật phẩm em muốn rồi sao nó không hiện lên trong khi giao dịch anh nhỉ , em mò rất nhiều rồi mới hỏi anh ạ

  2. Loc bất lực :(( says:

    anh ơi cái hàm giaodich( action id index num) sao em đếm index của bổ huyết trong hành trang (đã thử cách chạy index với điều kiên id trùng với 382 ) r và đặt action là 2 (lên index , lên num) giaodich(2,char2.charid,9,1) vẫn không thành công anh ạ , giao dịch nó không hiện vật phẩm bổ huyết
    em thấy cái hàm tradeItemlock(int coin , Item[] items) em nghĩ nó là hàm khóa giao dịch mà không biết cách vận hành khi nhập chỗ Item[] items là gì ạ
    anh giúp em với T.T ! cảm ơn anh vì những clip trước em mới hiểu được index

  3. Tú Võ Xuân
    Tú Võ Xuân says:

    anh ơi có cách nào làm cho nhân vật của mình nhặt hết mấy item (rớt ra từ quái) rồi mới chạy qua đánh con quái khác không ạ. Em có làm cái autonhat và cái đánh quái wapvip của anh trên youtube rồi.
    if (global::Char.myCharz().mobFocus.hp <= 0 || global::Char.myCharz().mobFocus.status == 1 || global::Char.myCharz().mobFocus.status == 0)
    {
    global::Char.myCharz().mobFocus = null;
    Thread.Sleep(1000);
    }
    đoạn code đó em có thêm Thread.Sleep(1000); thì nó cũng nhặt hết nhưng mà khu hình nó đứng theo cái lệnh sleep 1 giây rồi lại bình thường. Anh có cách nào giúp em là cho cái nhân vật đúng yên mà khung hình không bị đứng không ạ.

  4. MrAnh says:

    Anh Tuyên Ứi Em Hỏi Xí Làm Sao Để Unpack
    EncodingSource của a ra v a , em lỡ mã hóa mà quên tạo file dự phòng cái bản mod của em rồi

  5. fan a tuyên says:

    hic a ơi em mob đủ thứ vào pb 191 rồi giờ ad bắt tải bản mới mới thấy được hồng ngọc nên e hỏi a là cái hàm lưu hồng ngọc ở đâu để cho vô pb đang dùng hoặc a hướng dẫn luôn cũng được em cảm ơn

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *