骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] 大地图右键菜单进行多级扩展,让大地图实时执行简单指令

[复制链接]

212

主题

1032

回帖

1048

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
2893127
第纳尔
14847
精华
0
互助
93
荣誉
21
贡献
325
魅力
1382
注册时间
2017-11-5
鲜花(431) 鸡蛋(0)
发表于 2024-3-5 08:36:20 | 显示全部楼层 |阅读模式
本帖最后由 vegetto 于 2024-3-6 07:58 编辑

前言我们一般大地图进入城市场景都是左键点击进去,作为资深骑砍玩家来说,也发现可以通过右键点击大地图上城村部队等party,显示出一个右键扩展菜单来点击,但是原版的右键扩展菜单选项比较有限,无非是“到xx去”,“显示xxx相关信息”等等,而大地图进行一些政令军事等互动处理,战团mod发展早期采用菜单即menu系统,发展后期开始陆续试验presentation界面系统,但是对于大地图来说,这两种处理方法都有一种弊端,就是必须停滞大地图的运行,然后完全在界面上进行信息选项的处理,对于一些复杂的功能无可厚非,但是有一些简单功能,比如说我现在想在我大地图当前位置建立一个哨塔,你还想先跳转一个定制好的menu或presentation不是很累赘吗,如果我们发展一下右键扩展菜单,这样只需要右键点击一个party,可以是自己可以是其他部队或城市村子也可以是类似虚拟的载体标志物,扩展多级菜单选项,快速实现我们的想法,当扩展菜单选项具体化到一定程度后,再考虑跳转场景构造presentation界面。。。比如我下面的示例中,
我先把右键扩展菜单分成

str_sc100| 军 事 事 件 处 理
str_sc200| 经 济 事 件 处 理
str_sc300| 政 治 事 件 处 理
str_sc400| 外交 事 件 处 理


str_plscreturnall| 返 回 一 级 菜 单
str_plscreturnup| 返 回 上 一 级 菜 单


然后比如点击“军 事 事 件 处 理 ”,菜单变化成:


str_sc110| 部 队 人 员 招 募
str_sc120| 部 队 分 割 编 制
str_sc130| 部 队 临 时 建 造
str_sc140| 部 队 状 态 检 查
str_sc150| 部 队 供 给 措 施


str_plscreturnall| 返 回 一 级 菜 单
str_plscreturnup| 返 回 上 一 级 菜 单


然后比如点击“部 队 临 时 建 造 ”,菜单变化成:


str_sc131| 搭 建 临 时 营 地
str_sc132| 搭 建 防 御 工 事
str_sc133| 搭 建 炮 兵 阵 地
str_sc134| 搭 建 临 时 机 场
str_sc135| 搭 建 信 号 屏 蔽 区
str_sc136| 搭 建 地 雷 区
str_sc137| 搭 建 核 弹 井


str_plscreturnall| 返 回 一 级 菜 单
str_plscreturnup| 返 回 上 一 级 菜 单


假如你这些军事设施只有一个模型,直接默认当前位置建设了,假如你要还原建设场景和更细节过程,可以考虑跳转场景、构造presentation界面或者构造相应部门的人员对话。这样把笼统的具有概括性的菜单选项在大地图实时选好,然后选到细部的操作选项时再使用更高级的处理方法展示。


-------------------------以下是代码主体,没空整理仔细注释,仅参考逻辑即可-------------------------

module_strings里添加的string,主要作为大地图party右键扩展菜单的选项

(点击展开 / 收起)


----------------------------------------------------------
module_strings的汉化内容:

(点击展开 / 收起)




-------------------------------------------------------------
module_parties里party添加,模型我用的是魔兽争霸里的守卫图标,你们自定,注意party均命名为“选择菜单”类似的名称,这样大地图显示部队名称大字告诉玩家这个东西什么用途

("nsc0", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc100", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc200", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc300", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc400", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc500", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc600", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc700", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc110", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc120", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc130", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc140", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc150", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc160", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc170", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),
("nsc210", "choose", icon_dotaward|pf_is_static|pf_label_large|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral, aggressiveness_0, ai_bhvr_hold, 0, (-17.600000, 79.699997), [], 170),

