Cách tạo Menu đơn giản bằng Events

Thường thì các menu mặc định của RPG Maker đều rất xấu và đậm chất… RPG Maker. Nếu như bạn làm các game non-RPG như Visual Novel hay chăn nuôi trồng trọt đồ thì cần các menu dễ thương và đơn giản hơn. Nhưng nếu bạn không biết lập trình, thì đây chính là tutorial dành cho bạn, ô hố hố hố. Hôm nay mình sẽ hướng dẫn cho bạn tạo một menu siêu đơn giản như thế này.

ezgif.com-video-to-gif.gif

Bạn hoàn toàn có thể làm những menu phức tạp và sáng tạo hơn bằng phương pháp này, nhưng bây giờ chúng ta sẽ bắt đầu từ mức dễ trước.

BƯỚC 1: CHUẨN BỊ TÀI NGUYÊN

bandicam 2018-04-02 14-54-15-238

Mình sẽ tạo một menu 3 mục gồm item, options, load. Bạn sẽ cần hình ảnh cho 3 nút này và để trong mục img/pictures. Bạn có thể tải những nút trên ở ĐÂY. Hàng trên là khi chưa trỏ chuột vào, hàng hai là đang trỏ chuột vào.

BƯỚC 2: TẮT MENU THƯỜNG, CHO PHÉP MỞ MENU MỚI

bandicam 2018-04-02 14-57-15-401

Tạo một event ở ngoài map với chức năng tắt quyền truy cập vào menu thường và kích hoạt switch mà sẽ cho phép người chơi quyền truy cập vào menu mới.

BƯỚC 3: TẠO NÚT SẼ KÍCH HOẠT MENU

bandicam 2018-04-02 15-32-33-667

Tạo một Common Event mà sẽ chạy song song khi swith ở bước 2 được kích hoạt. Comment Event này có tác dụng khi người chơi ấn nút X, Esc hoặc Numpad 0 (cancel) thì sẽ hiện menu mới ra.

Giải thích:

  1. Tại sao mình dùng Condition > Script: Input.isTriggered(‘cancel’) thay vì Condition > Button: Cancel? Đó là vì cái button đó thực ra giống cái script trên nhưng thay Triggered thành Pressed. Triggered là khi ấn lên nút X, còn Pressed là nó tính luôn cả giữ lên nút X mà không thả ra. Hiểu đơn giản thì thế này. Triggered = Kích hoạt một lần, Pressed = Kích hoạt hàng tá lần vì lỡ vô tình giữ nút X lâu hơn 0.1s = LỖI!
  2. 3 cái Show Pictures kia là 3 nút Item, Options và Load ở chế độ chưa trỏ chuột vào. Bạn có thể coi vị trí X Y của các nút ở hình trên. Mình sẽ có một bài hướng dẫn khác chỉ cách xác định X Y để Show Pictures lên đúng vị trí mình muốn.
  3. Variable “Menu List Variable” sẽ là Variable duy nhất cho menu mới này. Variable này giúp xác định mình đang trỏ chuột ở nút nào. Ở đây có 3 nút, thì variable này sẽ có giả trị từ 0 đến 2. 0 là Item, 1 là Options và 3 là Load. Ở đây mình đặt là 0, thì có nghĩa cứ khi nào mở menu là trỏ chuột sẽ chỉ  về nút Item.
  4. Switch “Menu đang mở” là Switch xác nhận menu hiện tại đang được mở. Switch “Cho phép chọn Menu List” là Switch hoạt động ngầm cho các chức năng của menu như ấn nút trái phải để chọn menu, thay hình các nút sang trạng thái trỏ chuột, etc…
  5. Vì sao mình lại tắt switch “Cho phép gọi Menu” ở cuối? Vì nếu mình không tắt, khi bạn ấn X một lần nữa, mấy cái lệnh này sẽ chạy lại một lần nữa, suy ra LỖI! Với lại nếu bạn muốn đóng menu thì bạn sẽ phải ấn X. Nhưng làm sao ấn X để đóng được khi X sẽ gọi menu ra, phải không? Cho nên mới phải tắt Switch đó đó.

BƯỚC 4: TẠO NÚT ĐÓNG MENU

bandicam 2018-04-02 16-14-31-635

Bây giờ chúng ta tạo thêm một Comment Event nữa với chế độ chạy Autorun. Vì sao Autorun? Vì nó sẽ không cho phép nhân vật di chuyển khi menu đang mở. Thử tưởng tượng ấn phải để chọn Options mà nhân vật đi sang phải luôn coi. Kì cục. Comment Event này có chức năng cho phép người chơi đóng menu khi menu đang mở khi ấn nút X một lần nữa.

Giải thích:

  1. Lệnh Label Jump to Label này là gì? Thực ra nếu không có 2 lệnh này, cái Comment Event này sẽ khiến FPS tụt xuống còn dưới 10 do Autorun. Đây là lỗi của RPG Maker, nhưng trick mà tớ khám phá ra là chỉ cần vứt 2 lệnh này vào ở đầu vào cuối là sẽ mượt như Parallel. ;D (Tip này đảm bảo chưa ai biết)
  2. Ở đây mình tắt hết các Switch còn lại. Đương nhiên, vì đây là Comment Event đóng menu mà. Nó phải tắt đi kẻo lại sinh ra lỗi.
  3. Để ý lệnh Wait 5 không? Các bước tiếp theo mình sẽ giải thích cho dễ hiểu.
  4. 3 lệnh Erase Pictures giúp xóa đi các nút trên màn hình.

