搜索
LUA

LUA

本版块未设置版块简介!请后台版块编辑添加。
  •  帖子: 115
  •  讨论: 115
  •  关注: 0

jyjc.lua--在线经验设置

GA 发表于 2025-5-10 02:11:02 | 显示全部楼层 |阅读模式
99 0
EXP_RATE_LIST =
{
    exprate_60 = 10;
    exprate_100 = 8;
    exprate_140 = 6;
    exprate_160 = 4;
    exprate_180 = 1;
};

local ADD_EXP_RATE = 1;
local magic_word = "XxXYZS";
local INIT_B_SKILL_RATE = 1;
local ADD_B_SKILL_RATE = 0;
local INIT_P_SKILL_RATE = 1;
local ADD_P_SKILL_RATE = 0;

Delegate.RegDelTalkEvent("ExpSettingTalkEvent");



function pequipitem(index,itemid)

for k=0,7 do
    local itemindex = Char.GetItemIndex(index,k);
        if(itemindex >= 0)then
            if(itemid == Item.GetData(itemindex, %道具_ID%))then
                        return true;
                end
        end

end
return false;

end






function ExpSettingTalkEvent(index, msg, color, range, size)
        local tbl = {};
        local cnt = 1;
        if(check_msg(msg,"["..magic_word.." setexprate ")) then
                for token in string.gmatch(msg, "[%d]+") do
                   if(tonumber(token)~=nil) then
                                ADD_EXP_RATE = tonumber(token);
--                                NLG.SystemMessage(index,"目前战斗经验 "..INIT_EXP_RATE.."倍, 加成经验 "..ADD_EXP_RATE.."倍, 总计经验 "..INIT_EXP_RATE * (ADD_EXP_RATE + 1).."倍");
                                NLG.SystemMessage(index,"系统调整了战斗经验加成,目前总经验附加了"..ADD_EXP_RATE.."%");
                                return 0;
                        end
                end
                return 0;
        end
        if(check_msg(msg,"["..magic_word.." setbattleskillrate ")) then
                for token in string.gmatch(msg, "[%d]+") do
                   if(tonumber(token)~=nil) then
                                ADD_B_SKILL_RATE = tonumber(token);
                                NLG.SystemMessage(index,"系统调整了战斗技能经验加成,目前总经验附加了"..ADD_B_SKILL_RATE.."%");
                                return 0;
                        end
                end
                return 0;
        end
        if(check_msg(msg,"["..magic_word.." setproductskillrate ")) then
                for token in string.gmatch(msg, "[%d]+") do
                   if(tonumber(token)~=nil) then
                                ADD_P_SKILL_RATE = tonumber(token);
                                NLG.SystemMessage(index,"系统调整了生产技能经验加成,目前总经验附加了"..ADD_P_SKILL_RATE.."%");
                                return 0;
                        end
                end
                return 0;
        end
end


Delegate.RegDelBattleSkillExpEvent("ExpSettingBattleSkillExpEvent");
Delegate.RegDelProductSkillExpEvent("ExpSettingProductSkillExpEvent");
Delegate.RegDelGetExpEvent("ExpSettingGetExpEvent");

function ExpSettingBattleSkillExpEvent(index, skill, exp)
        exp = exp * INIT_B_SKILL_RATE;
        if(ADD_B_SKILL_RATE>0) then
                exp = exp * (1 + ADD_B_SKILL_RATE/100);
        end
       
        return math.floor(exp);
end

function ExpSettingProductSkillExpEvent(index, skill, exp)
        exp = exp * INIT_P_SKILL_RATE;
        if(ADD_P_SKILL_RATE>0) then
                exp = exp * (1 + ADD_P_SKILL_RATE/100);
        end
        return math.floor(exp);
end

function ExpSettingGetExpEvent(index, exp)
        if(VaildChar(index)==false)then
                return exp;
        end
       
        local lv = Char.GetData(index,%对象_等级%);
        local THIS_RATE = 0;
    if (lv <= 60) then
        THIS_RATE = EXP_RATE_LIST.exprate_60;
    elseif (lv <= 100) then
        THIS_RATE = EXP_RATE_LIST.exprate_100;
    elseif (lv <= 140) then
        THIS_RATE = EXP_RATE_LIST.exprate_140;
    elseif (lv <= 460) then
        THIS_RATE = EXP_RATE_LIST.exprate_160;
    elseif (lv <= 180) then
        THIS_RATE = EXP_RATE_LIST.exprate_180;
    end
       
        exp = exp * tonumber(THIS_RATE);
        if(ADD_EXP_RATE > 0) then
                if(Char.GetData(index,%对象_等级%) >= 35)then
                        exp = exp * (1 + ADD_EXP_RATE/100);
                end
        end
       
        if(Char.GetData(index,%对象_序%) == %对象类型_人%)then
                if(pequipitem(index,65131))then
                        exp = exp * (1 + 0.3);
                end
        end       
       

        if(Char.GetData(index,%对象_序%) == %对象类型_人%)then
                if(pequipitem(index,402298))then
                        exp = exp * (1 + 0.5);
                end
        end       

        if(Char.GetData(index,%对象_序%) == %对象类型_人%)then
                if(pequipitem(index,980122))then
                        exp = exp * (1 + 1);
                end
        end       

        if(Char.GetData(index,%对象_序%) == %对象类型_宠%)then
                local player = Pet.GetOwner(index);
                if(pequipitem(player,65413))then
                        exp = exp * (1 + 3);
                end
        end
       
        if(Char.GetData(index,%对象_序%) == %对象类型_人%)then
                if(pequipitem(index,607707))then
                        exp = exp * (1 + 0);
                end
        end       

        return exp;
end


回复

使用道具 举报

全部评论

暂无评论,期待您打破宁静

TA的帖子
相关帖子
  • admin 2025-5-10

    #先到阿斯提亞鎮 打完UD找到NPC卡蓮 拿到給LBLS 的信 然後去打LBLS 再打完 LBLS以後 ...

  • admin 2025-5-10

    用本目录下文件"内容"覆盖服务器data目录下同名文件相应"内容" 请勿直接覆盖文件本身 ...

  • admin 2025-5-11

    ############## 城城的武器强化系统 ############## #剑1 block StrCmpChat == 700 W ...

  • admin 2025-5-11

    魔力宝贝手动架设中遇到的问题及解决方法魔力宝贝手动架设教程—魔力私服,魔力宝贝私 ...

  • admin 2025-5-12

    起始地点法兰城的竞技场的贝贝(34.36)头目战╳ 必要条件---必要等级Lv1 职业限定---建 ...

  • admin 2025-5-12

    1.与里谢里雅堡的H1N1防疫宣传员(28,77)说话,取得"防疫小口罩"。 图例物品名称等级种 ...

  • admin 2025-5-12

    魅惑的哈密瓜无取得宠物「哈密瓜公主」╳╳○ 起始地点魔法大学头目战╳ 必要条件--- ...

  • admin 2025-5-12

    起始地点法兰城的里谢里雅堡头目战○ 必要条件---必要等级--- 职业限定---建议等级--- ...

  • admin 2025-5-12

    起始地点法兰城的里谢里雅堡头目战○ 必要条件---必要等级--- 职业限定---建议等级--- ...

  • admin 2025-5-12

    起始地点法兰城的冒险者旅馆头目战○ 必要条件---必要等级--- 职业限定---建议等级LV8 ...

发布 联系QQ