
本指南主要介绍可用于创建事件和任务的脚本文件,就像你在官方剧本中看到的那样。 提供一些示例。 由于脚本文件是XML文件,我还会讨论XML文件在本游戏中的一些用途。 你可以在streamassert文件夹中找到官方脚本示例。 内容 * 脚本 - 元素 - 示例 * 一些有趣的XML修改 - 什么是XML文件 - 官方示例中展示的只能通过XML实现的功能 - 游戏中的一些隐藏单位 * 一些可能出现的问题及解决方法 什么是XML文件 XML,全称可扩展标记语言,是一种用于某些万维网页面的文档格式化语言。这是XML的定义,你可能难以理解,只需知道它是本游戏使用的一种数据库即可。所有重要的字符串信息都以XML格式存储。除了以JSON格式存储的存档文件(如果你了解JSON,就可以轻松修改它)外,场景文件也是XML文件。 当然,社区中也有许多关于如何使用XML制作场景的指南。 什么是脚本以及如何使用脚本文件 ## 什么是脚本 脚本也是一种XML文件,其功能类似于其他游戏中的【触发器】。你可以用它来创建场景,就像官方的【成吉思汗的一生】和【三国】场景那样。 你可以发布自己的任务和奖励,通过事件动态改变你的场景。游戏开发者在【Scenario Design Examples】中留下了一个脚本示例,强烈建议你看一看,至少浏览一下。条件=“>” 值=“0”/> <条件F 属性=“预计收入” 条件=“<” 值=“-20”/> <条件S 属性=“建筑名称” 条件=“=” 值=“集市”/> <条件F 属性=“人口” 条件=“<” 值=“30”/> <条件F 属性=“与最近友好定居点的距离” 条件=“>” 值=“12”/> <条件B 属性=“拥有基础建筑” 条件=“=” 值=“false” 参数=“商队驿站”/> <条件B 属性=“可建造建筑” 条件=“=” 值=“true” 参数=“商队驿站”/> <条件F 属性=“商队驿站预期收入” 条件=“>” 值=“50” 参数=“商队驿站”/> <条件B 属性=“继承危机” 条件=“=” 值=“true”/> <条件B属性="StackHasCharacter" 条件="=" 值="true"/> <条件F 属性="CharacterRen" 条件=">=" 值="2"/> <条件F 属性="MaxPlayerPeasantUnrest" 条件=">=" 值="50"/> <条件F 属性="Turn" 条件="=" 参数="" 值="170"/> <条件F 属性="Turn" 条件=">=" 参数="" 值="50"/> <条件B 属性="MissionID" 条件="=" 参数="Help Kong Rong" 值="true"/> <条件B 属性="MissionCompleted" 条件="=" 参数="Help Tao Qian" 值="true"/> 动作集集合 <激活储备角色 派系ID="Chu" 名="项" 姓="羽" X="-1" Y="-1"/> <外交 协议="BecomeVassal" 派系ID="Khitans" 目标="Khamag Mongols"/><接管势力 势力ID="陶谦" 新控制者="刘备"/> <添加单位 势力ID="刘备" 单位ID="3K民兵轻矛兵L1" X="114" Y="87"/> <接管首都 势力ID="董卓" 新控制者="吕布"/> <杀死角色 势力="吕布" 名="Lu2" 姓="布"/> <提示 标题="通用战役介绍标题" 文本="刘表战役介绍文本" 列表名称="通用战役介绍标题"/> <外交 协议="战争" 势力ID="吕布" 目标="董卓"/> <添加资金 数量="1000"/> <颁布政令 势力ID="董卓" 政令="放弃洛阳"/> <创建定居点 名称="Burkan Kaldun" X="239" Y="88"/> <改变领袖权威 数量="3"/> <设置王室领地 数量="250"/> <新领袖消息 名="Jelme" 文本="LGK事件Jelme"<添加领袖 名字="哲别" 姓氏="" 年龄="22岁" 气="1" 仁="1" 领袖="否" 继承人="否" 肖像名称="57" 肖像组="Chinese" X="238" Y="88"/> <更改派系规则 派系ID="Tatars" 基础类型="AIFrozen"/> <设置能力 派系ID="Zhou" 能力="文化" 等级="15"/> <场景消息 标题="称帝" 文本="" 列表名称="称帝" 图片="C: Program Files script SelfEmperor.png"/> 并非所有能力都能通过【设置能力】正确添加。例如,【传国玉玺】和【傀儡皇帝】会直接为你当前的权威值增加权威。但【权威】和【文化】能力会强制“设置”为你指定的值。如果你将【文化】能力设为25,那么你的文化点数将锁定为25。根据我的测试,农民/贵族相关的派系能力没什么用处。因此在我自制的【长平之战】剧本中,我使用【ChangeLeaderAuthority】来实现强制叛乱。其他能力大多是有用的,但它们都不会显示在你的派系实力总览中,你只能从实际效果中感受到它们的存在。例如成吉思汗派系介绍中的效果:<FactionScript FactionID="Khamag Mongols"><!无法识别内容,已删除。对于ScenarioMsg、Hint或其他对话框中的文本,只需将这些字符串替换为你想要显示的内容。无需像官方方式那样使用引用。## 如何使用脚本文件 目前这是个问题。 因为所有官方剧本的脚本都指向游戏内部文件。因此我在我的剧本【长平之战】中使用了绝对路径。这是一个复杂且不美观的解决方案。或许有人能告诉我一个更优雅的方法。 脚本格式 - 脚本文件的根元素是<Script> - 每个派系都有自己的脚本,但似乎只有玩家能触发事件。每个派系以<FactionScript FactionID="派系ID">开头 - 事件元素是派系脚本的子元素,也是脚本文件的基本组成部分。一个典型的事件元素由<Trigger>子元素和<ActionSet>组成。事件具有“ID”属性。触发器具有【时间】属性,该属性指示何时检查条件,以及一个仅在提示脚本(教程)中出现的【名称】属性。动作集具有【一次性】属性,但并非必需。 触发器的主要组件是<条件>元素。以下是我收集的条件示例。关于值“<”,我认为它表示从上次计算开始计数,但尚未测试。 典型的脚本文件如下(来自我的场景示例): <?xml version="1.0" encoding="utf-8"?> <Script xmlns="OrientalEmpires" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="OrientalEmpires Scripting.<派系脚本 派系ID="赵"> <事件 ID="赵国信息"> <触发 时间="回合开始"> </触发> <行动集> <场景消息 标题="赵国" 文本="这个剧本的另一个主角 赵国作为有游牧成分的国家,拥有畜牧能力,但是没有改变兵种,不能在草原上征兆士兵 长平之战剧本,长平战后求援任务 隐藏人物:李牧,庞煖 任务人物:魏无忌 派系特性: 作为融合了部分游牧文化的国家,赵国能够进行畜牧。 长平之战任务。只有在此之后,你才能使用外交功能。"若在长平战败则触发增援任务 储备角色:李牧、庞媛 任务限定角色:魏无忌 【国家特性说明】 【测试选择】 有一天,你突然从梦中惊醒,发现自己穿越到了千年以前的战国,这时,你会 A. 权限狗(测试场景功能)去往目标开启 B. 改变历史触发器的部分属性值和条件集合 以下是我认为可能有用的部分触发器属性值。名称="开放己方定居点" 时间="任务失败" 时间="回合开始" 时间="场景开始" 时间="消息关闭" 名称="建筑已选中" 条件:<条件B 属性="任务结束" 条件="=" 参数="孛儿帖被掳走" 值="true"/> <条件B 属性="事件已触发" 条件="=" 参数="曹操父亲遇害" 值="true"/> <条件B 属性="处于战争状态" 条件="=" 参数="曹操:陶谦" 值="true"/> <条件B 属性="势力已颁布政令" 条件="=" 参数="董卓:放弃洛阳" 值="true"/> <条件B 属性="已与之交战" 条件="=" 参数="女真金" 值="true"/> <条件B 属性="AI玩家" 条件="=" 参数="陶:谦" 值="true"/> <条件B 属性="势力仍然存在"条件="=" 参数="陶谦" 值="true"/> <条件B 属性="角色存活" 条件="=" 参数="曹操" 值="true"/> <条件B 属性="派系上回合有战斗" 条件="=" 参数="曹操" 值="true"/> <条件B 属性="本地玩家" 条件="=" 参数="孙坚" 值="false"/> <条件F2 属性="粮食产量" 条件="<" 属性2="人口"/> <条件B 属性="农田曾被劫掠" 条件="=" 值="true"/> <条件B 属性="定居点有矿场" 条件="=" 值="false"/> <条件B 属性="定居点可建造矿场" 条件="=" 值="true"/> <条件F 属性="农民不满度" 条件=">" 值="50"/> <条件F 属性="定居点数量"条件= "<" 值= "4"/> <条件 属性="季节" 条件="=" 值="冬季"/> <条件 属性="气候导致损耗" 条件="=" 值="true"/> <条件 属性="已颁布诏令数量" 条件="=" 值="0"/> <条件 属性="派系" 条件="=" 值="商"/> <条件 属性="使用王室宫廷" 条件="=" 值="true"/> <条件 属性="宫廷不满度" 条件=">" 值="10"/> <条件 属性="角色气血" 条件=">" 值="0"/> <条件 属性="玩家有战斗报告消息" 条件="=" 值="true"/> <条件 属性="国库" 条件="<" 值="1000"/> 在1000-0之间 <条件 属性="国库"

