- UID
- 9279
- 阅读权限
- 255
- 注册时间
- 2006-7-7
- 最后登录
- 2024-12-18
- 在线时间
- 9708 小时
- 性别
- 男
- 生日
- 1991 年 12 月 8 日
教皇
- 耕战
- 13421
- 鹰币
- 41665
- 天龙币
- 18
- 回帖
- 6021
|
本帖最后由 我是谁004 于 2019-1-6 19:44 编辑
前言
在我的《004时代》MOD中,有修改单位图像的触发效果,可以随意地使用图像资源。而侧重实用性的UserPatch 1.5补丁,就不具备这样的触发效果。不过我们仍然可以巧妙地运用1.5的特征,来完成类似的功能。在这里,我们介绍一种“在固定位置显示特定单位图像”效果及其实现方法。
举个例子,战役制作者觉得铁匠铺的烟很好看,想把它运用在地图上;但是如果直接放置兵工厂建筑,又要把本体遮挡起来,比较麻烦;何况有的情况下根本无法遮挡——比如要在空地上放置烟雾。那么,这时候该怎么办呢?我们可以利用UP 1.5的某个隐藏特性,来实现这种效果。
原理
众所周知,1.5增加了许多科技参数,让以前不能通过科技改变的属性也可以变动了。而1.5的自定义科技触发效果,又可以在剧情中自由修改,自由设定玩家的科技树或某些单位。
在诸多新可变属性中,有一项叫做“单位帮助”(Language File Help)。这是一个4字节属性,本意为单位的帮助说明文本ID,但游戏中该ID是通过另一个属性“训练提示”计算得出的,因此这个属性实际上是无用的。然而在UP 1.5中,该属性被赋予了新的作用:控制僧侣单位的治疗图像,和捡起圣物后转变为的单位。因为这两项属性一个位于单位指令中,是所有文明共用的,另一个是硬编码;所以,在原版中这两项属性是不能被简单修改的。因而1.5的这个特性对MOD制作者来说很有帮助,虽然该功能在文档中未被提及。单位帮助这个属性在用作对僧侣的配置时,需要设置其最高二进制位为1,低16位为治疗图像ID,中间的15位则为拾取圣物后转变的单位的ID。也就是说,此值满足
S=231+216×Q+P=2147483648+65536×Q+P,
其中P、Q分别为治疗图像ID和转变单位后的ID。
这也是唯一一个UP 1.5中能够设置单位图像的属性。所以,我们可以考虑在地图上放置一个玩家1以外的僧侣,然后指派令其不断进行治疗,那么游戏中他的图像就会一直处于治疗图像的状态。这样,就模拟出了在地图上某个固定地点显示特定单位图像的效果。
不过,在UP 1.5的自定义科技触发效果中,数值的精度是有限的。因为在计算的过程中,数据会被替换成单精度浮点数,其二进制只有24个有效数字。而如我们之前所言,该属性的最高位为1,因此有效数字有32位,按照如上的方法计算后会导致低8位被舍弃,得到的结果就不准确了。
那么我们应该如何来避免低位被舍去呢?其实也很简单,不用上述的算式,而用S=P-65536。这样得到的结果是一个有效位数不超过16的负数,但在32位无符号运算中它等于被加上了一个4294967296,实际上就相当于前式中Q=32767的情况。
设置了僧侣的治疗图像,还需要令其一直保持治疗状态。要产生这个效果是很容易的,只需要令僧侣附近的一个单位生命值始终保持一个很低的水平,然后指派僧侣治疗即可。如果无法遮挡,可用OLD-GOLDMINER等无形单位。于是,我们可以使用下列触发,来实现“特定位置放置铁匠铺烟雾”的效果。
方法
(以下X代表僧侣,A代表僧侣附近的单位,触发0效果0中的-60222=5314-65536)
- 触发0, 否是否
- 【效果0】改变目标名字1, 对象=X, 数目=1, 信息=“up-attribute 0,52,-60222,1”
- 【效果1】改变目标名字1, 对象=A, 数目=1, 信息=“up-attribute 0,0,30000,1”
- 【效果2】激活触发, 触发=触发1
- 触发1, 否否是
- 【条件0】定时器, 定时器=4
- 【效果0】摧毁目标, 对象=A, 数量=35000
- 【效果1】改变目标的生命值2, 对象=A, 数量=1
- 【效果2】指派目标, 对象=X, 目标=A
复制代码
如果只需要图像暂时出现一段时间,则定时器数秒后移除僧侣A即可。对于某些不循环的图像(例如爆炸、单位的死亡图像),想要令其循环播放,则可以在触发1的效果2之前加上一个效果:
这样就达到了令X的治疗动画重新播放的效果。不过在这个过程中会有一瞬出现僧侣的站立图像,可以考虑将其遮盖起来,例如用两个僧侣交替进行动作。
效果
该触发执行后的效果如下图所示。
下面列出了几个可设置的属性值,供大家参考
- -63803(1733) 小火
- -63799(1737) 中火
- -63795(1741) 大火
- -60222(5314) 铁匠铺烟
- -61125(4411) 船坞的海鸟
- -61064(4472) 驻扎旗帜
- -62074(3462) 测试版骑士(站立)
复制代码 |
|