找回密码
 立即注册
查看: 6286|回复: 0
打印 上一主题 下一主题

外挂的代码设置

[复制链接]

133

主题

134

帖子

683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
683
跳转到指定楼层
楼主
发表于 2018-9-14 12:22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
生活圈制作
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);
                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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


GMT+8, 2024-4-19 11:06 , Processed in 0.045968 second(s), 25 queries .

© 2001-2011 Powered by Discuz! X3.2. Theme By Yeei!

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