第一节 简单介绍san11 pk2.2脚本的概念(附府兵修改方法)

拖更了1年,终于想起了这个坑~~
简单自我介绍,三国志11 PK2.2 制作组成员之一,端茶倒水捶背揉腿的小二。
教程初步计划是9节内容,根据实际过程再调整

今天第一节,我们介绍下pk2.2里的自定义包
1 脚本文件的简单介绍
PK2.2的脚本,主要位于游戏根目录/pk2.2/script文件夹下

如上图,这些cpp为后缀的文件,就是pk2.2的脚本(可以理解为自定义包)。
主要语言是一门古老的脚本语言,叫anglescript,这里不详细讲,不增加大家的学习负担。
看一看脚本的名字



观察下脚本的命名,可以发现脚本的开头分别是:
# 代表这个脚本不读取到游戏,可以通过这样来令脚本无效
数字 代表2.2制作组编写的功能。通常也不建议玩家以开头
custom 代表自定义包,通常是一些扩展的功能。
玩家编写建议以这个开头,格式为custom 个人标识 功能描述.cpp
2 脚本的文档
没有任何人能记住全部的函数及参数,所以一个可供随时查找的文档是十分必要的。
打开游戏根目录/pk2.2/script/html, 找到index.html, 双击打开(实际可以任何一个html后缀的文件,但是index.html是总入口,能方便看到整体)
重点看下搜索栏,函数,相关页这三个入口

搜索栏:键入函数名称(函数的概念后边会扩展讲,简单理解为工具)可以快速去到函数的定义。
函数:进入函数列表,能查到绝大多数函数的定义
相关页:触发器函数,重写函数,动画等的列表
3 内置数据类型
游戏里,有非常多的数据,为了方便管理,通常会抽象为各个数据类型

比如城池,类型为city, 涉及城池的修改都是围绕此更改。
比如势力,类型为force;
比如武将,类型为person;
比如部队,类型为unit;
比如建筑,类型为building;
可以分别点进去看看
4 一句代码开始修改之路
知道类型后,可以通过类型查找对应的函数。
比如我们想要把吕布忠诚改为120,那我们打开person数据格式的文档,找下看看哪个是忠诚

找啊找,终于找到了loyalty,那只需要执行

我们来分析下这句代码
前面的「武将_吕布」是变量,变量的意思可以理解为某个对象的名字,这里是数字660的名字。
get_person是内置函数,也是接下来最高频使用的函数,作用是通过数字获取到具体武将。
loyalty是person的属性(属性的意思是数据格式设定好的值,比如人类的眼睛,眼睛就是人类的属性),所以要用.来获取跟修改。
= 等号。等号在编程里通常不表示等于,而是赋值。(等于用==)意思是将等号右边的内容赋值给左边内容。
120 数字。都懂的~~
整句代码的意思是通过get_person获取吕布的数据,通过.loyalty = 120将其忠诚改为120
至于怎么让这句代码执行,第二节,我们走进触发器的使用。
本节完。

以下是府兵的修改方法。
在script文件夹,找到051开头文件

双击,用记事本或者写字板打开(哪个不乱码用哪个)
●修改之完全关闭
ctrl + F 搜索 ACTION_COST,找到后将=后面的数字改为256



ctrl + S 保存后,重启游戏。重新开局后不会有分封行为
●限制封地出兵部队战斗力
ctrl + F 搜索 统领武将生成,这是设定生成武将五维的函数。

其中的70是五维的下限,90是五维的上限。
可以直接把70改为50, 90改为70.这样封地出征的武将,五维就限定为[50, 70]
智力的设定没有上下限,直接就是75~85,可以通过把70改小控制
ctrl + S 保存后,重启游戏。出征的部队战斗力就会弱很多
●限制封地出兵次数
封地府兵是按最低3000兵力,最高8000兵力一队出征的。
ctrl + F 搜索 func_府兵部队_生成,找到如图这个

其中最后的3就是出征次数,改为2,就是出2队(打2次)
ctrl + S 保存后,重启游戏。部队出征次数就会减少。
(真的结束了~)