【冰话XS】006:XS七函数集锦&独立化那些事

☆※冰の引言※☆
之前三章对于XS的基本语法规范及其用法已经进行了全方位详尽的叙述,相信各位就算之前没有任何编程基础的,从未接触过编程的都能顺利入坑,本教程宗旨就是零门槛也能轻松学会。从本章开始,就算是XS的进阶篇了,会从XS各函数的具体功能着手,深入浅出的教你手把手写出符合实际需求的函数,将计划中设计的功能落地实现。这一章还是来看看XS中纯读取函数"七君子"和顺便唠嗑唠嗑独立化的那些事儿。准备好了吗,坐稳就出发咯喂!

☆※本节の紹介※☆


☆※xsGetGameTime()函数※☆
函数效果:读取当前时刻游戏时间并返回当前游戏时间 (以秒为单位)
函数用途:截取某时刻的游戏时间作为数据,来影响某些自制系统的效果。

☆※xsGetTime()函数※☆
函数效果:读取当前时刻游戏时间并返回当前游戏时间 - 1 (以秒为单位)
函数用途:截取某时刻的游戏时间作为数据,来影响某些自制系统的效果。(同上)

☆※xsGetMapHeight()函数※☆
函数效果:读取游戏地图尺寸数据并返回游戏地图高度 (即小地图菱形边长长度)
函数用途:读取游戏地图尺寸作为数据,来影响某些自制系统的效果。

☆※xsGetMapWidth()函数※☆
函数效果:读取游戏地图尺寸数据并返回游戏地图宽度 (即小地图菱形边长长度)
函数用途:读取游戏地图尺寸作为数据,来影响某些自制系统的效果。

☆※xsGetNumPlayers()函数※☆
函数效果:读取玩家列表数据并返回本场景中玩家人数 (不管是否存活和不区分人类AI)
函数用途:读取本场景中玩家人数作为数据,来影响某些自制系统的效果。

☆※xsGetPlayerCivilization()函数※☆
函数效果:读取游戏某个玩家的文明数据并返回该玩家的文明编号
函数用途:通过读取玩家文明数据,来影响某些自制系统或以文明为条件筛选做文明加成。

☆※xsGetPlayerInGame()函数※☆
函数效果:读取游戏某个玩家的存活状态并返回该玩家是否存活。存活返回值为1,被击败则返回值为0。
函数用途:通过读取玩家存活状态,来影响某些自制系统或以玩家是否存活为条件筛选做文明加成或相关效果。

☆※杂谈:独立化那些事儿※☆
在战役制作设计中,最烦的莫过于独立化了。何谓独立化的后果?独立化的单位无法享受正常单位的属性加成,无法进行攻防等属性升级,这对战役制作者而言,还是比较头疼的,需要采取一定措施来解决官方的这一限制问题。
纵观中外的战役制作者,目前来看国内作者对于这方面非常注意,国外作者除杰奎琳外,其余民间作者包括官方团队作者的个人作品,可能是受限于个人技术水平都对这方面比较忽视。
在战役制作过程中,独立化是避不开逃不掉的热点问题,国内的各位研究者对于这方面都有一定深度的研究,但都存在一概而论或者研究浅尝辄止的问题。正如爱丽琰这种资深作者的专栏写独立化的段落中,也存在把所有问题强行简单化,没有实事求是,分而治之地给出对应正确结论的问题。笔者秉着具体问题具体分析的原则,对独立化的相关问题谈谈自己比较全新的理解,尽量力求准确化完整化,如有纰漏疏忽,欢迎批评指正。
独立化定义:指特定某个或某种单位在经过编辑器修改操作以后,不再享受后续研发的的科技或文明加成影响,也不再受到 “修改属性” 效果或 "XS脚本调用" 的影响,这也是战役制作比较棘手的一点。

☆※独立化的触发因素:
① 非触发因素:僧侣招降、捕获盖亚单位
② 触发因素:八种效果导致
改变所有权
改变物体生命值
改变物体护甲
改变物体攻击力
改变物体图标
改变物体名字
改变物体速度
改变物体射程

☆※注意事项&规避/消除独立性
在所有效果列表中,只有绿箭头的八种效果才会触发独立化,其他诸如传送物体、改变物体的玩家名称或文明名称、改变物体姿态、治疗物体都不会导致独立化,请大家不用担心,放心使用.(ps:同玩家替换物体不会导致独立化,跨玩家替换物体会导致独立化,因为其原理是同玩家替换+改变所有权,后者会导致独立化,所以非常不建议跨玩家替换)

不受独立化影响の属性:
招降最小最大时间
转化抗性
僧侣信仰回复速率
[救赎] 效果
[拯救] 效果
[异教] 效果
[开垛口] 效果
[神权] 效果
自动消除独立化の情况:
僧侣 / 祭司拿放圣物
巨型投石机展开 / 打包
孟加拉战车切换形态(所有做形态切换的单位均适用)
村民变换工种
攻城武器种属(种属 ID 13)研究任意相关科技(操练、重装甲、攻城技师等)
规避方法:
使用 [XS脚本调用] 修改对应物体的属性(力荐!)
使用 [修改属性] 修改对应物体的属性(不推荐,局限性大,但适合做自定义兵种的批量改名)
使用上述两种办法之一后再独立化,后续加成则需消除独立化后修改对应属性再独立化
消除独立化:
方法:同玩家替换物体
注意事项: A-B-A型替换(找场景中不用的中间人精罗震怒:比如骑士→贝里沙鲁斯→骑士)强烈建议这种替换物体触发写在一个单独的触发里,需要时激活即可,毕竟使用频率较高。
对于改名物体的实用技巧:设置改名循环触发,修改物体属性后立即调用替换物体触发。

※☆冰の小结☆※
本节简要谈了谈纯读取函数"七君子"的具体功能和用法,以及简明扼要叙述了独立化的相关问题,如何产生,如何消除,如何解决此问题。下一篇章将就修改属性与XS脚本调用的爱恨纠葛做一次大盘点,到底修改属性有哪些局限性,哪些特定场合值得使用,两者优劣的大对比,敬请期待。
欲知后事如何,请听下回分解


