找回密码
 registerss
搜索
查看: 304|回复: 0

[功能移植] X64武道三源端 爆率回调使用方法

[复制链接]
  • 打卡等级:本地老炮
  • 打卡总天数:597
  • 打卡月天数:12
  • 打卡总奖励:594
  • 最近打卡:2026-09-15 17:12:42
Waylee 发表于 2026-2-1 04:05 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?registerss

×

ScriptGlobal.lua加入

DropRatePercent         = 564 --爆率额外加成 50代表 +50%

修改此MDEX可以控制爆率倍率 SetMissionDataEx(sceneId,selfId,50)


添加到文件:/home/tlbb1/Public/Data/Script/event/system/Callback_MonsterDrop.lua

Script.dat 注册脚本:

;爆率回调
768990=\event\system\Callback_MonsterDrop.lua
x768990_g_ScriptId = 768990

--**********************************
-- 怪物掉落回调
-- 在怪物死亡计算掉落前调用,可以控制爆率和是否允许掉落
--**********************************
-- 参数说明:
--   sceneId:      场景ID
--   selfId:       玩家ObjID (获得掉落的玩家)
--   monsterObjId: 怪物ObjID
--   monsterDataId:怪物模板ID (DataID)
--   playerLevel:  玩家等级
--   dropData:     掉落数据对象 (用于getData/setData)
--   getData:      获取掉落数据函数
--   setData:      设置掉落数据函数
--
-- getData/setData 索引说明:
--   0  = (只读) 场景ID
--   1  = (只读) 玩家ObjID
--   2  = (只读) 怪物ObjID
--   3  = (只读) 怪物模板ID
--   4  = (只读) 玩家等级
--   5  = (只读) 怪物等级
--   6  = (只读) 掉落箱ID
--   7  = (读写) 物品ID
--   8  = (读写) 物品品质
--   9  = (读写) 掉落公告ID
--   10 = (读写) 爆率系数(万分比, 10000=100%=不加成, 15000=+50%爆率)
--   11 = (只读) 随机值 (万分比)
--   12 = (读写) 是否允许掉落 (1=允许, 0=禁止)
--   13 = (只读) 是否BOSS怪物
--   14 = (只读) 是否队伍掉落
--   15 = (读写) 额外字段
--
-- 返回值:
--   返回值1: 是否允许掉落 (0=禁止掉落, 其他值=允许掉落)
--   返回值2: 爆率倍率修正 (万分比, 10000=不变, 15000=1.5倍, 5000=0.5倍, 0=使用dropData中的值)
--**********************************
function x768990_callback_MonsterDrop(sceneId, selfId, monsterObjId, monsterDataId, playerLevel, dropData, getData, setData)
    -- 获取基础信息
    local monsterLevel = getData(sceneId, selfId, dropData, 5)
    local isBoss = getData(sceneId, selfId, dropData, 13)
    local isTeamDrop = getData(sceneId, selfId, dropData, 14)
    local currentDropRate = getData(sceneId, selfId, dropData, 10)  -- 万分比

    -- 调试输出
    x768990_NotifyTip(sceneId, selfId, 
        "怪物掉落回调: 怪物ID=" .. tostring(monsterDataId) ..
        " 怪物等级=" .. tostring(monsterLevel) ..
        " 是否BOSS=" .. tostring(isBoss) ..
        " 当前爆率=" .. tostring(currentDropRate/100) .. "%")

    -- ============ 根据条件修改爆率 ============
    local allowDrop = 1      -- 默认允许掉落
    local dropRateMultiplier = 10000  -- 默认不修改爆率 (10000 = 100%)

    -- 方法1: BOSS怪物爆率提升50%
    -- if isBoss == 1 then
    --     dropRateMultiplier = 15000  -- 150%
    -- end

    -- 方法2: 玩家等级比怪物高10级以上,爆率降低50%
    -- if playerLevel > monsterLevel + 10 then
    --     dropRateMultiplier = 5000  -- 50%
    -- end

    -- 方法3: 特定怪物禁止掉落
    -- if monsterDataId == 12345 then
    --     allowDrop = 0  -- 禁止掉落
    -- end

    -- 方法4: 根据玩家MissionData动态调整爆率
    -- local vipLevel = GetMissionData(sceneId, selfId, 100)  -- 假设MD100存储VIP等级
    -- if vipLevel >= 5 then
    --     dropRateMultiplier = 12000  -- VIP5以上爆率+20%
    -- end

    -- 方法5: 修改dropData中的爆率 (另一种方式)
    -- setData(sceneId, selfId, dropData, 10, currentDropRate * 2)  -- 爆率翻倍

    -- 返回: 是否允许掉落, 爆率倍率
    return allowDrop, dropRateMultiplier