年轻的可汗事件: <事件 ID="Young Khan"> <触发 时间="StartTurn"> <条件B 属性="MissionOver" 条件="=" 参数="Borte Abducted" 值="true"/> <条件F 属性="NumSettlements" 条件=">=" 值="6"/> </触发> <行动集 仅触发一次="true" 最小激活次数="2"> <改变领袖权威 数值="2"/> <增加金钱 数值="1500"/> <设置王室地产 数值="250"/> <场景消息 标题="LGK Young Khan Title" 文本="LGK Young Khan Text" 列表名称="LGK Young Khan Title" 图片="Genghis/Eventpics/event_Messenger"/> </行动集> </事件>

<事件 ID="Z_T_Emperor"> <触发 时间="回合开始"> <条件B 属性="已控制城市" 条件="=" 参数="51:76:赵" 值="true"/><!--长安--> <条件B 属性="已控制城市" 条件="=" 参数="83:108:赵" 值="true"/><!--邯郸--> <条件B 属性="已控制城市" 条件="=" 参数="91:77:赵" 值="true"/><!--陈--> <条件B 属性="已控制城市" 条件="=" 参数="100:106:赵" 值="true"/><!--临淄--> <条件B 属性="已控制城市" 条件="=" 参数="94:134:赵" 值="true"/><!--<!--蓟--> <ConditionB Property="城市控制" Condition="=" Parameter="85:80:赵" Value="true"/> <!--郑--> <ConditionB Property="城市控制" Condition="=" Parameter="88:87:赵" Value="true"/>--大梁--> <条件B 属性="派系是否存在" 条件="=" 参数="秦" 值="false"/> <条件B 属性="派系是否存在" 条件="=" 参数="楚" 值="false"/> <条件B 属性="派系是否存在" 条件="=" 参数="魏" 值="false"/> <条件B 属性="派系是否存在" 条件="=" 参数="韩" 值="false"/> <条件B 属性="派系是否存在" 条件="=" 参数="燕" 值="false"/> <条件B 属性="派系是否存在" 条件="=" 参数="齐" 值="false"/> </触发器> <行动集 仅执行一次="true" > <更改领袖权威 数值="5"/> <颁布法令 派系ID="赵" 法令="免税"/> <颁布法令 派系ID="赵" 法令="信仰自由"/><IssueEdict FactionID="Zhao" Edict="【驿使制度】"/> <ScenarioMsg Title="赵国统一" Text="赵国,这个从三晋分裂出来的国家,最终统一了中原大地,成为了中国真正的皇帝。那么,之后的事情会如何发展呢,中国的路又将会走向何方呢?谁也不知道。总之,恭喜统一" ListName="赵国统一" Image="C: Program Files script unify.png"/> </ActionSet>

