找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3360|回复: 13

【平台扩展】万物互通(EC)现已盛满豪华午餐

[复制链接]
发表于 2024-9-1 02:30:33 | 显示全部楼层 |阅读模式
本帖最后由 笨030504 于 2024-9-9 23:25 编辑

这个其实也算是“锤子的废物插件”系列的第三期。
万物互通(Everything Compatible,EC)是一个包含用户包和开发包的整合包。
这个整合包,旨在兼容、互通、融合。
它适合二次开发和自由组合,用于mod制作和二次开发。
需要下载体验的,制作mod移步最新的用户包;

想要扩展平台,二次开发的移步最新的开发包。
里面目前预置了Ares/Phobos/WIC/IH等组件,并建立了模块之间的协作体系。
目前已经配套了WIC和IH组件的SDK,以便二次开发以及为modder自定义dll。
欢迎更多人制作与此整合包配合的平台和mod,来更加地扩大支持的功能,进而建立起充分的生态。


经测试,EC平台和Kratos没有发现不兼容问题,如果各位遇到,烦请反馈到QQ群。
EC平台和DP的兼容性待测试。
如果需要安装自定义的Ares/Phobos,请更换包里面的版本。



这个整合包是和WIC平台保持联动的,移步 【平台扩展】WIC v0.0.9
同时也和改版的支持自机联机的DTA联动,移步 可以自己和自己联机了(CNC)

如有问题或提出功能/开发建议,或对二次开发等存在疑问,请加群讨论。
QQ群:1005775525

补丁#240901B:
—— 更新了Phobos的版本。
—— 允许关闭Ares等对gamemd的检查,以便适配steam版的红警。

补丁#240903A:
—— 更新了Phobos的版本到b43_3_5。
—— 现在SyringeIH支持reshade组件了。赞美头猫大佬
备注:想要reshade可以下载下方链接里面的reshade或使用自己的reshade版本。



补丁#240904A:
—— 现在可以设置SyringeIH注入之后分离调试器了,可以用来在注入之后附上专业的调试器来调试程序
备注:详见用户包里面的SyringeIH使用说明
—— 部分修订了说明书,并重新梳理了包里面的文件



补丁#240905A:
—— 更新了Phobos的版本到b43_3_6。
——【Phobos重要修正】修复 [StrafingTargetScatter] 在默认情况下命令飞机攻击时可能会弹窗的问题
—— 修正了SyringeIH在打不开SyringeEx.dll时会卡死的问题。
—— 补充了SyringeIH的一些内部错误的提示。
—— 消除了EC.SDK当中的一些警告。
—— 补充了忘记写进SDK的单位变形接口。可以用来制作单位变形效果。




补丁#240908A:
—— 修复了SyringeIH随机出现的弹窗提示分配内存不足的问题。
—— 修复了SyringeIH在读取DLL基地址时可能出现的崩溃。
—— 修复了EnemyUIName等需要CSF语句的位置对长文本的支持。(目前对拆分出的子INI支持有点问题)
—— 更新了Phobos的版本到b43_3_8。
—— 补充了Phobos的更加详细的说明。
—— 允许SyringeIH在注入后与gamemd.exe分离
—— 修复了一些Phobos IHCore SyringeIH等的小bug


使用方法:
(一)制作mod:把整个用户包解压,放在原版YR里面。

备注:(1)这个和DTA兼容,和MO兼容,但对某些特定的旧DTA可能有潜在的兼容问题
          (2)尽管此整合包尽可能的消减了Ares Phobos WIC的不兼容问题,但是仍可能有,烦请发到QQ群里面。
(二)二次开发:把开发包解压,把SDK文件夹中的代码包含在项目的包含目录当中。
              在安装之后,按照SDK文件夹里面IHLoader说明书的指示来配置dllmain,即可享受EC的扩展功能。
备注:(1)请先在项目当中包含YRPP。
          (2)如有不确定者,可以抄开发包里面的EC_ExampleDll项目。
          (3)关于源码:Ares暂时搞不到,Phobos自己下载代码,WIC的代码按照si的意见不会公开

                                  IH组件的源代码请等到代码整理完成后公开,SyringeIH的代码已经公开。
          (4)关于逆向:附有pdb的文件准许自行逆向(是开源工程),其他请反馈到交流群里。





