本帖最后由 我只玩MID 于 2022-3-14 18:03 编辑
在mod制作的过程中,总是遇到一个麻烦的问题。
那就是各个据点位置固定后再想修改(微调)某个据点的坐标,就需要先打开游戏按住ctrl+e来确认新坐标,再汉化文件里找到这个据点,然后复制他的代码再在module_parties文件里修改他的具体坐标,一个很简单的修改过程却很麻烦。
于是我就再想能不能让所有的据点都可以在游戏中进行调整,然后统一输出代码,再复制粘贴?(不知各位前辈是否有类似的方法,但我目前没有找到相关帖子)
经过了半个小时的构思与实验,终于我做出来了。
视频演示:https://www.bilibili.com/video/BV1UP4y1M7NR
第一步:在module_game_menus文件里的扎营界面中添加一个新的选择项:(搜索"camp_action_1",在这上面添加以下代码)
- ("c2",[],"获得所有城镇的地址代码",[
-
- (try_for_range, ":town_no", towns_begin, towns_end),
- (store_sub, reg1, ":town_no", towns_begin),
- (val_add, reg1, 1),
- (party_get_position, pos1, ":town_no"),
- (position_get_x, reg2, pos1),
- (store_div, reg4, reg2, 100),
- (store_mul, reg5, reg4, 100),
- (try_begin),
- (gt, reg2, 0),
- (store_sub, reg5, reg2, reg5),
- (else_try),
- (store_sub, reg5, reg5, reg2),
- (try_end),
- (position_get_y, reg3, pos1),
- (store_div, reg6, reg3, 100),
- (store_mul, reg7, reg6, 100),
- (try_begin),
- (gt, reg3, 0),
- (store_sub, reg7, reg3, reg7),
- (else_try),
- (store_sub, reg7, reg7, reg3),
- (try_end),
- (store_random_in_range,reg8,0,181),
- (display_message, "@chengzhengdaimadizhi", ),
- (try_end),
- ]),
复制代码 然后在汉化文件夹中的quick_strings文件里添加一行:
- qstr_chengzhengdaimadizhi|("town_{reg1}","1", icon_town|pf_town, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,({reg4}.{reg5}, {reg6}.{reg7}),[], {reg8}),
复制代码 reg8是据点的方向,但我没找到获取该数值的方法,所以我用(store_random_in_range,reg8,0,181),给代替了。
核心代码就这些,当然这只是获取城镇的,城堡与村子也都大同小异。
选择某个据点的方法:
首先在某个地方写入(assign, "$g_csmoshi_party", 0),
然后再在module_game_menus文件里的扎营界面中添加一个新的选择项:(搜索"camp_action_1",在这上面添加以下代码)
- ("c1",[
- (eq, "$g_csmoshi_party", 0),
- ],"移动该据点",[
- (assign, "$g_csmoshi_party", "$g_encountered_party"),
- ]),
复制代码 然后再简单触发器(module_simple_triggers)里新增一个触发器:
- ##测试模式 据点位置更改!!
- (0,
- [
- (gt, "$g_csmoshi_party", 0),
- (party_get_position, pos1, "$g_csmoshi_party"),
- (party_get_position, pos2, "p_main_party"),
- (party_set_position, "$g_csmoshi_party", pos2),
- ]),
复制代码 然后再再再在module_game_menus文件里的扎营界面中添加一个新的选择项:(搜索"camp_action_1",在这上面添加以下代码)
- ("c1",[
- (gt, "$g_csmoshi_party", 0),
- ],"固定该据点",[
- (assign, "$g_csmoshi_party", 0),
- ]),
复制代码
如此就可以在游戏中编辑各个城镇的位置然后一键获取各个城镇的坐标代码,然后在骑砍根目录的rgl_log.txt里复制粘贴到module_parties即可
当然这个帖子只是给大伙提供一个思路 所以只分享了城镇坐标的获取方法且可能某些地方有些简陋和小bug,例如坐标x是100.05时输出的坐标x会变成100.5 不过并不是什么大问题,避免小数点后面的第一位数为0就好了。
|