魔力宝贝

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

[GA] randdengon.lua-过了指定时间,把玩家传送出去

[复制链接]
发表于 前天 02:24 | 显示全部楼层 |阅读模式
Delegate.RegInit("rd_Init");

local tbl_rd_maps = {};



tbl_rd_user_setting = {};


function setuser(player)
       
       
        local tbl_rd_user =
        {
                count = 0;
        };
       
       
        if(tbl_rd_user_setting[Playerkey(player)] == nil)then
                tbl_rd_user.count = 0;
                tbl_rd_user_setting[Playerkey(player)] = tbl_rd_user;
               
        else
                local s = tbl_rd_user_setting[Playerkey(player)];
                tbl_rd_user.count = s.count + 1;
                tbl_rd_user_setting[Playerkey(player)] = tbl_rd_user;
               
               
        end
       
        --NLG.SystemMessage(player,"次数a3:"..tbl_rd_user_setting[Playerkey(player)].count);
end


function getuser(player)
       
        local ret = 0;
        local tbl_rd_user =
        {
                count = 0;
        };
       
       
        if(tbl_rd_user_setting[Playerkey(player)] == nil)then
                tbl_rd_user.count = 0;
                tbl_rd_user_setting[Playerkey(player)] = tbl_rd_user;
               
        else
                local s = tbl_rd_user_setting[Playerkey(player)];
                ret = s.count;
        end

        --NLG.SystemMessage(player,"次数a4:"..tbl_rd_user_setting[Playerkey(player)].count);
        return ret;
end




local tbl_rd_setting =
{
        tdate = os.date("%d",os.time());
};


function new_map(_mapid,_minlv,_maxlv)
       
        local tbl_rd_map_setting =
        {
                mapid = _mapid;
                minlv = _minlv;
                maxlv = _maxlv;
                timeout = 2400;
                this_time = 0;
                ts = 0;
        };
        table.insert(tbl_rd_maps,tbl_rd_map_setting);
       
end


--设置---------------------------------------------------------------
local tbl_interwarpseting =
{
        x = 116;
        y = 123;

};


local tbl_timeoutwarpseting =
{
        mapid = 1000;
        x = 241;
        y = 88;

};



new_map(65011,70,120);
new_map(65012,70,120);
new_map(65013,70,120);
new_map(65014,70,120);
new_map(65015,70,120);
new_map(65016,70,120);
new_map(65017,70,120);
new_map(65018,70,120);
new_map(65019,70,120);
new_map(65020,70,120);


------------------------------------------------------------------


function init_timeoutNpc_Init(index)
        return 1;
end


function inittimeoutNpc()
        if (timeoutNpc == nil) then
                timeoutNpc = NL.CreateNpc("lua/Module/randdengon.lua", "init_timeoutNpc_Init");
                Char.SetData(timeoutNpc,%对象_形象%,231088);
                Char.SetData(timeoutNpc,%对象_原形%,231088);
                Char.SetData(timeoutNpc,%对象_X%,47);
                Char.SetData(timeoutNpc,%对象_Y%,50);
                Char.SetData(timeoutNpc,%对象_地图%,777);
                Char.SetData(timeoutNpc,%对象_方向%,4);
                Char.SetData(timeoutNpc,%对象_原名%,"tiemout");
                NLG.UpChar(timeoutNpc);
               
                --这里是与Npc说话的时候,调用ChangePassMsg函数
                Char.SetLoopEvent("lua/Module/randdengon.lua","timeoutNpcNpcLoopEvent", timeoutNpc,20);
        end
end


function timeoutNpcNpcLoopEvent(index)
       
        -- 过了指定时间,把玩家传送出去
        for i=1,#tbl_rd_maps do
                local tbl_rd_one = tbl_rd_maps[i];
               
                if(tbl_rd_one.this_time ~= 0)then
                        if(os.time() - tbl_rd_one.this_time >= tonumber(tbl_rd_one.timeout - 300) and tbl_rd_one.ts == 0)then
                                tbl_rd_one.ts = 1;
                                local MapUser = NLG.GetMapPlayer(0,tbl_rd_one.mapid);
                                        for _,tuser in pairs(MapUser) do
                                                NLG.SystemMessage(tuser,"还有5分钟就被传送出去了。");
                                end                                               
                        end
                       
                       
                        if(os.time() - tbl_rd_one.this_time >= tbl_rd_one.timeout)then
                                local MapUser = NLG.GetMapPlayer(0,tbl_rd_one.mapid);
                                        for _,tuser in pairs(MapUser) do
                                                --Battle.ExitBattle(tuser);
                                                Char.Warp(tuser,0,tbl_timeoutwarpseting.mapid,tbl_timeoutwarpseting.x,tbl_timeoutwarpseting.y);
                                                NLG.SystemMessage(tuser,"您的时间已到,被传送出去了。");
                                        end                       
                                tbl_rd_one.this_time = 0;
                                tbl_rd_one.ts = 0;
                        end
                end
                       
        end
       
        -- 过了一天,全部清空
        if (tbl_rd_setting.tdate ~= os.date("%d",os.time())) then
               
                tbl_rd_setting.tdate = os.date("%d",os.time());
                tbl_rd_user_setting = {};
               
        end
       
       
end

function rb_checkuser(player)
       
        local obj_count = 0;
        local min_lv = Char.GetData(player,%对象_等级%);
        local max_lv = Char.GetData(player,%对象_等级%);
       
       
        --obj_count = getuser(player);
       
       
        for i = 0,4 do
                        local tuser = Char.GetPartyMember(player,i);
                       
                       
                       
                        if(VaildChar(tuser))then
                                local tcount = getuser(tuser);
                                if(tcount >= obj_count)then
                                        obj_count = tcount;
                                end
                               
                                local t_lv = Char.GetData(player,%对象_等级%);
                                if(t_lv < min_lv)then
                                        min_lv = t_lv;
                                end
                                if(t_lv > max_lv)then
                                        max_lv = t_lv;
                                end
                        end
                       
                       
                       
        end
       
        --NLG.SystemMessage(player,"次数a1:"..obj_count);
       
        if(obj_count >= 3)then
                --队伍中有任一玩家已经进入超过3次
                return 1;
               
        end
       
        local bx_map = {}; --备选地图
       
        --开始选地图
        for i=1,#tbl_rd_maps do
                local tbl_rd_one = tbl_rd_maps[i];
               
                if(tbl_rd_one.this_time == 0)then --如果地图没有被占领
                        if(min_lv >= tbl_rd_one.minlv and max_lv <= tbl_rd_one.maxlv)then --如果玩家等级符合地图条件
                                table.insert(bx_map,tbl_rd_one);

                        end
                       
                end
               
        end
       
        if(#bx_map <= 0 or bx_map ==nil )then
                return 2;
        end
       
       
        local tmap = NLG.Rand(1,#bx_map);
        bx_map[tmap].this_time =os.time();
        Char.Warp(player,0,bx_map[tmap].mapid,tbl_interwarpseting.x,tbl_interwarpseting.y);
       
       
        for i = 0,4 do
                local tuser = Char.GetPartyMember(player,i);
                if(VaildChar(tuser))then
                        setuser(tuser);
                        --NLG.SystemMessage(player,"次数a2:"..getuser(player));
                end
        end
       
       
        return 0;
       
       
       
       
end


function rd_Init()
        inittimeoutNpc();
end
       






回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-12 18:15 , Processed in 0.125329 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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