行前准备与路线6 步导读 · 展开查看

脚本进阶:先把回包复制对
回包匹配失败多半是全半角标点、空格或简繁字不一致;原教程里还留着几处笔误,照抄代码前先看那一节的说明。
- 01看清发送与等待
示例先发送命令再等待指定秒数,等待时间可以用小数;原教程说到达正文段末尾会重复执行。
- 02按回包写分支
冥思有忙碌、战斗中、精神未恢复和正常完成几种回包,retry 重发、next 进入下一步。
- 03复制回包再匹配
经验数值这类会变化的部分用 %* 匹配;只截句首时要确认不会同时命中其他消息。
- 04拆成经验段与技能段
把不同任务写成不同 scene,用 public_bc 配合 goto 切换;原页把段名 jingyan 写成了 jinyan,要保持实际段名一致。
- 05存下回包里的人物 ID
%b 依次保存最多十个匹配结果,括号捕获的角色 ID 用 %1 取用。
- 06核对原稿笔误
计数例不能自动累计,数值变量应按 %ia 递增、%va 读取、%za 清零;循环要在条件或 bc 里留退出方式。
01命令先发送,等待发生在后面
这份“小楼业余教程”共12页、11课,页尾感谢K哥(凯卡)。示例先发送命令,再等待指定秒数;原教程说明到达正文段末尾会重复执行。可以使用小数等待,等待时间与法术真正完成时间不一定相等。
%scene begin
10::cast heal on xxxxx%scene begin
10.0::say hi
5.0::say bye02按反馈处理冥思
冥思可能忙碌、处于战斗、精神未恢复,或正常完成。应先决定每种反馈对应重试、等待恢复或继续下一步,再编写bc;同一动作的长短随技能不同,不能只依赖固定延迟。
%scene begin
50:meditate_bc:meditate
%bc meditate_bc
retry:1:你正忙着呢。
retry::你的精神恢复正常,可以冥想了。
next::你深深地吸了一口气,从深沈的冥思中醒来 !retry:1表示再等1秒重发,next表示进入下一步。作者举例:若冥思23秒就完成,收到完成消息即可继续,无须硬等满50秒。原示例没有写战斗结束分支,完整处理思路不能由这三行自动推定。
03为什么匹配没有生效
第4页用“忙着”一词的简繁写法说明:全半角标点、空格、简繁字不一致,都可能使匹配失败。可从IKOK显示区选中完整回包,Ctrl+C复制到脚本;不要凭记忆敲一段看起来相近的文字。
经验数值等变化部分可以使用%*匹配。只截取句首时,要确认不会同时命中其他消息。下面两行是原教程的示例,不代表所有服务器回包完全相同。
next::你得到了( %* )点经验。
next::你喃喃念到%*04数组轮换与内置变量
声明数组后,第一次读取指向第一项。%v读取当前项,%i前进,%z复位,%d后退,%x随机;foreach/loop按顺序遍历。例中三个人物名是示范目标,不是必要NPC或真实登录配置。
%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不一致,需要保持实际段名一致。
%public_bc
goto:jinyan:你说道:1
goto:jineng:你说道:2call处理完子任务还需要回来,因此与return配对。原例冥思时遇到战斗,就call kill_npc施放电击再返回:
%bc meditate_bc
call:kill_npc:你正在战斗中,无法冥想。
%scene kill_npc
50:stun_bc:cast stun on %va
return06计数、条件与原稿笔误
第9页讨论按次数取不同数组项,但计数例同时用了比较式和清零,不能实现其宣称的自动累计。按已核对的语言手册,数值变量应以%ia递增、%va读取、%za清零。原例保留用于辨认错误:
%scene say
(%la == 0)
5::say hi
::%zaif (%h > 400)
...(这里是你要执行的指令)
endif
do(ture)
...
enddo%h比较的是HP,原解释一处误写MP;ture也不是这里已经核实的布尔常量。循环应在条件或bc内有break等退出方式;原文的省略号只是略写,不是执行语句。
07把消息中的人物ID保存下来
%b依次保存最多十个匹配结果。下例%+存入%0、%$存入%1、两个%*存入%2与%3,banish %1使用括号内捕获的角色ID。收人另要求站在特定位置,PDF只引用accept段,没有给出其实现。
%public_bc
call:banish:%b%+(%$)告诉你 : %*开我%*
call:banish:%b【换成你的城市名】%+(%$)%*开我%*
call:accept:%*向你申请户籍 !
%scene banish
::banish %1
return08赋值与表达式
表达式独立一行并加括号。第11页列(a=1)、(a=a+1)、(a=a+2),说明可赋值与递增;同时把=解释为相等,第9页又用了==,并未清楚区分。请结合对应IKOK版本的赋值/下标规则使用,不要把所有等号一律替换。
| 符号 | 教程说明 |
|---|---|
| + / - / * / / | 整数加、减、乘、除 |
| && | 逻辑与 |
| < / <= / > / >= | 大小比较 |
| != | 不相等 |
| () | 改变内部计算优先级 |
(a=1)
(a=a+1)
(a=a+2)09相对坐标、地图坐标与地址码
第12页给出三种目标写法:相对坐标(5,10)、地图坐标69,52、地址码6863215;它们只是三个语法示例,未说对应同一地点。括号与逗号应按所用引擎保留。
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

