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. Ví dụ mở rương thưởng, khối may mắn…
- 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
local tab_note = { {rate=_},{rate=_},... }
local sumSoFar = 0 for index,tab in ipairs(tab_note) do sumSoFar = sumSoFar + tab.rate tab_note[index].rate = sumSoFar end
local rand = math.random(1,sumSoFar) for index,tab in ipairs(tab_note) do if rand <= tab.rate then return ... end end
local tab_note = { {id=11570,count=10,rate=30},{id=11571,count=4,rate=25},{id=11575,count=2,rate=20}, {id=11576,count=1,rate=15},{id=11597,count=1,rate=5},{id=11594,count=1,rate=5} } local sumSoFar = 0 for index,tab in ipairs(tab_note) do sumSoFar = sumSoFar + tab.rate tab_note[index].rate = sumSoFar end function getRandomId() local rand = math.random(1,sumSoFar) for index,tab in ipairs(tab_note) do if rand <= tab.rate then return tab.id, tab.count end end end --[[Hàm sự kiện]]-- local function lucky_block(event) if event.blockid == 140 then local id, count = getRandomId() Player:gainItems(event.eventobjid, id, count, 1) end end ScriptSupportEvent:registerEvent('Player.ClickBlock',lucky_block)
local tab_note = { {id=11570,count=10,rate=30},{id=11571,count=4,rate=25},{id=11575,count=2,rate=20}, {id=11576,count=1,rate=15},{id=11597,count=1,rate=5},{id=11594,count=1,rate=5} }
return tab.id, tab.count
local tab_note = { {rate=_},{rate=_},... } – Bảng nhập tỉ lệ kèm các giá trị liên quan local sumSoFar = 0 – Biến tổng for index,tab in ipairs(tab_note) do – Thay đổi lại bảng cho phù hợp sumSoFar = sumSoFar + tab.rate tab_note[index].rate = sumSoFar end function getRandomId() – Hàm trả về kết quả theo tỉ lệ đã nhập local rand = math.random(1,sumSoFar) for index,tab in ipairs(tab_note) do if rand <= tab.rate then return ... end end end
— Cre:Nguyễn Khánh 2024/10/17 05:18
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
Mini World Developer Việt Nam chính thức của chúng tôi