该文档为KanAuto内部公开的函数说明
Win为窗体控制类
Base为基础类
Kan为舰娘封装类
Tou为刀剑封装类
有问题请在底部评论留言

@Win.Print

Win.Print(text)
输出日志文本
返回值:无
参数
ID 名字 说明
1text[string]输出的文本
例子:
Win.Print("Hello")

@Win.Pop

Win.Pop(text, showLog)
弹出气泡提示
返回值:无
参数
ID 名字 说明
1text[string]气泡文本
2showLog[bool]是否在日志中显示
例子:
Win.Pop("Hello")

@Win.SetState

Win.SetState(text)
设置一个状态条内容文本,显示在脚本框下方。
返回值:无
参数
ID 名字 说明
1text[string]展示的文本
例子:
Win.SetState("Hello")

@Win.MessageBox

Win.MessageBox(text, type)
弹出信息框
返回值:无
参数
ID 名字 说明
1text[string]展示的文本
2type[int]弹窗类型,1=带YESNO钮的信息框,同时返回用户选的是YES还是NO。
例子:
Win.MessageBox("Hello", 1)

@Counter.Add

count = Counter.Add(text, count)
增加计次
返回值
ID 名字 说明
1count[int]该Key的最终计次值
参数
ID 名字 说明
1text[string]Key,用于计次的Key。
2count[int]计次值,如为1,则该Key计次+1。
例子:
Counter.Add("Key", 1)

@Counter.Get

count = Counter.Get(text)
获取计次
返回值
ID 名字 说明
1count[int]获取Key当前的值,如果没有进行过计次,则返回0。
参数
ID 名字 说明
1text[string]Key。
例子:
count = Counter.Get("Key")

@Counter.Init

isok = Counter.Init()
初始化计数器表,并清除之前的计次
返回值
ID 名字 说明
1isok[bool]是否成功
参数:无
例子:
ok = Counter.Init()

@Counter.GetText

show = Counter.GetText(text)
获取用于展示的计数器文本
返回值
ID 名字 说明
1show[string]当前计数器中的所有Key计次的文本,用于展示。
参数
ID 名字 说明
1text[string]分隔符,每个Key之间。
例子:
show = Counter.GetText("   ")

@Base.ReLoad

Base.ReLoad()
执行刷新页面(F5),非同步操作,请自行等待载入,只支持IE核心浏览器和poi5.0.0,不建议滥用该函数!
返回值:无
参数:无

@Base.ReLoadAndEnter

Base.ReLoadAndEnter()
执行刷新游戏页面,并等待进入到母港或本丸,同步操作,只支持IE核心浏览器和poi5.0.0。
返回值:无
参数:无

@Base.GetColor

color = Base.GetColor(x, y)
取某坐标点的颜色
返回值
ID 名字 说明
1color[int]颜色值
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
例子:
color = Base.GetColor(123, 456)

@Base.MinVer

version = Base.MinVer(version, isok)
设置当前脚本的最低运行脚本,如果版本不符合,则会弹出提示框(并不会阻止脚本运行)。
返回值
ID 名字 说明
1version[int]当前KCA的版本号
参数
ID 名字 说明
1version[int]指定KCA版本号,如1.6.3则输入163。
2isok[bool]是否弹出提示框
例子:
Base.MinVer(135)

@Base.IsColor

iscolor = Base.IsColor(x, y, color)
判断某点是否为某个颜色
返回值
ID 名字 说明
1iscolor[bool]该坐标是否为这个颜色
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
3color[int]颜色值
例子:
ok = Base.IsColor(123, 456, 1555555)

@Base.IsColorEx

iscolor = Base.IsColorEx(x, y, color, size)
判断某点是否为某个颜色
返回值
ID 名字 说明
1iscolor[bool]该坐标是否为这个颜色
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
3color[int]颜色值
4size[int]R、G、B允许的误差值(0-255)
例子:
ok = Base.IsColorEx(123, 456, 1555555, 5)
--用于一些点可能有颜色的轻微浮动

@Base.IsColorExSite

iscolor = Base.IsColorExSite(x, y, color, sizer, sizeg, sizeb)
模糊判断某点是否为某个颜色
返回值
ID 名字 说明
1iscolor[bool]该坐标是否为这个颜色
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
3color[int]颜色值
4sizer[int]R允许的误差值(0-255)
5sizeg[int]G允许的误差值(0-255)
6sizeb[int]B允许的误差值(0-255)
例子:
ok = Base.IsColorExSite(123, 456, 1555555, 5,0,3)
--用于一些点可能有颜色的轻微浮动

@Base.RGB2Color

color = Base.RGB2Color(r, g, b)
合并颜色,把R、G、B三个值分别传入,得到一个颜色值
返回值
ID 名字 说明
1color[int]颜色值
参数
ID 名字 说明
1r[int]R
2g[int]G
3b[int]B
例子:
color = Base.RGB2Color(255,255,255)

@Base.Color2RGB

color_json = Base.Color2RGB(color)
颜色值分解为R、G、B颜色
返回值
ID 名字 说明
1color_json[string]分解颜色值,表示为文本如[100,100,100],可使用cjson解析
参数
ID 名字 说明
1color[int]颜色值
例子:
color = Base.Color2RGB(1888888)
cjson = require "cjson"
local data = cjson.decode(jsons);
Base.Print(data[1]); --R
Base.Print(data[2]); --G
Base.Print(data[3]); --B

@Base.InRect

isok = Base.InRect(x, y, rectx, recty, rectw, recth)
判断一个点是否在一个矩形范围内,参数依次为:点X,点Y,矩形左边,矩形顶边,矩形宽度,矩形高度,返回值为true或false
返回值
ID 名字 说明
1isok[bool]坐标是否在矩形范围内
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
3rectx[int]矩形x
4recty[int]矩形y
5rectw[int]矩形宽
6recth[int]矩形高
例子:
ok = Base.InRect(15,15,10,10,30,30)
--ok = true

