Phần thưởng Boss¶
Hook OnMonsterDie kích hoạt khi bất kỳ quái vật nào chết. Sử dụng nó để thêm phần thưởng và thông báo tùy chỉnh cho các lần hạ Boss.
Thông báo toàn server khi hạ Boss¶
local BOSS_CLASSES = {
[275] = "Kundun",
[149] = "Golden Budge Dragon",
[43] = "Red Dragon",
}
local function OnMonsterDie(aIndex, bIndex)
local monster = GetUser(aIndex)
local killer = GetUser(bIndex)
if monster == nil or killer == nil then return 0 end
local bossName = BOSS_CLASSES[monster.Class]
if bossName then
GCNoticeSendToAll(0, killer.Name .. " has defeated " .. bossName .. "!")
LogAdd(LOG_GREEN, "[Boss] " .. bossName .. " killed by " .. killer.Name)
end
return 0 -- Cho phép xử lý rơi đồ bình thường
end
BridgeFunctionAttach("OnMonsterDie", OnMonsterDie)
Hạ Boss với phần thưởng bổ sung¶
local BOSS_REWARDS = {
[275] = { zen = 1000000, item = GET_ITEM(14, 13), qty = 3 }, -- Kundun: 1M zen + 3 JoB
[43] = { zen = 500000, item = GET_ITEM(14, 14), qty = 1 }, -- Red Dragon: 500k + 1 JoS
}
local function OnMonsterDie(aIndex, bIndex)
local monster = GetUser(aIndex)
local killer = GetUser(bIndex)
if monster == nil or killer == nil then return 0 end
local reward = BOSS_REWARDS[monster.Class]
if reward == nil then return 0 end
-- Tặng Zen
gObjCharacterAddZen(killer, reward.zen, true)
-- Tặng vật phẩm
for i = 1, reward.qty do
ItemGiveEx(bIndex, reward.item, 0, 0, 0, 0, 0, 0)
end
GCNoticeSend(bIndex, 1, "Boss reward: " .. reward.zen .. " Zen + " .. reward.qty .. " item(s)!")
return 0
end
BridgeFunctionAttach("OnMonsterDie", OnMonsterDie)
Phần thưởng Boss cho tổ đội¶
local PARTY_BOSS_CLASS = 275 -- Kundun
local function OnMonsterDie(aIndex, bIndex)
local monster = GetUser(aIndex)
local killer = GetUser(bIndex)
if monster == nil or killer == nil then return 0 end
if monster.Class ~= PARTY_BOSS_CLASS then return 0 end
-- Nếu người giết đang trong tổ đội, thưởng cho tất cả thành viên
if IsParty(killer) then
for i = 0, 4 do
local memberIdx = GetMemberIndex(killer, i)
if memberIdx ~= -1 and gObjIsConnectedGP(memberIdx) then
gObjCharacterAddZen(GetUser(memberIdx), 500000, true)
GCNoticeSend(memberIdx, 1, "Party boss reward: 500,000 Zen!")
end
end
else
-- Giết solo: phần thưởng lớn hơn
gObjCharacterAddZen(killer, 1000000, true)
GCNoticeSend(bIndex, 1, "Solo boss reward: 1,000,000 Zen!")
end
GCNoticeSendToAll(0, killer.Name .. " has defeated Kundun!")
return 0
end
BridgeFunctionAttach("OnMonsterDie", OnMonsterDie)