测试你的脚本文件及可能出现的问题与解决方法 ## 测试你的脚本文件 你可以使用“TriggerScriptEvent”和“TestEvent”命令来检查脚本是否正常运行。 “TriggerScriptEvent”会立即触发事件,而“TestEvent”会告诉你事件条件是否满足或是否存在语法问题。如果控制台提示找不到该事件,请不必担心,因为控制台本身存在很多问题。 ## 可能出现的问题与解决方法 - 如果你打开场景编辑器,只显示领土格子,而没有显示任何单位和定居点。这很可能是因为场景XML文件中存在重复元素,但有时加载存档时也会遇到此问题,只需点击下一回合即可解决。- 诸如“接管势力”之类的脚本有时会产生一些副作用,可能导致你的电脑变慢,甚至……让你的势力领袖在一回合内退位,使你的势力陷入无领袖状态。不要过于频繁地使用这类脚本。 只能通过XML文件实现的操作 更改将领的卫队、修改剧本规则、将城市转让给其他势力、反转角色、变更首都、在无法建造的地形上放置物体等操作,都只能通过修改或添加XML文件来实现。 或许你已经厌倦了将领被赎金的问题,他们的卫队数量太少,虽然勇猛但无法抵御任何常规部队。那么,打开你的剧本XML文件,找到你的将领,然后更改其卫队单位,只需将单位ID替换成你想要的任何单位即可。例如: 战国时期典型的中国护卫是<单位类型="战国重战车护卫">,你可以将其更改为<护卫单位="IC Guard Spearmen L1"/>。 IC Guard Spearmen是一个完美的单位。唯一的缺点可能是速度,但速度慢也能防止AI将其君主推向边境。因此,在游戏后期你更有可能看到有名有姓的角色。由于此效果是永久性的,且单位不会在将领死亡后消失,并且在你赎回将领后,他不会改变护卫类型,你可以利用这一点来生成一些正常情况下无法生产的单位。 转移城市只需将城市信息片段剪切并粘贴到另一个自定义派系下。由于场景文件不会记录地图细节,因此只需在XML文件中修改某个对象的坐标,就能将任意对象放置在任意地形上。实际上还有另一种方法:保存地图文件的副本,在游戏的场景编辑器中更改地形并放置对象,然后用新地图替换旧地图。 关于如何修改场景规则或反转角色,有许多指南可供参考,在此不再赘述。 一些隐藏单位。【测试单位ID】 步兵测试模板(可能导致游戏无响应) 动物测试模板(部分牛,无武器,无攻击) 战车测试模板 骑兵测试模板(剑骑兵,但模型未更改) 装甲骑兵测试模板(剑骑兵) 运输车测试模板(仅为运输车) artillery测试模板(可能导致游戏无响应) 舰船测试模板 【其他】 IC Army 斩马刀 L1(无DLC的常规斩马刀部队) 【建筑】 战车工坊(增加三个常规骑兵,需马厩才能运作) 注:使用这些ID替换原始ID,操作方式与替换近卫军相同。
2026-03-19 19:00:17 发布在
Oriental Empires
说点好听的...
收藏
0
0
