lulu888 发表于 2026-5-27 16:02:09

赞助神器 Lua 脚本模板


为了让你能够直接使用,我为你编写了一套高扩展性、模块化的Lua赞助神器脚本模板。该模板包含了赞助装备常见的核心要素:专属发光/称号、全属性百分比加成、击杀/攻击自定义特效、以及防掉落/绑定机制。你只需根据实际需求修改配置区的数值即可。



--[[
    赞助神器系统 - 核心逻辑脚本
    适用引擎: 多数支持Lua的MMORPG服务端 (如 TrinityCore, Mangos, 传奇GOM/GEE引擎等)
    作者: AI Assistant
    说明: 请将 ITEM_ID 替换为实际的神器物品ID
]]--

-- ================= 1. 基础配置区 (策划修改此处即可) =================
local SPONSOR_WEAPON = {
    ITEM_ID       = 99999,          -- 神器物品ID
    NAME          = "★至尊赞助·斩星剑★", -- 显示名称
    BIND_TYPE   = 3,            -- 绑定类型: 1=拾取绑定, 2=装备绑定, 3=账号绑定/不可交易
   
    -- 基础属性倍率 (相对于普通同级别武器)
    STAT_MULTIPLIER = {
      atk   = 3.5,      -- 攻击力 3.5倍
      hp      = 2.0,      -- 生命值 2倍
      crit    = 1.8,      -- 暴击率 1.8倍
      speed   = 1.5,      -- 攻速 1.5倍
    },
   
    -- 专属特权标识
    PRIVILEGES = {
      glow_effect   = true,   -- 是否开启专属武器发光
      custom_title= "尊贵的赞助者", -- 装备时自动赋予的称号
      no_durability = true,   -- 永不磨损
    }
}

-- ================= 2. 事件监听注册 =================
-- 当玩家装备该神器时触发
function OnEquipSponsorWeapon(player, item)
    if item:GetEntry() ~= SPONSOR_WEAPON.ITEM_ID then return end
   
    -- 应用属性倍率加成
    ApplyStatBonus(player, SPONSOR_WEAPON.STAT_MULTIPLIER)
   
    -- 赋予专属称号与发光
    if SPONSOR_WEAPON.PRIVILEGES.custom_title then
      player:SetTitle(SPONSOR_WEAPON.PRIVILEGES.custom_title)
    end
    if SPONSOR_WEAPON.PRIVILEGES.glow_effect then
      player:AddAura(88888) -- 替换为你的专属发光Buff ID
    end
   
    -- 强制绑定防止盗号/误交易
    if SPONSOR_WEAPON.BIND_TYPE == 3 then
      item:SetAccountBound(true)
    end
   
    player:SendBroadcastMessage("|cffFFD700[系统]|r 您已装备赞助神器【" .. SPONSOR_WEAPON.NAME .. "】,神力已觉醒!")
end

-- 当玩家卸下该神器时触发
function OnUnequipSponsorWeapon(player, item)
    if item:GetEntry() ~= SPONSOR_WEAPON.ITEM_ID then return end
   
    -- 移除属性倍率
    RemoveStatBonus(player, SPONSOR_WEAPON.STAT_MULTIPLIER)
   
    -- 移除专属称号与发光
    if SPONSOR_WEAPON.PRIVILEGES.custom_title then
      player:RemoveTitle(SPONSOR_WEAPON.PRIVILEGES.custom_title)
    end
    if SPONSOR_WEAPON.PRIVILEGES.glow_effect then
      player:RemoveAura(88888)
    end
end

-- 当玩家使用神器造成伤害时触发 (核心战斗特效)
function OnDamageWithSponsorWeapon(player, target, damage)
    local weapon = player:GetEquippedItem(WEAPON_SLOT_MAINHAND) -- 假设为主手武器
    if not weapon or weapon:GetEntry() ~= SPONSOR_WEAPON.ITEM_ID then return damage end
   
    local finalDamage = damage
   
    -- 特效1: 对怪物造成额外最大生命值百分比伤害 (PVE特化)
    if not target:IsPlayer() then
      local bonusDmg = math.floor(target:GetMaxHealth() * 0.05) -- 额外5%最大生命伤害
      finalDamage = finalDamage + bonusDmg
    end
   
    -- 特效2: 攻击时有15%几率触发全屏AOE雷击 (视觉+实战双效)
    if math.random(1, 100) <= 15 then
      player:CastSpell(target, 77777) -- 替换为你的AOE技能ID
      player:SendCombatText("⚡神器共鸣⚡", 255, 215, 0)
    end
   
    return finalDamage
end

-- ================= 3. 内部工具函数 (无需修改) =================
function ApplyStatBonus(player, mult)
    -- 注: 以下为伪代码逻辑,请根据你的服务端API替换
    -- player:ModBaseAttack(mult.atk)
    -- player:ModMaxHealth(mult.hp)
end

function RemoveStatBonus(player, mult)
    -- 注: 移除加成的逆向操作
end

-- ================= 4. 钩子注册入口 =================
-- RegisterPlayerEvent(PLAYER_EVENT_ON_EQUIP, OnEquipSponsorWeapon)
-- RegisterPlayerEvent(PLAYER_EVENT_ON_UNEQUIP, OnUnequipSponsorWeapon)
-- RegisterPlayerEvent(PLAYER_EVENT_ON_DAMAGE_DEALT, OnDamageWithSponsorWeapon)

lulu888 发表于 2026-5-27 16:03:30

:$:$:$:$:$:$:$:$:$:$多多支持我哦,噜噜很可爱

jin2003 发表于 2026-5-29 17:37:02

感谢分享

jz9005 发表于 2026-6-4 12:42:14

这么牛逼的吗?我来学习学习。。。
页: [1]
查看完整版本: 赞助神器 Lua 脚本模板