Chuyển đến nội dung chính

Bài 7: Tạo Menu Dùng Chức Năng Nhanh

 


Hello anh em! Mình là Mikasa GaVL! Hẳn từ Bài 2 mình có nhắc tới về idAction, hmmm... idAction nó chỉ là tên biến tham chiếu mình đặt theo NPH code thôi, chứ thực ra các bạn muốn đặt kiểu gì cũng được. Tuy nhiên thì mình sẽ hướng các bạn làm idAction theo phong cách kế thừa Class của C# nhé.

Đơn giản lắm, làm 1 2 lần là quen à! Bắt đầu nhé.

À, các bạn nhớ Subcrise kênh Youtube của mình nhé, không thấy ai sub buồn quá, hết động lực viết ! Hê hê, đùa thôi, biết anh vào được đây thì kiểu gì chẳng Sub kênh mình rồi.

Bài viết này khá là dài, cũng như nó thuộc một chút nâng cao về kiến thức Kế Thừa Class trong hướng đối tượng, nếu muốn viết đơn giản thì các bạn có thể xem:



Đầu tiên các bạn mở bản mod của các bạn lên nhé. 

Như mấy bài trước mình có 1 class riêng tên là ModGame.

Ở trên cùng dòng class các bạn thực hiện kế thừa Class cho mình nhé


Các bạn viết như mình nhé

Tiếp theo, các bạn viết 1 hàm để thực hiện, hmmm, nôm na là cũng na ná như lệnh chat nhưng ở đây sẽ chia ra thành nhiều lựa chọn.


Ok, sau khi viết hàm như thế thì chúng ta bắt đầu tìm hiểu idAction, à, không hẳn là idAction đâu, gọi là perform đi, hihi.


Vì tính chất về lâu về dài và gọn gàng thì mình khuyên các bạn dùng switch case

Còn không các bạn vẫn dùng bằng if cũng được.


Ok, thì trước mình có 1 bài viết về Auto Hồi Sinh, bạn nào chưa xem thì quay lại xem nhé.

Giờ ta làm 1 cái auto Hồi sinh bằng menu xem sao.


Thì như mình nói, các bạn nên dùng switch case sẽ dễ dàng hơn, nên mình chỉ hd qua switch case thôi nhé, if thì quá dễ rồi, các bạn thích thì tìm hiểu nhé.



Đây là cách gán idAction, để mình phân tích ra cho dễ hình dung nhé

switch(idAction) {case 1:} = if(idAction == 1) nghĩa là cái biến tham chiếu idAction của các bạn giờ đây nó được gán = 1. (Nhớ con số 1 này nhé)

2 dòng dưới 

ModGame.isAutoRevive = !ModGame.isAutoRevive;
GameScr.info1.addInfo("Auto Hồi Sinh\n" + (ModGame.isAutoRevive ? "[ON]" : "[OFF]"), 0);

là 2 dòng thực hiện chức năng bật tắt auto hồi sinh.

break; : là dòng lệnh ngắt lệnh, có nghĩa khi chạy game, các bạn sử dụng câu lệnh, nó sẽ chạy từ lúc nó bắt đầu từ case 1 đến hết 

GameScr.info1.addInfo("Auto Hồi Sinh\n" + (ModGame.isAutoRevive ? "[ON]" : "[OFF]"), 0);

thì nó gặp break, nó sẽ dừng chạy câu lệnh. Ngoài ra, có thể dùng return true/false, nếu đó là hàm về dạng bool.


Tất nhiên viết như này nó vẫn chưa thể thực hiện được, bởi nó cần 1 thứ gì đó hiện lên để người chơi thao tác. Vậy nên, chúng ta phải tạo menu cho các idAction đó. Làm cách nào thì đọc tiếp nhé.

Ta sẽ tạo 1 hàm tạo ra các menu, hmmm, này thì mình sẽ kèm hình ảnh chứ viết suông khó hiểu lắm.





        MyVector myVector = new MyVector();
   
myVector.addElement(new Command("XMap", gI(), 1, null));
   
myVector.addElement(new Command("Auto Point", gI(), 2, null));
   
myVector.addElement(new Command("Auto Chat", gI(), 3, null));
   
GameCanvas.menu.startAt(myVector, 4);

Ta phân tích nhé.

Dòng đầu thì nó liên quan đến lí thuyết của Hướng đối tượng nên các bạn tự gõ tìm hiểu nhé.

3 dòng tiếp theo là dòng tạo khuôn menu, các chữ "Menu 1" "Menu 2" "Menu 3" là tên các Menu mà các bạn muốn đặt

Trong đó, các số 1, 2 , 3 là các con số tương ứng với con số idAction mà mình nhắc các bạn nhớ ở trên.

Còn gI, các bạn phải viết riêng, thì nói nôm na thì nó là 1 dạng liên kết gián tiếp của các class với nhau, giả sử hàm của bạn private nhưng vẫn để static thì bạn có thể liên kết trung gian được nhé. Không biết nói bình thường như vậy các bạn hiểu không nhỉ. Các bạn hình dung bạn ngồi tổ 1, đứa bạn ngồi tổ 3, bạn muốn đưa cái bút cho đứa tổ 3 thì thông qua 1 đứa tổ 2 rồi truyền tới đứa tổ 3, nó kiểu vậy đó.


Để làm được ta khai báo 1 vài thứ



private static ModGame instance;

    
public static ModGame gI()
        
{
            
if (instance == null)
            
{
                
return instance = new ModGame();
            
}
            
return instance;
        
}


Nhớ đặt theo tên Class nhé!

Ok, nó mới chỉ là khuôn, giờ làm cho nó hiện lên nhé

Ở đây mình muốn bấm phát nó hiện luôn chứ không phải dùng chat gì cho lâu.

Ở đây mình gán phím X nhé. Các bạn quay lại cái hàm PhimTat, giờ Bài 7 rồi mà còn bạn nào không biết thì quay lại Bài 2 nhé.



Lưu ý: Các bạn viết chữ x thường nhé, viết hoa thì nó là chữ khác đấy, vì ở đây nó hiểu theo số Ascii chứ không phải chữ chúng ta viết.


Hmm, chưa xong đâu.


Quay lại phần MenuFunction, ta sửa 1 chút nhé

Như ý định mình muốn tạo 1 menu cho nó bật tắt auto hồi sinh, lúc đầu mình gán idAction = 1.





Ok, Vậy là xong rồi đấy, nói chung thì viết dài nhưng làm có vài bước thôi à. Chỉ cần nhớ Menu số mấy thì idAction cũng phải tương ứng với số đó, và tuyệt đối không được trùng số với nhau. Nó sẽ hỗn lộn chức năng nếu như các bạn để số nó giống nhau. Ok, lưu lại và vào game test thôi.


Chúc các bạn thành công


Nhận xét

Bài đăng phổ biến từ blog này

Bài 2: Liên Kết Chức Năng Vào Class Riêng

Bài 1: Hướng Dẫn Tạo Class Riêng