我是谁004 发表于 2017-7-16 17:49:16

WAIFor Gizmo工具与新触发效果

本帖最后由 我是谁004 于 2017-12-16 11:26 编辑

接触过葡萄牙MOD(Portuguese Civ Mod)以及触发补丁1.5(Extended Triggers Patch 1.5)的玩家,应该都知道其中有DLL文件的存在。这些DLL,便是对游戏主程序功能的增补,在几乎不对EXE文件产生影响的情况下,来丰富内容。
比起WTEP那种直接改变主程序的方法,DLL能有更多的功能。但是这种DLL的加载也并不容易,需要人工地对EXE文件进行编辑,增加WIN32API相关的指令。尤其加载的DLL数量多了,修改起来会很麻烦。而且其中主程序与模块之间的跳转指令,也需要实时地进行配置。
另一方面,ETP 1.5重写了整个触发部分的指令,因而它“定死”了触发条件、效果的数量。用户如果要再附加自己的触发效果,也是很困难的。

因此,我们需要寻找合适的解决方案。之前我提过一个设想:编写一个DLL的加载器,能够根据配置文件,来动态地加载DLL模块;而且,能够自动调节内部的跳转指令,无需模块的编写者去撰写相关语句。
于是,我开发了WAIFor Gizmo模块。它是一个DLL文件,通过它能够加载更多的DLL,而且会对补丁DLL进行调整。至于触发条件、效果,则有了相当简单的模板——只需要指定条件或效果的数量,以及各自的名称、输入框、执行语句,就可以自动地在游戏本身的触发后面追加新的条目了!加载多个触发DLL时,也可以按照相应的顺序全部列出,不会造成冲突。

附件是一个测试版的Gizmo。包含了说明文档、Gizmo主模块和一个DLL触发效果示例,DLL示例的具体内容会在2楼说明。

使用时,需要先通过WTEP(链接)修改EXE,并设置Gizmo=1,使之能够加载Gizmo模块。之后,将压缩包中Data\下的文件放置在游戏的Data\目录下(如果是UserPatch的独立包,则可放在它对应的Games\<游戏路径>\Data\下),便可以使用了。

我是谁004 发表于 2017-7-16 17:50:53

本帖最后由 我是谁004 于 2017-7-16 17:54 编辑

WAIFor的触发效果 1.0

Show Choice Box 显示选择对话框
在游戏中弹出一个选择对话框,可以设置其中的文字,并根据用户的选项设置指定玩家的某个资源值:0-否,1-是。

Resource Modifier 资源修改器
设置目标玩家的资源值。除此之外,还有源玩家、资源类型、数量、外交关系以及数目参数,它们可以产生不同的效果。
数目效果:(目标-目标玩家通过资源参数指定的资源,源1-源玩家通过资源参数指定的资源,源2-源玩家的通过数量参数指定的资源)
0 - 目标 = 数量
1 - 目标 = 源1+数量
2 - 目标 = 源1*数量
3 - 目标 = 源1/数量
4 - 目标 = 数量 / 源1
5 - 目标 = 源2
6 - 目标 += 源2
7 - 目标 *= 源2
8 - 目标 /= 源2
9 - 目标 = 源2 / 目标玩家的资源外交效果:“同盟”不变,“中立”使最终值除以360,“敌人”使最终值除以1000。

Save Resources To File 将资源存储至文件
将一名玩家的所有资源量存储至“文字”参数指定的文件中。文件扩展名为.res。

Load Resources From File 从文件中读取资源
从.res文件中读取资源量,并设置给一名玩家。

Set Resource Storage 设置资源存储
能够修改单位的资源存储量。数目效果:
0 - 设置目标单位的资源量
1 - 增加目标单位的资源量
2 - 将目标单位的资源值,设置为目标玩家的通过数量指定的资源
3 - 将目标单位的资源值(多个则只用第一个),赋予目标玩家的通过数量指定的资源

Protounit Modifier 原型单位修改器
能够修改目标玩家的科技树中单位的属性,浮点型的属性则将数量除以1000,属性类型通过定时器参数来确定。数目效果:
0 - 设置原型单位的属性值
1 - 增加原型单位的属性值
2 - 通过目标玩家的资源值,来设置原型单位的属性值。

Object Modifier Selector 单位修改选择器
筛选Object Modifier触发效果的单位列表。数目为0时,直接设置;为1时,则在原有的列表之后附加。最多支持256个单位。
该效果须严格优先于Object Modifier效果,即前面的序号要大于后者的。

Object Modifier 单位修改器
在通过Object Modifier Selector指定了单位列表之后,来对它们的属性进行修改,修改后的单位会变得独立。
参数的用法与Protounit Modifier类似。

Create Units In Area 区域内建立单位
单位会在通过区域参数指定的每一个地块中产生。数目为0时,受到地形和体积的限制,为1时则不受限制。

Change/Replace Object 改变/替换单位
对指定单位进行一定的操作,数量指定了新单位。数目决定了其效果:
0 - 将单位转变为新单位
1 - 将单位移除,在原来的位置上建立新单位
2 - 在单位的位置上建立新单位,但不移除原单位

WAIFor Unit Typer WAIFor 打字机
可以在地图的特定位置上,将单位以5x5的点阵打出文字来。

Focus Object 聚焦单位
类似于原触发效果“改变视角”,不同在于它的目标不是固定点,而是目标单位。数目0、1可以指定改变视角的类型为移动、切换。

滑稽帝国 发表于 2017-7-17 15:07:38

火前留名{:155:}

楚魂_笑三少8 发表于 2017-7-21 10:19:32

好东西,楼主辛苦了{:155:}

1315472623 发表于 2017-8-9 22:13:39

只会java不会c++ 会不会看不懂
页: [1]
查看完整版本: WAIFor Gizmo工具与新触发效果