ShinnUI wiki
Trang chủ/Biến & Script/Placeholder

Placeholder — biến trong ShinnUI

ShinnUI có 2 "lớp" biến: function variable dạng {type: value} / ${func_args} (parse nội bộ, dùng mọi nơi trong menu) và PAPI expansion %shinnui_*% (dùng cả bên ngoài menu, qua PlaceholderAPI).

Thứ tự parse#2>

Khi một chuỗi trong menu được render, ShinnUI xử lý theo thứ tự:

  1. Function variable nội bộ ({...}, ${...} — xem bảng dưới)
  2. Tham số menu ({0}, {1}… — replaceWithOrder)
  3. PlaceholderAPI (%...%)
  4. Colorify (màu &, hex &#RRGGBB, gradient) — hoặc trước nếu Pre-Color: true

Function variable {type: value}#2>
Cú phápAliasÝ nghĩa
{0} {1}Tham số menu khi mở (xem Truyền tham số).
{kether: expr}{ke:}Chạy Kether, thay kết quả.
{javascript: expr}{js:}Chạy JavaScript, thay kết quả.
{jexl: expr}Chạy Apache JEXL.
{nova: expr}{novalang:}, {novascript:}Chạy NovaScript.
{meta: key}{m:}Đọc Meta (tạm) của người chơi.
{data: key}{d:}Đọc Data (DB) của người chơi.
{globaldata: key}{gdata:}, {g:}Đọc GlobalData (chung server).
{node: key}{nodes:}, {n:}Đọc giá trị bất kỳ từ chính file YAML của menu (theo path key, không phân biệt hoa thường) — hữu ích để "hằng số" dùng lại.
{lang: key}Đọc giá trị từ node Lang của menu theo locale người chơi.
{triton: key}Đọc text qua plugin Triton (nếu cài).

Parser quét dấu ngoặc theo bracket-balance (đếm {}, bỏ qua nội dung trong chuỗi "..."), nên script lồng nhau như {js: func({meta:x})} vẫn hoạt động. Nếu cần ký tự } trong chuỗi, thoát bằng \}.

Internal function ${name_args}#2>

Gọi function định nghĩa trong node Functions: của menu — chi tiết ở Functions nội bộ:

name: '${flash_➥}'        # gọi hàm flash, args[0] = "➥"
lore:
  - '${bStats_servers}'    # key lồng nhau: Functions.bStats.servers

PAPI expansion — %shinnui_*%#2>

Khi cài PlaceholderAPI, ShinnUI tự đăng ký expansion identifier shinnui:

PlaceholderGiá trị
%shinnui_menus%Tổng số menu đã nạp.
%shinnui_args_<index>%Tham số menu của session (chỉ khi đang mở menu).
%shinnui_meta_<key>%Meta của người chơi (hỗ trợ key lồng: phần sau được join bằng _).
%shinnui_data_<key>%Data (DB) của người chơi.
%shinnui_globaldata_<key>%GlobalData.
%shinnui_node_<key>%Giá trị node từ file menu đang mở.
%shinnui_menu_page%Trang đang xem (bắt đầu 0).
%shinnui_menu_pages%Tổng số trang.
%shinnui_menu_next%Trang kế tiếp (thường dùng page: %shinnui_menu_next%).
%shinnui_menu_prev%Trang trước.
%shinnui_menu_title%Title của menu đang mở (frame hiện tại).
%shinnui_js_<expr>%Chạy JS — phải bật Options.Placeholders.JavaScript-Parse (mặc định tắt vì lý do hiệu năng/bảo mật).
%shinnui_jexl_<expr>%Chạy JEXL — cần bật Jexl-Parse.

Các placeholder meta/input như %shinnui_meta_input% dùng được cả khi không mở menu (vì meta gắn người chơi), nhưng menu_* chỉ đúng trong session đang mở.

Biến input (tính năng fork)#2>
PlaceholderGiá trị
%shinnui_meta_input%Tổng đồ đang buffer.
%shinnui_meta_input_<slot>%Đồ buffer tại slot (ví dụ _input_10).
%shinnui_meta_input_count%Số slot đang có đồ.
%shinnui_meta_input_taken%Số trừ thực tế lần commit cuối.
%shinnui_meta_input_missing%Danh sách thiếu (commit fail).

Xem Input Menu.

Ví dụ nhanh#2>
name: '&bNgười chơi: &f%player_name%'
lore:
  - '&7Số dư: &6%vault_eco_balance%'
  - '&7Ping: ${js: varInt("%player_ping%") < 60 ? "&a" : "&2"}%player_ping% ms'
  - '&7Trang: &f%shinnui_menu_page%/%shinnui_menu_pages%'
  - '&7Tham số 1: &f{0}'