@Base.Click

Base.Click(x, y)
点击游戏中的坐标。由于反检测机制,坐标会随机自动在7*7范围内。
返回值:无
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
例子:
Base.Click(455,60)
--由于反检测机制,坐标会随机自动在7*7范围内

@Base.ClickRect

Base.ClickRect(x, y, size)
以坐标为中心(方形)随机点击。
返回值:无
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
3size[int]点击随机范围,默认为22,设置为22的话,则实际点击坐标为x-11,y-11到x+11,y+11的一个23*23矩形内随机点击。
例子:
Base.ClickRect(20,40,10)

@Base.ClickRectEx

Base.ClickRectEx(x, y, w, h)
以坐标为中心(矩形)随机点击。
返回值:无
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
3w[int]x轴随机范围
4h[int]y轴随机范围
例子:
Base.ClickRectEx(123,456,20,20)

@Base.Sleep

Base.Sleep(time, isok)
等待一段时间。
返回值:无
参数
ID 名字 说明
1time[int]等待时间(毫秒(1000毫秒=1秒))
2isok[bool]决定是否受Sleep+?等配置的影响 默认为false
例子:
Base.Sleep(1000); --等待1秒
Base.Sleep(1000, true);


@Base.SleepSec

Base.SleepSec(time)
等待一段时间(秒)。
返回值:无
参数
ID 名字 说明
1time[int]秒数
例子:
Base.SleepSec(10) --等待10秒

@Base.InitDC

Base.InitDC()
初始化HDC,非常用API。
返回值:无
参数:无

@Base.InitHWND

Base.InitHWND()
初始化舰娘句柄
返回值:无
参数:无

@Base.InitHWNDTouken

Base.InitHWNDTouken()
初始化刀剑乱舞脚本。
返回值:无
参数:无

@Base.InitHWNDDiy

Base.InitHWNDDiy(hwnd)
初始化DIY脚本,已过时。
返回值:无
参数
ID 名字 说明
1hwnd[int]游戏flash句柄

@Base.FindWindow

hwnd = Base.FindWindow(class, title)
查找一个窗口,返回int类型句柄
返回值
ID 名字 说明
1hwnd[int]句柄,失败返回0
参数
ID 名字 说明
1class[string]窗口类名
2title[string]窗口标题
例子:
Base.FindWindow("QQ","QQ")

@Base.FindWindowEx

hwnd = Base.FindWindowEx(hwndParent, hwndChildAfter, lpClassName, lpWindowName)
查找一个窗口,返回int类型句柄
返回值
ID 名字 说明
1hwnd[int]窗口句柄,未找到返回0
参数
ID 名字 说明
1hwndParent[int]父窗口句柄
2hwndChildAfter[int]从该窗口句柄向后查找
3lpClassName[string]窗口类名
4lpWindowName[string]窗口标题

@Base.CallFunc

jsonStr = Base.CallFunc(func, data)
使用特殊的调用方式,传输Json文本来调用例子 Base.CallFunc("Base.AddKanChangeColor","[123,456,789]") 只支持部分多参数函数,如FindColor系列。
使用方法详情
返回值
ID 名字 说明
1jsonStr返回json文本
参数
ID 名字 说明
1func函数名字
2datajsondata

@Base.SetConfig

Base.SetConfig(key, value)
设置一个可供脚本使用的全局变量,目前支持"Sleep+""Sleep+?""Sleep-""Sleep-?""ChangePageEndStart",
例如:Base.SetConfig("Sleep+",1000) 则会导致程序内部所有的延时增加1秒,包括封装好的内部的等待延时。
例如:Base.SetConfig("Sleep+?",1000) 则会导致程序内部所有的延时每次操作随机增加0-1000毫秒延时,包括内部的等待延时。
例如:"ChangePageEndStart" 如果等于1,则更换潜艇从第3页向前翻。
返回值:无
参数
ID 名字 说明
1key[string]Key
2value[int]值

@Base.SetValue

Base.SetValue(key, value)
设置一个可供脚本使用的全局变量(支持设置文本),目前支持"Sleep+""Sleep+?""Sleep-""Sleep-?""ChangePageEndStart",
例如:Base.SetConfig("Sleep+",1000) 则会导致程序内部所有的延时增加1秒,包括封装好的内部的等待延时。
例如:Base.SetConfig("Sleep+?",1000) 则会导致程序内部所有的延时每次操作随机增加0-1000毫秒延时,包括内部的等待延时。
例如:"ChangePageEndStart" 如果等于1,则更换潜艇从第3页向前翻。
返回值:无
参数
ID 名字 说明
1key[string]Key
2value[string]值

@Base.GetValue

value = Base.GetValue(key)
可获取SetConfig所设置的值,也可得到一些其他数据,例如LastBattleCount,可得到劝退时战斗了几场。
返回值
ID 名字 说明
1value[string]该Key的值
参数
ID 名字 说明
1key[string]Key
例子:
value = Base.GetValue("test")

@Base.GetValueInt

value = Base.GetValueInt(key)
可获取SetConfig所设置的值,也可得到一些其他数据,例如LastBattleCount,可得到劝退时战斗了几场。
返回值
ID 名字 说明
1value[int]该Key的值
参数
ID 名字 说明
1key[string]Key
例子:
value = Base.GetValueInt("test")

@Base.FindColor

x, y = Base.FindColor(color, ...)
可用颜色来查找坐标,应用于不固定的图像判断。(可用工具生成)
返回值
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
参数
ID 名字 说明
1color, ...[int]每个参数都是一个颜色,它们是连续的
例子:
x,y=Base.FindColor(7766151,10267316,10333366,10925504,7107964,8226960,10859967,10991554,7371136,12966117,6384240,6515826,6844792,12637151,8161424)

Base.Print(x)
Base.Print(y)

@Base.FindColorEx