BƯỚC 5: TỰ ĐỘNG THAY ĐỔI TRẠNG THÁI NÚT (THƯỜNG VÀ TRỎ CHUỘT VÀO)

bandicam 2018-04-02 15-33-09-848

Nhớ cái Variable “Menu List Variable” không? Comment Event này giúp thay đổi hình ảnh của các nút. Nếu biến này đang ở 0 thì đổi hình của nút item sang item-1 (trỏ chuột chĩa vào). Biến ở 1 thì đổi hình 2, và tương tự. Giờ còn nhớ lệnh Wait 5 không? Vì biến này nó thay đổi Picture liên tục nên nếu tắt mà không có wait, ở bước trước hình sẽ không bị xóa. Có wait 5 = đợi hẳn cho switch của cái Comment Event này tắt rồi mới thực hiện lệnh tiếp theo.

BƯỚC 6: TẠO NÚT CHỌN ITEM, OPTIONS VÀ LOAD

bandicam 2018-04-02 15-33-15-301

Đây là Comment Event sẽ giúp người chơi có khả năng chọn các nút khi ấn phím trái hoặc phải. Lệnh Input.isTriggered đó thì chắc mình không cần phải giải thích nữa. Ngoài ra bạn không cần dùng lệnh Jump hay Jump to Label cũng được vì đây là Parallel Event. Mình quên xóa.

Giải thích:

  1. Khi ấn phím trái, ta sẽ trừ biến Menu List Variable một đơn vị. Phím phải thì cộng một đơn vị. Để cho dễ hiểu thì – là trái và + là phải. Cái này phải cố tự hiểu chứ mình cũng không biết phải giải thích sao nữa. Ở bước tiếp theo mình sẽ cố.

BƯỚC 7: TẠO GIỚI HẠN CHO BIẾN

bandicam 2018-04-02 15-33-20-268

Giờ quay lại bước 6 nhé. Cứ ấn phím Phải là sẽ cộng 1 đơn vị vào biến. Biến này chúng ta đã đặt là 0 mỗi khi menu mở. Vậy ấn phải 1 lần, nó từ item sẽ qua options, ấn lần nữa sẽ qua load, vậy chuyện gì sẽ xảy ra khi ấn phim Phải một lần nữa? LỖI! Giờ hãy thử test demo của bạn với lỗi này. Biến sẽ nhảy qua 4, 5, 6. Và vì chúng ta không cài đặt tài nguyên cho các đơn vị này nên bây giờ nếu bạn ấn phím Trái, trỏ chuột sẽ không từ Load qua Options vì biến này hiện đang có đơn vị 5, 6 do bạn ấn nhiều phím Phải chứ không phải 2 nữa. Tương tự phím Trái cũng vậy, nó sẽ cho về số âm. Đó là lí do vì sao chúng ta tạo thêm Comment Event này nhằm kiểm soát giới hạn của biến này.

Giải thích:

  1. Nếu ấn phím trái liên tục và biến bị cho về số âm, ngay lập tức chuyển nó trở thành số 2 (Load). Như vậy nghĩa là khi bạn ấn phím Trái ở trỏ chuột Item thì trỏ chuột sẽ nhảy load phím Load thay vì bị lỗi.
  2. Tương tự. Nó sẽ nhảy về số 0 (Item) nếu ấn phải quá giới hạn. Như vậy sau hai lệnh trên, chúng ta sẽ có một menu lặp. Test demo mà bạn đang làm là hiểu ngay hà.

Sau các bước trên, bạn sẽ có một menu thế này:

bandicam 2018-04-02 15-55-46-926

Oops, bạn để ý thấy gì không? Menu vẫn có thể kích hoạt khi một event khác đang chạy. Ở đây là event lời thoại. Kì cục ha? Giờ chúng ta sẽ quay lại Comment Event 0001.

bandicam 2018-04-02 15-55-17-911.png

Tạo thêm một lệnh điều kiện có Else với Script: $gameMap.isEventRunning() === true. Lệnh này có nghĩa là nếu có một event khác đang chạy thì <không có gì xảy ra khi ấn X cả>, nếu không có event đang chạy thì <cho phép mở menu>. Problem solved! Đảm bảo chưa có tutorial nào có tip này nhé. =))

BƯỚC 8: TẠO CÔNG DỤNG CỦA CÁC NÚT ITEM, OPTIONS VÀ LOAD

bandicam 2018-04-02 15-41-06-832

Ở Comment Event này, nếu người chơi ấn phím OK khi trỏ chuột đang ở biến 0 (Item) thì sẽ gọi Scene_Item [SceneManager.push(Scene_Item)]. Tương tự các lệnh phía dưới. Cái này dễ hiểu mà hen?

Và thế là chúng ta đã xong một menu đơn giản (cho những người rành RPG Maker). ♥ Hãy test demo mà bạn đang làm đi nào.

 

Viết bài + Tutorial: Sang Hendrix

2 thoughts on “Cách tạo Menu đơn giản bằng Events

  1. Những lệnh gọi script thì có dùng được y hệt ở VX ACE không? hay phải thay đổi như nào?

    Like

Leave a reply to Sang Hendrix Cancel reply