找回密码
 点一下
查看: 1872|回复: 6

变量里的数组大小过多~导致所有触发不能用??

[复制链接]
发表于 2013-1-28 15:17:09 | 显示全部楼层 |阅读模式
本帖最后由 久而淡之 于 2013-1-28 15:20 编辑

我的地图里,变量数组大小都是999的,大概有20多个变量这样。

为什么测试图的时候....触发就没反应呢??

在不改变量数组大小的情况下怎么能让触发生效??  求解决~~~~

附加问题地图一张: ChuFaYongBuLiao.w3x (16.81 KB, 下载次数: 42)
发表于 2013-1-28 16:05:08 | 显示全部楼层
本帖最后由 zhuzeitou 于 2013-1-28 16:18 编辑

要不改变数组大小啊,那么删除数组吧

看起来之前说的太不负责,那么稍微细一些
简单说就是游戏中存在一个执行数限制,一次性执行到一定数量的操作之后,后面的操作全部会被忽略
全局变量的初始化、全局触发的注册都是初始化的操作,war3的数组其实并没有动态大小这一概念,统统是8192(即0~8191),并且使用超过一定大小(约8000)的话存档还会出问题,部分handle类型数组比如timer等会在初始化时根据设定的大小的项进行创建操作,比如你设置为5,实际会创建0~5这6项(太久不碰部分凭记忆),这些都会占用执行数
也就是如果你声明了很多很大的这类数组的时候,你的执行数就被占用了很多,可能导致后面的注册触发操作执行不了
真要解决的话,数组大小设得小些,使用时动态创建对象就行

点评

没有其他办法了吗?  发表于 2013-1-28 16:17
回复

使用道具 举报

发表于 2013-1-28 16:17:20 | 显示全部楼层
http://www.ydwe.net/thread-2054-1-1.html

建议改用哈希表存储,消灭全局变量(特别是数组)

点评

哈希表?怎么使用呢? 有介绍吗??  发表于 2013-1-28 16:36
回复

使用道具 举报

发表于 2013-1-28 16:18:55 | 显示全部楼层
沙发已更新
回复

使用道具 举报

 楼主| 发表于 2013-1-28 16:26:36 | 显示全部楼层
谢谢楼上的各位~~
回复

使用道具 举报

发表于 2013-1-28 17:14:36 | 显示全部楼层
本帖最后由 雨····· 于 2013-1-28 17:15 编辑

最好还是改变组的大小,一般来说500以下是没问题的...
无法使用数组过大的变量,这似乎是WE的BUG,不过你可以将数组改为负数试试,负数也是可以的
回复

使用道具 举报

发表于 2013-1-28 22:08:22 | 显示全部楼层
雨····· 发表于 2013-1-28 17:14
最好还是改变组的大小,一般来说500以下是没问题的...
无法使用数组过大的变量,这似乎是WE的BUG,不过你可 ...

首先这不是bug,是魔兽的限制,魔兽刚出的时候电脑配置没现在那么好,数组太多了对电脑也是负担,且实际应用时并不需要那么多变量,于是为了解决变量不够和全局不灵活等问题在1.20后的版本加入了哈希表,其作用相当于动态变量大小

另外负数可用是因为除了需要实际初始化的变量外(计时器、单位组等),其它的变量数字填多少都是没有初始化的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 23:20 , Processed in 0.404462 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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