x, y = Base.FindColorEx(difference, color, ...)
可用颜色来查找坐标,应用于不固定的图像判断。(可用工具生成)
返回值
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
参数
ID 名字 说明
1difference[int]每个颜色允许的误差值0-255
2color, ...[int]每个参数都是一个颜色,它们是连续的
例子:
x,y=Base.FindColor(20,7766151,10267316,10333366,10925504,7107964,8226960,10859967,10991554,7371136,12966117,6384240,6515826,6844792,12637151,8161424)

@Base.FindColorAll

xy = Base.FindColorAll(difference, rect, color, ...)
可用颜色来查找坐标,应用于不固定的图像判断。(可用工具生成)
返回值
ID 名字 说明
1xy[table]坐标组成的一个table
参数
ID 名字 说明
1difference[int]每个颜色允许的误差值0-255
2rect[table]在矩形范围中寻找,如果全图查找,这些写nil,例子{1,2,3,4}
3color, ...[int]每个参数都是一个颜色,它们是连续的
例子:
--寻找颜色 返回table
mytable = Base.FindColorAll(3, nil, 3575721,1803682,6729413,15268095,15268095,5219514,1803682,2987967,1218755,359080)

--使用KCA自带的函数打印table到json文本
Base.Print(TableToJson(mytable)) 

--循环方式1
for key, value in pairs(mytable) do  
    Base.Print(string.format("找到1:%d,%d",value["x"],value["y"]))
end  

