搜索
LUA

LUA

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

kickbot.lua--防挂机验

GA 发表于 2025-5-10 02:11:44 | 显示全部楼层 |阅读模式
98 0
KICKBOT_WINDOW_SEQUENCE_MAIN = 10000;
--验证间隔,毫秒
kickbot_interval = 1*1000*60*60;
--验证地图,逗号隔开
kickbot_maplist = {33000,402,300,24039,24040,24041,24042,24043,24044,24045,24046,24047,100};
--动态地图
kickbot_dmaplist_l = 1;
kickbot_dmaplist_u = 2;
--忽略职业
kickbot_class = {451,452,453,454,461,462,463,464,471,472,473,474};

kickbot_codelist = {};
kickbot_flaglist = {};
kickbot_timelist = {};
function kickbot_initialize( _index_me)

        return true;
end

function kickbot_callback_loop( _index_me)
        local i;
       
        for i = 1, table.getn(kickbot_maplist) do
                local tbl_p = NLG.GetMapPlayer(0,kickbot_maplist[i]);
                if(type(tbl_p) == "table")then
                --        print("\nyes!table!\n"..table.getn(tbl_p).."\nbut"..NLG.GetMapPlayerNum(0,1000).."\n");
                        if(tbl_p == nil)then
                                print("table but nil!\n")
                        end
                        local j;
                        for j = 1, table.getn(tbl_p) do
                                local skipflag = false;
                                local class = Char.GetData(tbl_p[j], %对象_职业%);
                                local k;
                                for k = 1, table.getn(kickbot_class) do
                                        if (class == kickbot_class[k]) then
                                                skipflag = true;
                                        end
                                end
                                --pk中不出现验证码
                                if(VaildChar(tbl_p[j]))then
                                        local battleindexA = Char.GetBattleIndex(tbl_p[j]);
                                        if(Battle.GetType(battleindexA) == %战斗_PVP%)then
                                                skipflag = true;
                                        end
                                end
                                if( skipflag == false)then
                                        if(kickbot_codelist[tbl_p[j]]~=nil)then
                                                if(os.time() - kickbot_timelist[tbl_p[j]] > kickbot_interval/3/1000 and kickbot_flaglist[tbl_p[j]] == 0)then
                                                --NLG.TalkToCli(tbl_p[j],_index_me,"drop and " .. kickbot_flaglist[tbl_p[j]]);
                                                        NLG.DropPlayer(tbl_p[j]);
                                                end
                                        end
                                        local code = math.ceil(math.random(0,9)) + math.ceil(math.random(0,9))*10 + math.ceil(math.random(0,9))*100 + math.ceil(math.random(0,9))*1000;
                                        local message = "防挂机验证启动,请输入以下数字:"..code;
                                        local message_2 = "[玩家公告]防挂机验证启动,请输入以下数字:"..code;
                                --        NLG.ShowWindowTalked( tbl_p[j], _index_me, %窗口_输入框%, %按钮_确定%,
                                --                KICKBOT_WINDOW_SEQUENCE_MAIN, message);
                                        NLG.SystemMessage( tbl_p[j], message);
                                        NLG.SystemMessage( tbl_p[j], message_2);
                                        kickbot_codelist[tbl_p[j]] = code;
                                        kickbot_flaglist[tbl_p[j]] = 0;
                                        kickbot_timelist[tbl_p[j]] = os.time();
                                --        print("\ncode"..code.."\n");
                                end
                        end
                end
        end

        for i = kickbot_dmaplist_l, kickbot_dmaplist_u do
                local tbl_p = NLG.GetMapPlayer(1,kickbot_dmaplist_l + i - 1);
                if(type(tbl_p) == "table")then
                --        print("\nyes!table!\n"..table.getn(tbl_p).."\nbut"..NLG.GetMapPlayerNum(0,1000).."\n");
                        if(tbl_p == nil)then
                                print("table but nil!\n")
                        end
                        local j;
                        for j = 1, table.getn(tbl_p) do
                                local skipflag = false;
                                local class = Char.GetData(tbl_p[j], %对象_职业%);
                                local k;
                                for k = 1, table.getn(kickbot_class) do
                                        if (class == kickbot_class[k]) then
                                                skipflag = true;
                                        end
                                end
                                --pk中不出现验证码
                                if(VaildChar(tbl_p[j]))then
                                        local battleindexA = Char.GetBattleIndex(tbl_p[j]);
                                        if(Battle.GetType(battleindexA) == %战斗_PVP%)then
                                                skipflag = true;
                                        end
                                end
                                if( skipflag == false)then
                                        if(kickbot_codelist[tbl_p[j]]~=nil)then
                                                if(os.time() - kickbot_timelist[tbl_p[j]] > kickbot_interval/3/1000 and kickbot_flaglist[tbl_p[j]] == 0)then
                                                --NLG.TalkToCli(tbl_p[j],_index_me,"drop and " .. kickbot_flaglist[tbl_p[j]]);
                                                        NLG.DropPlayer(tbl_p[j]);
                                                end
                                        end
                                        local code = math.ceil(math.random(0,9)) + math.ceil(math.random(0,9))*10 + math.ceil(math.random(0,9))*100 + math.ceil(math.random(0,9))*1000;
                                        local message = "防挂机验证启动,请输入以下数字:"..code;
                                        local message_2 = "[玩家公告]防挂机验证启动,请输入以下数字:"..code;
                                --        NLG.ShowWindowTalked( tbl_p[j], _index_me, %窗口_输入框%, %按钮_确定%,
                                --                KICKBOT_WINDOW_SEQUENCE_MAIN, message, math.random(0,9), %字体_大%);
                                        NLG.SystemMessage( tbl_p[j], message);
                                        NLG.SystemMessage( tbl_p[j], message_2);
                                        kickbot_codelist[tbl_p[j]] = code;
                                        kickbot_flaglist[tbl_p[j]] = 0;
                                        kickbot_timelist[tbl_p[j]] = os.time();
                                --        print("\ncode"..code.."\n");
                                end
                        end
                end
        end
