- 好友
- 4
- 在线时间
- 0 小时
- 最后登录
- 2024-11-16
见习骑士
- UID
- 3199602
- 第纳尔
- 1162
- 精华
- 0
- 互助
- 36
- 荣誉
- 0
- 贡献
- 1
- 魅力
- 227
- 注册时间
- 2020-9-4
鲜花( 60) 鸡蛋( 0)
|
本帖最后由 奥杜因阿卡托什 于 2023-6-5 23:54 编辑
首先,这个帖子的代码来自https://bbs.mountblade.com.cn/fo ... 97767&highlight=rgl,效果是直接从游戏里输出某兵种装备的武器的id,复制之后简单处理一下就能直接粘贴进module_troop,再也不用在魔球或csv里一件一件检索装备了。感谢@虎皮猫大人 提供的代码,给了我很多启发。但是在那个帖子下面,也有骑友表示“逻辑有问题”。我自己试了一下,虽然感觉逻辑上的问题不是特别明显,但放进MS里一编译确实会出现各种各样的报错。不知道是什么原因,可能是我自己这边的问题,但总之我给代码稍稍调整了一下,让这段代码能在我这里,以及正常的MS上运行。效果如配图。
现在说代码,首先和原帖一样,都是string,不过加了一个输入。加在string的最前面,记得是那个string=[的外面。
- from ID_items import *
- #import item name as string
- def store_item_id():
- ofile = open("./ID_items.py","r")
- store_item_id = ofile.readlines()
- ofile.close()
- store_item_id_c = []
- i_n = 0
- for s_string in store_item_id:
- itm_str = s_string[0:s_string.find(' ')]
- store_item_id_c.append(("itm_no_"+str(i_n), itm_str))
- i_n = i_n + 1
- # print(store_item_id_c[0])
- return store_item_id_c
复制代码 刚对MS有初步了解的moder可能会奇怪,这个玩意儿的语法和一般不同。这个简单来说就是我们一般写的代码都是在MS搭好的框架下的,而这样的代码就是用来搭建框架的,决定的是数据如何被处理,并最后输出到txt里去。process和header里有很多这样的玩意,多看看可以加深对MS的理解。另外这个的格式要求是比较严格的,比如def store_item_id():不顶格写就不行。
在string末尾]之外添加
在上一段中定义的函数store_item_id(),在这里就用上了。效果是获取ID_item,把里面的内容以字符串的形式输出出来。输出出来之后的内容和string=[…………]的主体部分是同一个级别的,所以用加号连接合并。输出进txt后可以很清晰的看到,string的上半部分是正常的字符串,下面就都是整整齐齐的这些item id。
然后在script上面写
接着是个脚本
- #script_output_troop_itms_text
- ("output_troop_itms_text",
- #
- [
- (store_script_param, ":troop_no", 1),
- (display_message, "@["),
- (assign, ":str_itm_0", "str_itm_no_0"),
- (assign, ":inventory_capacity", 10),
- # (troop_get_inventory_capacity, ":inventory_capacity", ":troop_no"),
- (try_for_range, ":slot_no", 0, ":inventory_capacity"),
- (troop_get_inventory_slot, ":item_no", ":troop_no", ":slot_no"),
- (gt, ":item_no", 0),
- (store_add, ":string_no", ":str_itm_0", ":item_no"),
- (str_store_string, s1, ":string_no"),
- (display_message, "@{s1},_"),
- (try_end),
- (display_message, "@]"),
- ]),
复制代码 在我那里,MS报错的部分经检测就是脚本,原因不明,所以重写了一个。原来脚本的分类是按物品类别排序的,我觉得没太多必要就省去了。另外,不知道是不是我的问题,在我这里debug_message即使在编辑模式、开启作弊、debug模式同时启动下都无法输出,因此全部改成了一般的display,反正在编辑模式下它们也能打印到rgl里。然后因为要琢磨出装搭配的一般都是什么领主高级兵,我就只把输出范围限制在四个武器槽、四个装备槽和马匹了,如果要输出整个物品栏,把注释的那行放出来就行。
最后是menus
- ("test",
- [], "Test!",
- [
- (call_script, "script_output_troop_itms_text","trp_player"),
- ],
- ),
复制代码 我一般是加在camp_cheat后面的。
使用这个有几个注意点,第一想让其输出进rgl,必须是编辑模式。第二,本来输出的itm和后面的id之间应该有个下划线连接的,但是骑砍会自动把下划线处理成空格,这个没办法,不过只要把“itm ”一键替换成“itm_”就行了,问题也不大。第三,这个只是个脚手架性质的东西,用完之后记得屏蔽掉。几千条string还是挺占用空间的。
说个题外话,骑砍其实是有办法在给troop设置装备时,直接设置其词缀的。形如(itm_duangang_shizizhang, imod_balanced)。不过直接这么写MS肯定识别不了,详情请见领军者process_troop。
|
-
评分
-
查看全部评分
|