====== Kịch bản hiện thị thanh HP (UI) ====== ====Chức năng==== Kịch bản cập nhập thanh HP hiện tại của người chơi {{ :script:feature:hpbar_ui.png?direct&600 |}}\\ **CHÚ Ý:** * Kịch bản là một hàm chức năng có thể vận dụng cho nhiều trường hợp liên quan như các thuộc tính khác hoặc giá trị mang chức năng tương tự ... * Hàm chỉ áp dụng được khi đã nhập các giá trị cần thiết vào bảng và có hàm khác kích hoạt ---- ====Giải thích các dòng lệnh==== local uiid = [[7437132046194847619]] local elementidTxt = [[7437132046194847619_3]] local elementidBar = [[7437132046194847619_2]] * Định nghĩa các biến uiid, elementidTxt, và elementidBar để lưu trữ ID của UI và các thành phần UI như thanh máu và text hiển thị máu. * **Chú ý: Thay ID thành ID giao diện và thành phần sử dụng** ---- local WBar = 560 local tick = 0.08 * WBar là chiều rộng của thanh máu khi đầy, và tick là thời gian cập nhật cho hoạt ảnh mượt mà. * **Chú ý: Thay độ dài, thời gian tải thích hợp** ---- local function HP(uid) * Hàm HP nhận UID người chơi cập nhập hiển thị thanh HP ---- local HPmax = select(2,Player:getAttr(uid,1)) HPmax = math.ceil(HPmax) local HP = select(2,Player:getAttr(uid,2)) HP = math.max(0, math.ceil(HP)) * Hàm HP lấy tối đa (HPmax) và hiện tại (HP) của nhân vật uid. math.ceil làm tròn các giá trị HPmax và HP để tránh số thập phân, và math.max đảm bảo HP không âm. ---- Trigger.UI:PlaySmoothAnim(uid, uiid, elementidBar, Trigger.UI:MakeSmoothScaleBy(tick,'w',3,(HP/HPmax)*WBar)) Customui:setText(uid, uiid, elementidTxt, HP..' / '..HPmax) end * Dòng đầu tiên tạo hoạt ảnh mượt cho thanh máu với chiều rộng tỷ lệ với phần trăm HP hiện tại. Dòng thứ hai cập nhật text hiển thị giá trị hiện tại của HP trên UI. ---- local function HPATTR(event) if event.playerattr == 1 or event.playerattr == 2 then HP(event.eventobjid) end end * Hàm HPATTR được gọi khi có sự thay đổi về thuộc tính của người chơi. Nó kiểm tra nếu thuộc tính thay đổi là HP tối đa (1) hoặc HP hiện tại (2) thì sẽ gọi hàm HP để cập nhật thanh máu. ---- local function Login(event) HP(event.eventobjid) end ScriptSupportEvent:registerEvent('Game.AnyPlayer.EnterGame', Login) * Login được gọi khi người chơi vào game, nó cập nhật thanh máu ngay từ lúc đầu vào game. Đăng ký sự kiện khi người chơi vào game (Game.AnyPlayer.EnterGame) để gọi hàm Login thực hiện cập nhật thanh máu ban đầu. ---- ====Kịch Bản Tham Khảo:==== * **Chú ý: Kịch bản cần bổ sung các thông số cần thiết để hoạt động** local uiid = local elementidTxt = local elementidBar = local WBar = local tick = local function HP(uid) local HPmax = select(2,Player:getAttr(uid,1)) HPmax = math.ceil(HPmax) local HP = select(2,Player:getAttr(uid,2)) HP = math.max(0, math.ceil(HP)) Trigger.UI:PlaySmoothAnim(uid, uiid, elementidBar, Trigger.UI:MakeSmoothScaleBy(tick,'w',3,(HP/HPmax)*WBar)) Customui:setText(uid, uiid, elementidTxt, HP..' / '..HPmax) end local function HPATTR(event) if event.playerattr == 1 or event.playerattr == 2 then HP(event.eventobjid) end end ScriptSupportEvent:registerEvent('Player.ChangeAttr', HPATTR) local function Login(event) HP(event.eventobjid) end ScriptSupportEvent:registerEvent('Game.AnyPlayer.EnterGame', Login) --- //Cre:**[[https://www.facebook.com/fb.ngkhanh.mc|Nguyễn Khánh]]** 2024/11/15 09:14// ---- Nếu bạn có bất kỳ câu hỏi nào về Chế Độ DEV Nâng Cao, vui lòng tham gia\\ **[[https://www.facebook.com/groups/miniworldvn.developer|Mini World Developer Việt Nam]]** chính thức của chúng tôi