end

function kickbot_callback_talk(_index,_msg)
        if(kickbot_flaglist[_index] == nil or kickbot_flaglist[_index] ~= 0 or kickbot_codelist[_index] == nil or kickbot_timelist[_index] == nil or kickbot_flaglist[_index] == -1)then
                return;
        end
        if(kickbot_flaglist[_index] == 0)then
                if( _msg == tostring(kickbot_codelist[_index]) )then
                        NLG.TalkToCli(_index,-1,"验证回答成功。", math.random(0,9), %字体_大%);
                        NLG.SystemMessage(_index,"[玩家公告]验证回答成功。");
                        kickbot_flaglist[_index] = 1;
                else
                        if(os.time() - kickbot_timelist[_index] <= kickbot_interval/3/1000)then
                                --NLG.TalkToCli(_index,0,"not drop");
                                return;
                        else
                                NLG.DropPlayer(_index);
                                --NLG.TalkToCli(_index,0,"drop");
                                kickbot_flaglist[_index] = -1;
                        end
                end
        end
       
end

function kickbot_callback_window( _index_me, _index_tome, _sequence, _select, _data)
--        NLG.TalkToCli( _index_tome, _index_me, "kickbot_codelist[_index_tome]:"..kickbot_codelist[_index_tome].." data:".._data.." _select:".._select);
        if( tostring(kickbot_codelist[_index_tome]) == _data)then
        --        NLG.TalkToCli(_index_tome,_index_me,"okok");
                kickbot_codelist[_index_tome] = nil;
        else
        --        NLG.TalkToCli(_index_tome,_index_me,"drop");
                NLG.DropPlayer(_index_tome);
        end
end

Delegate.RegInit("kickbot_Init");
Delegate.RegDelTalkEvent("kickbot_TalkEvent");

function kickbot_create() --防挂机验证
        if(kickbot_index == nil)then
                kickbot_index = NL.CreateNpc("lua/Module/kickbot.lua","kickbot_initialize")
                Char.SetData(kickbot_index,%对象_形象%,14588);
                Char.SetData(kickbot_index,%对象_原形%,14588);
                Char.SetData(kickbot_index,%对象_X%,18);
                Char.SetData(kickbot_index,%对象_Y%,63);
                Char.SetData(kickbot_index,%对象_地图%,777);
                Char.SetData(kickbot_index,%对象_方向%,6);
                Char.SetData(kickbot_index,%对象_名字%,"kickbot");
                NLG.UpChar(kickbot_index);
                Char.SetWindowTalkedEvent("lua/Module/kickbot.lua", "kickbot_callback_window", kickbot_index);
                Char.SetTalkedEvent("lua/Module/kickbot.lua", "kickbot_callback_talk", kickbot_index);
                Char.SetLoopEvent("lua/Module/kickbot.lua", "kickbot_callback_loop", kickbot_index, kickbot_interval);

        end
end

function kickbot_TalkEvent(player,msg,color,range,size)
        kickbot_callback_talk(player,msg);
        return 0;
end

function kickbot_Init()
        kickbot_create();
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