魔力宝贝

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

[GP] aizhinandao.lua--爱之南岛

[复制链接]
发表于 前天 03:28 | 显示全部楼层 |阅读模式
local aizhinandao_NPCxq = {98503,"爱之南岛",4,1000,225,83} --NPC详情
local TimeWarpMsg = "\n    限时爱之南岛在每周4的20点开启,21点关门,进去溜达一阵子后22点会全部传送出来,里面掉落大量魔石。" --活动说明
local LevelLimet = 30 --限制入场等级
local TimeWarpToMap = 60061 --传送地图
local TimeWarpToPosX = 129 --传送x坐标
local TimeWarpToPosY = 24 --传送y坐标
local TimeWarpLeaveMap = 1000 --离开时传送地图
local TimeWarpDays = {4} ----开放日期 0-6 周日-周6
local TimeWarpOpen = 20 --入场时间
local TimeWarpclose = 21 --禁止入场时间
local TimeWarpClean = 22 --清场时间
local aidaomac_tab = aidaomac_tab or {} --mac记录表

----------
Global_Reg.RegInit("aizhinandao_zhuce");--全局注册
Global_Reg.RegLoginGateEvent("aizhinandao_logingate");--登出传送石
--Global_Reg.RegLogoutEvent("aizhinandao_logout");--登出游戏

local TimeWarpValue3 = {}
for _,v in pairs(TimeWarpDays) do
        TimeWarpValue3[v] = 1
end


function aizhinandao_logingate(player) --登出传送石
        local user=Char.GetData(player,2002);
        local mac = Mac[user]
        if aidaomac_tab[mac] and aidaomac_tab[mac] == 1 then
                aidaomac_tab[mac] = nil
        elseif aidaomac_tab[mac] and aidaomac_tab[mac] == 2 then
                aidaomac_tab[mac] = 1
        end
        return 0
end

function aizhinandao_logout(player,mac) --登出游戏
        local playerjob = Char.GetData(player,51)--获取职业
        if playerjob~=540 then
                local maptype = Char.GetData(player,%对象_地图类型%)
                local mapid = Char.GetData(player,4)
                if maptype==0 then
                        if mapid == 60061 or mapid == 62101 or mapid == 60062 then
                                if aidaomac_tab[mac] then
                                        if aidaomac_tab[mac] == 1 then
                                                aidaomac_tab[mac] = nil
                                        elseif aidaomac_tab[mac] == 2 then
                                                aidaomac_tab[mac] = 1
                                        end
                                end
                        end
                end
        end
        return 0
end

function aizhinandao_login_event(player) --登录注册
        local playerjob = Char.GetData(player,51)--获取职业
        local xingqiji = tonumber(os.date("%w"))
        local nowtime = tonumber(os.date("%H"))
        if TimeWarpValue3[xingqiji] and nowtime >= TimeWarpOpen and nowtime <=TimeWarpclose then
                return 0
        else
               
                if playerjob ~=540 then
                        local maptype = Char.GetData(player,%对象_地图类型%)
                        if maptype==0 then
                                local mapid = Char.GetData(player,4)
                                if mapid == 60061 or  mapid == 62101  or  mapid == 60062 then --爱岛判断,若在爱岛,不是佣兵
                        --                NLG.SystemMessage(player,"xingqiji="..xingqiji.." nowtime="..nowtime.."")
                                                local x = math.random(58,93)--随机传送到x,y
                                                local y = math.random(84,93)
                                                NLG.Warp(player,0,1000,x,y)
                                end
                        end
                end
        end
        return 0
end

function aizhinandao_chuangkou(npc,player) --窗口
        local xingqiji = tonumber(os.date("%w"))
        local nowtime = tonumber(os.date("%H"))
        local msg = "3\n这里是爱之南岛\n请选择:\n\n1.爱之南岛说明"
        local joinmsg = "\n2.参加爱之南岛"
        if TimeWarpValue3[xingqiji] and nowtime == TimeWarpOpen then --若是开放时间
                msg = msg..joinmsg
        end
        if NLG.CanTalk(npc,player) then
                NLG.ShowWindowTalked(player,2,2,222,msg,npc)
        end
end

