骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 3754|回复: 6

[功能与代码] 自动批量给物品设置阵营,再也不用一个个设置了

[复制链接]

21

主题

77

回帖

334

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
3154436
第纳尔
1403
精华
1
互助
13
荣誉
14
贡献
10
魅力
129
注册时间
2020-4-2

霸主正版勋章

鲜花(39) 鸡蛋(0)
发表于 2024-8-6 02:34:03 | 显示全部楼层 |阅读模式
本帖最后由 我只玩MID 于 2024-8-6 16:39 编辑

大家或许都遇到过这么一个问题:就是给mod添加大量的装备物品,但刚开始没有给他们设置阵营,以至于无论哪个阵营的城镇商人出都会刷新这些物品,但突然有一天,想让这一大堆物品成为某个阵营专属,只有该阵营商人处可以刷新,就会让人很头疼。相信没有人愿意再一个个去查看一个个去设置,所以这个帖子就带大家打开思路,了解一下利用最基础的python批量完成这一繁琐的操作
其实只是一个很简单的python函数,但是我觉得思路还行,可以有更多的扩展。所以发出来让大家讨论讨论。

原理就是循环所有的兵种,看兵种是否装备了这些物品,然后将物品分配给这些兵种的所属阵营。
第一步:咱们需要在module_items.py文件里的头部添加两行:
  1. from ID_factions import *
  2. from module_troops import *
复制代码
(或许在这之前就已经加了,那么忽略这一步)
第二步:还是在module_items.py文件里,在最后,]的后面,添加一个函数:
  1. def items_set_faction():
  2.     for index, item in enumerate(items):
  3.         temp_troop_item_fac = []
  4.         for troop_index, troop in enumerate(troops):
  5.             if not trp_npc1 <= troop_index < trp_knight_1_1_wife and index in troop[7] and not troop[6] in temp_troop_item_fac and fac_kingdom_1 <= troop[6] < fac_kingdoms_end:
  6.                 temp_troop_item_fac.append(troop[6])
  7.                 # print("id",item[0],temp_troop_item_fac)
  8.         if not temp_troop_item_fac: # no troop del:set fac_no_faction
  9.             temp_troop_item_fac = [fac_no_faction]
  10.         
  11.         if len(item) >= 9:
  12.             item.append(0)
  13.         else:
  14.             for i in range(10):
  15.                 item.append(0)
  16.             item[8] = []
  17.         item = item[:10]
  18.                
  19.         item[9] = list(set(temp_troop_item_fac))
  20.         items[index] = item
复制代码
最后一步:打开process_items.py文件,然后找到“write_items”这个函数,在这个函数里面第一行添加:
  1. items_set_faction()
复制代码

5f0aa68e75ce646e3041b5216c33f78c (1).png
添加好后,编译一次源代码就可以实现这个效果了。
注意格式。
需要注意的是,我将没有任何兵种持有的物品分配给了“无阵营”,这意味着他不会在商人处刷新。不想要这个效果可以自行删掉相关代码

当然,这个函数写的并不好,肯定有更效率的写法,但终归只是提供一个思路,在mod制作中,去结合python的东西会让mod有更多可能。




鲜花鸡蛋

快乐风猫  在2024-9-17 00:35  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

21

主题

77

回帖

334

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
3154436
第纳尔
1403
精华
1
互助
13
荣誉
14
贡献
10
魅力
129
注册时间
2020-4-2

霸主正版勋章

鲜花(39) 鸡蛋(0)
 楼主| 发表于 2024-8-6 02:36:54 | 显示全部楼层
本帖最后由 我只玩MID 于 2024-8-6 09:24 编辑

还有想问问大伙。应该把这个函数移到哪个文件里才能让他只执行一次,写在module_items.py文件里似乎会执行很多次,拖慢了编译时间,但是我对整个源代码的结构没有太了解,所以就这么简单粗暴了。
已解决

0

主题

6

回帖

2

积分

平民

Rank: 1

UID
3125933
第纳尔
91
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2020-1-3
鲜花(0) 鸡蛋(0)
发表于 2024-9-15 23:35:13 | 显示全部楼层
大佬,请问一下这个mod目前最新版就是0.543吗

18

主题

1446

回帖

509

积分

皇家侍卫长[官方战队队长]

光辉骑士团[UTD]
战团ID:UTD_awe23

Rank: 6Rank: 6

UID
2102975
第纳尔
7289
精华
0
互助
10
荣誉
2
贡献
0
魅力
73
注册时间
2014-8-1

2024国庆青训杯季军勋章第二届梦幻联赛奉献勋章第十一届战团中国联赛征战勋章第十一届战团中国联赛铁骨勋章第一届梦幻联赛参与勋章第十届战团中国联赛征战勋章战团正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]元老骑士勋章霸主正版勋章

鲜花(77) 鸡蛋(2)
发表于 2024-9-16 20:56:54 | 显示全部楼层
可以考虑换一下遍历次序。首先遍历troops,对每个troop遍历它们的物品栏然后改变每个item能出现的阵营,这样可以减少迭代的次数

鲜花鸡蛋

我只玩MID  在2024-10-6 09:29  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

0

主题

1

回帖

5

积分

平民

Rank: 1

UID
3371651
第纳尔
32
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2022-6-20
鲜花(0) 鸡蛋(0)
发表于 2024-11-1 22:31:53 | 显示全部楼层
西基特克的mod还在更吗?等了四五年了

21

主题

77

回帖

334

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
3154436
第纳尔
1403
精华
1
互助
13
荣誉
14
贡献
10
魅力
129
注册时间
2020-4-2

霸主正版勋章

鲜花(39) 鸡蛋(0)
 楼主| 发表于 2024-11-2 06:36:24 | 显示全部楼层
思绪小领主 发表于 2024-11-1 22:31
西基特克的mod还在更吗?等了四五年了

在重制,最近几个月会有消息

21

主题

77

回帖

334

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
3154436
第纳尔
1403
精华
1
互助
13
荣誉
14
贡献
10
魅力
129
注册时间
2020-4-2

霸主正版勋章

鲜花(39) 鸡蛋(0)
 楼主| 发表于 2024-11-2 06:36:39 | 显示全部楼层
基佬秘汤 发表于 2024-9-15 23:35
大佬,请问一下这个mod目前最新版就是0.543吗

您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-11-19 06:44 , Processed in 0.124652 second(s), 26 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表