·添加对话到指定troop,可以用(eq,"$g_talk_troop",<troop_id>)
来筛选;
·随机士兵种类:可以事先给士兵编好号,然后随机一下;
·至于一周一次,其实和酒馆请客喝酒一样,我们需要在variables.txt中设置一个全局变量用来存储本次“问兵”时的游戏天数,与下次问兵时获取的天数进行相减,并与7(天)对比即可。
先来复习一下 与NPC对话的框架(以潘德395为例):
·玩家的台词:dlga_xxx:xxx <1-代表这是一句玩家的台词的代号> <2-选择支窗格的代号> <3-触发条件代码的行数> <4-触发条件的代码> <5-玩家台词_下划线表示空格> <6-跳转到NPC回复台词的窗格代号> <7-触发结果代码的行数> <8-触发结果的代码> NO_VOICEOVER
·NPC的台词:dlga_xxx:xxx <1-代表这是一句NPC的台词的代号> <2-NPC台词窗格的代号> <3-触发条件代码的行数> <4-触发条件的代码> <5-NPC台词_下划线表示空格> <6-链接玩家台词,即选择支窗格的代号> <7-触发结果代码的行数> <8-触发结果的代码> NO_VOICEOVER
以潘德395为例,69631表示玩家的话,也就是选择支;4095表示NPC的话。
那么如何找到这两个数字,很简单,看一下(汉化)台词就可以了。
·如图所示,左上角白框部分显示谈话对象的,我们不管;
·右上角蓝框部分代表NPC的台词窗格,如果你想要这一句话是NPC说的,那么第一个参数就要填4095,而第二个参数则特指“什么事,我的队长大人”这句话,参数3,4,5已写的很清楚了。那么,只有白框和蓝框NPC的台词窗格,整个画面是不完整的,所以第6个参数一定要链接玩家的台词,也就是选择支窗格代号。
·下面红框部分代表玩家的台词,即选择支窗格,如果你想要这一句话是玩家说的,那么第一个参数就要填69631,第二个参数则特指这整个红框内所有选择支所在的窗格代号,也就是说这每一句选择支的第二个参数都是一样的,那么怎么表示顺序呢,撰写顺序就是显示顺序!参数3,4,5依旧略过。我们点选了一个选择支后,谈话对象要回复我们一句话,所以,第6个参数一定要跳转到NPC的台词窗格代号。当然你也可以选择直接跳转到 关闭窗口 来结束对话。虽然我很想再举个实例,但这次就算了,会放到conversation教程中讲。~~
现要给NPC对话的主菜单,添加一个始终显示的选择支“你能帮我找点士兵吗?”,点击进入后,会有1个确认选择支,1个返回选择支(一定要写返回,否则对话就进行不下去,最终只能任务管理器强退),而确认选择支,一周只能点一次。成功点击后,会给玩家若干个士兵。
假设我们要在“待在后面,不要加入战斗……”下面添加一个选择支,我们可以借助汉化文件..\languages\cns\dialogs.csv帮我们进行定位,找到该句为:dlga_member_talk:member_dont_fight_okay 69631 15 …
可以看到该选择支窗格编号为15
另起一行添加:
1. dlga_npc_talk_menu_1:ask_for_troops 69631 15 条件行数 条件代码 I_need_some_hands,_got_any_idea? 12138 0 NO_VOICEOVER
汉化:dlga_npc_talk_menu_1:ask_for_troops|我 需 要 些 人 手 ,你 能 帮 我 找 些 来 吗 ?
如上所示,后面的12138这个数字是可以随便填的,但要注意不得与MOD已存在的窗格编号重复,可以搜索 空格12138空格 来确认是否有重复。
本句中的触发条件,仅用来筛选我们谈话的对象是不是指定NPC
一句即可(eq,"$g_talk_troop","指定NPC的兵种ID"),
2. dlga_npc_talk_menu_2:npc_reply_1 4095 12138 0 I'm_glad_to_help_you. 12139 0 NO_VOICEOVER
汉化:dlga_npc_talk_menu_2:npc_reply_1|我 很 愿 意 帮 助 你 ,大 人 。(1 周 1 次 )
3. dlga_npc_talk_menu_2:p_confirm 69631 12139 条件行数 条件代码 very_well. 12140 结果行数 结果代码 NO_VOICEOVER
汉化:dlga_npc_talk_menu_2:p_confirm|有 劳 了 。
4. dlga_npc_talk_menu_2:p_cancel 69631 12139 0 Never_mind. 12140 0 NO_VOICEOVER
汉化:dlga_npc_talk_menu_2:p_cancel|想 想 还 是 算 了 。
5. dlga_npc_talk_menu_2:npc_back_to_menu_1 4095 12140 0 Never_mind. 15 0 NO_VOICEOVER
汉化:dlga_npc_talk_menu_2:npc_back_to_menu_1|还 有 什 么 事 吗 ?
我们先在variables.txt中添加一个全局变量g_ask_npc_for_troops_last_time
用来储存上一次“问兵”的时间。
“问兵”例如:我们要在trp_a trp_b trp_c 3个兵种中随机选取一种,数量最小为3最大为7,添加到玩家部队。
触发条件:
(store_current_day,":var_0"), #获取当前天数
(val_sub,":var_0","$g_ask_npc_for_troops_last_time"),
(gt, ":var_0", 1),
(troops_can_join,7), #玩家部队是否有足够空位
触发结果:
(store_current_day,":var_0"), #获取当前天数
(assign,"$g_ask_npc_for_troops_last_time",":var_0") #存储本次“问兵”的时间(天数)
(store_random_in_range,":troops_number",3,7), #获取士兵数量
(store_random_in_range,":troops_id",1,3), #获取士兵ID
(try_begin),
(eq,":troops_id",1)
(party_add_members,"p_main_party","trp_a",":troops_number"),
(else_try),
(eq,":troops_id",2)
(party_add_members,"p_main_party","trp_b",":troops_number"),
(else_try),
(eq,":troops_id",3)
(party_add_members,"p_main_party","trp_c",":troops_number"),
(try_end),
对照改好,丢进MBCodeEditor中转成txt,即可。提一嘴MBCodeEditor最下面会显示代码的总行数。
·最后我们翻到conversation.txt的最上面可以看见第二行有个数字,这个是所有对话的行数,我们可以用总行数减去这2行算得。
附一个交流QQ群:855512521(刚创的;没人;真的没有人)