• Khi người chơi phá một khối chỉ định, vật phẩm ngẫu nhiên sẽ rơi ra với số lượng ngẫu nhiên
Bước 1: tạo và gán function vào event
-- Tạo một function, gán function này cho sự kiện người chơi đập khối -- dưới đây là bước tạo function, bạn có thể đổi tên function tùy ý local function khi_nguoi_choi_dap_khoi(e) -- “e” là một biến table(bạn có thể đổi thành tên khác tùy ý), chứa các thành phần trong event mà function được gán vào (VD: eventobjid, objid, itemid,...) -- các bạn sẽ tìm được các thành phần đó ở wiki script. end -- Dưới đây là bước khai báo event và gán function đã tạo vào event. --Tất cả những gì trong function sẽ được thực hiện khi event được kích hoạt ScriptSupportEvent:registerEvent(“Block.DestroyBy”, khi_nguoi_choi_dap_khoi)
Bước 2: xác định loại khối đã bị đập
local function khi_nguoi_choi_dap_khoi(e) local block = e.blockid -- blockid là một thành phần của event này --các bạn có thể check ở wiki về các thành phần của từng event if block == 200 then -- 200 là id của khối gỗ cherry --nếu id của block trong sự kiện = 200 tức là khối bị đào là khối gỗ cherry thì điều kiện if này được thỏa mãn và hành động trong điều kiện này sẽ được thực thi end end ScriptSupportEvent:registerEvent(“Block.DestroyBy”, khi_nguoi_choi_dap_khoi)
Bước 3: Hành động xảy ra sau khi xác định được khối bị phá vỡ
local function khi_nguoi_choi_dap_khoi(e) local block = e.blockid if block == 200 then -- nếu id của khối bị phá là 200 thì… local ket_qua, id = Item:randomItemID() -- ở trên là một api game cho phép chúng ta lấy id của một vật phẩm bất kì --biến “ket_qua” sẽ mang giá trị 0 hoặc 1001 --nếu api hoạt động thành công thì là 0, nếu không hoạt động thành công thì là 1001 -- Đến bước này chúng ta sẽ thêm vật phẩm vào túi đồ của người chơi. --Trước tiên sẽ xác định số lượng vật phẩm mà người chơi sẽ nhận --sử dụng math.random(1,10) để lấy một giá trị ngẫu nhiên từ 1 tới 10 sau đó gán vào biến “so_luong” local so_luong = math.random(1,10) -- sau khi có được số lượng vật phẩm sẽ nhận, chúng ta dùng api ở dưới để thêm vật phẩm cho người chơi. --“e.eventobjid” là người chơi trong kích hoạt sự kiện, tương tự như “e.blockid” ở trên. --“id” là biến đã được tạo ở bước lấy id một vật phẩm bất kì trong game Backpack:addItem(e.eventobjid,id,so_luong) -- Các bạn có thể viết trực tiếp math.random(1,10) vào api ở trên thay vì gán giá trị vào biến “so_luong” rồi mới viết vào api end end ScriptSupportEvent:registerEvent(“Block.DestroyBy”, khi_nguoi_choi_dap_khoi)
— Cre:Vũ Hoàng 2024/05/10