Bỏ qua

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)