function aizhinandao_gongneng(npc,player,_SqeNo,_select,_data) --功能
--NLG.SystemMessage(player,"\n _SqeNo是:"..(_SqeNo or "空").."它的类型是"..type(_SqeNo).."\n  _select是:".. (_select or "空").."它的类型是"..type(_select).."\n  _data是:"..(_data or "空").."它的类型是"..type(_data))
        if _SqeNo == 222 then
                if _select == 0 then
                        if _data == "1" then
                                NLG.ShowWindowTalked(player,0,2,9999,TimeWarpMsg,npc)
                        elseif _data == "2" then
                                local xingqiji = tonumber(os.date("%w"))
                                local nowtime = tonumber(os.date("%H"))
                                local user=Char.GetData(player,2002);
                                local mac = Mac[user]
                                if TimeWarpValue3[xingqiji] and nowtime == TimeWarpOpen  then --若是开放时间
                                        if Char.GetData(player,%对象_等级%) >= LevelLimet  and aidaomac_tab[mac] ~= 2 then --限制等级
                                                for i = 1,4 do
                                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                                        if(GroupIndex>=0)then
                                                                local jobnum = Char.GetData(GroupIndex,51)
                                                                if jobnum~=540 then
                                                                        NLG.DischargeParty(GroupIndex);
                                                                end
                                                        end
                                                end
                                                NLG.Warp(player,0,TimeWarpToMap,TimeWarpToPosX,TimeWarpToPosY)
                                                NLG.DischargeParty(player)
                                                Char.SetLoopEvent(nil, "aizhinandao_startloop",npc,1000) --开始loop
                                                if aidaomac_tab[mac] == nil then
                                                        aidaomac_tab[mac] = 1
--                                                NLG.SystemMessage(player,"1111111")
                                                elseif aidaomac_tab[mac] == 1 then
                                                        aidaomac_tab[mac] = 2
--                                                NLG.SystemMessage(player,"222222222")
                                                end
                                        elseif aidaomac_tab[mac] == 2 then
                                                NLG.SystemMessage(player,"您已经有两个角色在爱之南岛内了")
                                        else
                                                NLG.SystemMessage(player,"你的等级不足以进入爱之南岛。")
                                        end
                                else
                                        NLG.SystemMessage(player,"当前爱之南岛不在开放时间内。")
                                end
                        end
                end
        end
end

function aizhinandao_startloop (npc)
--                print("\n loop测试")
        local xingqiji = tonumber(os.date("%w"))
        local nowtime = tonumber(os.date("%H"))
        if TimeWarpValue3[xingqiji] and nowtime == TimeWarpClean  then -- 到了关门时间
                local tTable = NLG.GetMapPlayerList(0,TimeWarpToMap);--获取爱岛内所有玩家索引,返回值为table
                local tTable2 = NLG.GetMapPlayerList(0,62101);--获取爱岛内所有玩家索引,返回值为table
                local tTable3 = NLG.GetMapPlayerList(0,60062);--获取爱岛内所有玩家索引,返回值为table
                if type(tTable) == "table" then
                        for k,v in pairs(tTable) do
                                local x = math.random(58,93)--随机传送到x,y
                                local y = math.random(84,93)
                                NLG.Warp(v,0,TimeWarpLeaveMap,x,y)
                        end
                        if type(tTable2) == "table" then
                                for a,b in pairs(tTable2) do
                                        local x = math.random(58,93)--随机传送到x,y
                                        local y = math.random(84,93)
                                        NLG.Warp(v,0,TimeWarpLeaveMap,x,y)
                                end
                        end
                        if type(tTable3) == "table" then
                                for a,b in pairs(tTable3) do
                                        local x = math.random(58,93)--随机传送到x,y
                                        local y = math.random(84,93)
                                        NLG.Warp(v,0,TimeWarpLeaveMap,x,y)
                                end
                        end
                        Char.SetLoopEvent(nil,nil,npc,0) --回收loop
                end
        end
        return 0       
end

function aizhinandao_zhuce() --NPC注册
        aizhinandao_NPC()
        return 0
        end

function aizhinandao_NPC(npc) --NPC设置
        if npc == nil  then
        npc = NL.CreateNpc(nil,"aizhinandao_NPCzhizuo")
        end       
        Char.SetData(npc,1,aizhinandao_NPCxq[1])
        Char.SetData(npc,2,aizhinandao_NPCxq[1])
        Char.SetData(npc,2000,aizhinandao_NPCxq[2])
        Char.SetData(npc,7,aizhinandao_NPCxq[3])
        Char.SetData(npc,4,aizhinandao_NPCxq[4])
        Char.SetData(npc,5,aizhinandao_NPCxq[5])
        Char.SetData(npc,6,aizhinandao_NPCxq[6])
        LuaNpcIndex["aizhinandao_npc"]=npc;--读取使用用 LuaNpcIndex.aizhinandao_npc 就可以读取对应NPC index
        InstallNpc("aizhinandao_npc",npc);
        NLG.UpChar(npc)
        Char.SetTalkedEvent(nil,"aizhinandao_chuangkou",npc)
        Char.SetWindowTalkedEvent(nil,"aizhinandao_gongneng",npc)
        return true
end

function aizhinandao_NPCzhizuo(index)
        return 1;
end


回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-12 14:48 , Processed in 0.119387 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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