功能简述:(完整的mod开发说明书见用户包里面的“说明书”文件夹)
1、Ares有啥它有啥 Probos有啥它有啥 WIC有啥它有啥,但是兼容性会好一点
2、关于IH组件的更新:
(1)yrm支持中文名,在Name=处可以写中文名字。
        使用“:xxx”,xxx写中文名字。
(2)在UIName等CSF支持以下的逻辑:
        (1)使用“EXTS:”前缀来调用额外的CSF。
        目标CSF应放置于游戏根目录或打包到MIX中。
        调用时,按照“EXTS:文件名:CSF条目”的格式。
        文件名不区分大小写,不包括.csf的拓展名。
        CSF条目为原本会填的内容,区分大小写。
        示例:
        如果UIName要调用test.csf里的Name:WHAT条目,
        可以这样写:UIName=EXTS:TEST:Name:WHAT,
(3)使用“(:xxx)”来调用中文的nostr。
        xxx处直接写中文。注意,括号是英文括号,冒号是中文冒号。
        如需要换行,可以直接插入\n
        示例:
        UIName=(:核弹\n发射井)
(4)解锁了游戏多开(配合能多开的DTA可以自机联机)
(5)INI每行当中,键值对里面,键的长度可以最大为500,值的长度可以最大为200000
(6)修复:
        I,重写了部分yrm的载入
        II,重写了INI的部分载入流程
        III,修复了一堆基础bug,基本打通了中文字符串的传输
        IV,修复了一些有关游戏多开的bug,但是似乎还有
        V,(小声)那个中文冒号其实是辅助确定后面的汉字是啥编码的,目前支持UTF8和GBK(或GB2312)
3、关于SyringeIH的更新:
(1)双击启动:
没什么说的,就是Syringe从此不需要bat启动了,直接双击即可。
如果想要调整启动设置,请编辑配置文件Syringe.json。

(2)日志升级:
把Syringe.log改成了中文,便于阅读。
加入了更加详细的信息。
如果发生IE,那么Syringe会提示报错的DLL及相对位置,便于排查由于扩展平台导致的报错。

SyringeIH在爆IE时会自动给出爆的位置附近的运行情况,可能的错误原因,爆的位置所在的库,爆的位置的函数完整调用栈。

可以在堆栈转储当中获取函数完整调用栈(准确率接近100%)来找到错误的上下文。
(3)扩展INJ格式 & 钩子优先级:
原来的格式:<十六进制地址> = <函数名>, <覆写长度>
新的格式:<十六进制地址> = <函数名>, <覆写长度>[, <优先级>][, <次优先级>]
后两个为可选项。如果填写了次优先级,则必须先填写优先级。
优先级判断规则:
I、比较优先级,值大的先执行
II、若优先级相等,比较次优先级,
        (I)sub_priority非空的比sub_priority为空串的先执行

        (II)两个都非空时,比较字典序,字典序大的先执行
如果不使用INJ,那么请使用DEFINE_HOOKEX和DEFINE_HOOKEX_AGAIN来加钩子,
详见SyringeEx的说明书。
(4)相对钩子:
可以把钩子按照相对地址挂到任何一个gamemd载入的dll上。
使用方法详见Syringe的说明书。
(5)其他功能详见Syringe的说明书


4、关于SDK的更新:
当前版本的SDK包括IH组件/SyringeIH/WIC三组SDK。
IH组件的SDK提供了二次开发包管理、注册、调用、查询、依赖处理等功能。
SyringeIH的SDK提供了扩展钩子、运行前信息等。
如一些例子:
GetOpCode获取/修改被覆盖的机器码
DisableOpCode取消执行原始机器码      EnableOpCode恢复执行原始机器码
GetActualOverriddenBytes获取实际覆盖的字节数
GetValidHookCount获取地址上有效的钩子数量
EnableHook运行时启用指定钩子      DisableHook运行时禁用指定钩子

EnableAllHooksAt启用某个地址的全部钩子      DisableAllHooksAt禁用某个地址的全部钩子

ReplaceHookFunction换掉某个钩子执行的函数      RestoreHookFunction恢复某个钩子执行的函数

ReplaceFunctionBody替换函数体      RestoreFunctionBody恢复函数体

