舰_3-2A+远征_1208

--[2016.04.10] 替换了远征函数为Easy函数
--[2016.04.10] 在完成了出击次数后进入远征循环,同时会修理损坏的船
--[2016.04.10] 支持使用设置出击的时间 
--[2016.04.10] 支持设置在满足战斗次数后修理船 
--[2016.04.21] 支持设置拆船
--[2016.06.13] 支持快速设置使用改后潜艇 不过不建议使用 因为修理时间太长了
--[2016.12.08] 部分注释修改 支持设置翻页次数

--###################################################################
--这里是设置区域!请仔细阅读!!!!! 然后再修改 
--如果设置区域读不懂 请按Alt+F4提高智商后再来
--false=关闭 true=开启

--使用魔改或高清包可能会导致无法更换潜艇!!!
--使用魔改或高清包可能会导致无法更换潜艇!!!

Base.SetConfig("FindColorBinDefSite", 4) 
--潜艇入渠容错,如果您的这个脚本开启了use_speed,但是会把潜艇也入渠,可调高此值(推荐5-8)

kan_id = 4 
--潜艇在第一舰队中的位置1-6 推荐4号位或6号了

start_page = 2
--设置潜艇从第几页开始找,因为是默认舰种排序,所以一般是第1或2页

page_count = 3
--翻页次数,从start_page开始翻页几次

next_page_back = false
--让页面从后向前翻 如果设置的是start_page是6 则翻页 6 5 4 ...

use_ss_kai = false
--使用改后潜艇 168改 马路油改 58改等
--改后潜艇修理时间长 不建议使用!!!!

math.randomseed(os.time())
f_count = math.random(30,50) --战斗次数 50-70 随机
--战斗次数 满足战斗次数将会只远征

Kan.DelBattleInfo()
--清空战斗配置

Kan.AddBattleInfo(1,2,false,false)
--增加战斗配置,点1\阵型复纵\不夜战\不接受司令部退避(当前版本不支持)

use_speed = false
--修理时对 除潜艇外 的大破船是否使用桶,建议true

k2_conquest = C.東京急行弐_ID38
k3_conquest = C.北方鼠輸送作戦_ID21
k4_conquest = C.海上護衛任務_ID5
--设置2、3、4队伍远征,可输入C.然后下拉选择

Kan.EasyConquestInit(60*5, 60*10)
--设置简易远征,每5-10分钟进行一次检测,1.5.3版本KCA才可以使用

run_hour = "[[0,23]]" 
--出击的时间设置 默认"[[0,23]]"为全天随时都执行,1.5.3版本KCA才可以使用
--设置举例:"[8,10,[20,22]]" 为8、10、20、21、22为脚本出击时间

reset_battle_count = true 
--是否在每次等待到可执行的时间后重置战斗次数,1.5.3版本KCA才可以使用
--比如"[8,10,[20,22]]"的设置,会在8点,10点,20点进行重置

destroy_kan = false 
--是否在每次等待到可执行的时间后执行拆船
--比如"[8,10,[20,22]]"的设置,会在8点,10点,20点进行拆船

over_repair = false 
--是否在战斗次数满足后修船,需要设定远征才生效,1.5.3版本KCA才可以使用

Base.SetConfig("Sleep+?",100) --所有延时随机增加1-100
--###################################################################

if next_page_back == true then
	Base.SetConfig("ChangePageEndStart",1)
end

m_lv = {SS=0,S=0,A=0,B=0,C=0,D=0,ALL=0,ERROR=0}

function CheckLv() --统计战斗评级
	count = Base.GetValueInt("LastBattleCount")
	Base.Print("LastBattleCount:"..count)
	if count > 0 then
		m_lv.ALL = m_lv.ALL+count
		for n=1,count do
			ret = Base.GetValueInt("Battle_Lv_"..n)
			if ret == C.WIN_SS then
				m_lv.SS = m_lv.SS+1
			elseif  ret == C.WIN_S then
				m_lv.S = m_lv.S+1
			elseif  ret == C.WIN_A then
				m_lv.A = m_lv.A+1
			elseif  ret == C.WIN_B then
				m_lv.B = m_lv.B+1
			elseif  ret == C.WIN_C then
				m_lv.C = m_lv.C+1
			elseif  ret == C.WIN_D then
				m_lv.D = m_lv.D+1
			elseif  ret == C.WIN_ERROR then
				m_lv.ERROR = m_lv.ERROR+1
			end
			
		end
	end
	Win.SetState("累计战斗:"..m_lv.ALL.." SS:"..m_lv.SS.."  S:"..m_lv.S.."  A:"..m_lv.A.."  B:"..m_lv.B.."  C:"..m_lv.C.."  D:"..m_lv.D)
