同人展馆

2.创建拓展包与新武将#

2.3. 创建武将#

创建新武将的话,首先也是要先想好武将的名字。

但是这件事情就简单多了,一般来说都是用TA的姓名的汉语拼音直接作为名字的。

例如曹操就是caocao,司马懿就是simayi,

当然,英文人物也可以用英文名,如某位凯撒大哥就是caesar。

看起来武将的名字比扩展包的名字好写,但其实不然。

要知道,在新月杀诞生的时候,别说界限突破了,谋攻篇都出来了,到了现在(2024年),同名武将多到可以凑个军五甚至军八……

所以对于这些同名武将,新月杀提供了一种方法来自动识别——

当你注册一个名字格式为XXXX__YYYY(这里是双下划线,如mou__caocao)的新武将时,系统会自动将这个名字沿中间切成两半:其中右边的YYYY是“武将真名”trueName,而左边的XXXX则是这个武将的特有标示,也就是“武将包名”,或称前缀。

如果两个武将拥有同样的“武将真名”,那么这两个武将就是同名武将,

例如ex__caocao和mou__caocao的“武将真名”都是caocao,那么这两个武将就是同名武将。

按照传统,我们也该写个学习包专属的孙悟空的,但是……十周年和欢乐杀已经有孙悟空了(悲),所以在命名上我们也该规矩一点……

意味着学习包的孙悟空名字最好改成st__sunwukong了,

这里前缀取的是"st",study嘛。在你自己的拓展包中,根据情况选定合适的前缀吧。

具体代码就是local sunwukong = General:new(extension, "st__sunwukong", "god", 5),

之后你的xuexi/init.lua看起来就像这样:

重要

要注意把 return extension 留在文档末尾,以下我们的操作都要在这一行 return extension 之前完成!

1local extension = Package:new("xuexi")

2extension.extensionName = "study"

3extension:loadSkillSkelsByPath("./packages/study/pkg/xuexi/skills")

4Fk:loadTranslationTable{

5 ["xuexi"] = "学习",

6}

7

8local sunwukong = General:new(extension, "st__sunwukong", "god", 5)

9

10return extension

创建武将本质上是创建一个“武将对象”,为此,让我们看向武将对象的构造函数:

--- 构造函数,不可随意调用。

---@param package Package @ 武将所属包

---@param name string @ 武将名字

---@param kingdom string @ 武将所属势力

---@param hp integer @ 武将初始体力

---@param maxHp integer @ 武将初始最大体力

---@param gender Gender @ 武将性别

function General:initialize(package, name, kingdom, hp, maxHp, gender)

各参数的作用见上方,这里详细解释一下:

package是该武将所属的扩展包,鉴于第一行已经定义了一个extension,我们就用它了。

name是这个武将的名字,就用刚才起的名字"st__sunwukong"吧"孙悟空"是中文翻译的显示名称,而"st__sunwukong"是武将的代码名称,在所有扩展包中武将的代码名称必须是唯一的。

kingdom是这个武将所属的势力,按照传统,我们填个"god",也就是神势力。

hp和maxHp分别代表体力值和体力上限,maxHp默认与hp一致,而hp默认为4。

gender就是武将性别,默认为General.Male(男性)。

以上代码就往学习包里塞了一位名为“st__sunwukong”的5血5上限神势力男性武将~

至此武将的创建就完成了!但是如果我们现在进入游戏的话,他会显示为英文……那就用Fk:loadTranslationTable补一下翻译吧:

1Fk:loadTranslationTable{

2 ["xuexi"] = "学习",

3 ["st"] = "学",

4}

5

6local sunwukong = General:new(extension, "st__sunwukong", "god", 5)

7Fk:loadTranslationTable{

8 ["st__sunwukong"] = "孙悟空",

9 ["#st__sunwukong"] = "齐天大圣",

10 ["designer:st__sunwukong"] = "设计者",

11 ["cv:st__sunwukong"] = "配音演员",

12 ["illustrator:st__sunwukong"] = "画师",

13}

翻译表其实是个很纯粹的东西,你输入特定的字符串,就会根据翻译表输出对应的翻译字符。

以下是武将信息里除了武将名以外的其他信息:

"#武将名"是武将的称号,理论上要多长就有多长,不过考虑到实际显示,建议限制在7个字以内。

"designer:武将名"是武将的设计者,默认为“官方”。

"cv:武将名"是武将的配音演员,默认为“官方”。

"illustrator:武将名"是武将的画师,默认为“官方”。

这些在进入游戏后的武将一览都能看到。

保存一下,到游戏里看看我们的孙悟空吧。打开武将一览->学习包:

我们刚刚创建的悟空在此#

这里可以看见,我们命名的代码名称为st__sunwukong,我们可以拆分一下为"st"+"__"+"sunwukong",

其中"st"是我们刚才在翻译表中添加的前缀,这个会显示在武将的右下角作为角标【学】

"__"作为连接的字符串,是用来检测角标和武将真名的

新月杀会把武将的代码名称中,检测到的第一个"__"双下划线作为连接字符,连接字符前面的就是武将角标,后面的就是武将真名。

"sunwukong"就是我们刚才定义的武将真名。

好了,赶紧拿着你新写的这位武将去单挑吧!

PS:五体力白板孙悟空的单挑能力还是不弱的呢。^_^

Copyright © 2088 承德书写游戏活动中心 - 剧情创作专属天地 All Rights Reserved.
友情链接