- 好友
- 0
- 在线时间
- 0 小时
- 最后登录
- 2025-9-9
平民

- UID
- 3585170
- 第纳尔
- 0
- 精华
- 0
- 互助
- 1
- 荣誉
- 0
- 贡献
- 0
- 魅力
- 0
- 注册时间
- 2023-11-27
 鲜花( 0)  鸡蛋( 0)
|
本帖最后由 明泽~ 于 2025-9-9 12:06 编辑
法亚的射手只标配一袋弹药,给多袋弹药时,往往有相当一部分士兵没带够,这个问题在战团原版和其他mod也有,对射手远程持续输出有很大影响,而且法亚的训练费用、时间及维护费都会受到装备的影响,士兵没有带这个装备但却要出这个装备的钱,我觉得还是要优化一下。
需要用到的文件有两个,scripts和mission_templates(全写在mission_templates也可以,但我习惯写在scripts,然后在mission_templates调用出来)。
scripts部分
py形式
("ensure_troops_carry_ample_ammo",
[
(store_script_param_1, ":var_0"),
(agent_get_troop_id, ":var_1", ":var_0"),
(try_begin),
(troop_get_inventory_capacity, ":var_2", ":var_1"), #获取兵种物品栏容量
(try_for_range, ":var_3", 0, ":var_2"),
(troop_get_inventory_slot, ":var_4", ":var_1", ":var_3"), #获取兵种物品栏槽上的物品id
(gt, ":var_4", 0),
(item_get_type, ":var_5", ":var_4"), #判断物品类型:弓箭5弩矢6,弓8弩9,手枪16步枪17,子弹18
(try_begin),
(eq, ":var_5", 8), #弓
(agent_has_item_equipped, ":var_0", ":var_4"), #到这里作用是检测单位有没有装备类型8即弓类武器
(assign, ":var_6", ":var_2"),
(try_for_range, ":var_7", 0, ":var_6"),
(troop_get_inventory_slot, ":var_8", ":var_1", ":var_7"),
(gt, ":var_8", 0),
(item_get_type, ":var_9", ":var_8"),
(eq, ":var_9", 5), #到这里检测单位对应兵种的所有种类的弓箭
(try_begin),
(neg|agent_has_item_equipped, ":var_0", ":var_8"),
(try_for_range, ":var_10", 1, 5),
(agent_equip_item, ":var_0", ":var_8", ":var_11"), #到这里是若单位少了某种箭,为他装备上,agent_equip_item只对空的武器槽生效,已有装备不会被顶替
(try_end), #保证兵种带全所有种类的弓箭,前提是有空的武器槽
(try_end),
(try_begin),
(agent_has_item_equipped, ":var_0", ":var_8"),
(store_item_kind_count, ":var_12", ":var_8", ":var_1"), #储存相同种类的箭的数量
(gt, ":var_12", 1),
(try_for_range, ":var_11", 1, 5),
(agent_equip_item, ":var_0", ":var_8", ":var_11"), #某种箭的数量大于一,为单位装备这种箭
(try_end), #适用于两袋、三袋相同弓箭,或者两袋相同一袋不同。只写了弓,弩,火枪的代码,投掷没写。参照我的写法,若带四袋投掷且种类是AABB,可能会出问题
(try_end),
(try_end),
(else_try),
(eq, ":var_5", 9), #弩
(agent_has_item_equipped, ":var_0", ":var_4"),
(assign, ":var_6", ":var_2"),
(try_for_range, ":var_7", 0, ":var_6"),
(troop_get_inventory_slot, ":var_8", ":var_1", ":var_7"),
(gt, ":var_8", 0),
(item_get_type, ":var_9", ":var_8"),
(eq, ":var_9", 6), #弩矢
(try_begin),
(neg|agent_has_item_equipped, ":var_0", ":var_8"),
(try_for_range, ":var_10", 1, 5),
(agent_equip_item, ":var_0", ":var_8", ":var_11"),
(try_end),
(try_end),
(try_begin),
(agent_has_item_equipped, ":var_0", ":var_8"),
(store_item_kind_count, ":var_12", ":var_8", ":var_1"),
(gt, ":var_12", 1),
(try_for_range, ":var_11", 1, 5),
(agent_equip_item, ":var_0", ":var_8", ":var_11"),
(try_end),
(try_end),
(try_end),
(else_try),
(this_or_next|eq, ":var_5", 16), #手枪
(eq, ":var_5", 17), #步枪
(agent_has_item_equipped, ":var_0", ":var_4"),
(assign, ":var_6", ":var_2"),
(try_for_range, ":var_7", 0, ":var_6"),
(troop_get_inventory_slot, ":var_8", ":var_1", ":var_7"),
(gt, ":var_8", 0),
(item_get_type, ":var_9", ":var_8"),
(eq, ":var_9", 18), #子弹
(try_begin),
(neg|agent_has_item_equipped, ":var_0", ":var_8"),
(try_for_range, ":var_10", 1, 5),
(agent_equip_item, ":var_0", ":var_8", ":var_11"),
(try_end),
(try_end),
(try_begin),
(agent_has_item_equipped, ":var_0", ":var_8"),
(store_item_kind_count, ":var_12", ":var_8", ":var_1"),
(gt, ":var_12", 1),
(try_for_range, ":var_11", 1, 5),
(agent_equip_item, ":var_0", ":var_8", ":var_11"),
(try_end),
(try_end),
(try_end),
(try_end),
(try_end),
(try_end),
]),
txt形式
ensure_troops_carry_ample_ammo -1
84 21 1 1224979098644774912 1718 2 1224979098644774913 1224979098644774912 4 0 1540 2 1224979098644774914 1224979098644774913 6 3 1224979098644774915 0 1224979098644774914 1541 3 1224979098644774916 1224979098644774913 1224979098644774915 32 2 1224979098644774916 0 1570 2 1224979098644774917 1224979098644774916 4 0 31 2 1224979098644774917 8 1729 2 1224979098644774912 1224979098644774916 2133 2 1224979098644774918 1224979098644774914 6 3 1224979098644774919 0 1224979098644774918 1541 3 1224979098644774920 1224979098644774913 1224979098644774919 32 2 1224979098644774920 0 1570 2 1224979098644774921 1224979098644774920 31 2 1224979098644774921 5 4 0 2147485377 2 1224979098644774912 1224979098644774920 6 3 1224979098644774922 1 5 1779 3 1224979098644774912 1224979098644774920 1224979098644774923 3 0 3 0 4 0 1729 2 1224979098644774912 1224979098644774920 2165 3 1224979098644774924 1224979098644774920 1224979098644774913 32 2 1224979098644774924 1 6 3 1224979098644774923 1 5 1779 3 1224979098644774912 1224979098644774920 1224979098644774923 3 0 3 0 3 0 5 0 31 2 1224979098644774917 9 1729 2 1224979098644774912 1224979098644774916 2133 2 1224979098644774918 1224979098644774914 6 3 1224979098644774919 0 1224979098644774918 1541 3 1224979098644774920 1224979098644774913 1224979098644774919 32 2 1224979098644774920 0 1570 2 1224979098644774921 1224979098644774920 31 2 1224979098644774921 6 4 0 2147485377 2 1224979098644774912 1224979098644774920 6 3 1224979098644774922 1 5 1779 3 1224979098644774912 1224979098644774920 1224979098644774923 3 0 3 0 4 0 1729 2 1224979098644774912 1224979098644774920 2165 3 1224979098644774924 1224979098644774920 1224979098644774913 32 2 1224979098644774924 1 6 3 1224979098644774923 1 5 1779 3 1224979098644774912 1224979098644774920 1224979098644774923 3 0 3 0 3 0 5 0 1073741855 2 1224979098644774917 16 31 2 1224979098644774917 17 1729 2 1224979098644774912 1224979098644774916 2133 2 1224979098644774918 1224979098644774914 6 3 1224979098644774919 0 1224979098644774918 1541 3 1224979098644774920 1224979098644774913 1224979098644774919 32 2 1224979098644774920 0 1570 2 1224979098644774921 1224979098644774920 31 2 1224979098644774921 18 4 0 2147485377 2 1224979098644774912 1224979098644774920 6 3 1224979098644774922 1 5 1779 3 1224979098644774912 1224979098644774920 1224979098644774923 3 0 3 0 4 0 1729 2 1224979098644774912 1224979098644774920 2165 3 1224979098644774924 1224979098644774920 1224979098644774913 32 2 1224979098644774924 1 6 3 1224979098644774923 1 5 1779 3 1224979098644774912 1224979098644774920 1224979098644774923 3 0 3 0 3 0 3 0 3 0 3 0
mission_templates部分
有多种场景,法亚的话可以检索特质黑暗圣典或者万夫之力,这些特质出现的场景一般是战斗场景,每个战斗场景都要加代码,其他mod可能要花费点时间分辨
py形式
(ti_on_agent_spawn, 0.000000, 0.000000,
[
],
[
(store_trigger_param_1, ":var_0"),
(call_script, "script_ensure_troops_carry_ample_ammo", ":var_0"),
]),
txt形式
-25.000000 0.000000 0.000000 0 2 2071 1 1224979098644774912 1 2 93674872249306xxxx 1224979098644774912
#93674872249306xxxx,936748722493063168是法亚第一个脚本,你把新脚本加在哪个位置,是第几个脚本,做一下加减就知道xxxx是多少了。或者先写好scripts保存一下,用MBCodeEditor把py转成txt
建议功能主体写在scripts里,需要的时候再调用这个脚本出来,mission_template不需要在很多地方都加这么一大段,而且后续修改代码只需要改script里的一段就行
代码只写了弓弩火枪,投掷没写,之后有人需要再补,理论上也适用其他mod,但还是建议多检验几遍。
感谢法亚史诗二次元拓展版作者篝酱帮忙指导,放一下法亚三群群号,1031598199,欢迎来玩
|
|