GetSettingJSON获取设置      GetSettingText获取设置,但是文本

GetLoadedConfigJSON获取全部设置      GetLoadedConfigText获取全部设置,但是文本
HookContext:调用钩子

WIC的SDK是si的重磅巨作,包括了动态属性、经验系统、数值显示逻辑、Buff 系统的高度灵活的自定义组件。
如一些例子:

通过获取操作面板,可以直接从代码修改单位的部分动态属性,升级情况;
通过定义自定义的Buff类(继承SDK里面的SIBuffClass即可)来完全自定义Buff的作用和效果。
其他功能详见SDK及其说明书。






用户包Q&A:
Q1:安装EC后如何启动游戏?
A1:启动游戏双击Syringe.exe启动,无需bat,或安装后通过DTA启动
Q2:安装到什么地方?
A2:游戏根目录(gamemd所在的目录)
Q3:组件能否单独使用?
A3:目前版本,IH组件,WIC,Phobos,Ares都可以单独使用,注意单独使用时取走所有文件(如IH组件目前有2个dll和一个inj)
Q4:出现错误/bug而退出了怎么办?
A4:请先试图自己调试。SyringeIH在Syringe.log当中提供了丰富人性化的调试信息。如果调试不明白,加QQ群发出来反馈。
        如果你要反馈,请附上EC的版本号,以及syringe.log debug.log,其他文件如果需要也可以上传。


Q5:能不能配合steam版红警使用?
A5:可以,但请在SyringeIH的设置(Syringe.json)的 "EnableHandshakeCheck": true,一行当中true改为false
Q6:如何支持reshade?
A6:只需要把reshade的文件(除了syringe.exe)全部覆盖到装好EC的游戏目录即可让reshade工作。


Q7:装了EC之后能不能装Kratos?
A7:可以的,Kratos和EC基本上没有兼容性问题(感谢Flactine测试)。如果确实出现了不兼容的情况,烦请反馈到QQ群。


开发包Q&A:
Q1:如何二次开发一个新的项目?
A1:可以抄开发包里面的EC_ExampleDll项目,或仿着自己写一个。
Q2:如何在已有的项目基础上二次开发?
A2:把SDK文件夹放入包含目录,按照IHLoader的说明配置DllMain,即可接入SDK,进行二次开发。
Q3:如何检查你加入的DLL是否配置好?
A3:配置好之后,打开日志,启动游戏,之后查询debug.log,检查IHCore : 开头的log条目。
        下面是一个提示注册和依赖都正常的情况:(摘自一次测试的debug.log)
        IHCore : Initialize Libs
        IHCore : Loading Library "EC_ExampleDll"
        IHCore : Loading Library "SIWinterIsComing"
        IHCore : Add Dependency: EC_ExampleDll Requires SIWinterIsComing (Forced Sequence)
        IHCore :  Call in the dependency order :"SIWinterIsComing"
        IHCore :  Call in the dependency order :"EC_ExampleDll"
Q4:通过DEFINE_HOOK和DEFINE_HOOKEX定义的钩子不能被Syringe识别到怎么办
A4:(1)如果宏定义当中不包括section相关内容,写INJ文件(例如IHCore),或宏定义设置SYR_VER为2
        (2)如果宏定义当中包括了section相关内容还是不行(玄学方法from天启酱)以VS为例:(不知道为啥可以这样)
        项目属性->C/C++->优化->启用内部函数,选择是
        项目属性->C/C++->常规->多处理器编译,选择否
Q5:PDB文件是做什么的?
A5:PDB可以用来在IDA逆向查错时恢复符号,便于理解代码。


Q6:如何让你的插件依赖于另一个插件时正常工作?
A6:在依赖列表里面添加一个InitDependency对象,其4个参数分别为:
        依赖的包的名字,请求的包的当前版本,请求的包的所需最低版本,是否要求载入顺序(即被依赖的是否需要先加载)
        参数2、3可以填DoNotCheckVersion来跳过版本检查。例如,下面为EC_ExampleDll当中对WIC的依赖。
InitDependency MyDependency[1] =
{
        {"SIWinterIsComing",DoNotCheckVersion,WIC_LIBRARY_VERSION,true}
};





版本信息:


