- 好友
- 0
- 在线时间
- 134 小时
- 最后登录
- 2024-8-29
见习骑士
- UID
- 1411320
- 第纳尔
- 670
- 精华
- 0
- 互助
- 5
- 荣誉
- 2
- 贡献
- 0
- 魅力
- 23
- 注册时间
- 2013-6-13
鲜花( 9) 鸡蛋( 0)
|
本帖最后由 秦雨子瀾 于 2022-6-15 22:45 编辑
见到的 MOD 基本不开源,也许大佬们都这么做了,,也许大佬们不屑于做, 但这里作为萌新小白,给同为萌新的 modder / 自改党一点实用小建议~ 其一就是!文件拆分。
大多 mod 本质就是好玩的功能(各种functions/triggers) 辅以丰富的外在(各种新items, 头发甚至种族等),功能先不说,近千的物品写在一个文件可真够可怕。如果你代码风格好一点,会像这样清晰的写每一个物品:
[
"zhuque_sword_cavalry_imperial",
"Template_Melee",
[
("sword_medieval_a", 0),
("sword_medieval_a_scabbard", ixmesh_carry)
],
# 类型:
itp_type_one_handed_wpn
# 特性:
|itp_unique
|itp_primary
|itp_can_penetrate_shield
|itp_bonus_against_shield
|itp_crush_through
,
# 动作:
itc_sword_oriental
|itcf_carry_sword_left_hip
|itcf_show_holster_when_drawn,
# 价格:
2100,
# 难度:
difficulty(0)
# 属性:
|weight(1.00)
|spd_rtng(91)
|weapon_length(122)
# 伤害:
|swing_damage(31, pierce)
|thrust_damage(43, pierce),
# 可用前缀:
imodbits_sword_high
]
那就更可怕了。所以,以下用 module_items.py 示例文件拆分。
0. 拆分的本质
我们的 module_items.py 核心结构,其实就是:items = [
a,
b,
c..
item_end
]
这样的列表。
那只要我们改成:
items = [
a,
b,
c..
] + 我自建的物品库A + 我自建的物品库B.. + [ item_end ]
然后把自己的物品库放在不同文件不就行了吗~
试了一下,可行,给纯小白说一下具体步骤,用领军者的代码示范(因为只有他开源啦)。我用的 VSCode 其它应该也差不多。
1. 步骤1 - 把 imodbits_xxxxx 这些行丢进 header_item_modifiers.py
从原本的 module_items.py 文件中,找到前面imodbits_none = 0
....
imodbits_bad = imodbit_rusty | imodbit_chipped | imodbit_tattered | imodbit_ragged | imodbit_cracked | imodbit_bent
这一大坨系统定义的前缀组,直接剪切,粘到 header_item_modifiers.py 文件的最底下。
有些 MOD 可能还有定义别的东西,比如领军者的 missile_distance_trigger 等,用不到的话可以不管。
2. 步骤2 - 建你自己的新py文件
建议单独建一个文件夹,用来放你的自己的物品文件。
在里面,根据拆分需求创建好 .py 文件,这里示例建了 items 文件夹,里面创建了一个文件 module_items_zhuque.py 。
3. 步骤3 - 在新文件中写好你的物品列表
格式同主文件,最顶上复制过来主文件的各种 “from xxx import xxx”
接着写一个与文件同名的大列表(比如 module_items_zhuque = [ ]),最终格式类似这样如下:from module_constants import *
from ID_factions import *
from header_items import *
from header_operations import *
from header_triggers import *
from header_troops import *
module_items_zhuque = [
# 你的物品1
# 你的物品2
# ...
]
然后你的物品就跟正常一样写里面。
注:井号行为注释说明,如果要用汉字,文件第一行需要加 #coding:utf-8
4. 步骤4 - 在 module_items.py 里面拼上这些物品
回到 module.items.py 文件,
最顶上一堆 from xxx import * 后面加一行,引用你自己的文件:
from module_items_zhuque import * 这里因为我们放在文件夹里,有些编辑器自动会去同级 items/ 文件夹找,有些会提示添加到 extPath 之类。
如果实在没有提示找不到,就把 module_items_zhuque 拿到 module_items.py 平级就行了。当然了,这里如果你不用编辑器那无所谓,因为执行时 .bat 是认的。
然后到最下面,将最后两行:
["items_end", "Items End", [("shield_round_a",0)], 0, 0, 0, 0, 0],
]
改成:] + module_items_zhuque + [
["items_end", "Items End", [("shield_round_a",0)], 0, 0, 0, 0, 0],
]
完成拼接!如果你把文件放在 module_items.py 平级,现在已经可以正常跑通 build 了,如果你创建了文件夹并且是用 build_module.bat 执行这些 python ,那还需要最后一步,添加你的新文件夹到路径。
5. 步骤5 - 添加文件夹路径
回到你的 module_items.py 的最上面,第一行,添加如下代码:
import os
import sys
sys.path.append(os.getcwd() + "\items") 这一步就是让你在使用 .bat 执行 process python 时,能够知道去找 items 文件中的内容,这里 os.getcwd() 就是获取当前绝对路径,你也可以直接写 sys.path.append("C:\xxxx\Warband\Modules\MyModule\source\items") 这样。其它遇到跨文件夹引用,明明有文件却提示 ImportError: no module named xxxx 都可以如此执行~
|
评分
-
查看全部评分
|