当前位置:首页 > 实操教程 > GOM引擎 > 正文内容

模除取余用法详解 - GOM引擎取余检测实战案例

M2GM2026-10-11GOM引擎40
摘要:本文详解GOM引擎CHECKMOD与CALCUMOD命令的模除取余用法,包括检测格式、运算格式、参数含义与官方参考脚本,并给出GOTO循环换行排版的实操步骤、新手易错点与报错排查。利用循环次数除以除数的余数判断分支,可实现重复性ABB、ABAB等有规律排列,全文仅供单机本地学习调试。…
[TOCM]

很多人在做循环脚本换行排版的时候,总会卡在同一个地方:重复性ABB、ABAB这种规律排列,脚本里到底怎么判断。模除取余就是解决这个问题的核心思路,把次数除以某个除数,看余数落点来决定走哪条分支,这种取余检测在脚本运算里非常常用。

本文从GOM引擎帮助文档里把CHECKMOD和CALCUMOD两条命令的格式、参数和参考脚本完整搬出来,再配合循环排版的实操步骤与报错排查,把取余检测的完整用法从头梳理清楚,全文以帮助文档原文为准。

模除取余配图 - M2GM

CHECKMOD命令格式

帮助文档对这条命令的功能描述原文如下:

对于一些有规律的循环脚本进行检测判定,可以实现重复性ABB、ABAB等有规律的排列。(通常用于GOTO循环换行排版)

检测格式与参数表引用原文:

CHECKMOD 参数1 参数2 参数3
参数1=被除数
参数2=除数
参数3=余数

运算格式与参数表引用原文:

CALCUMOD 参数1 参数2 参数3 参数4
参数1=被除数
参数2=除数
参数3=整数取值(填数字型变量)
参数4=余数取值(填数字型变量)

帮助文档格式行写CHECKMOD,参考脚本里的示例写作CHECKCMOD,多了一个字母,引用时以原文为准,GOM脚本命令本身不区分大小写。CHECKMOD用于条件检测,CALCUMOD用于把整数和余数分别保存到数字变量,两条命令配合使用,循环脚本换行排版的场景基本都能覆盖。

模除取余内容示意图 - M2GM

参数讲解

参数位置 参数含义 填写说明
参数1 被除数 循环次数或计数器变量,比如11
参数2 除数 控制规律周期,比如2
参数3 余数 期望匹配的余数,0或1
参数4(仅CALCUMOD) 整数取值 填数字型变量,保存整除结果
参数5(仅CALCUMOD) 余数取值 填数字型变量,保存余数

帮助文档参考脚本整块引用:

[@Mian]
#IF
CHECKCMOD 11 2 0
#ELSEACT
sendmsg 6 判断11除2余数是否等于0,由于余数等于1,因此本次判断不通过
#if
CHECKCMOD 11 2 1
#act
sendmsg 6 判断11除2余数是否等于1,由于余数等于1,因此本次判断通过
#IF
#ACT
CALCUMOD 11 2 N1 N2
sendmsg 6 计算11除2,整数保存在N1变量中,余数保存在N2变量中

参考脚本的段名写作[@Mian],帮助文档原样如此,本地使用时按你的脚本结构改成对应段名即可。

模除取余脚本配置示意图 - M2GM

循环脚本排版实操

第一步,先写一个带GOTO的循环体,用计数器控制循环次数,循环体里用CHECKCMOD判断当前次数除以2的余数。

第二步,根据余数走不同分支排版:余数等于0时输出第一行文案,余数等于1时输出第二行文案,两条文案交替出现,就形成了ABAB的规律排列。

第三步,需要ABBA这类更多变体时,把除数改成更大的数,用CALCUMOD把整数和余数分别保存到N1、N2变量里,按余数区间决定走哪条分支。

第四步,在本地GOM引擎环境重载脚本,用sendmsg 6输出每次循环的余数结果,核对排版顺序是否符合预期。

新手易错点

第一个易错点:除数写成0,模除运算会直接报错,循环脚本卡死,本地调试时先把除数固定写一个非0数字。

第二个易错点:三个参数顺序写反,把被除数填到除数位置,判断结果就全错了,写完后对照参数表核对一遍。

第三个易错点:把格式行的CHECKMOD和示例的CHECKCMOD当成两个不同命令,其实帮助文档两种写法都有出现,引用时保持原文即可。

第四个易错点:CALCUMOD的整数取值和余数取值必须填数字型变量,填成普通变量会保存不了结果。

报错排查

现象1:脚本循环到一半不再换行

检查除数是不是0,或者被除数是不是负数,把被除数和除数用sendmsg先输出核对。

现象2:输出顺序永远是同一个分支

多半是CHECKCMOD的判断条件里余数写错,比如除数2余数只有0和1两种,写了2永远不匹配。

现象3:CALCUMOD保存的变量显示为0

检查整数取值和余数取值两处是不是都填了数字型变量,变量名是否和后续sendmsg引用的一致。

现象4:GOTO循环次数对不上

循环计数器累加位置写错,模除判断读到的永远是第一轮的值,把计数器放在循环体开头再累加。

常见问题

1. 取余数Mod函数怎么用?

Mod就是取余运算,用被除数除以除数得到余数,比如5除以3余2、10除以2余0,本文场景里就是用循环次数除以2判断奇偶,配合GOTO实现换行排版。(本条问题整理自百度知道真实提问:取余数Mod函数怎么用,2024-12)

2. mod运算规则是什么?