主版本:R1
构建:240908A
组件版本:
SyringeIH:0.2_240908A
IHCore:0.3_240908A
IHLibList:0.1
Ares:3.0p1
SIWinterIsComing:0.0.9 发行版
Phobos:Phobos-b43+3_8 (公版+茶酱+麻酱)


制作者名单:(排名不分先后)
主要作者:钢铁之锤,Sidoupiar,航味麻酱,绯红热茶,头猫
图标制作:迪克凯特
测试团队:Sovietianqi,GDI,长乐未央,澣骦零星 ,Forever ‖ 圣洁 ,Flactine,九千天华
特别鸣谢:Ares平台制作组,Phobos平台制作组

下载链接: https://pan.baidu.com/s/19eKSnvXt_9tF89QHGztMLA?pwd=hz38
提取码: hz38
以后所有期的下载链接都一样。
本期的文件为:
                插件:万物互通_R1_240909A.exe

如果安装包无法使用的话,请通过以下压缩包安装:



                          万物互通_R1_用户包_240908A.zip
                          万物互通_R1_用户包_240908A.zip
                          reshade 2023.3.7z


EC的后续补丁基本上就结束了,后续更新烦请等下一个大版本。
大家想要什么功能和支持尽管在下面发出来,后续的hotfix也在这个帖子里面。
















发表于 2024-9-1 09:49:25 | 显示全部楼层
回复

使用道具 举报

发表于 2024-9-1 10:28:14 | 显示全部楼层
赞美锤子!还没睡你们也太能熬了吧...
回复

使用道具 举报

 楼主| 发表于 2024-9-1 23:17:09 | 显示全部楼层
补丁#240901B:
—— 更新了Phobos的版本。
—— 允许关闭Ares等对gamemd的检查,以便适配steam版的红警。
回复

使用道具 举报

 楼主| 发表于 2024-9-2 12:35:48 | 显示全部楼层
被一些神奇情况搞心态之后,我必须声明一下:
在使用EC前,请确认游戏目录和Patches目录下的Ares/Probos/WIC/IH组件等有且仅有一份

回复

使用道具 举报

 楼主| 发表于 2024-9-3 14:21:44 | 显示全部楼层
补丁#240903A:
—— 更新了Phobos的版本到b43_3_5。
—— 现在SyringeIH支持reshade组件了。赞美头猫大佬
回复

使用道具 举报

 楼主| 发表于 2024-9-4 13:32:32 | 显示全部楼层
补丁#240904A:
—— 现在可以设置SyringeIH注入之后分离调试器了,可以用来在注入之后附上专业的调试器来调试程序,详见用户包里面的SyringeIH使用说明
—— 部分修订了说明书,并重新梳理了包里面的文件

回复

使用道具 举报

 楼主| 发表于 2024-9-5 09:18:11 | 显示全部楼层
补丁#240905A:
—— 更新了Phobos的版本到b43_3_6。
——【Phobos重要修正】修复 [StrafingTargetScatter] 在默认情况下命令飞机攻击时可能会弹窗的问题
—— 修正了SyringeIH在打不开SyringeEx.dll时会卡死的问题。
—— 补充了SyringeIH的一些内部错误的提示。
—— 消除了EC.SDK当中的一些警告。
—— 补充了忘记写进SDK的单位变形接口。可以用来制作单位变形效果。
回复

使用道具 举报

发表于 2024-9-6 21:57:17 | 显示全部楼层
肥肠感谢,我会尝试在我的mod新版本使用的
回复

使用道具 举报

 楼主| 发表于 2024-9-8 23:00:24 | 显示全部楼层
补丁#240908A:
—— 修复了SyringeIH随机出现的弹窗提示分配内存不足的问题。
—— 修复了SyringeIH在读取DLL基地址时可能出现的崩溃。
—— 修复了EnemyUIName等需要CSF语句的位置对长文本的支持。(目前对拆分出的子INI支持有点问题)
—— 更新了Phobos的版本到b43_3_8。
—— 补充了Phobos的更加详细的说明。
—— 允许SyringeIH在注入后与gamemd.exe分离
—— 修复了一些Phobos IHCore SyringeIH等的小bug
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛

GMT+8, 2025-5-23 06:25 , Processed in 0.077208 second(s), 14 queries , APCu On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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