###解释下,nsc0这个party相当于下面第一级菜单
str_sc100| 军 事 事 件 处 理
str_sc200| 经 济 事 件 处 理
str_sc300| 政 治 事 件 处 理
str_sc400| 外交 事 件 处 理
。。。预留额外3个同级别空位string。。。。
然后nsc100-700相当于第二级菜单比如军事事件的“分割编制”,然后nsc110-170相当于第三级菜单比如分割编制中“分离一个连级别单位”。
因为我目前mod只做了“军 事 事 件 处 理”的展开,所以比如nsc210后面的nsc210-270是预留给str_sc200| 经 济 事 件 处 理的二级展开,同理nsc310-370是预留给str_sc300| 政 治 事 件 处 理进行二级展开,等等。




-----------------------------------------------------------------------------------
module_simple_triggers添加下面的触发器,意思就是大地图预先创建了nsc0-nsc210这16个party,参考我string的中文翻译,通过script初始对应右键点击party出来的菜单选项文字,分别代表一个总菜单,分支出“政治、经济、军事等等多个大项”,然后每个分项分出7个菜单分支,每个分项的各菜单分支又分出7个选项,再加两个返回上级菜单选项,所以str_plscreturnall——str_sc177这么多string就是为这个准备的。而如下simple_trigger触发就是根据script里响应右键菜单点击事件,进行相应nsc0-nsc210这15个party中特定一个party显示,其他party暂时隐身disable,然后控制这个政令扩展菜单载体的party在使用时可以保持在玩家附近出现,方便找到并点击。。