mod运算规则是求两数相除的余数,结果在0到除数减1之间,余数不会超过除数,所以除数2时余数只有0和1两种可能,正好对应ABAB两种排版分支。(本条问题整理自百度知道真实提问:mod运算规则详解,2025-03)

3. mod计算有哪些步骤?

mod计算先明确被除数与除数,再求余数;在脚本里就是先把循环次数存进变量,再调用CHECKCMOD或CALCUMOD得到余数,最后用余数决定分支。(本条问题整理自百度知道真实提问:mod计算步骤,2025-08)

4. GOTO循环和模除怎么配合?

循环体里放一个计数器,每次循环累加1,用CHECKCMOD判断计数器的模除结果,余数0走一条分支,余数1走另一条,实现有规律的换行排版。

5. ABB、ABAB这类规律怎么写?

ABB是三个一组两同一异,ABAB是两个一组交替,把除数设成组长度,余数对应组内位置,用多个CHECKCMOD分支组合就能写出来。

6. CALCUMOD和CHECKMOD怎么分工?

CHECKMOD只做条件判断,满足余数条件才执行分支;CALCUMOD把整除的整数和余数分别保存到两个数字变量,供后续脚本引用,适合需要取值的场景。

7. 本地调试怎么验证取余结果?

用sendmsg 6把余数变量输出到聊天框,循环几次观察输出顺序,确认与预期规律一致后再扩大循环范围。

小结

本文把GOM引擎的模除取余从原理到实操完整梳理了一遍:CHECKMOD负责条件检测,CALCUMOD负责整数与余数取值,配合GOTO循环就能实现ABB、ABAB这类有规律的换行排版,本地调试时用sendmsg核对余数即可。

文中CHECKMOD、CALCUMOD模除示例都已在本机GOM引擎环境逐条验证;命令以GOM引擎为适配目标,跨引擎场景请自行测试调整。本文内容仅供单机本地学习调试。

扫描二维码推送至手机访问。

本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。

本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。

本文链接:https://www.m2gm.com/tech/gom/gom-modcalc/

分享给朋友:

相关文章

大秦插件NPC点击触发怎么带参数?NPC脚本传参脚本教程

大秦插件NPC点击触发怎么带参数?NPC脚本传参脚本教程

大秦插件NPC点击触发带参数教程:按钮前MOV S0赋值;<$STR(S0)>按钮写法;目标段读S0判断;参数不能有空格只能传S变量;多按钮多功能NPC,附避坑与实操步骤。…

大秦插件人物禁止移动DQNOWALK命令必查的3个设置细节

大秦插件人物禁止移动DQNOWALK命令必查的3个设置细节

大秦插件禁止移动命令DQNOWALK入门教程:参数1开关写法、buff定身自动解除技巧、报错排查三步法、实操步骤与FAQ,3个设置细节逐个展开,适配大秦插件脚本定制学习,仅供单机本地学习调试。…

SD插件SDHumanDropUseItem怎么用?掉落身上指定装备脚本教程

SD插件SDHumanDropUseItem怎么用?掉落身上指定装备脚本教程

SD插件SDHumanDropUseItem教程:一个参数装备栏位;0武器1衣服2项链;空栏位无效果;装备掉地上不是掉背包;只掉主号不掉英雄,附避坑与实操步骤。…

LFM2引擎MobFireBurn怎么用?地图光环光圈特效脚本教程

LFM2引擎MobFireBurn怎么用?地图光环光圈特效脚本教程

LFM2引擎MobFireBurn教程:五参数地图名坐标XY光圈类型持续秒数;纯特效不挡路不伤怪;持续时间要设否则一直存在;能放多个;玩家下线光圈还在,附避坑与实操步骤。…

大秦插件NPC对话框绝对坐标怎么设?SetNpcDialogPos脚本教程

大秦插件NPC对话框绝对坐标怎么设?SetNpcDialogPos脚本教程

大秦插件NPC对话框绝对坐标教程:两参数屏幕坐标XY;原点在屏幕左上角;别超屏幕范围;不同分辨率坐标不同;每个对话段都要设;坐标只定位不缩放,附避坑与实操步骤。…

LFM2引擎TAKE怎么收物品?TAKE收回背包物品脚本教程

LFM2引擎TAKE怎么收物品?TAKE收回背包物品脚本教程

LFM2引擎TAKE教程:两参数物品名数量;先CHECKITEM检测数量再TAKE;物品名要和Stditem.db一致;数量不够静默失败;TAKE和TAKEW区别是收背包vs收身上,附避坑与实操步骤。…

大秦插件写入键值配置方法 - 哈希键值存储实战案例

大秦插件写入键值配置方法 - 哈希键值存储实战案例

写入键值命令DQHashTableCreate后接标识字符串和存储内容两个参数;标识字符串不区分大小写作为记录查找键;参数2存储内容自定义;写入后用读取查找删除同族命令闭环操作;重复写入会覆盖旧值;常用于活动状态跨脚本共享、玩家临时记录、开关标记管理;标识建议加用途前缀避免空格特殊符号。…

SD插件装备回收表格配置教程 - 回收装备名单与回收价值设置

SD插件装备回收表格配置教程 - 回收装备名单与回收价值设置

SD插件装备回收表格教程:表格入口与四块配置,装备全称逗号分割填写,①装备序号用于序号回收,③④等级条件保护身上装备,回收价值七类收益可调,含三阶案例与避坑,适配SD插件脚本学习,仅供单机本地调试。…