@steak
2020-08-03T22:04:02.000000Z
字数 12401
阅读 773
使用前注意事项
* 把游戏的 界面设置--> 鼠标--> 点击走路 钩上
* 把游戏的 选项-->按键设置-->与目标互动 设置成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 then
print("人物正被攻击中")
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 then
print("人物变成幽灵状态")
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 then
print("正在补给宠物忠诚度")
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 then
print("怪物身上有猎人4级印记")
end
参数 buff,技能ID
buff 用于取怪物宠物或人物的BUFF对象 技能ID是文字类型
返回布尔类型 ture flase
man=getman()
moster=getmoster()
pet=getpet()
if BUFF检查(man.buff,"2086")==true then
print("人物变成幽灵状态")
end
if BUFF检查(pet.buff,"603")==true then
print("正在补给宠物忠诚度")
end
if BUFF检查(moster.buff,"37F5")==true then
print("怪物身上有猎人4级印记")
end
参数 string 物件名称,int 检测范围
以人物为中心点 判决范围内有没指定物件 超过会返回0 找到会返回1
怪物不能检测到
if GetOtherNameRange("幽灵菇",10)==1) then
print("找到幽灵菇")
end
if GetOtherNameRange("邮箱",10)==1) then
print("找到邮箱")
end
参数 string 怪物名称,int 检测范围
检测周边环境有没这个怪物
成功找到返回1
找不到返回0
如果有同名怪物 会任意选一个
print(GetMonsterNameRange("毒劣魔",50))
参数 string 怪物名字 int 范围
功能 等于游戏里鼠标左键点选了怪物
成功返回1 失败返回0
如果有同名怪物 会任意选一个
if 选怪("被诅咒的塞雷布拉斯",100)==1 then
print("被诅咒的塞雷布拉斯找到")
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,z
ReLive() --复活
参数 int 毫秒
功能 延时
MySleep(1000) --等待1秒
参数 无
功能 重置副本 在能重置副本的地方使用 不要在副本里使用,在副本里使用会让游戏马上崩溃
if 计算自己距离(-1443.49,1973.37,85.49)<150 then
ResetFuben() --重置副本
end
参数 float X坐标,Y坐标,Z坐标
返回:人物与坐标之间的距离
if 计算自己距离(-1443.49,1973.37,85.49)<150 then
MoveRoute("玛拉顿-复活点到石门.ini",0)
elseif 计算自己距离(-1593.08,3149.81,46.49)<150 then
MoveRoute("玛拉顿-葬影村到石门.ini",0)
end
参数 int 距离
功能 以人物为中心点 距离范围内的怪物尸体 通通都会捡取一遍
捡取过的怪物 包括之前中断过的都不会再捡取 遇到要绑定的装备 如绿装蓝装会自动按绑定确认 如果捡尸过程中给怪物攻击 会返回0
返回 1 完成捡尸流程
0 中途遇到怪物攻击中断
while(true) do
if 捡尸(50)==1 then
break
else
假死.... --不用担心会重复捡尸 之前捡过的不会再去捡
end
end
参数 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 then
ReleaseSoul()
MySleep(3000)
break
}
if BUFF检查(man.buff,"2086") then
显示("卡死已使用完毕")
break
end
end
面向坐标点(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
技能没下完
end
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
技能没下完
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
如果怪物目标是打宠物的话流程
end
boss.对像=取坐标怪攻击("戈多克大王",boss.x,boss.y,boss.z,150,1)
boss1.对像=取坐标怪攻击("观察者克鲁什",boss1.x,boss1.y,boss1.z,150,1)
if boss.对像<1 then
boss.对像=取坐标怪攻击("戈多克大王",boss.x,boss.y,boss.z,150,2)
end
if boss1.对像<1 then
boss1.对像=取坐标怪攻击("观察者克鲁什",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 do
if 取身上物品总数("浮渣覆盖的袋子")~= 0 then
使用物品("浮渣覆盖的袋子")
else
break
end
end
显示("清理浮渣覆盖的袋子完毕")
local newtime=os.time()
if 本地变量.是否捡物==1 then
调用脚本(filepath.."路径/1-路径-玛拉顿出本.lua")
if 取背包空格数()>8 or 装备是否需要修理()==0 then
local 时间差=900-(newtime-oldtime)
print(newtime,oldtime,时间差)
if 时间差>0 then
print("防爆本处理",时间差)
for i=1,时间差 do
KeyPress(0,32) --按键组合按键,真实按键
MySleep(1000) --延时毫秒
end
end
end
小号文件=io.open(filepath.."小号.txt","w+")
内容=小号文件:write("出副本")
小号文件:close()
MySleep(2000) --延时毫秒
走路(751.41,-628.53,-32.75)
while (true) do
if 计算自己距离(-1182.80,2877.43,85.91)<50 or 自身状态()==1 then
break
end
延时(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 内容=="已捡完" then
break
end
延时(1000)
end
走路(751.41,-628.53,-32.75)
while (true) do
if 计算自己距离(-1182.80,2877.43,85.91)<50 or 自身状态()==1 then
break
end
延时(500)
end
显示("副本任务完成!")
end
end
-按键值已封装在core
function 按键(key,delay)
local keyvalue
if key == nil then
return
end
if delay==nil then
delay=100
end
if key=="1" then
keyvalue=49
elseif key=="2" then
keyvalue=50
elseif key=="3" then
keyvalue=51
elseif key=="4" then
keyvalue=52
elseif key=="5" then
keyvalue=53
elseif key=="6" then
keyvalue=54
elseif key=="7" then
keyvalue=55
elseif key=="8" then
keyvalue=56
elseif key=="9" then
keyvalue=57
elseif key=="10" then
keyvalue=48
elseif key=="-" then
keyvalue=189
elseif key=="=" then
keyvalue=187
elseif key=="z" then
keyvalue=90
elseif key=="x" then
keyvalue=88
elseif key=="c" then
keyvalue=67
elseif key=="e" then
keyvalue=69
elseif key=="r" then
keyvalue=82
elseif key=="q" then
keyvalue=81
elseif key=="g" then
keyvalue=71
elseif key=="f" then
keyvalue=70
elseif key=="v" then
keyvalue=86
elseif key=="h" then
keyvalue=72
elseif key=="j" then
keyvalue=74
elseif key=="i" then
keyvalue=73
elseif key=="t" then
keyvalue=84
elseif key=="上" then
keyvalue=38
elseif key=="下" then
keyvalue=40
elseif key=="左" then
keyvalue=37
elseif key=="右" then
keyvalue=39
end
按下按键(keyvalue)
MySleep(delay) --延时毫秒
释放按键(keyvalue)
end
function 宠物技能(技能序号)
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)
end
end
参数 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;
end
end
--弹信息窗口("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 then
print("array"..array.次数)
end
end
参数 string LUA文件完整路径,int LUA编号0-31
功能 LUA并不支持多线程 所以这个函数是另外由主线程Main内去执行多一个独立环境的线程
参数 int LUA编号 0~31
结束指定编号的LUA线程 不能在线程内KillLua 自已的编号
线程的LUA文件必须有独立的环境和有加载CORE核心库才能用相应的函数
还必需具备有Main()的函数
线程内所有的变量名数值与主线程无任何关连 主线程里的变量 在子线程里是无法读取无法写入
主线程调用例子:
if state == false then
KillLua(0) --结束LUALUA编号 0-31
else
SetLua("d:\wow_bot\假死保护.lua",0) --开始新LUALUA文件名,LUA编号 0-31
end
子线程例子:
require("core")
require("函数配置")
function Main()
Print("开始线程 假死保护")
while (true) do
if 技能冷却完毕("灵猴守护")==1 and 当前状态()==2 and 当前状态()~=3 then
释放技能("灵猴守护")
end
延迟(1000)
end
end
子线程在循环一定要加入延时 不然会卡死
子线程没有循环的话 执行完就会结束