@steak
2020-08-03T22:04:02.000000Z
字数 12401
阅读 1447
使用前注意事项
* 把游戏的 界面设置--> 鼠标--> 点击走路 钩上
* 把游戏的 选项-->按键设置-->与目标互动 设置成V键
有兴趣开发脚本的可以email cbcsam@gmail.com 申请开发者待遇
参数坐标
用于移动人物
无逻辑 等于在地图点击了一处坐标 无返回
移动(20.55,-123.33,-55.55)
参数坐标
用于移动人物
有逻辑 确保人物一定到那里函数才返回 下一句
MoveTo(20.55,-123.33,-55.55)
参数 文件名 方向
用于读取INI文件的坐标集
方向 0 正向 1反向
MoveRoute("玛拉顿-复活点到石门.ini",0) --正向读取坐标集MoveRoute("玛拉顿-葬影村到石门.ini",1)--反向读取坐标集
读取的ini文件格式
[路线]点数=11点0=-354,-2557,96点1=-378,-2558,96点2=-461,-2642,96点3=-529,-2846,92点4=-608,-2855,93点5=-705,-2842,95点6=-667,-2951,96点7=-835,-3082,97点8=-926,-3202,92点9=-977,-3207,94点10=-1045,-3147,92
参数 string 文件名,int 方向
这个是读取TXT格式的函数 必须加载core库才能执行
具有判断人物状态功能 如人物死了会返回false
跑图路径("玛拉顿-复活点到石门.txt",0) --正向读取坐标集跑图路径("玛拉顿-葬影村到石门.txt",1)--反向读取坐标集
TXT的文件格式 一行一个坐标
-1443.49,1973.37,85.49-1449.26,1990.21,85.80-1464.03,2037.79,63.98-1510.50,2116.60,62.87-1474.23,2201.34,90.47-1472.07,2260.81,93.44-1487.66,2319.90,93.27-1428.84,2415.16,90.30-1383.43,2485.56,88.82-1372.78,2539.68,103.55-1386.24,2589.95,111.56-1375.58,2650.03,111.56-1340.97,2670.84,111.56-1270.76,2678.91,111.56-1190.59,2718.95,111.28-1174.64,2765.82,112.06-1262.18,2853.97,113.71-1358.07,2850.79,114.56-1426.13,2896.92,134.55-1423.38,2924.45,136.37
无参数 返回人物状态
1 正常状态
2 近战状态
3 远战状态
4 捡物状态
5 剥皮完成状态
6 死亡状态
7 昏迷状态
8 飞行状态
if getstate() == 3 or getstate() == 4 thenprint("人物正被攻击中")end
无参数 返回数组
取得人物状态当前信息
man=getman()print("人物血量"..man.hp)print("人物最大血量"..man.maxhp)print("人物法力值"..man.mp)print("人物最大法力值"..man.maxmp)print("人物x坐标"..man.x)print("人物y坐标"..man.y)print("人物z坐标"..man.z)print("BUFF总数:"..man.buffnum)if BUFF检查(man.buff,"2086")==true thenprint("人物变成幽灵状态")end
无参数 返回数组
取得宠物状态当前信息
宠物的距离是宠物离人物多少的跑离
饱食值 大于600000 绿色 小于350000 红色 600000~350000 黄色
pet=getpets()print("宠物血量"..pet.hp)print("宠物最大血量"..pet.maxhp)print("宠物法力值"..pet.mp)print("宠物最大法力值"..pet.maxmp)print("宠物x坐标"..pet.x)print("宠物y坐标"..pet.y)print("宠物z坐标"..pet.z)print("宠物饱食值"..pet.food)print("宠物距离"..pet.距离)print("宠物BUFF总数:"..pet.buffnum)if BUFF检查(pet.buff,"603")==true thenprint("正在补给宠物忠诚度")end
参数 string 怪物名字,int 范围区域
根据怪物名字搜索以人物为中心范围内的怪物目标信息
范围为数值
moster=getmoster(被诅咒的塞雷布拉斯",100)print("怪物血量"..moster.hp)print("怪物最大血量"..moster.maxhp)print("怪物法力值"..moster.mp)print("怪物最大法力值"..moster.maxmp)print("怪物x坐标"..moster.x)print("怪物y坐标"..moster.y)print("怪物z坐标"..moster.z)print("怪物距离"..moster.距离)print("怪物BUFF总数:"..moster.buffnum)if BUFF检查(moster.buff,"37F5")==true thenprint("怪物身上有猎人4级印记")end
参数 buff,技能ID
buff 用于取怪物宠物或人物的BUFF对象 技能ID是文字类型
返回布尔类型 ture flase
man=getman()moster=getmoster()pet=getpet()if BUFF检查(man.buff,"2086")==true thenprint("人物变成幽灵状态")endif BUFF检查(pet.buff,"603")==true thenprint("正在补给宠物忠诚度")endif BUFF检查(moster.buff,"37F5")==true thenprint("怪物身上有猎人4级印记")end
参数 string 物件名称,int 检测范围
以人物为中心点 判决范围内有没指定物件 超过会返回0 找到会返回1
怪物不能检测到
if GetOtherNameRange("幽灵菇",10)==1) thenprint("找到幽灵菇")endif GetOtherNameRange("邮箱",10)==1) thenprint("找到邮箱")end
参数 string 怪物名称,int 检测范围
检测周边环境有没这个怪物
成功找到返回1
找不到返回0
如果有同名怪物 会任意选一个
print(GetMonsterNameRange("毒劣魔",50))
参数 string 怪物名字 int 范围
功能 等于游戏里鼠标左键点选了怪物
成功返回1 失败返回0
如果有同名怪物 会任意选一个
if 选怪("被诅咒的塞雷布拉斯",100)==1 thenprint("被诅咒的塞雷布拉斯找到")end选怪("塞雷布拉斯",100) --同上有一样的效果
参数 string 文本
可显示在控制台上的文字
显示("你好")
参数 无
功能 返回外挂当前路径
SetLua(获取外挂路径().."/".."test1.lua",1)
参数 string 名字,float X坐标,Y坐标,Z坐标
相当于点击指定目标的右键
要在游戏中选项打开自动捡取功能
可用于任何物件 如药草 邮箱 宝箱 门口
采集("幽灵菇",729.65,-112.73,-56.17)采集("邮箱",729.65,-112.73,-56.17)采集("宝箱",729.65,-112.73,-56.17)
参数 int 键盘码,int 键盘码
点击键盘按键
键盘编码对应键可查百度
KeyPress(0,96) --按1键KeyPress(0,83) --按S键KeyPress(191,96) --按SHIFT+s键KeyPress(17,32) --按ctrl+空格键
参数 string 物品名字
使用喂宠技能
pet=getpets()if pet.food < 600000 then喂宠("烤鹌鹑") --宠物变成黄色时就喂食end
参数 无
用于释放灵魂 死后变成幽灵状态 函数无返回 判断成功看人物BUFF是否带有2086BUFF
ReleaseSoul()if BUFF是否存在("2086")==1 then显示("变成幽灵成功")end
参数 无
用于到达尸体附近后复活人物
MoveRoute("死亡捡尸.ini",0) --跑图地图数据文件,方向MoveTo(死亡坐标x,死亡坐标y,死亡坐标z) --移动x,y,zReLive() --复活
参数 int 毫秒
功能 延时
MySleep(1000) --等待1秒
参数 无
功能 重置副本 在能重置副本的地方使用 不要在副本里使用,在副本里使用会让游戏马上崩溃
if 计算自己距离(-1443.49,1973.37,85.49)<150 thenResetFuben() --重置副本end
参数 float X坐标,Y坐标,Z坐标
返回:人物与坐标之间的距离
if 计算自己距离(-1443.49,1973.37,85.49)<150 thenMoveRoute("玛拉顿-复活点到石门.ini",0)elseif 计算自己距离(-1593.08,3149.81,46.49)<150 thenMoveRoute("玛拉顿-葬影村到石门.ini",0)end
参数 int 距离
功能 以人物为中心点 距离范围内的怪物尸体 通通都会捡取一遍
捡取过的怪物 包括之前中断过的都不会再捡取 遇到要绑定的装备 如绿装蓝装会自动按绑定确认 如果捡尸过程中给怪物攻击 会返回0
返回 1 完成捡尸流程
0 中途遇到怪物攻击中断
while(true) doif 捡尸(50)==1 thenbreakelse假死.... --不用担心会重复捡尸 之前捡过的不会再去捡endend
参数 string 配置文件名.ini
功能 简单的攻击逻辑 自动选取范围内的怪物进行攻击
需要配置一个打怪文件 定义好按键
没有怪物就函数就返回
INI配置文件如下
[基本]打怪范围=150远战距离=35远战按键=3远战按键延时=0近战距离=5近战按键=1近战按键延时=6000
参数 string 怪物列表,int 范围
返回: 退出标志 0:包满,1:无怪,2:死亡
杀怪("狮,陆行鸟,钢鬃,龙,狼,马",120)
参数 string 怪物名 int 范围
功能 执行后可保证面向目标怪物
对准怪物("枯钳龙虾人",100)
参数 无
while(true)do卡死()MySleep(11000)man=getman()if man.hp==0 thenReleaseSoul()MySleep(3000)break}if BUFF检查(man.buff,"2086") then显示("卡死已使用完毕")breakendend
面向坐标点(10,10,10)
对准坐标点(10,10,10)
穿门("戈多克内门")
宠物穿门("戈多克内门")
放坐标技能返回(10,100,100,-10)--暴风雪1级 在100,100,-10施放MySleep(8000)
3:技能没下完
怪物距离我"距离"米内,目标x,y,x=0,则为自身点,怪物名称:名称列表,"所有怪"为所有怪
ret=放坐标技能时间(10,11.11,11.11,11.11,22,22,22,"戈多克大王,观者者",43,5)--使用暴风雪1级 打坐标11.11,11.11,11.11处5秒放技能过程中判断22,22,22 坐标43距离内有没戈多克大王,观者者有出现 有或无或技能放完就返回指定的值if ret==1 then技能下完了elseif ret==2 then技能没下完被打断elseif ret==3 then技能没下完endret=放坐标技能时间(10,11.11,11.11,11.11,22,22,22,"所有怪",43,5)--使用暴风雪1级 打坐标11.11,11.11,11.11处5秒放技能过程中判断22,22,22 坐标43距离内所有怪 有或无或技能放完就返回指定的值if ret==1 then技能下完了elseif ret==2 then技能没下完被打断elseif ret==3 then技能没下完end
x,y,z=选定坐标怪("戈多克,法,蛮",11.11,11.11,11.11,40)if x~= 0 then有怪出现else无怪end
boss1=getmoster("观察者克鲁什",100)if 取坐标怪攻击("观察者克鲁什",boss1.x,boss1.y,boss1.z,100,2)==2 then如果怪物目标是打宠物的话流程endboss.对像=取坐标怪攻击("戈多克大王",boss.x,boss.y,boss.z,150,1)boss1.对像=取坐标怪攻击("观察者克鲁什",boss1.x,boss1.y,boss1.z,150,1)if boss.对像<1 thenboss.对像=取坐标怪攻击("戈多克大王",boss.x,boss.y,boss.z,150,2)endif boss1.对像<1 thenboss1.对像=取坐标怪攻击("观察者克鲁什",boss1.x,boss1.y,boss1.z,150,2)end
取范围内怪的数量("狼,兵",10.00,20.00,30.00,40)
if 本地变量.是否矮人==1 then设置平台点(785.81,-491.00,-40.01)elseif 本地变量.是否矮人 == 2 then设置平台点(788.49,-491.11,-39.91)else设置平台点(785.81,-489.00,-40.01)end
然后引怪完后再执行下面代码就可以清怪
打怪返回 = 平台打怪()if(打怪返回==0)then显示("人物死亡!")MySleep(3000) --延时毫秒ReleaseSoul() --释放灵魂MySleep(10000) --延时毫秒--护盾保护(false)Main()else--护盾保护(false)调试("玛拉顿结束,出本")显示("清理浮渣覆盖的袋子")while true doif 取身上物品总数("浮渣覆盖的袋子")~= 0 then使用物品("浮渣覆盖的袋子")elsebreakendend显示("清理浮渣覆盖的袋子完毕")local newtime=os.time()if 本地变量.是否捡物==1 then调用脚本(filepath.."路径/1-路径-玛拉顿出本.lua")if 取背包空格数()>8 or 装备是否需要修理()==0 thenlocal 时间差=900-(newtime-oldtime)print(newtime,oldtime,时间差)if 时间差>0 thenprint("防爆本处理",时间差)for i=1,时间差 doKeyPress(0,32) --按键组合按键,真实按键MySleep(1000) --延时毫秒endendend小号文件=io.open(filepath.."小号.txt","w+")内容=小号文件:write("出副本")小号文件:close()MySleep(2000) --延时毫秒走路(751.41,-628.53,-32.75)while (true) doif 计算自己距离(-1182.80,2877.43,85.91)<50 or 自身状态()==1 thenbreakend延时(500)end显示("副本任务完成!")else显示("叫小号去捡物")小号文件=io.open(filepath.."小号.txt","w+")内容=小号文件:write("去捡物")小号文件:close()调用脚本(filepath.."路径/1-路径-玛拉顿出本.lua")while true do小号文件=io.open(filepath.."小号.txt","r")local 内容=小号文件:read()小号文件:close()if 内容=="已捡完" thenbreakend延时(1000)end走路(751.41,-628.53,-32.75)while (true) doif 计算自己距离(-1182.80,2877.43,85.91)<50 or 自身状态()==1 thenbreakend延时(500)end显示("副本任务完成!")endend
-按键值已封装在core
function 按键(key,delay)local keyvalueif key == nil thenreturnendif delay==nil thendelay=100endif key=="1" thenkeyvalue=49elseif key=="2" thenkeyvalue=50elseif key=="3" thenkeyvalue=51elseif key=="4" thenkeyvalue=52elseif key=="5" thenkeyvalue=53elseif key=="6" thenkeyvalue=54elseif key=="7" thenkeyvalue=55elseif key=="8" thenkeyvalue=56elseif key=="9" thenkeyvalue=57elseif key=="10" thenkeyvalue=48elseif key=="-" thenkeyvalue=189elseif key=="=" thenkeyvalue=187elseif key=="z" thenkeyvalue=90elseif key=="x" thenkeyvalue=88elseif key=="c" thenkeyvalue=67elseif key=="e" thenkeyvalue=69elseif key=="r" thenkeyvalue=82elseif key=="q" thenkeyvalue=81elseif key=="g" thenkeyvalue=71elseif key=="f" thenkeyvalue=70elseif key=="v" thenkeyvalue=86elseif key=="h" thenkeyvalue=72elseif key=="j" thenkeyvalue=74elseif key=="i" thenkeyvalue=73elseif key=="t" thenkeyvalue=84elseif key=="上" thenkeyvalue=38elseif key=="下" thenkeyvalue=40elseif key=="左" thenkeyvalue=37elseif key=="右" thenkeyvalue=39end按下按键(keyvalue)MySleep(delay) --延时毫秒释放按键(keyvalue)endfunction 宠物技能(技能序号)if 技能序号==1 then --攻击KeyPress(17,49)elseif 技能序号==2 then --跟随KeyPress(17,50)elseif 技能序号==3 then--定在原地KeyPress(17,51)elseif 技能序号==4 then--攻击型KeyPress(17,56)elseif 技能序号==5 then --防御KeyPress(17,57)elseif 技能序号==6 then--被动型KeyPress(17,48)endend
参数 string 物品名字
返回 返回物品的总数
print(取身上物品总数("烤鹌鹑"))
参数 string NPC名字, int 物品编号, int 物品数量
查询物品编号 可用插件idTip去查询
要确保能与NPC互动的距离范围内 不需要打开NPC和选中NPC 站在旁边便可
买物品("旅店老板希科瓦",159,1)--购买清凉的泉水1个买物品("图克",2512,1) --购买劣质箭1支
商店标的是清泉的泉水 5个 25铜 买一个的价钱就是 25/5 实际扣款5铜
购买10铜200支的劣质箭时 10/200 低过了最少单位值1铜 那买一支箭时 扣款一样是1铜
参数 string npc名称,string 配置文件名
到NPC卖掉身上的道具 在配置的白名单里的物品不会出售
条件清包("加鲁特","清包配置.ini")
清包配置.ini的配置例子
[不卖物品]种类=5物品0=宁神花物品1=炉石物品2=烤鹌鹑物品3=幽灵菇物品4=锯齿箭
参数 string 物品名
功能 使用道具 使用道具必须符合要求 如人物不能移动中
使用物品后要加入延时为安全 不然客户端会崩溃
使用物品("的泉水") --清凉的泉水使用物品("炉石")Mysleep(5000)使用物品("青色迅猛龙之哨")使用物品("迅猛龙") --找到身上道具有迅猛龙字样的道具就去用
参数 string npc名字,string 不卖物品列表
功能 清空背包
清空背包("高德瑞克","包,清凉的泉水,奶酪")
参数 无
功能 返回剩余的空格数
参数 无
返回 0不需要修理 1需要修理
逻辑已内置了造水造食 专为法师去量身订造 猎人的是不支持练级
参数 无
功能 蹲下休息,喝红蓝,直到红蓝满
参数 无
功能 初始化寻路数据
参数 坐标
功能 向智能寻路添加坐标形成走路路径
参数 string 怪物列表,int 等级
返回: 退出标志 0:包满,1:死亡 2:到达等级
杀怪返回=智能杀怪("蜥蜴,鸟,狂吠者,长颈鹿,斑马,破云者,坦卡",24)if(杀怪返回==0)then --包满休息()智能寻路(1)清空背包("萨努耶·符文图腾")elseif(杀怪返回==1)then --死亡x,y,z = 取人物坐标()释放灵魂()显示("防复活时间太短")MySleep(30000) --延时毫秒设置复活点到开始点()单纯寻路(0)设置打怪路线() --恢复打怪用路线找尸寻路(x,y,z)复活()休息()elseif 杀怪返回==2 then显示("够等级了"..取人物等级())end
参数 int 方向
0:顺序寻路,1:逆序寻路
功能 设置方向是从坐标序列第一行开始执行还是最后一行开始执行
例子:
function Main()Print("Main_LUA开始!")清空寻路数据()添加寻路数据(-8894.78,-123.22,81.93)添加寻路数据(-8831.99,-170.21,80.06)添加寻路数据(-8806.51,-200.14,82.24)添加寻路数据(-8849.54,-330.21,69.27)添加寻路数据(-8886.66,-339.36,70.22)while(true)do智能寻路(0)杀怪返回=智能杀怪("迪菲亚",80)if(杀怪返回==0)then --包满智能寻路(1)清空背包("高德瑞克","包,清凉的泉水,奶酪")elseif(杀怪返回==1)then --无怪--去下一个打怪点elseif(杀怪返回==2)then --脱战移动到(-8859.29,-278.34,79.13)休息()elseif(杀怪返回==3)then --死亡break;endend--弹信息窗口("OK!")Print("Main_LUA结束!")end
参数 str 字符串
功能 保存在外挂当前目录的LOG文件内
记录日志("你好!")
参数 table 表
功能 保存当前变量转换成JSON格式保存在该帐号文件中
tab={}tab.次数=5保存变量(tab)
参数 无
功能 读取当前帐号的变量文件 一个帐号一个文件 自动获取帐号对应文件 不会因为多开错乱
require("core")function Main()array={}array.次数=5保存变量(array)array=读取变量()if array~=false thenprint("array"..array.次数)endend
参数 string LUA文件完整路径,int LUA编号0-31
功能 LUA并不支持多线程 所以这个函数是另外由主线程Main内去执行多一个独立环境的线程
参数 int LUA编号 0~31
结束指定编号的LUA线程 不能在线程内KillLua 自已的编号
线程的LUA文件必须有独立的环境和有加载CORE核心库才能用相应的函数
还必需具备有Main()的函数
线程内所有的变量名数值与主线程无任何关连 主线程里的变量 在子线程里是无法读取无法写入
主线程调用例子:
if state == false thenKillLua(0) --结束LUALUA编号 0-31elseSetLua("d:\wow_bot\假死保护.lua",0) --开始新LUALUA文件名,LUA编号 0-31end
子线程例子:
require("core")require("函数配置")function Main()Print("开始线程 假死保护")while (true) doif 技能冷却完毕("灵猴守护")==1 and 当前状态()==2 and 当前状态()~=3 then释放技能("灵猴守护")end延迟(1000)endend
子线程在循环一定要加入延时 不然会卡死
子线程没有循环的话 执行完就会结束