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

[战役制作] 检测字符串表mod是否成功载入:多语种支持的利器

[复制链接]

183

主题

9

精华

2万

积分

教皇

耕战
3325
鹰币
15240
天龙币
0
回帖
1200

翔鹰建站十周年纪念章

附庸关系3
 楼主| 发表于 2020-11-3 16:27:54 | 显示全部楼层 |阅读模式


什么是字符串表mod?字符串表有什么用?

不懂的朋友可以先看这个帖子了解一哈→
《[教程整合] 字符串表mod/文本mod :多语种支持的利器》

鄙人认为,在不久的将来,利用字符串表mod来替换掉游戏自带的文本的战役会越来越多。事实上cxt的DE战役《火杯守护者》等战役已经大规模使用了替换的文本,实现了更多效果!比如对改过名的英雄使用自定义科技,修改各种单位的训练说明科技的研发说明等。

对于战役汉化者而言,你可以联系原作者,利用字符串表mod来提供多语种支持直接整合到原作者的战役模组里。

但是这会带来一个致命的问题——
由于字符串表mod必须通过重启游戏开一局标准游戏或者测试一次场景才能真正生效,所以心急不看提示的玩家可能会直接进入战役开玩,结果所有文本都是游戏原版的,根本没法玩下去(鄙人在第一次玩《火杯守护者》时就遇到这种问题)

现在这个致命问题已经可以解决,请诸位认真看看下面的方法:



1、创建一对AI文件
(1)新建2个文本文档
(2)其中一个拓展名改为.ai,另一个改为.per(如何修改文件拓展名请自行百度)
(3)两个文件必须同名
(4)放到你的游戏根目录ai文件夹里↓
C:\Program Files\Steam\steamapps\common\AoE2DE\resources\_common\ai
    └AItest-new.ai
    └AItest-new.per


2、做一套字符串表mod(按照上面的整合教程)
我这里先假设你的字符串表mod里的内容是:
zh(简体中文):
29001 "张飞"
29002 "赵云"

en(英文):
29001 "Zhangfei"
29002 "ZhaoYun"




3、在.per文件中写入以下代码,然后另存为文件,选择UTF-8编码。

保存文件示意图:


;///////////////////////////////////////////////////////////
;//              检测字符串表mod是否成功载入              //
;///////////////////////////////////////////////////////////
;=====常数定义=====
;给modded-text-X的中文、英文分别指定内容。稍后用于判断字符串内容是否与它们相符合。
(defconst modded-text-1-zh "张飞")
(defconst modded-text-1-en "ZhangFei")
(defconst modded-text-2-zh "赵云")
(defconst modded-text-2-en "ZhaoYun")

;变量目标(ID=100)。记录有多少条字符串是正确的。(特别注意,这个#100别和其他目标的ID冲突了~)
(defconst corrects 100)     

;=====初始化(先把计数归零)=====
(defrule
    (true)
    =>
    (set-goal corrects 0)
    (disable-self)
)

;===========检验字符串#29001是否正确===========
    (defrule
        (true)
        =>
        ;把字符串内容存到缓冲区。如果玩家用英文,会存英文内容;中文则会存中文内容。
        (up-store-text c: 29001)
        (disable-self)
    )
    (defrule
        ;判断缓冲区里,有没有“张飞”或“ZhangFei”。二者中有一个即可。
        (or (up-compare-text c: modded-text-1-zh c:>= 0)
            (up-compare-text c: modded-text-1-en c:>= 0))
        =>
        ;字符串正确,那么计数+1
        (up-modify-goal corrects c:+ 1)
        (disable-self)
    )

;===========检验字符串#29002是否正确===========
    (defrule
        (true)
        =>
        ;把字符串内容存到缓冲区
        (up-store-text c: 29002)
        (disable-self)
    )
    (defrule
        ;判断缓冲区里,有没有“赵云”或“ZhaoYun”。二者中有一个即可。
        (or (up-compare-text c: modded-text-2-zh c:>= 0)
            (up-compare-text c: modded-text-2-en c:>= 0))
        =>
        ;内容符合,那么计数+1
        (up-modify-goal corrects c:+ 1)
        (disable-self)
    )

;===========检验字符串#29003是否正确(以此类推)===========
;===========检验字符串#29004是否正确(以此类推)===========

;===========最终判断:是否所有字符串都正确===========
    (defrule
        ;如果字符串正确的数量达到2个……
        (up-compare-goal corrects c:== 2)
        =>
        ;发送AI信号#1。用于告知触发系统。
        (set-signal 1)
        ;注:如果不希望AI说这句话,可以用分号将其转为注释。
        (chat-to-all "字符串表mod已成功载入!")
        (chat-to-all "String Table mod successfully imported!")
        (disable-self)
    )
    (defrule
        ;如果正确数量为0……则不发送AI信号。
        (up-compare-goal corrects c:== 0)
        =>
        (chat-to-all "字符串表mod未载入, 请回到战役选关界面查看说明!")
        (chat-to-all "String Table mod hasn't imported, please return to scenario selection screen to check the tips!")
        (disable-self)
    )
    (defrule
        ;如果正确数量为0~2……则不发送AI信号。
        (up-compare-goal corrects c:> 0)
        (up-compare-goal corrects c:< 2)
        =>
        (chat-to-all "字符串表mod与其他mod冲突了, 请将本战役mod置于最高优先级!")
        (chat-to-all "String Table mod conflicts with other mods, please give this campaign mod top priority!")
        (disable-self)
    )


如果你想多核对几条字符串,可以自行拓展。
如果你的AI里已经用过了100号目标(goal),那请务必更换其他目标编号,以免造成冲突。

4、有些人的记事本编辑出来的AI文件,测试时反而会出问题(原因及解决方法见这个贴

5、在编辑器里写下触发:
触发0  ||  初始开启  不循环
    条件0  ||  收到AI信号  AI信号1
    效果0  ||  显示指南  “触发收到AI信号0,字符串mod已成功载入,请开始游戏吧!”
    效果1  ||  关闭触发器  触发1
    效果2  ||  (其他你想要的效果,比如允许玩家继续游戏)

触发1  ||  初始开启  不循环
    条件0  ||  收到AI信号  [反向条件]  AI信号1
    效果0  ||  显示指南  “检测到字符串mod没有成功载入。请:1、将本战役的模组优先级提到最高,2、开任意一局标准游戏,3、重新进入本战役。”
    效果1  ||  关闭触发器  触发0
    效果2  ||  (其他你想要的效果,比如禁止玩家继续游戏)


6、在编辑器里,给任意一个电脑玩家设置上面写好的AI
(若列表里未出现那个ai,测试一下再返回编辑器即可)


7、测试:三种效果如下:
成功载入:


未载入:


载入成功一部分,另一部分被其他字符串表mod占用:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册翔鹰会员(昵称)

x
索引:
Userpatch 实用技术贴索引←点击进入
决定版精品贴大索引←点击进入

战役:
《 兔与豹》——柔弱奴隶公主  猛兽口中求生←点击进入
《敛由国的统一》←点击进入

殊途战役制作群 QQ: 616317226
翔鹰帝国Ⅱ:决定版交流群 QQ: 112822759
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国

GMT+8, 2024-4-27 20:14 , Processed in 0.275002 second(s), 19 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

Copyright © 2001-2023, Hawkaoe.net All Rights Reserved

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