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