end

function ReSetBattleCount() --每达到某个时间点后重设当前战斗次数
	
	if reset_battle_count == true then
		Win.Print("战斗次数清零,并清理")
		f_count_now = 0
	end 
	
	if destroy_kan == true then
		dofile(".\\example\\舰_自定拆船脚本.lua")
	end
end

ss_kai = 1
if use_ss_kai == true then
	ss_kai = 3
end
	
f_count_now = 0 ; run_count = 0; --初始化当前战斗次数,请勿修改
Kan.EasyConquestRun(false) --首次启动的时候执行一次远征

while true do --开始无限循环
Base.WaitRunHour(run_hour, true, "", "ReSetBattleCount")
run_count = run_count + 1
a = "开始第:%d次"
Win.Print(a:format(run_count))

ret = Kan.Supply() --补给 只补给舰队1

speed = 0
if use_speed == true then
	speed = 16
end

kan_state = Base.GetValueInt("SupplyKanState"..kan_id)
if kan_state == 8 then --当前潜艇位置状态如果是修理中
	Win.Print('当前潜艇位置在修理中..执行更换...')

	if Kan.Change(kan_id,1,10,start_page,ss_kai,1,0,page_count)==true then --把潜艇更换
		Win.Print('更换成功')
	else
		Win.Print('更换失败')
	end
end

if ret > 0 then
	if ret == kan_id then
		if Kan.Change(ret,1,10,start_page,ss_kai,1,0,page_count)==true then
			Win.Print('成功替换潜艇')
			Kan.RepairEx(4,speed,8) --修理大破
		else
			Win.Print('没有可替换的潜艇,执行入渠、等待5分')
			Kan.RepairEx(4,speed,8)
			Kan.EasyConquestWaitNextRun() --等待并执行远征
			if Kan.EasyConquestIsEnabled() == false then Base.Sleep(1000*60*5) end
		end
	else
		Win.Print('有潜艇以外的船大破!尝试修复、等待5分')
		Kan.RepairEx(4,speed,8)
		Kan.EasyConquestWaitNextRun() --等待并执行远征
		if Kan.EasyConquestIsEnabled() == false then Base.Sleep(1000*60*5) end
	end

elseif ret == -1 then
	Win.Pop('补给不足,等待远征、等待5分',true)
	Kan.RepairEx(4,speed,8)
	Kan.EasyConquestWaitNextRun() --等待并执行远征
	if Kan.EasyConquestIsEnabled() == false then Base.Sleep(1000*60*5) end
elseif ret == -2 then
	Win.Pop('舰队远征中,等待远征、等待5分',true)
	Kan.RepairEx(4,speed,8)
	Kan.EasyConquestWaitNextRun() --等待并执行远征
	if Kan.EasyConquestIsEnabled() == false then Base.Sleep(1000*60*5) end
elseif ret==0 then
	if f_count_now >= f_count then --如果超过设定的战斗次数,则直接进入远征的执行
		if Kan.EasyConquestIsEnabled() == false then break end
		Kan.EasyConquestWaitNextRun() --执行远征
		if math.random(1,2) == 1 and over_repair == reue then
			Kan.RepairEx(4)
		end
	else
		Kan.Sally(3, 2) --出击目标 3-2
		if Kan.BattleEx(1, 1) == false then --第一舰队/出击一次(A点)
			Win.Print('可能无法出击或道中大破')
		end
		CheckLv() --更新统计数据
		f_count_now = f_count_now  + 1 --每次战斗增加1 
		Kan.WaitHome(2000)
		Base.Sleep(2000)
	end
end
end

Kan.EasyConquestEnterLoop()

Win.Pop('脚本执行完毕!',true)

Last updated