唯有魔力管理员 发表于 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, %对象_职业%);
                              local k;
                              for k = 1, table.getn(kickbot_class) do
                                        if (class == kickbot_class) then
                                                skipflag = true;
                                        end
                              end
                              --pk中不出现验证码
                              if(VaildChar(tbl_p))then
                                        local battleindexA = Char.GetBattleIndex(tbl_p);
                                        if(Battle.GetType(battleindexA) == %战斗_PVP%)then
                                                skipflag = true;
                                        end
                              end
                              if( skipflag == false)then
                                        if(kickbot_codelist]~=nil)then
                                                if(os.time() - kickbot_timelist] > kickbot_interval/3/1000 and kickbot_flaglist] == 0)then
                                                --NLG.TalkToCli(tbl_p,_index_me,"drop and " .. kickbot_flaglist]);
                                                      NLG.DropPlayer(tbl_p);
                                                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, _index_me, %窗口_输入框%, %按钮_确定%,
                              --                KICKBOT_WINDOW_SEQUENCE_MAIN, message);
                                        NLG.SystemMessage( tbl_p, message);
                                        NLG.SystemMessage( tbl_p, message_2);
                                        kickbot_codelist] = code;
                                        kickbot_flaglist] = 0;
                                        kickbot_timelist] = 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, %对象_职业%);
                              local k;
                              for k = 1, table.getn(kickbot_class) do
                                        if (class == kickbot_class) then
                                                skipflag = true;
                                        end
                              end
                              --pk中不出现验证码
                              if(VaildChar(tbl_p))then
                                        local battleindexA = Char.GetBattleIndex(tbl_p);
                                        if(Battle.GetType(battleindexA) == %战斗_PVP%)then
                                                skipflag = true;
                                        end
                              end
                              if( skipflag == false)then
                                        if(kickbot_codelist]~=nil)then
                                                if(os.time() - kickbot_timelist] > kickbot_interval/3/1000 and kickbot_flaglist] == 0)then
                                                --NLG.TalkToCli(tbl_p,_index_me,"drop and " .. kickbot_flaglist]);
                                                      NLG.DropPlayer(tbl_p);
                                                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, _index_me, %窗口_输入框%, %按钮_确定%,
                              --                KICKBOT_WINDOW_SEQUENCE_MAIN, message, math.random(0,9), %字体_大%);
                                        NLG.SystemMessage( tbl_p, message);
                                        NLG.SystemMessage( tbl_p, message_2);
                                        kickbot_codelist] = code;
                                        kickbot_flaglist] = 0;
                                        kickbot_timelist] = os.time();
                              --      print("\ncode"..code.."\n");
                              end
                        end
                end
      end
end

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

function kickbot_callback_window( _index_me, _index_tome, _sequence, _select, _data)
--      NLG.TalkToCli( _index_tome, _index_me, "kickbot_codelist:"..kickbot_codelist.." data:".._data.." _select:".._select);
      if( tostring(kickbot_codelist) == _data)then
      --      NLG.TalkToCli(_index_tome,_index_me,"okok");
                kickbot_codelist = 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

页: [1]
查看完整版本: 外挂的代码设置