(0.000000,
[


   (store_add, ":var_10", "p_nsc210", 1),
    (try_for_range, ":var_11", "p_nsc0", ":var_10"),
        (store_distance_to_party_from_party, ":var_12", "p_nsc0", "p_main_party"),
        (try_begin),
            (party_is_active, ":var_11"),
            (neg|is_between, ":var_12", 1, 4),
            (party_relocate_near_party, "p_nsc0", "p_main_party", 2),
        (try_end),                                                                                     #意思就是让nsc0这个用于右键点出扩展菜单的大地图图标部队,距离不在玩家附近1-4范围,则强制瞬移到距离玩家2范围
        (try_begin),
            (party_is_active, ":var_11"),
            (party_get_position, pos1, "p_nsc0"),
            (neg|eq, ":var_11", "p_nsc0"),
            (party_set_position, ":var_11", pos1),
        (try_end),                                                                            #凡是正常使用的nsc1-nsc210的party,始终设置位置在nsc0部队位置,也就是nsc0-nsc210一起控制在玩家部队附近位置
        (party_get_slot, ":var_13", "p_main_party", 571),       #party slot 571代表nsc1-nsc210同一时间该显示哪个,然后nsc1-nsc210具有多级上下级关系,右键扩展菜单具有承上启下关系,通过某party右键扩展菜单影响party显示关闭来跳转其他party右键扩展菜单进行多级扩展。
        (try_begin),
            (eq, "$redmode", 2),
            (disable_party, ":var_11"),                                              #"$redmode"=2是我以前魔兽mod开局多剧本分支的红色警戒遭遇战模式剧本,目前版本已经取消,也就是这个开局剧本模式nsc1-nsc210的party全部隐身,即不启用
        (else_try),
            (troop_slot_eq, "trp_player", 629, 1),
            (disable_party, ":var_11"),                                          #troop slot 629是通过我mod的T键切换值0-1,为1时就是关闭大地图右键扩展政令选项,即nsc1-nsc210的party全部隐身,所以要在其他触发或本触发加一个按什么按键显示这个政令右键扩展party载体的功能。
        (else_try),
            (neg|ge, ":var_13", 100),
            (party_set_slot, "p_main_party", 571, 100),
            (enable_party, "p_nsc0"),
            (store_add, ":var_10", "p_nsc210", 1),
            (try_for_range, ":var_11", "p_nsc100", ":var_10"),
                (disable_party, ":var_11"),
            (try_end),
        (else_try),
            (is_between, ":var_13", 100, 800),
            (store_mod, ":var_14", ":var_13", 100),
            (store_mod, ":var_15", ":var_13", 10),
            (try_begin),
                (eq, ":var_14", 0),
                (try_begin),
                    (eq, ":var_11", "p_nsc0"),
                    (enable_party, ":var_11"),
                (else_try),
                    (disable_party, ":var_11"),
                (try_end),
            (else_try),
                (neg|eq, ":var_14", 0),
                (is_between, ":var_13", 100, 200),
                (try_begin),
                    (eq, ":var_15", 0),
                    (try_begin),
                        (eq, ":var_11", "p_nsc100"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (else_try),
                    (is_between, ":var_13", 111, 118),
                    (try_begin),
                        (eq, ":var_11", "p_nsc110"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (else_try),
                    (is_between, ":var_13", 121, 128),
                    (try_begin),
                        (eq, ":var_11", "p_nsc120"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (else_try),
                    (is_between, ":var_13", 131, 138),
                    (try_begin),
                        (eq, ":var_11", "p_nsc130"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (else_try),
                    (is_between, ":var_13", 141, 148),
                    (try_begin),
                        (eq, ":var_11", "p_nsc140"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (else_try),
                    (is_between, ":var_13", 151, 158),
                    (try_begin),
                        (eq, ":var_11", "p_nsc150"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (else_try),
                    (is_between, ":var_13", 161, 168),
                    (try_begin),
                        (eq, ":var_11", "p_nsc160"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (else_try),
                    (is_between, ":var_13", 171, 178),
                    (try_begin),
                        (eq, ":var_11", "p_nsc170"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (try_end),
            (else_try),
                (neg|eq, ":var_14", 0),
                (is_between, ":var_13", 200, 300),
                (try_begin),
                    (eq, ":var_14", 0),
                    (try_begin),
                        (eq, ":var_11", "p_nsc200"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (try_end),
            (else_try),
                (neg|eq, ":var_14", 0),
                (is_between, ":var_13", 300, 400),
                (try_begin),
                    (eq, ":var_14", 0),
                    (try_begin),
                        (eq, ":var_11", "p_nsc300"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (try_end),
            (else_try),
                (neg|eq, ":var_14", 0),
                (is_between, ":var_13", 400, 500),
                (try_begin),
                    (eq, ":var_14", 0),
                    (try_begin),
                        (eq, ":var_11", "p_nsc400"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (try_end),
            (else_try),
                (neg|eq, ":var_14", 0),
                (is_between, ":var_13", 500, 600),
                (try_begin),
                    (eq, ":var_14", 0),
                    (try_begin),
                        (eq, ":var_11", "p_nsc500"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (try_end),
            (else_try),
                (neg|eq, ":var_14", 0),
                (is_between, ":var_13", 600, 700),
                (try_begin),
                    (eq, ":var_14", 0),
                    (try_begin),
                        (eq, ":var_11", "p_nsc600"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (try_end),
            (else_try),
                (neg|eq, ":var_14", 0),
                (is_between, ":var_13", 700, 800),
                (try_begin),
                    (eq, ":var_14", 0),
                    (try_begin),
                        (eq, ":var_11", "p_nsc700"),
                        (enable_party, ":var_11"),
                    (else_try),
                        (disable_party, ":var_11"),
                    (try_end),
                (try_end),
            (try_end),
        (try_end),
    (try_end),


]),




script原有脚本game_context_menu_get_buttons改写,这个脚本原本是给大地图右键扩展菜单添加菜单选项的,比较单调,一般就是“到这里去”,“查看信息”,这里根据我新加的string,对大地图政令扩展菜单“附身”的nsc0-nsc210这些party依次添加3-7种string即选项,因为时间有限,原计划每个party均有“返回初始菜单选项”“返回上级菜单选项”和7个子项,因为有些分项没想好,所以并不都是2+7,但是考虑到后续增设问题,所以string文件里就是按照2+7为一组、按顺序预留的,没想好的菜单选项就填的none。


("game_context_menu_get_buttons",
[
    (store_script_param, ":var_0", 1),                                      #注意:var_0是大地图上的party,就是初始化大地图时,通过这个脚本读取所有party当:var_0,然后下面定义加右键扩展菜单选项。
    (try_begin),
        (neg|eq, ":var_0", "p_main_party"),
        (context_menu_add_item, "@move here", -7),
    (try_end),
    (try_begin),
        (this_or_next|eq, ":var_0", "p_main_party"),
        (is_between, ":var_0", "p_nsc0", "p_nsc210"),
    (else_try),
        (is_between, ":var_0", "p_town_1", "p_salt_mine"),
        (context_menu_add_item, "str_extradecide8", 1),
        (context_menu_add_item, "str_extradecide9", 2),
        (context_menu_add_item, "str_extradecide10", 3),
        (context_menu_add_item, "str_extradecide11", 4),
        (context_menu_add_item, "str_extradecide14", 7),
    (else_try),
        (party_get_num_companion_stacks, ":var_1", ":var_0"),
        (gt, ":var_1", 0),
        (party_stack_get_troop_id, ":var_2", ":var_0", 0),
        (is_between, ":var_2", "trp_npc1", "trp_knight_1_1_wife"),
        (context_menu_add_item, "str_extradecide15", 1),
        (context_menu_add_item, "str_extradecide16", 2),
        (context_menu_add_item, "str_extradecide21", 7),
    (else_try),
        (context_menu_add_item, "str_extradecide15", 1),
        (context_menu_add_item, "str_extradecide16", 2),
        (context_menu_add_item, "str_extradecide21", 7),
    (try_end),
    (try_begin),
        (neg|eq, ":var_0", "p_main_party"),
        (store_faction_of_party, ":var_3", ":var_0"),
        (this_or_next|eq, ":var_3", "$players_kingdom"),
        (this_or_next|eq, ":var_3", "fac_player_supporters_faction"),
        (party_slot_eq, ":var_0", slot_party_type, 11),
        (neg|is_between, ":var_0", "p_town_1", "p_salt_mine"),
        (context_menu_add_item, "@Accompany", -6),
    (try_end),
    (try_begin),
        (this_or_next|eq, ":var_0", "p_main_party"),
        (is_between, ":var_0", "p_nsc0", "p_nsc210"),
        (try_begin),
            (neg|eq, ":var_0", "p_main_party"),
            (neg|eq, ":var_0", "p_nsc0"),
            (context_menu_add_item, "str_plscreturnall", 9),
            (context_menu_add_item, "str_plscreturnup", 8),
        (try_end),
        (party_get_slot, ":var_4", ":var_0", 571),
        (try_begin),
            (eq, ":var_0", "p_main_party"),
            (context_menu_add_item, "str_extradecide1", 1),
            (context_menu_add_item, "str_extradecide2", 2),
            (context_menu_add_item, "str_extradecide3", 3),
            (context_menu_add_item, "str_extradecide4", 4),
        (else_try),
            (eq, ":var_0", "p_nsc0"),
            (context_menu_add_item, "str_sc100", 1),
            (context_menu_add_item, "str_sc200", 2),
            (context_menu_add_item, "str_sc300", 3),
            (context_menu_add_item, "str_sc400", 4),
        (else_try),
            (eq, ":var_0", "p_nsc100"),
            (context_menu_add_item, "str_sc110", 1),
            (context_menu_add_item, "str_sc120", 2),
            (context_menu_add_item, "str_sc130", 3),
            (context_menu_add_item, "str_sc140", 4),
            (context_menu_add_item, "str_sc150", 5),
        (else_try),
            (eq, ":var_0", "p_nsc110"),
            (context_menu_add_item, "str_sc111", 1),
            (context_menu_add_item, "str_sc112", 2),
            (context_menu_add_item, "str_sc113", 3),
            (context_menu_add_item, "str_sc114", 4),
        (else_try),
            (eq, ":var_0", "p_nsc120"),
            (context_menu_add_item, "str_sc121", 1),
            (context_menu_add_item, "str_sc122", 2),
            (context_menu_add_item, "str_sc123", 3),
            (context_menu_add_item, "str_sc124", 4),
            (context_menu_add_item, "str_sc125", 5),
            (context_menu_add_item, "str_sc126", 6),
            (context_menu_add_item, "str_sc127", 7),
        (else_try),
            (eq, ":var_0", "p_nsc130"),
            (context_menu_add_item, "str_sc131", 1),
            (context_menu_add_item, "str_sc132", 2),
            (context_menu_add_item, "str_sc133", 3),
            (context_menu_add_item, "str_sc134", 4),
            (context_menu_add_item, "str_sc135", 5),
            (context_menu_add_item, "str_sc136", 6),
            (context_menu_add_item, "str_sc137", 7),
        (else_try),
            (eq, ":var_0", "p_nsc140"),
            (context_menu_add_item, "str_sc141", 1),
            (context_menu_add_item, "str_sc142", 2),
            (context_menu_add_item, "str_sc143", 3),
            (context_menu_add_item, "str_sc144", 4),
            (context_menu_add_item, "str_sc145", 5),
        (else_try),
            (eq, ":var_0", "p_nsc150"),
            (context_menu_add_item, "str_sc151", 1),
            (context_menu_add_item, "str_sc152", 2),
            (context_menu_add_item, "str_sc153", 3),
        (try_end),
    (try_end),

]),



------------------------------

script原有脚本game_event_context_menu_button_clicked改写,原本就是作为大地图右键特定party扩展菜单时,点击菜单选项相应的事件。



("game_event_context_menu_button_clicked",
[
    (store_script_param, ":var_0", 1),                   #注意:var_0是大地图上的party被你右键时的,:var_1是当你点击右键扩展菜单的第几个选项,因为我是7个指令选项+2个返回上级/初级菜单选项,所以下面有的:var_1取值是1-9即该菜单有9个可点击的选项,可点击执行相关事件。
    (store_script_param, ":var_1", 2),
    (try_begin),
        (eq, ":var_0", "p_main_party"),
        (try_begin),
            (eq, ":var_1", 1),
            (tutorial_message_set_background, 1),
            (tutorial_message, "str_dotaguide", 0, 100),
        (else_try),
            (eq, ":var_1", 2),
            (tutorial_message_set_background, 1),
            (tutorial_message, "str_dotaguideno", 0, 1),
        (else_try),
            (eq, ":var_1", 3),
            (troop_set_slot, "trp_player", 629, 0),
        (else_try),
            (eq, ":var_1", 4),
            (troop_set_slot, "trp_player", 629, 1),
        (try_end),
    (else_try),                                                                           #上面是玩家的一些扩展菜单内容,跳过,和其他地方触发联动,主要看nsc系列的政令party
        (is_between, ":var_0", "p_town_1", "p_salt_mine"),
#。。。。。。。。。。。省略。。。。。。。。。。。。。。
    (else_try),                                                               #上面是城市村子等party的一些扩展菜单内容,跳过,和其他地方触发联动,主要看nsc系列的政令party
        (eq, ":var_0", "p_nsc0"),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 110),
#。。。。。。。。。。。省略——填响应的即时性功能,或因设定某变量值改变而在其他触发执行的长事件,下面类似格式都是填这种。。。。。。。。。。。。。。
        (else_try),                  #party slot571是在我上面module_simple_triggers引用过,作用就是这里script脚本根据扩展菜单点击选项响应的slot值变化,确定是否多级菜单在跳转,然后跳转哪个菜单,就disable其他nsc系列的party,这样就可以只操作当前显示的nsc系列的party
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 210),                     #注意(eq, ":var_1", xxx), (party_set_slot, "p_main_party", 571, xxx),   这种格式后面都省略了对应右键扩展菜单按钮点击执行的事件,自己根据需求考虑,然后为什么要用枚举法写else情况,因为每个事件不一样
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 310),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 410),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 510),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 610),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 710),
        (try_end),
    (else_try),
        (eq, ":var_0", "p_nsc100"),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 111),
        (else_try),
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 121),
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 131),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 141),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 151),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 161),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 171),
        (else_try),
            (eq, ":var_1", 8),
            (party_set_slot, "p_main_party", 571, 100),
        (else_try),
            (eq, ":var_1", 9),
            (party_set_slot, "p_main_party", 571, 100),
        (try_end),
    (else_try),
        (eq, ":var_0", "p_nsc110"),
        (store_random_in_range, ":var_4", 25, 100),
        (store_random_in_range, ":var_5", 4, 20),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 111),
        (else_try),
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 112),
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 113),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 114),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 115),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 116),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 117),
        (else_try),
            (eq, ":var_1", 8),
            (party_set_slot, "p_main_party", 571, 110),
        (else_try),
            (eq, ":var_1", 9),
            (party_set_slot, "p_main_party", 571, 100),
        (try_end),
    (else_try),
        (eq, ":var_0", "p_nsc120"),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 121),
        (else_try),
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 122),
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 123),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 124),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 125),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 126),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 127),
        (else_try),
            (eq, ":var_1", 8),
            (party_set_slot, "p_main_party", 571, 110),
        (else_try),
            (eq, ":var_1", 9),
            (party_set_slot, "p_main_party", 571, 100),
        (try_end),
    (else_try),
        (eq, ":var_0", "p_nsc130"),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 131),
        (else_try),
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 131),
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 131),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 131),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 131),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 131),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 131),
        (else_try),
            (eq, ":var_1", 8),
            (party_set_slot, "p_main_party", 571, 110),
        (else_try),
            (eq, ":var_1", 9),
            (party_set_slot, "p_main_party", 571, 100),
        (try_end),
    (else_try),
        (eq, ":var_0", "p_nsc140"),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 141),
        (else_try),
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 141),
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 141),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 141),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 141),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 141),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 141),
        (else_try),
            (eq, ":var_1", 8),
            (party_set_slot, "p_main_party", 571, 110),
        (else_try),
            (eq, ":var_1", 9),
            (party_set_slot, "p_main_party", 571, 100),
        (try_end),
    (else_try),
        (eq, ":var_0", "p_nsc150"),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 151),
        (else_try),
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 151),
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 151),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 151),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 151),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 151),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 151),
        (else_try),
            (eq, ":var_1", 8),
            (party_set_slot, "p_main_party", 571, 110),
        (else_try),
            (eq, ":var_1", 9),
            (party_set_slot, "p_main_party", 571, 100),
        (try_end),
    (else_try),
        (eq, ":var_0", "p_nsc160"),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 161),
        (else_try),
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 161),
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 161),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 161),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 161),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 161),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 161),
        (else_try),
            (eq, ":var_1", 8),
            (party_set_slot, "p_main_party", 571, 110),
        (else_try),
            (eq, ":var_1", 9),
            (party_set_slot, "p_main_party", 571, 100),
        (try_end),
    (else_try),
        (eq, ":var_0", "p_nsc170"),
        (try_begin),
            (eq, ":var_1", 1),
            (party_set_slot, "p_main_party", 571, 171),
        (else_try),
            (eq, ":var_1", 2),
            (party_set_slot, "p_main_party", 571, 171),
        (else_try),
            (eq, ":var_1", 3),
            (party_set_slot, "p_main_party", 571, 171),
        (else_try),
            (eq, ":var_1", 4),
            (party_set_slot, "p_main_party", 571, 171),
        (else_try),
            (eq, ":var_1", 5),
            (party_set_slot, "p_main_party", 571, 171),
        (else_try),
            (eq, ":var_1", 6),
            (party_set_slot, "p_main_party", 571, 171),
        (else_try),
            (eq, ":var_1", 7),
            (party_set_slot, "p_main_party", 571, 171),
        (else_try),
            (eq, ":var_1", 8),
            (party_set_slot, "p_main_party", 571, 110),
        (else_try),
            (eq, ":var_1", 9),
            (party_set_slot, "p_main_party", 571, 100),
        (try_end),
    (try_end),

很久前的演示视频表达下什么意思






评分

参与人数 1第纳尔 +20 互助 +1 魅力 +20 收起 理由
Aomine Daiki + 20 + 1 + 20 您的帖子很有价值!

查看全部评分

0

主题

58

回帖

22

积分

随仆

Rank: 1

UID
3110714
第纳尔
439
精华
0
互助
1
荣誉
0
贡献
0
魅力
1
注册时间
2019-10-8
鲜花(7) 鸡蛋(0)
发表于 2024-3-5 23:16:55 | 显示全部楼层
很有启发意义
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-11-19 08:50 , Processed in 0.155102 second(s), 23 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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