1321321 发表于 2022-10-11 17:58:21

关于goto的问题.

goto调用次数是否有上限?
新手学习goto 写一个循环调用

[@调用]
#act
mov n$i 1
mov n$result 0
goto @计算
sendmsg 0 <$str(n$i)>,<$str(n$result)>,

[@计算]
#if
small n$i 2000
#act
    inc n$result n$i
    inc n$i 1
    goto @计算



当调用执行时我想让 n$i 从1-1999   并每次都把他累加到 n$result中
可是结果却是n$i为 1500   n$result 为1125750

并不是我想要的结果. 理论上 n$i应该为2000才对..因为到2000才停止

请问一下是goto次数有上限吗?

mrkingli 发表于 2022-10-12 00:37:36

选项-参数-游戏选张1-脚本死循环数
哥们儿你连这个都不知道,你脚本能写的下去嘛?

996技术-wang 发表于 2022-10-12 09:15:18

M2Server.exe程序-参数设置-游戏选项(1)-脚本死循环数 默认是1500. 你可以调到2000测试用

一般不建议用GOTO做累加循环递归调用容易产生栈溢出

建议先搜 996说明书 循环
脚本循环

While 操作符说明: >大于 <小于 =等于 !不等于

[@222]
#IF
#ACT
;为方便测试每次执行脚本前将变量设置为1,本示例脚本可无视MOV
;MOV N1 1
;循环开始,While 变量/值 比较符号(> < =) 变量/值;循环写在 #ACT中
While N1 < 1000
SendMsg 6 <$STR(N1)>
Inc N1 1
EndWhile
;循环结束 EndWhile
SendMsg 6 aaaaaa


1321321 发表于 2022-10-12 11:09:53

996技术-wang 发表于 2022-10-12 09:15
M2Server.exe程序-参数设置-游戏选项(1)-脚本死循环数 默认是1500. 你可以调到2000测试用

一般不建议用GOT ...

感谢解答,昨天我在说明书中也看到了.
不过我也尝试过while
貌似while执行机制搞不清楚.
数值大了也会有限制.
就是不知道如何限制的.

996技术-wang 发表于 2022-10-14 09:31:39

多大数值被限制了
超过21亿了么?

1321321 发表于 2022-10-14 17:28:37

mrkingli 发表于 2022-10-12 00:37
选项-参数-游戏选张1-脚本死循环数
哥们儿你连这个都不知道,你脚本能写的下去嘛? ...

老哥 我是新手来着 自己学习摸索啊。:lol
页: [1]
查看完整版本: 关于goto的问题.