Base.Print(#mytable) --获取长度

--循环方式2
--初始值 最终值 步长
for i = 0, #mytable, 1 do
	Base.Print(string.format("找到2:%d,%d", mytable[i].x, mytable[i].y))
end

@Base.FindColorAllBin

xy = Base.FindColorAllBin(difference, threshold, rect, color, ...)
可用颜色来查找坐标,应用于不固定的图像判断。(可用工具生成)
返回值
ID 名字 说明
1xy[table]坐标组成的一个table
参数
ID 名字 说明
1difference[int]每个颜色允许的误差值0-255
2threshold[int]颜色二值化的分割值0-255
3rect[table]在矩形范围中寻找,如果全图查找请写nil,例子{1,2,3,4}
4color, ...[int]每个参数都是一个颜色,它们是连续的
例子:
--寻找颜色 返回table
mytable = Base.FindColorAllBin(3, 145, nil, 3575721,1803682,6729413,15268095,15268095,5219514,1803682,2987967,1218755,359080)

--使用KCA自带的函数打印table到json文本
Base.Print(TableToJson(mytable)) 

--循环方式1
for key, value in pairs(mytable) do  
    Base.Print(string.format("找到1:%d,%d",value["x"],value["y"]))
end  

Base.Print(#mytable) --获取长度

--循环方式2
--初始值 最终值 步长
for i = 0, #mytable, 1 do
	Base.Print(string.format("找到2:%d,%d", mytable[i].x, mytable[i].y))
end

@Base.Print

Base.Print(data)
可输出lua的任意格式,支持多参数,数值,文本,都可以直接输出
返回值:无
参数
ID 名字 说明
1data[any]输出的值,任意类型
例子:
Base.Print(string.format("%d %s", 123, "hello"))

@Base.SendMessage

ret = Base.SendMessage(msg_id, wp, lp)
发送消息到游戏窗口
返回值
ID 名字 说明
1ret[int]消息返回值
参数
ID 名字 说明
1msg_id[int]消息ID
2wp[int]wp
3lp[int]lp

@Base.PostMessage

ret = Base.PostMessage(msg_id, wp, lp)
投递消息到游戏窗口
返回值
ID 名字 说明
1ret[int]消息返回值
参数
ID 名字 说明
1msg_id[int]消息ID
2wp[int]wp
3lp[int]lp

@Base.Move

Base.Move(x, y)
鼠标移动事件
返回值:无
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
例子:
Base.Move(50,50)
Base.Move(51,51)
Base.Move(52,52)

@Base.WaitColor

isok = Base.WaitColor(color, title, time, time_max, percentage, more_wait)
同步操作,等待某些颜色点符合。(该函数可使用KCA顶部调色板按钮自动生成)完成时会多等待一个时间周期
返回值
ID 名字 说明
1isok[bool]是否成功
参数
ID 名字 说明
1color[string]数组文本如[[x,y,color],[x,y,color]]
2title[string]这次等待的目的地,如母港,用于日志输出
3time[int]检测周期,毫秒,默认1000毫秒
4time_max[int]最多等待时间,毫秒,默认1000*120毫秒
5percentage[int]颜色符合百分比,如color中写了两个点,然后这个值是50,则符合一个点就会返回true,默认100
6more_wait[bool]完成时不再多等待一个时间周期,默认false
例子:
Base.WaitColor("[[382,86,11972251],[422,94,12103834]]","母港")

--一般只需俩参数

@Base.IsColorEasy

isok = Base.IsColorEasy(color, title, percentage, more_wait_time)
判断是否某些颜色点符合
返回值
ID 名字 说明
1isok[bool]是否成功
参数
ID 名字 说明
1color[string]颜色点数据数组如[[x,y,color],[x,y,color]]
2title[string]这次等待的目的地,如母港,用于日志输出
3percentage[int]颜色符合百分比,如color中写了两个点,然后这个值是50,则符合一个点就会返回true,默认100
4more_wait_time[int]判断true后等待时间,毫秒

@Base.ImageHash

hash = Base.ImageHash(x, y, w, h)
获取图像某部分的感知Hash,可使用KCA顶部工具快速生成代码,不管是图片变亮,变暗,拉伸,系统绘制的差异,或者有少部分不同,Hash误差都是非常小。
返回值
ID 名字 说明
1hash[string]十六进制文本表示该矩形的hash
参数
ID 名字 说明
1x[int]矩形x
2y[int]矩形y
3w[int]矩形宽
4h[int]判断高

@Base.ImageHashContrast

difference = Base.ImageHashContrast(hash1, hash2)
比较两串ImageHash,支持16进制文本和二进制文本
返回值
ID 名字 说明
1difference[int]两个hash的误差,一般误差值10以内为同一张图
参数
ID 名字 说明
1hash1[string]十六进制文本的hash
2hash2[string]十六进制文本的hash

@Base.Screenshot

Base.Screenshot(name)
截图,存储图像,图像存储在KCA下的screenshot目录
返回值:无
参数
ID 名字 说明
1name[string]保存的文件名,如果不填写,则随机名字

@Base.CheckHour

isok = Base.CheckHour(hour_json_string)
检查当前时间(小时)是否符合参数所设置的,是则返回true,否则返回false。
返回值
ID 名字 说明
1isok[bool]当前时间是否符合
参数
ID 名字 说明
1hour_json_string[string]小时的json文本表示,如"[10,13,[20,23]]"代表时间10点,13点,20-23点是符合的

@Base.WaitRunHour

difference = Base.WaitRunHour(hour_json_string, run_easy_conquest, lua_func, lua_exit_func, easy_conquest_type)
检查当前时间(小时)是否符合参数所设置的,是则直接返回,如果不是,则会持续等待到下一个你设置的小时。
返回值
ID 名字 说明
1difference[int]两个hash的误差,一般误差值10以内为同一张图
参数
ID 名字 说明
1hour_json_string[string]小时的json文本表示,如"[10,13,[20,23]]"代表时间10点,13点,20-23点是符合的
2run_easy_conquest[bool]是否在等待中进行EasyConquest
3lua_func[string]lua函数名,在每次等待周期执行某个lua函数
4lua_exit_func[string]lua函数名,在即将退出WaitRunHour时执行的函数名,必须有进入等待才会执行
5easy_conquest_type[int]简易远征的类型,0:舰娘,1:刀剑

@Base.GetKanAutoPath

path = Base.GetKanAutoPath()
取得KanAuto所在目录,不带斜杠
返回值
ID 名字 说明
1path[string]当前KanAuto所在的目录
参数:无

@Base.GetLuaRelativePathFull

path = Base.GetLuaRelativePathFull()
取得当前脚本与KCA所在路径的相对目录,完整路径,如c:/kanauto/lua/123.lua = lua/123.lua
返回值
ID 名字 说明
1path[string]当前脚本与KCA所在路径的相对目录,如c:/kanauto/lua/123.lua = lua/123.lua
参数:无

@Base.GetLuaRelativePath

path = Base.GetLuaRelativePath()
取得当前脚本与KCA所在目录名,完整路径,如c:/kanauto/lua/测试脚本/123.lua = 测试脚本
返回值
ID 名字 说明
1path[string]取得当前脚本与KCA所在目录名,完整路径,如c:/kanauto/lua/测试脚本/123.lua = 测试脚本
参数:无

@Base.GetLuaFileNameFull

path = Base.GetLuaFileNameFull()
取得当前脚本完整路径,如c:/kanauto/lua/测试脚本/123.lua
返回值
ID 名字 说明
1path[string]当前脚本完整路径,如c:/kanauto/lua/测试脚本/123.lua
参数:无

@Base.GetLuaFileName

filename = Base.GetLuaFileName()
取得当前脚本文件名,如c:/kanauto/lua/测试脚本/123.lua = 123.lua
返回值
ID 名字 说明
1filename[string]当前脚本文件名,如c:/kanauto/lua/测试脚本/123.lua = 123.lua
参数:无

@Base.BattleLvToID

id = Base.BattleLvToID(lv)
转换战斗结果等级文本(DCBAS、SS)到ID
返回值
ID 名字 说明
1id[int]等级ID
参数
ID 名字 说明
1lv[string]战斗等级文本

@Base.GetHwndSize

w, h = Base.GetHwndSize()
获取当前操作的窗口的宽度和高度,使用:w,h = Base.GetHwndSize();
返回值
ID 名字 说明
1w[int]宽
2h[int]高
参数:无

@Base.BattleIDToLv

lv = Base.BattleIDToLv(id)
转换战斗结果ID到等级文本
返回值
ID 名字 说明
1lv[string]战斗等级文本
参数
ID 名字 说明
1id[int]等级ID

@Base.AndroidSwipe

Base.AndroidSwipe(x1, y1, x2, y2, time)
安卓专属的操作,拖动
返回值:无
参数
ID 名字 说明
1x1[int]起始x
2y1[int]起始y
3x2[int]结束x
4y2[int]结束y
5time[int]耗时,毫秒

@Base.AndroidInput

Base.AndroidInput(text)
安卓专属的操作,输入文本
返回值:无
参数
ID 名字 说明
1text[string]输入的文本

@Base.AndroidKeyEvent

Base.AndroidKeyEvent(key)
安卓专属的操作,按下某键。1=Menu 3=Home 4=Back,82=解锁。
返回值:无
参数
ID 名字 说明
1key[int]键码

@Base.FindImage

x, y = Base.FindImage(name)
在菜单中使用工具“存储图片到网络”来得到一个hash,并在该函数中使用。
返回值
ID 名字 说明
1x[int]坐标x,失败为-1
2y[int]坐标y,失败为-1
参数
ID 名字 说明
1name[string]网络存储的图像hash

@Base.FindImageEx

count = Base.FindImageEx(percentage, rect, name)
在菜单中使用工具“存储图片到网络”来得到一个hash,并在该函数中使用。调用方式有两种:1=(percentage,name),2=(percentage,rect,name)
返回值
ID 名字 说明
1count[table]坐标table
参数
ID 名字 说明
1percentage[int]0-100,表示寻找图片的符合程度,如100则为100%符合。
2rect[table][可空]在矩形范围内寻找,例子:{20,20,100,100}。
3name[string]网络存储的图像hash

@Base.AddWayAuto

Base.AddWayAuto(x, y)
增加一个刀剑和舰娘通用的在战斗时需要选择前进点时的选择路径
返回值:无
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y

@Kan.Supply

teamState = Kan.Supply()
补给所有舰队。
返回值
ID 名字 说明
1teamState[Table]返回所有船的状态,ret.team1为队伍1的状态,ret.kan11则为第一舰队第一个船的状态
参数:无

@Kan.Sally

Kan.Sally(area, map)
执行出击,例如Kan.Sally(3,2)。执行完毕后需要接入战斗.执行()。
返回值:无
参数
ID 名字 说明
1area[int]出击区域
2map[int]出击地图ID

@Kan.Battle

Kan.Battle(team_id, point_num)
执行一次战斗
返回值:无
参数
ID 名字 说明
1team_id[int]舰队ID(1-4)
2point_num[int]在地图中打多少个点

@Kan.SetReWriteBattlePointInfo

battle_json_data = Kan.SetReWriteBattlePointInfo(lua_func)
指定一个函数,可自行判断当前进入的地图点,如果地图点判断成功,可使用Kan.GetBattleInfo()生成战斗数据并返回。当前点将会按照这个来执行阵型、夜战等
返回值
ID 名字 说明
1battle_json_data[string]使用Kan.GetBattleInfo()生成战斗数据并返回,将影响当前战斗的策略
参数
ID 名字 说明
1lua_func[string]函数名,在罗盘位置执行。

@Kan.GetBattleInfo

battle_json_data = Kan.GetBattleInfo(formation, night, 3)
获取战斗信息的Json格式可用于SetReWriteBattlePointInfo的返回值
返回值
ID 名字 说明
1battle_json_data[string]获得一串战斗用途的Json文本
参数
ID 名字 说明
1formation[int]阵型(1-5)
2night[bool]是否夜战
33是否使用司令部(暂时无效)

@Kan.DeleteKan

count = Kan.DeleteKan(count)
拆船。
返回值
ID 名字 说明
1count[bool]实际拆了多少个船
参数
ID 名字 说明
1count[int]拆船的数量

@Kan.ChangeDIY

isok = Kan.ChangeDIY(page, team, kan_page_type, page_next_count, clear)
更换一队船,需要先设置AddKanChangeColorEx。
返回值
ID 名字 说明
1isok[bool]是否更换成功
参数
ID 名字 说明
1page[int]从第几页开始
2team[int]舰队1-4
3kan_page_type[int]0=船类型排序 1=New排序 2=修理排序 3=LV排序
4page_next_count[int]向后最多翻几页
5clear[bool]是否先[解除]除旗舰外的船

@Kan.Repair

count = Kan.Repair(repairNum, speedType, repairType, startBottom, inTeam, submarine)
将破损最严重的船放入一个空修理渠。
返回值
ID 名字 说明
1count[int]成功入渠的数量
参数
ID 名字 说明
1repairNum[int]入渠船的数量
2speedType[int]设置的值将会决定将哪种破坏程度的船使用桶,1=擦伤用桶、2=小破用桶、4=中破用桶、8=大破用桶
3repairType[int]设置的值将会决定将哪种破坏程度的船入渠,1=损坏修理、2=小破修理、4=中破修理、8=大破修理
4startBottom[bool]优先选底部的船(损坏程度低的)默认为false
5inTeam[int]如何处理队伍中 0=不管 1=只修队伍中的 2=只修不在队伍中的
6submarine[int]如何处理潜艇 0=不管 1=只修潜艇 2=只修非潜艇 (未实现)

@Kan.Conquest

Kan.Conquest(team, conquest_area, conquest_id)
从母港启动,执行一次远征出击。
返回值:无
参数
ID 名字 说明
1team[int]出击舰队ID
2conquest_area[int]远征页ID
3conquest_id[int]远征行ID

@Kan.ConquestGet

conquest_team_count = Kan.ConquestGet()
从母港启动,收回所有已经远征归来的队伍。返回收回的远征数量
返回值
ID 名字 说明
1conquest_team_count[int]收回的远征数量(不太准)
参数:无

@Kan.EasyConquestInit

isok = Kan.EasyConquestInit(time1, time2)
简易添加远征,在脚本中设置k2_conquest、k3_conquest、k4_conquest以后调用。设置后,每次回到母港、本丸后,都会检查时间是否符合,符合则会自动远征,无需添加其他lua代码
返回值
ID 名字 说明
1isok[bool]是否设置成功
参数
ID 名字 说明
1time1[int]时间间隔最小1(秒)
2time2[int]时间间隔最大2(秒)

@Kan.EasyConquestRun

isok = Kan.EasyConquestRun(check_time)
设置EasyConquestInit后,可调用该函数进行一次远征
返回值
ID 名字 说明
1isok[bool]是否成功执行
参数
ID 名字 说明
1check_time[bool]决定是否受间隔的限制,false的话强行开始

@Kan.EasyConquestStop

Kan.EasyConquestStop()
执行后在该脚本内不会再执行EasyConquest相关操作,若要再次使用,请重新EasyConquestInit
返回值:无
参数:无

@Kan.EasyConquestEnterLoop

Kan.EasyConquestEnterLoop(lua_func)
进入一个不会跳出的循环,用于一般出击脚本出击次数达到跳出循环后,放置在主循环外(需要先进行EasyConquestInit)。
每60秒检查一次EasyConquestInit所设置的时间,达到后检查远征。
返回值:无
参数
ID 名字 说明
1lua_func[string]lua函数名,在等待中执行某个lua函数

@Kan.EasyConquestWaitNextRun

isok = Kan.EasyConquestWaitNextRun()
进入等待,等待到下次简易远征的时间,执行简易远征后返回。
返回值
ID 名字 说明
1isok[bool]是否成功执行
参数:无

@Kan.EasyConquestIsEnabled

isok = Kan.EasyConquestIsEnabled()
检查是否有设置简易远征。
返回值
ID 名字 说明
1isok[bool]是否有设置简易远征
参数:无

@Kan.AddWay

Kan.AddWay(x, y)
设置战斗中可以动态选择的移动点,支持5个。多个Way可以使用如:AddWay(x,y,x,y...)添加
返回值:无
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y

@Kan.AddWayAuto

Kan.AddWayAuto(x, y)
增加一个能动点设置,可以连续使用,如:AddWayAuto(x,y); AddWayAuto(x,y)
返回值:无
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y

@Kan.DelWay

Kan.DelWay()
清空能动点设置
返回值:无
参数:无

@Kan.AddLandAir

Kan.AddLandAir(id, x, y)
设置战斗中路基的攻击点,最多设置10个
返回值:无
参数
ID 名字 说明
1id[int]路基队伍id(1-3)
2x[int]坐标x
3y[int]坐标y

@Kan.AddBattleInfo

Kan.AddBattleInfo(point, formation, night, back, forceDamegeGo)
设置战斗信息,用于Kan.BattleEx。至少需要有点1的战斗信息,否则会弹出错误返回战斗失败。
返回值:无
参数
ID 名字 说明
1point[int]设置的点ID(1-N)
2formation[int]阵型(1-5),联合舰队(1-4)
3night[bool]是否夜战
4back[bool]是否退避(仅支持第三舰队)退避(仅支持第三舰队)
5forceDamegeGo[bool]是否强制进击
例子:
Kan.AddBattleInfo(1, 阵型.单纵, false, false) --第1个点 单纵 不夜战
Kan.AddBattleInfo(2, 阵型.单纵, false, false) --第1个点 单纵 不夜战
Kan.AddBattleInfo(3, 阵型.单纵, true, false) --第1个点 单纵 夜战

@Kan.AddBattleInfoAuto

Kan.AddBattleInfoAuto(formation , night, back, forceDamegeGo)
设置战斗信息,无需指定ID,自动按顺序排列,用于Kan.BattleEx。至少需要有点1的战斗信息,否则会弹出错误返回战斗失败。
返回值:无
参数
ID 名字 说明
1formation [int]阵型(1-5),联合舰队(1-4)
2night[bool]是否夜战
3back[bool]是否退避(仅支持第三舰队)
4forceDamegeGo[bool]是否强制进击
例子:
AddBattleInfoAuto(阵型.单纵, false, false) --第1个点 单纵 不夜战
AddBattleInfoAuto(阵型.单纵, false, false) --第2个点 单纵 不夜战
AddBattleInfoAuto(阵型.单纵, true, false) --第3个点 单纵 夜战

@Kan.AddBattleInfoPoint

battleInfoPointCount = Kan.AddBattleInfoPoint(x , y , formation , night, back, forceHome)
增加某个地图坐标的战斗设置,该设置优先于AddBattleInfo按战斗次数的战斗设置
返回值
ID 名字 说明
1battleInfoPointCount当前已设置的坐标点数据数量
参数
ID 名字 说明
1x [int]坐标x
2y [int]坐标y
3formation [int]阵型(1-5),联合舰队(1-4)
4night[bool]是否夜战
5back[bool]是否退避(仅支持第三舰队)
6forceHome[bool]是否在这个点战斗后回母港
例子:
AddBattleInfoPoint(123, 456, 阵型.单纵, false, false, false)

@Kan.DelBattleInfo

Kan.DelBattleInfo()
清空战斗信息
返回值:无
参数:无

@Kan.GetBattleInfoCount

Kan.GetBattleInfoCount()
获取当前战斗点的数量
返回值:无
参数:无

@Kan.WaitHome

Kan.WaitHome(time )
等待母港。
返回值:无
参数
ID 名字 说明
1time [int]检测周期(毫秒)

@Kan.WaitHomeEx

state = Kan.WaitHomeEx(time, timeout)
等待母港
返回值
ID 名字 说明
1state0=正常,1=有远征返回已回收,-1=超时,-2=异常
参数
ID 名字 说明
1time[int]检测周期毫秒
2timeout[int]超时时间毫秒

@Kan.GoHome

Kan.GoHome()
回到母港。
返回值:无
参数:无

@Kan.SupplyAllT

talbe = Kan.SupplyAllT()
补给全部,返回4个舰队的状态,以及所有在队伍中船的状态
返回值
ID 名字 说明
1talbe[table]状态的table,请参考例子使用
参数:无
例子:
t = Kan.SupplyAllT()

--打印列表
Base.Print(TableToJson(t));

if t.team1 == -3 then
	--队伍1在远征中
end

if t.kan11 == C.KAN_STATE_MAX then
	--队伍1中的第1个船(秘书)状态大破
end

@Kan.DelAllKanChangeColor

Kan.DelAllKanChangeColor()
清空编成的用于替换的船的特征
返回值:无
参数:无

@Kan.AddKanChangeColor

Kan.AddKanChangeColor(x, y, color ...)
增加一个编成的用于替换的船的特征。
返回值:无
参数
ID 名字 说明
1x[int]坐标x
2y[int]坐标y
3color ...[int]颜色

@Kan.AddKanChangeColorEx

Kan.AddKanChangeColorEx(1, 2, 3, 4, 5, 6, 7, 8)
设定了此项以后,Change将只支持自定义!,请在使用后用DelAllKanChangeColor删除
返回值:无
参数
ID 名字 说明
11[int]误差值,允许几个点有误差,建议1-3
22[int]分割值,二值化分割值,以使用取色器取得数据时为准,一般145
33[bool]true换一个满血修复好的船,false换一个能换的船(可能正在修复,也可能没有满血)
44[string]特征字段1文本,取色器生成,例:"0100111011"
55[string]特征字段2文本,取色器生成
66[int]闪船判断,1=要求闪,2=要求不闪,0或3为闪不闪都可以,不填写默认为0
77[int]设置这个船换到的位置(1-6)
88[bool]是否选择已经在编队中的船,bool类型,默认false,用于Kan.ChangeDIY。不填写默认为0,可在Change中使用

@Kan.AddKanChangeName

Kan.AddKanChangeName(kan_name, lv_min, lv_max, hp_full, is_flash, kan_change_id, use_regexp, use_in_team)
该函数只能用于ChangeDIY,可以和AddKanChangeColorEx混用
返回值:无
参数
ID 名字 说明
1kan_name[string]船的名字,可以为写驱逐舰、岛风等词,不需要全写(简体)
2lv_min[int]船最小等级
3lv_max[int]船最大等级
4hp_full[bool]true换一个满血修复好的船,false换一个能换的船(可能正在修复,也可能没有满血)
5is_flash[bool]船是否闪,1=闪 2=不闪 3=闪和不闪都ok
6kan_change_id[int]设置这个船换到的位置(1-6),请务必设置
7use_regexp[bool]是否支持正则表达式,默认false
8use_in_team[bool]是否选择已经在编队中的船,默认false
例子:
--换一个1-3级的驱逐舰或轻巡洋舰到第2和第3位置
Kan.AddKanChangeName("^(驱逐舰|轻巡洋舰).*", 1, 3, true, 0, 2, true)
Kan.AddKanChangeName("^(驱逐舰|轻巡洋舰).*", 1, 3, true, 0, 3, true)
ret = Kan.ChangeDIY(1, m_team_id, C.SORT_NEW, 15, false)

@Tou.Sally

isok = Tou.Sally(area, map, exit)
刀剑乱舞出击,从本丸出发,进入到一个地图的出击选择队伍界面
返回值
ID 名字 说明
1isok[bool]是否成功
参数
ID 名字 说明
1area[int]时代ID,活动图为100
2map[int]地图ID
3exit[bool]是否发现检非退出

@Tou.Battle

Tou.Battle(point_num, formation, exit_type, team, lv, formation_lock)
刀剑乱舞战斗,先执行Tou.Sally,然后执行该函数选择队伍并开始战斗,智能选择优势阵型
返回值:无
参数
ID 名字 说明
1point_num[int]最大战斗点数
2formation[int]索敌失败后选择阵型(1-6)
3exit_type[int]支持设置中伤、轻伤、检非是否退出(1=中伤 2=轻伤 4=检非)可自由组合如3=1+2、5=4+1
4team[int]出击的队伍(1-4)不填写默认为1
5lv[bool]是否无视等级提示
6formation_lock[bool]是否锁定阵型为默认阵型,不使用智能选择

@Tou.MiBaoBattle

Tou.MiBaoBattle(point_num, formation, exit_type, team, lv, formation_lock)
刀剑乱舞秘宝活动战斗,不可用于其他类型地图!先执行Tou.Sally,然后执行该函数选择队伍并开始战斗,智能选择优势阵型
返回值:无
参数
ID 名字 说明
1point_num[int]最大战斗点数
2formation[int]索敌失败后选择阵型(1-6)
3exit_type[int](本函数中不生效!)支持设置中伤、轻伤、检非是否退出(1=中伤 2=轻伤 4=检非)可自由组合如3=1+2、5=4+1
4team[int]出击的队伍(1-4)不填写默认为1
5lv[bool]是否无视等级提示
6formation_lock[bool]是否锁定阵型为默认阵型,不使用智能选择

@Tou.WaitHome

Tou.WaitHome()
等待并回到本丸,遇到远征会收回。
返回值:无
参数:无

@Tou.GoHome

Tou.GoHome()
回到本丸,前提是在右侧按钮可点击的情况下
返回值:无
参数:无

@Tou.ConquestGet

count = Tou.ConquestGet()
从本丸出发,进入随机页面并返回,收回所有远征
返回值
ID 名字 说明
1count[int]收回远征的个数
参数:无

@Tou.Conquest

isok = Tou.Conquest(team, area, map)
从本丸出发,执行一个队伍的远征
返回值
ID 名字 说明
1isok[bool]是否成功放出远征
参数
ID 名字 说明
1team[int]队伍id
2area[int]时代id
3map[int]地图id
例子:
while true do
	Tou.ConquestGet()
	--第2队伍出击1-4远征
	if Tou.Conquest(2,1,4) then
		--计数
		Counter.Add("发出远征", 1)
	end
	if Tou.Conquest(3,1,3) then
		Counter.Add("发出远征", 1)
	end
	Base.Print(Counter.GetText())
	Base.Print([[等待下一次远征...]])
	Base.Sleep(60*1000*5)
end

@Tou.EasyConquestInit

isok = Tou.EasyConquestInit(time1, time2)
简易添加远征,在脚本中设置k2_conquest、k3_conquest、k4_conquest以后调用。设置后,每次回到母港、本丸后,都会检查时间是否符合,符合则会自动远征,无需添加其他lua代码
返回值
ID 名字 说明
1isok[bool]是否设置成功
参数
ID 名字 说明
1time1[int]时间间隔最小1(秒)
2time2[int]时间间隔最大2(秒)

@Tou.EasyConquestRun

isok = Tou.EasyConquestRun(check_time)
设置EasyConquestInit后,可调用该函数进行一次远征
返回值
ID 名字 说明
1isok[bool]是否成功执行
参数
ID 名字 说明
1check_time[bool]决定是否受间隔的限制,false的话强行开始

@Tou.EasyConquestStop

Tou.EasyConquestStop()
执行后在该脚本内不会再执行EasyConquest相关操作,若要再次使用,请重新EasyConquestInit
返回值:无
参数:无

@Tou.EasyConquestEnterLoop

Tou.EasyConquestEnterLoop(lua_func)
进入一个不会跳出的循环,用于一般出击脚本出击次数达到跳出循环后,放置在主循环外(需先EasyConquestInit)。每60秒检查一次时间,达到后检查远征。
返回值:无
参数
ID 名字 说明
1lua_func[string]lua函数名,在等待中执行某个lua函数

@Tou.EasyConquestWaitNextRun

isok = Tou.EasyConquestWaitNextRun()
进入等待,等待到下次简易远征的时间,执行简易远征后返回。
返回值
ID 名字 说明
1isok[bool]是否成功执行
参数:无

@Tou.EasyConquestIsEnabled

isok = Tou.EasyConquestIsEnabled()
检查是否有设置简易远征。
返回值
ID 名字 说明
1isok[bool]是否有设置简易远征
参数:无

@Tou.DeleteSword

delete_count = Tou.DeleteSword(count, star)
刀剑乱舞刀解,请谨慎使用,记得锁刀!
返回值
ID 名字 说明
1delete_count[int]实际拆了几个刀
参数
ID 名字 说明
1count[int]解刀的次数
2star[int]解几花及其以下的刀,默认为2。

@Tou.DeleteSword2

delete_count = Tou.DeleteSword2(count, saveGold)
刀剑乱舞刀解,请谨慎使用,记得锁刀!
返回值
ID 名字 说明
1delete_count[int]实际拆了几个刀
参数
ID 名字 说明
1count[int]解刀的次数
2saveGold[bool]保留金边刀,默认为false(全拆)。

@Tou.RecvMessage

isok = Tou.RecvMessage(speed)
从本丸出发,收取邮件里的刀,直到收不下了为止
返回值
ID 名字 说明
1isok[bool]是否成功
参数
ID 名字 说明
1speed[int]收取速度,百分比,默认为100。

@Tou.Repair

isok = Tou.Repair(count, repair_type, speed_type)
从本丸出发,手入符合设置的受伤类型的刀,支持加速。
返回值
ID 名字 说明
1isok[int]成功入渠的刀数量
参数
ID 名字 说明
1count[int]手入的次数
2repair_type[int]手入的刀损坏类型,1=擦伤,2=轻伤,4=中伤,8=重伤。
3speed_type[int]使用加速的刀损坏类型,1=擦伤,2=轻伤,4=中伤,8=重伤。
例子:
--将第一个重伤的刀使用手入并使用加速
Tou.Repair(1, 8, 8)

--将前2个轻伤中伤重伤的刀手入,如果重伤则使用加速
Tou.Repair(2, 14, 8)

--将前4个轻伤中伤重伤的刀手入,不使用任何加速
Tou.Repair(4, 14)

@Tou.ItemSetting

isOK = Tou.ItemSetting(team_id, sword_id, config)
设置一个刀的刀装补充规则。
返回值
ID 名字 说明
1isOK[bool]是否成功设置
参数
ID 名字 说明
1team_id[int]队伍ID(1-4)
2sword_id[int]刀在队伍中的ID(1-6)
3config[table]一个table结构,里面是具体的加载配置。设置3个位置的刀装补充规则
例子:
Tou.ItemSetting(1, 1, {{"投石兵|弓兵", "並|上"}, {"銃兵", "上|特上"}, {"弓兵", "並"}});

@Tou.ItemSettingAuto

isOK = Tou.ItemSettingAuto(team_id)
自动设置刀装补充的规则,从本丸出发,读取该队伍的6个刀的刀装补充配置(优先使用ItemSetting所设置的)。
返回值
ID 名字 说明
1isOK[bool]获取成功
参数
ID 名字 说明
1team_id[int]队伍ID(1-4)
例子:
Tou.ItemSettingAuto(1);

@Tou.ItemCompletion

isOK = Tou.ItemCompletion(team_id, firstFromEnd)
开始一次补充刀装,需要先运行ItemSettingAuto或ItemSetting自行设置规则后再调用。
返回值
ID 名字 说明
1isOK[bool]是否补充成功
参数
ID 名字 说明
1team_id[int]队伍ID(1-4)
2firstFromEnd[bool]如果为true,则优先从刀装的最后开始选择,也就是多等级条件时,优先使用低级刀装。
例子:
Tou.ItemCompletion(1, false);

@Tou.LianDuiBattle

Tou.LianDuiBattle(count, team_id)
执行一次联队战斗。
返回值:无
参数
ID 名字 说明
1count[int]总战斗次数,设置的多多的一次打完就行。
2team_id[int]队伍ID(1-4)
例子:
Tou.LianDuiBattle(1000, 1);

@Tou.JiangHuBattle

battleCount = Tou.JiangHuBattle(team_id, formation)
执行一次江户城战斗。
返回值
ID 名字 说明
1battleCount真实走了多少个点
参数
ID 名字 说明
1team_id[int]队伍ID(1-4)
2formation[int]默认阵型,在索敌失败时使用(1-6),默认为2。
例子:
Tou.LianDuiBattle(1000, 1);

@Tou.AddBattleInfoPoint

battleInfoPointCount = Tou.AddBattleInfoPoint(x , y , forceHome)
增加某个地图坐标的战斗设置,优先级高于战斗次数设置
返回值
ID 名字 说明
1battleInfoPointCount当前已设置的坐标点数据数量
参数
ID 名字 说明
1x [int]坐标x
2y [int]坐标y
3forceHome[bool]是否在这个点战斗后回本丸
例子:
Tou.AddBattleInfoPoint(123, 456, true)

@Tou.SetToukenH5

Tou.SetToukenH5(isH5)
设置H5版本函数,在脚本开始处调用
返回值:无
参数
ID 名字 说明
1isH5[bool]是否使用H5,默认不设置的情况下,全局为Flash版函数

@Tou.SetToukenAndroid

Tou.SetToukenAndroid(isH5)
设置Android版本函数,在脚本开始处调用
返回值:无
参数
ID 名字 说明
1isH5[bool]是否使用Android,使用模拟器模式运行,则默认已设置打开

@Tou.GetTeamDamege

damegeInfo = Tou.GetTeamDamege(isH5)
在本丸执行,进入编队,获取刀剑的损伤状态(重伤、中伤)
返回值
ID 名字 说明
1damegeInfo结构体,damegeInfo.result表示队伍中是否包含重伤,damegeInfo.sword1 - damegeInfo.sword6 表示队伍中1-6号刀的损伤情况。
参数
ID 名字 说明
1isH5[int]队伍ID(1-4)