end

--**********************************
-- 物品掉落回调
-- 在具体物品掉落时调用,可以修改物品ID、品质等
--**********************************
-- 参数说明:
--   sceneId:      场景ID
--   selfId:       玩家ObjID
--   dropBoxId:    掉落箱ID
--   itemId:       原始物品ID
--   itemQuality:  原始物品品质
--   dropData:     掉落数据对象 (用于getData/setData)
--   getData:      获取掉落数据函数
--   setData:      设置掉落数据函数
--
-- getData/setData 索引说明:
--   0  = (只读) 场景ID
--   1  = (只读) 玩家ObjID
--   2  = (只读) 怪物ObjID
--   3  = (只读) 怪物模板ID
--   4  = (只读) 玩家等级
--   5  = (只读) 怪物等级
--   6  = (只读) 掉落箱ID
--   7  = (读写) 物品ID
--   8  = (读写) 物品品质
--   9  = (读写) 掉落公告ID
--   10 = (读写) 是否允许掉落 (1=允许, 0=禁止)
--   11 = (读写) 新物品ID (0=不修改)
--   12 = (读写) 新品质 (0=不修改)
--   13 = (只读) 是否BOSS怪物
--   14 = (只读) 是否队伍掉落
--   15 = (读写) 额外字段
--
-- 返回值:
--   返回值1: 是否允许此物品掉落 (0=禁止, 其他=允许)
--   返回值2: 新物品ID (0=不修改)
--   返回值3: 新物品品质 (0=不修改)
--**********************************
function x768990_callback_ItemDrop(sceneId, selfId, dropBoxId, itemId, itemQuality, dropData, getData, setData)
    -- 获取基础信息
    local monsterObjId = getData(sceneId, selfId, dropData, 2)
    local monsterDataId = getData(sceneId, selfId, dropData, 3)
    local playerLevel = getData(sceneId, selfId, dropData, 4)
    local monsterLevel = getData(sceneId, selfId, dropData, 5)
    local dropNotifyId = getData(sceneId, selfId, dropData, 9)
    local isBoss = getData(sceneId, selfId, dropData, 13)
    local isTeamDrop = getData(sceneId, selfId, dropData, 14)

    -- 调试输出
    x768990_NotifyTip(sceneId, selfId, 
        "物品掉落回调: 掉落箱ID=" .. tostring(dropBoxId) ..
        " 物品ID=" .. tostring(itemId) ..
        " 品质=" .. tostring(itemQuality) ..
        " 怪物ID=" .. tostring(monsterDataId) ..
        " 是否BOSS=" .. tostring(isBoss))

    local allowDrop = 1  -- 允许掉落
    local newItemId = 0  -- 不修改物品ID
    local newQuality = 0 -- 不修改品质

    -- ============ 案例 ============

    -- 方法1: 替换特定物品
    -- if itemId == 30505157 then
        -- newItemId = 20310101  -- 替换为另一个物品
    -- end

    -- 方法2: 提升品质
    -- if itemQuality < 5 then
    --     newQuality = itemQuality + 1
    -- end

    -- 方法3: 禁止特定物品掉落
    -- if itemId == 30000000 then
    --     allowDrop = 0  -- 禁止掉落
    -- end

    -- 方法4: BOSS掉落特殊处理
    -- if isBoss == 1 then
    --     -- BOSS掉落的物品品质+1
    --     if itemQuality < 9 then
    --         newQuality = itemQuality + 1
    --     end
    -- end

    -- 方法5: 根据玩家等级调整掉落
    -- if playerLevel > 80 then
    --     -- 高等级玩家有几率获得更好的物品
    --     local rand = random(1, 100)
    --     if rand <= 10 then
    --         newQuality = itemQuality + 1
    --     end
    -- end

    -- 方法6: 通过setData修改数据
    -- setData(sceneId, selfId, dropData, 11, 10001002)  -- 设置新物品ID
    -- setData(sceneId, selfId, dropData, 12, 5)         -- 设置新品质

    return allowDrop, newItemId, newQuality
end

--**********************************
--醒目提醒
--**********************************
function x768990_NotifyTip( sceneId, selfId, Msg )
    BeginEvent( sceneId )
        AddText( sceneId, Msg )
    EndEvent( sceneId )
    DispatchMissionTips( sceneId, selfId )
end
您需要登录后才可以回帖 登录 | registerss

本版积分规则

QQ|手机版|雪舞知识库 ( 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 )|天天打卡

GMT+8, 2026-9-16 05:22 , Processed in 0.073182 second(s), 27 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表