翔鹰帝国网|帝国时代游戏论坛|帝国时代系列|神话时代|0AD
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 2088|回复: 5

[交流] 利用1.5的功能显示任意单位图像

[复制链接]

400

主题

14

精华

6万

积分

教皇

耕战
10324
鹰币
37952
天龙币
18
帖子
5731

特级嘉禾勋章三级帝国勋章十字军勋章

附庸关系0
 楼主| 发表于 2019-1-5 23:51:48 | 显示全部楼层 |阅读模式
本帖最后由 我是谁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)
  1. 触发0, 否是否
  2. 【效果0】改变目标名字1, 对象=X, 数目=1, 信息=“up-attribute 0,52,-60222,1”
  3. 【效果1】改变目标名字1, 对象=A, 数目=1, 信息=“up-attribute 0,0,30000,1”
  4. 【效果2】激活触发, 触发=触发1

  5. 触发1, 否否是
  6. 【条件0】定时器, 定时器=4
  7. 【效果0】摧毁目标, 对象=A, 数量=35000
  8. 【效果1】改变目标的生命值2, 对象=A, 数量=1
  9. 【效果2】指派目标, 对象=X, 目标=A
复制代码

  如果只需要图像暂时出现一段时间,则定时器数秒后移除僧侣A即可。对于某些不循环的图像(例如爆炸、单位的死亡图像),想要令其循环播放,则可以在触发1的效果2之前加上一个效果:
  1. 【效果2】单位停止, 对象=X
复制代码
  这样就达到了令X的治疗动画重新播放的效果。不过在这个过程中会有一瞬出现僧侣的站立图像,可以考虑将其遮盖起来,例如用两个僧侣交替进行动作。

效果
  该触发执行后的效果如下图所示。
_AOK188.png


  下面列出了几个可设置的属性值,供大家参考
  1. -63803(1733) 小火
  2. -63799(1737) 中火
  3. -63795(1741) 大火
  4. -60222(5314) 铁匠铺烟
  5. -61125(4411) 船坞的海鸟
  6. -61064(4472) 驻扎旗帜
  7. -62074(3462) 测试版骑士(站立)
复制代码
004时代:战役时代
我很乐意看到有人在MOD技术上超过我。
回复

使用道具 举报

107

主题

6

精华

4万

积分

教皇

WK新时代

耕战
8195
鹰币
552464
天龙币
0
帖子
1378

翔鹰建站十周年纪念章小评论家第十二届火箭筒杯最佳新人第八届战鹰杯单人赛冠军

附庸关系9
发表于 2019-1-6 00:44:01 | 显示全部楼层
这个太厉害了,mod技术才是第一生产力啊!最近我也要开始正式学习mod了!
UP1.5场景 靛蓝魔法世界 待制作
WK随机地图 TheZoo (ZR@动物园) 已发布
AI Zooman(For TheZoo) TheZoo配套AI
WK随机地图 TheZoo 2: Revenge of Animals 制作中
WK新时代超级打局综合教程 长期更新中
狼与羊2 狼vs羊 狼内战 基础与进阶教程 制作中
ECL 比赛录像长期转发
回复

使用道具 举报

41

主题

2

精华

9710

积分

枢机主教

耕战
1643
鹰币
5252
天龙币
0
帖子
147

创意工坊通行证

附庸关系0
发表于 2019-1-6 16:37:18 | 显示全部楼层
前些日子正在纠结怎么弄出没有帆的船,这样一来就可以实现了。

被治疗单位不用局限于OLD-GOLDMINER之类的东西(顺便wk里面这单位被换掉了),完全可以使用另一个指定了空图像的僧侣,让两者互相治疗。
回复

使用道具 举报

400

主题

14

精华

6万

积分

教皇

耕战
10324
鹰币
37952
天龙币
18
帖子
5731

特级嘉禾勋章三级帝国勋章十字军勋章

附庸关系0
 楼主| 发表于 2019-1-6 19:15:41 | 显示全部楼层
夜游神 发表于 2019-1-6 16:37
前些日子正在纠结怎么弄出没有帆的船,这样一来就可以实现了。

被治疗单位不用局限于OLD-GOLDMINER之类的 ...

当然可以,包括指定另一个图像为树木、岩石等普通装饰物
004时代:战役时代
我很乐意看到有人在MOD技术上超过我。
回复

使用道具 举报

47

主题

1

精华

5871

积分

宗主教

耕战
980
鹰币
9207
天龙币
0
帖子
450

翔鹰建站十周年纪念章

附庸关系2
发表于 2019-1-7 14:19:31 | 显示全部楼层
别看原理这么多,其实实际操作很简单,并不麻烦
索引:Userpatch 实用技术贴索引(2019.10.9更新)←点击进入

战役:《敛由国的统一》←点击进入

图区活动:【看文作图】WHAT?帝国还能描绘古诗文?! (;゚Д゚i|!)←点击进入

殊途战役制作群 QQ: 616317226
回复

使用道具 举报

19

主题

1

精华

2万

积分

征服者

耕战
4071
鹰币
3213
天龙币
75
帖子
1042

翔鹰建站十周年纪念章二级翔鹰勋章第八届火箭筒杯最佳战役第八届火箭筒杯最佳新人

附庸关系0
发表于 2019-1-27 13:19:59 | 显示全部楼层
教材建议先展示效果,再讲做法,最后说原理哈。
这个方法是不是可以把僧侣的治疗动画替代成其它图像的意思?
   
                 【2012】天堂之路v1.1                                   【2016】霭之坡的窈蔚之森
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国 ( 京ICP备18029055号-1 )

GMT+8, 2019-10-17 12:17

Powered by Hawk Studio  QS Corp.® Licensed

© 2001-2019 Hawkaoe.net All Rights Reserved

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