魔力宝贝

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

[GP] JobsChange.lua--转职

[复制链接]
发表于 前天 03:18 | 显示全部楼层 |阅读模式
local sw_tab = sw_tab or {} --声望表
local xzitem_tab = {} --限制道具表
local swdaoshu_tab = swdaoshu_tab or {} -- 时间倒数表

xzitem_tab[790004] = 1
xzitem_tab[34638] = 1
xzitem_tab[16420] = 1

-----------------
Global_Reg.RegInit("zhuanzhi_init");

function zhuanzhi_init()
        NL.RegJobsChange (nil,"zhuanzhi_event");--创建一个所有玩家转职会触发的Lua函数
        return 0;
end

function zhuanzhi_event(player, JobsID)
        local sw = Char.GetData(player, %对象_声望%)
        local rsw = Char.GetData(player, %对象_日声望上限%)
        local itemid = -1
        local zhuanzhiitem = Char.ItemNum(player, 607686) -- 生产系转职保证书
        local user=Char.GetData(player,2002);
        local mac = Mac[user]
        local nowjob =  Char.GetData(player,51)--获取原职业
-----------判断生产转职保证书-----
        if zhuanzhiitem >= 1 then --拥有转职保证书
                if nowjob >= 200 and nowjob <= 499 then --原职业为生产系
                        if JobsID >= 200 and JobsID <= 499 then--目标职业为生产系
--                                NLG.SystemMessage(player, "JobsID="..JobsID..",nowjob="..nowjob)                       
                        else
                                NLG.SystemMessage(player, "不可携带生产系转职保证书转职为战斗系。")                       
                                return -1
                        end
                else
                        NLG.SystemMessage(player, "战斗系不可携带生产系转职保证书进行转职。")                       
                        return -1
                end
        end
-----
        for x = 0,7 do --判断身上的装备
                local ItemIndex = Char.GetItemIndex(player, x)
                local itemid = Item.GetData(ItemIndex, 0)
                local Name = Item.GetData(ItemIndex, %道具_已鉴定名%)
                if xzitem_tab[itemid] then --若有限制装备提示并拦截
                        NLG.SystemMessage(player, "你身上装备的"..Name.."不可携带转职")                       
--                        NLG.SystemMessage(player, "sw="..sw..",rsw="..rsw.."")
                        return -1
                end
        end
        sw_tab[player] = {sw,rsw}
        swdaoshu_tab[player] = 1 -- 倒数表设置倒数1秒
        Char.SetLoopEvent(nil, "zhuanzhi_startloop",player,100) --开始loop
--        NLG.SystemMessage(player, "sw="..sw..",rsw="..rsw.."")
-----------转职判断是否战斗系-----
        if (JobsID >= 10 and JobsID <= 59) or (JobsID >= 70 and JobsID <= 89) or (JobsID >= 110 and JobsID <= 119) or (JobsID >= 130 and JobsID <= 199) then --若转职的是战斗职业,除去封印、盗贼、饲养、传教
                if (nowjob >= 10 and nowjob <= 59) or (nowjob >= 70 and nowjob <= 89) or (nowjob >= 110 and nowjob <= 119) or (nowjob >= 130 and nowjob <= 199) then --若原本的是战斗职业,除去封印、盗贼、饲养、传教
                        local a = login_job_tab[mac] or 0
                        NLG.SystemMessage(player,"[系统]目前登录的限开职业数量为:"..a.."")
                else
                        if login_job_tab[mac] == nil then--设置职业表的值
                                login_job_tab[mac] = 1
                        else
                                login_job_tab[mac] = login_job_tab[mac] + 1
                                if  login_job_tab[mac] > 2 then --若超过设定职业
                                        Loginset_NPC(npcindex,player)
                                end
                        end
                        NLG.SystemMessage(player,"[系统]目前登录的限开职业数量为:"..login_job_tab[mac].."")
                end
        else--若是转非战斗系
                if (nowjob >= 10 and nowjob <= 89) or (nowjob >= 110 and nowjob <= 119) or (nowjob >= 130 and nowjob <= 199) then --若原本的是战斗职业,除去封印、盗贼、饲养
                        if login_job_tab[mac] then
                                login_job_tab[mac] = login_job_tab[mac] - 1
                                NLG.SystemMessage(player,"[系统]目前登录的限开职业数量为:"..login_job_tab[mac].."")
                                if login_job_tab[mac] == 0 then
                                        login_job_tab[mac] = nil
                                end
                        end
                end
        end
        return 0
end

function zhuanzhi_startloop (player)
        local sw = Char.GetData(player, %对象_声望%)
        local rsw = Char.GetData(player, %对象_日声望上限%)
--                print("\n loop测试")
        swdaoshu_tab[player] = swdaoshu_tab[player] - 1
        if swdaoshu_tab[player] == 0 then -- 当倒数到0时
                Char.SetLoopEvent(nil,nil,player,0) --回收loop
                swdaoshu_tab[player] = nil --回收倒数表
                Char.SetData(player, %对象_声望%,sw_tab[player][1])
                Char.SetData(player, %对象_日声望上限%,sw_tab[player][2])
                sw_tab[player] = nil --回收声望表
--        else
--                NLG.SystemMessage(player,"还有"..swdaoshu_tab[player] .."")--其余时间报时
        end
        return 0
end


回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-12 13:27 , Processed in 0.096798 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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