THE KINGDOM CODEX · 挂机工具

IKOK 脚本进阶:反馈匹配与内置变量

完整12页教程的反馈、数组、内置变量与坐标示例,逐处解释原稿笔误。

攻略指南历史公告与活动查看来源反馈勘误
我的笔记笔记输入即保存;标签离开输入框后保存。内容只保存在当前浏览器,可在随身笔记中导出。
展开法典
18
本篇收录 9 2,272 字与表格内容
查看本篇的全部关联

01命令先发送,等待发生在后面

这份“小楼业余教程”共12页、11课,页尾感谢K哥(凯卡)。示例先发送命令,再等待指定秒数;原教程说明到达正文段末尾会重复执行。可以使用小数等待,等待时间与法术真正完成时间不一定相等。

第1页示例;xxxxx是待填写对象。
2 行原文
%scene begin
10::cast heal on xxxxx
先说hi等10秒,再说bye等5秒,随后重复。
3 行原文
%scene begin
10.0::say hi
5.0::say bye

02按反馈处理冥思

冥思可能忙碌、处于战斗、精神未恢复,或正常完成。应先决定每种反馈对应重试、等待恢复或继续下一步,再编写bc;同一动作的长短随技能不同,不能只依赖固定延迟。

第3页原示例,反馈文字照录;部署到另一版本需以真实回包核对。
7 行原文
输入后定位命中行
%scene begin
50:meditate_bc:meditate

%bc meditate_bc
retry:1:你正忙着呢。
retry::你的精神恢复正常,可以冥想了。
next::你深深地吸了一口气,从深沈的冥思中醒来 !

retry:1表示再等1秒重发,next表示进入下一步。作者举例:若冥思23秒就完成,收到完成消息即可继续,无须硬等满50秒。原示例没有写战斗结束分支,完整处理思路不能由这三行自动推定。

03为什么匹配没有生效

第4页用“忙着”一词的简繁写法说明:全半角标点、空格、简繁字不一致,都可能使匹配失败。可从IKOK显示区选中完整回包,Ctrl+C复制到脚本;不要凭记忆敲一段看起来相近的文字。

经验数值等变化部分可以使用%*匹配。只截取句首时,要确认不会同时命中其他消息。下面两行是原教程的示例,不代表所有服务器回包完全相同。

第4页模式匹配示例。
2 行原文
next::你得到了( %* )点经验。
next::你喃喃念到%*

04数组轮换与内置变量

声明数组后,第一次读取指向第一项。%v读取当前项,%i前进,%z复位,%d后退,%x随机;foreach/loop按顺序遍历。例中三个人物名是示范目标,不是必要NPC或真实登录配置。

第5页数组示例:依次对三个值发送kill;kill_bc未在该页定义。
9 行原文
输入后定位命中行
%variable a
xiaolou
zaa
zab

%scene begin
foreach a
50:kill_bc:kill %va
loop
变量含义
%h / %H当前/最大 HP
%m / %M当前/最大 MP
%sc地址码
%sx / %sy坐标
%g金钱
%e经验
%heft / %HEFT当前/最大负重
%hh / %mm / %ss时/分/秒
%ucon体质
%ustr力量
%usta毅力
%udex敏捷
%uint智慧
%ukar运气
%damage / %damage2伤害/第二组伤害
%hit / %hit2命中/第二组命中
%uac / %udb正防/额防
%n / %N角色 ID/姓名
%k / %K职业/昵称
%Y城邦

05把练经验与练技能分成不同段

可将不同任务写成不同scene,例如经验段jingyan与技能段jineng,用public_bc接收say 1或say 2的反馈后切换。原页的goto却把经验段写为jinyan,与前文jingyan不一致,需要保持实际段名一致。

第8页原片段,保留其段名拼写差异。
3 行原文
%public_bc
goto:jinyan:你说道:1
goto:jineng:你说道:2

call处理完子任务还需要回来,因此与return配对。原例冥思时遇到战斗,就call kill_npc施放电击再返回:

第8页原片段;stun_bc与变量a须由完整脚本提供。
6 行原文
输入后定位命中行
%bc meditate_bc
call:kill_npc:你正在战斗中,无法冥想。

%scene kill_npc
50:stun_bc:cast stun on %va
return

06计数、条件与原稿笔误

第9页讨论按次数取不同数组项,但计数例同时用了比较式和清零,不能实现其宣称的自动累计。按已核对的语言手册,数值变量应以%ia递增、%va读取、%za清零。原例保留用于辨认错误:

第9页计数原例;不是可用的累计模板。
4 行原文
%scene say
(%la == 0)
5::say hi
::%za
同页独立示例,包含原文占位与ture拼写。
7 行原文
输入后定位命中行
if (%h > 400)
...(这里是你要执行的指令)
endif

do(ture)
...
enddo

%h比较的是HP,原解释一处误写MP;ture也不是这里已经核实的布尔常量。循环应在条件或bc内具有break等退出方式,不能将略写省略号当作执行语句。

07把消息中的人物ID保存下来

%b依次保存最多十个匹配结果。下例%+存入%0、%$存入%1、两个%*存入%2与%3,banish %1使用括号内捕获的角色ID。收人另要求站在特定位置,PDF只引用accept段,没有给出其实现。

第10页示例,城市名是待填写内容。
8 行原文
输入后定位命中行
%public_bc
call:banish:%b%+(%$)告诉你 : %*开我%*
call:banish:%b【换成你的城市名】%+(%$)%*开我%*
call:accept:%*向你申请户籍 !

%scene banish
::banish %1
return

08赋值与表达式

表达式独立一行并加括号。第11页列(a=1)、(a=a+1)、(a=a+2),说明可赋值与递增;同时把=解释为相等,第9页又用了==,并未清楚区分。请结合对应IKOK版本的赋值/下标规则使用,不能把所有等号一律替换。

符号教程说明
+ / - / * / /整数加、减、乘、除
&&逻辑与
< / <= / > / >=大小比较
!=不相等
()改变内部计算优先级
第11页三个独立运算例。
3 行原文
(a=1)
(a=a+1)
(a=a+2)

09相对坐标、地图坐标与地址码

第12页给出三种目标写法:相对坐标(5,10)、地图坐标69,52、地址码6863215;它们只是三个语法示例,未说对应同一地点。括号与逗号应按所用引擎保留。

第12页三种独立目标表示。
3 行原文
50:fire_bc:cast fireball on (5,10)
50:fire_bc:cast fireball on 69,52
50:fire_bc:cast fireball on 6863215

来源与版本

飞梦/17KOK、渔夫与2001年典藏版出现数值或机制冲突时,以飞梦所记相应服务器的后续有效规则为正文依据;同站更新按明确生效日期处理。旧规则保留年代与服别,未明日期的差异就近说明;原资料对照用于追溯。

对照原资料
查看 1 份来源与保存记录
台湾渔夫资料站

ikok简易教程.pdf

查看保存记录
来源编号
1ZDcoEjtryfyMw4wZdhG0YiihjC_1XMpJ
资料集
台湾渔夫公开资料附件
保存时间
2026-09-07
原始位置
ikok简易教程.pdf