找回密码
 点一下
查看: 2474|回复: 4

关于war3中string处理能力的疑问

[复制链接]
发表于 2010-6-14 09:03:14 | 显示全部楼层 |阅读模式
论坛里有一些关于string泄露的帖子,我看的云里雾里,所以暂时放弃了搞清楚string泄露的念头。


但是地图里有一个字符处理系统,简单的就类似于输入“-gold ”+数字为玩家增加输入数值的金币,包含一段输入string的切割(substring)以及和“0123456789”中各位的比较过程。


问题是,我发现war3单次处理string数据的能力是有上限的,感觉就像调用死循环时有一个自动的规避系统一样。


下面这段代码
(原谅我没有找到怎么贴jass的方法……)

local integer s = 1
loop
        exitwhen s > 20000
        call DisplayTimedTextToPlayer(Player(0),0,0,5,I2S(s))
        set s = s + 1
endloop

只能运行9677次

如果改成I2S(s)+"a"这种包含字符拼接的,运行的次数就更少了(8571次)



假如我们在地图中加入汉字处理系统,这个处理能力的上限就会很要命。


我试验了很久没有找到这个上限具体是多少,也不知道怎样才能不被限制(0秒计时器?),请各位大大帮忙!!!!!
发表于 2010-6-14 09:43:10 | 显示全部楼层
这个是触发器执行上限,搜索一下你就会发现一些资料了。
回复

使用道具 举报

 楼主| 发表于 2010-6-14 09:55:44 | 显示全部楼层
引用第1楼血戮魔动冰于2010-06-14 09:43发表的 :
这个是触发器执行上限,搜索一下你就会发现一些资料了。

谢谢指引!

虽然不知道string类的开销是多少,但是在《代码执行次数上限研究》中疯人大大的提醒

管理提醒: (疯人¢衰人) 可以用TimerStart或 call ExecuteFunc("函数名") 来打断执行上限的计数。 (2009-10-20 22:19)

应该就可以解决这个问题了,谢谢
回复

使用道具 举报

发表于 2010-6-14 12:11:40 | 显示全部楼层
-gold###这种东西还好~ 毕竟产生的字符串个数仅仅是玩家输入的字符串外加10个数字和"-gold"...
一涉及到大量的循环和字符串拼接以及类似I2S(H2I(hdl))这样不易重复的新字串来源,war3娘就纠结了...
回复

使用道具 举报

发表于 2010-7-27 17:16:45 | 显示全部楼层
好像是30万字节~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-22 04:32 , Processed in 0.039260 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表