舰_自定拆船脚本
--发布地址:http://sp2.moehex.com/2016/07/10/%e8%88%b0_%e8%87%aa%e5%ae%9a%e6%8b%86%e8%88%b9%e8%84%9a%e6%9c%ac/
--自定义脚本例子
--按照New排序拆掉20个船
--请注意一定要先锁定不拆的船!!!!
--请注意一定要先锁定不拆的船!!!!
--请注意一定要先锁定不拆的船!!!!
--请注意一定要先锁定不拆的船!!!!
--请注意一定要先锁定不拆的船!!!!
--请注意一定要先锁定不拆的船!!!!
--请注意一定要先锁定不拆的船!!!!
--请注意一定要先锁定不拆的船!!!!
--[2015.08.03]脚本会保留轻空母和水上机母舰这两种对空口粮
--[2015.08.04]优化船类型检测的速度
--[2015.08.04]不再随机选择船,而是按照顺序向下选择
--[2015.09.14]优化速度,基本等于人手操作
--[2015.10.30]支持保留正航口粮
--[2016.04.21]移除脚本确认提示!用于方便调用
--[2016.04.21]默认改为拆20个船
--[2016.04.21]拆船完成后会回到母港
--[2016.07.12]修正游戏UI调整会拆掉水母轻空母航母的问题
--[2017.06.07]修正会拆掉对空素材的问题
--[2018.01.09]支持多选
--需要1.2.6版本
local inspect = require([[base\inspect]])
m_max_count = 20
--拆船的次数
Base.SetColorDebug(false)
function IsColorAll(array) --请保持这个函数不要修改
n=0
ok=0
while(array[n] ~= nil)
do
if Base.IsColor(array[n][0],array[n][1],array[n][2])==true then
ok = ok + 1
end
n= n+1
end
if ok==n then
return true
else
return false
end
end
function IsFactory() --由工具KanAuto专用取色工具生成,请到论坛下载
array = {};count = {};
array = {[0]=291,246,3492493}; count[0] = array;
array = {[0]=200,265,3029879}; count[1] = array;
array = {[0]=202,238,3363487}; count[2] = array;
array = {[0]=265,334,5016925}; count[3] = array;
return IsColorAll(count)
end
function IsNew()--由工具KanAuto专用取色工具生成,请到论坛下载
array = {};count = {};
array = {[0]=579,108,13488566}; count[0] = array;
array = {[0]=590,120,12040273}; count[1] = array;
array = {[0]=592,114,9474092}; count[2] = array;
array = {[0]=600,112,13488566}; count[3] = array;
array = {[0]=578,110,10066495}; count[4] = array;
array = {[0]=586,111,15922943}; count[5] = array;
return IsColorAll(count)
end
function IsKanOk()--由工具KanAuto专用取色工具生成,请到论坛下载
array = {};count = {};
array = {[0]=734,425,11116845}; count[0] = array;
array = {[0]=669,448,7233824}; count[1] = array;
return IsColorAll(count)
end
function IsRunOk()--由工具KanAuto专用取色工具生成,请到论坛下载
array = {};count = {};
array = {[0]=551,449,14083822}; count[0] = array;
array = {[0]=542,457,13886443}; count[1] = array;
array = {[0]=582,455,14346736}; count[2] = array;
array = {[0]=529,446,14149357}; count[3] = array;
return IsColorAll(count)
end
function RetKanId(x,y)
for i=1,10 do
if Base.InRect(x,y,196,120 + ((i-1)*31),100,31) then
return i
end
end
return 0;
end
--判断是否是锁定的
function GetLockKanArray()
t = {}
for i=1,10 do
if Base.IsColor(578, 140 + (i - 1) * 31, 9869808) then
--Base.Print(string.format("%d = %s",i,"Lock"))
t[i] = true;
else
t[i] = false;
end
end
return t;
end
function CheckKanType()
kan_type = {}
cvl = Base.FindColorAllBin(15,145,{196,121,130,312},"1R0S0FE,1RVTF", "10RVVVD,1RVU8")
cvs = Base.FindColorAllBin(12,145,{196,121,130,312},"1NVDJO0,1DLBV", "1NVDVRM,1TK3V")
cv = Base.FindColorAllBin(12,145,{196,121,130,312},"1RNVC3V,1VTNF", "1RGC1RF,1GTVF")
--Base.Print("CVL:" .. inspect(t))
if cvl ~= nil then
Base.Print("-----")
--输出坐标
for key, value in pairs(cvl) do
id = RetKanId(value["x"],value["y"])
Base.Print(string.format("%d = %s",id,"cvl"))
kan_type[id] = "cvl"
end
end
if cvs ~= nil then
Base.Print("-----")
--输出坐标
for key, value in pairs(cvs) do
id = RetKanId(value["x"],value["y"])
Base.Print(string.format("%d = %s",id,"cvs"))
kan_type[id] = "cvs"
end
end
if cv ~= nil then
Base.Print("-----")
--输出坐标
for key, value in pairs(cv) do
id = RetKanId(value["x"],value["y"])
Base.Print(string.format("%d = %s",id,"cv"))
kan_type[id] = "cv"
end
end
return kan_type
end
--脚本从这里开始向下执行
--CheckKanType()
--Base.SleepSec(10)
--
Kan.WaitHomeEx(2000,120*1000) --等待母港
Base.ClickRect(281,358) --点击工厂
Base.Print("等待工厂界面...")
while IsFactory() == false do --等待工厂界面载入
Base.Sleep(1000)
end
Base.Sleep(500)
Base.ClickRectEx(199,253) --点击解体按钮
Base.Print("等待切换排序...")
while IsNew() == false do --等待New排序
Base.ClickRect(590,111) --点击切换排序
Base.Sleep(500)
end
Base.Sleep(500)
m_count = 0
while true do
kan_type = {}
Base.Print("检查船类型...")
Base.Print(m_last_ok_id)
--for i=1,100 do
-- Base.Move(196,138 + i * 3)
-- Base.Sleep(3)
--end
Base.ClickRect(185,118)
Base.Sleep(150)
kan_lock = GetLockKanArray()
kanType = CheckKanType() --返回一个船类型列表
Base.Print("锁定状态:" .. inspect(kan_lock))
Base.Print("船类型:" .. inspect(kanType))
--扫描列表
--Base.Print(string.format("选择船ID:%d", kan_id))
Base.Sleep(500)
Base.Print("检查是否可以拆掉")
err_count = 0;
selectCount = 0;
for i=1, 10 do
Base.Sleep(333)
if kanType[i] == nil and kan_lock[i] == false then
Base.Print(string.format("选择船ID:%d", i))
Base.ClickRect(240 , 120 + ((i-1)*31) +15)
selectCount = selectCount + 1;
end
end
if selectCount == 0 then break end
Base.Print("解体!")
Base.Sleep(200)
Base.ClickRectEx(708,435) --点击解体
Base.Sleep(200)
Base.Print("等待解体...")
while IsRunOk() == false do --等待拆船
Base.Sleep(100)
end
--拆了一个船
m_count=m_count+1
if m_count == m_max_count then break end
Base.Sleep(100)
end
while IsRunOk() == false do --等待拆船完成界面
Base.Sleep(100)
end
Base.Sleep(500)
Kan.GoHome() --回到母港
Kan.WaitHome()
Base.Print("脚本结束")
Last updated