查看: 78|回复: 0

[转载发布] 地图菜单窗口插件v20170220更新【送:技能商店】

[复制链接]
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    2022

    主题

    32

    回帖

    7144

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5074
    OK点
    16
    积分
    7144
    发表于 同元一千年八月七日(秋) | 显示全部楼层 |阅读模式
    =20170220=更新=纯净版=

    更新内容:
    # 【删除】
    # 1. 此版本只保留了一个任务,所以是纯净版
    # 2. 此版本只保留了取消键的音效,以及主菜单确认键的音效
    # 【修改】
    # 1. 此版本修改了 '@' 选项,现在要用 Pageturning Quitmenu Refresh Switchon[n]
    #    这些比较长的参数代替原来的 P Q R S[n]。这是为了方便后续插件脚本的编写。
    # 2. 修正了任务名称出现正则表达式字符的问题,现在可以随意使用 /.*?+-[]/ 等
    # 3. 现在只要有不同 '@' 选项,即使是同名的任务也会被正常识别、显示
    # 【新增】
    # 1. 在呼叫菜单中使用 \c[n] 命令修改主菜单颜色: call_mapmenu('\c[2]默认设置')
    # 2. 在 '@' 选项中使用 Textcolor[n] 修改子菜单颜色
    # 3. 修改全局变量 $wmm_position 来调整窗口位置
    # 4. 修改全局变量 $wmm_backopacity 来调整窗口透明度
    # 5. 添加了 Window_Show 用于显示一行文字
    # 【脚本】
    # 1. 提供一个插件脚本模板
    # 2. 提供赠品:技能商店
    # 【赠品】
    # 插件脚本范例-技能商店
    # 1. 技能商店能正常使用
    # 2. 修复了 读档之后 会使菜单初始化的BUG
    技能商店图:




    最近研究了一下 6R 上的任务界面(by 叶子),发现其自由度很高,于是写了一个增强的脚本,用来在地图上显示菜单。在6R上也搜了搜,好像没有特别类似的脚本?总之发给大家交流学习~

    任务界面在 XP 图书馆 的 7 楼

    具体想做成的样子大概就是这样吧(摘自《毁灭66RPG》)



    目前的山寨版效果,字号改不了,其他的还是蛮像的 :

    水区行政决议事件

    水区行政决议脚本




    这个脚本也是希望不会写window的制作者也能轻松做出接近上面这个样子的菜单

    脚本特色:

    0. 插件型脚本,几乎不会冲突
    1. 对任务界面的改动很小,稍作改动就能兼容原来的任务界面
    2. 显示菜单的时候,进入死循环,游戏暂停
    3. 拥有一个子菜单,可以自定义显示的内容和按键的处理
    4. 可以调用公共事件完成更多的功能
    5. 可以自定义窗口的位置和透明度

    范例工程(未脱离RTP):其中有详细的说明



    详细的功能和使用说明:

    1. 自定义菜单选项
    任务界面里需要玩家自定义任务,对于菜单选项,要求把任务名设置为如下格式(举例):设置:修改变量@r。用冒号和@符号隔开的三个部分,第一部分是“主菜单”,第二部分是“子菜单”,第三部分是“选项”。任务内容可以自行设定。


    2. 使用方法
    在事件脚本里调用(举例)
    RUBY 代码
    1. call_mapmenu('设置')
    复制代码

    就会打开地图菜单,并且加载所有第一部分为“设置”的菜单选项,如图:

    如果call_mapmenu后面不加任何参数,会调用默认的菜单,在脚本“自定义任务”的的 129 行可以自行修改


    3. 按键和子菜单
    按下取消键会退出菜单,按下确认键,会显示所有的子菜单,并在右边的窗口里显示提前写好的内容。@和后面的部分不会显示


    4. 自定义按键相应
    对于不同的事件,按下确认键和方向键之后的响应,也是可以自定义的。

    比如这里就定义了选项“修改变量”在按下确认键的时候会使 变量1 增加 1。同样也可以在 run_left 和 run_right 的方法里定义左右方向键的功能

    5. '@'的使用
    '@'后面的部分是选项,在后面添加不同的选项会提供不同的默认功能,这个也可以自行定义,目前的功能如下:
    '@'后添加 p ,可以用左右键翻页
    '@'后添加 q ,按下确认键会自动退出菜单
    '@'后添加 r ,按下确认键会刷新菜单内容
    '@'后添加 s[10] ,按下确认键会打开开关 10,这里的 10 也可以改成别的整数

    6. 调用公共事件
    如果一个选项以 '@qs[1]'结尾,那么按下确认键之后,会先打开开关1,再退出菜单窗口。此时如果有一个公共事件设置为了“自动执行”或“并行处理”,并且条件开关就是1,那么这个事件会执行。事件相关的操作暂时不提。事件的设置如下:

    最开始就关闭开关,避免事件重复执行,但是要注意的是:
      1. “自动执行”的公共事件,会在当前的事件完全结束后再执行。
      2. “并行处理”的公共事件,会在退出菜单窗口之后立即执行,但是如果事件脚本“call_mapmenu”后面紧接着是显示文章,并行处理的事件中的显示文章会跳过。
      3. 简单的说就是公共事件里有“显示文章”,用“自动执行”,否则用“并行处理”。

    7. 隐藏选项(灵活控制出现的选项)
    因为每次移动或者是按键后,都会读取一次 set_mapwindow_task,所以可以在这里面作文章,控制显示or隐藏的菜单选项。具体的请看工程。

    8. 其他可以自定义的部分
    可以自定义窗口的透明度和位置,以及默认字号的大小(20)

    9. 缺点
    1. 左边的2个菜单窗口里文字的颜色和大小,需要自己单独修改
    2. 虽然可以调整右边窗口的文字大小,但是不能修改行距 已解决,目前行距设置为 ( 文字大小 * 1.25 + 4 ) 取整,在脚本“任务界面”的第 600 行左右的 2 处可以自行修改
    3. 如果想实现复杂的功能,还是免不了对脚本的使用



    改进版现身!
    增加了以下功能:
    1. 在call_mapmenu('主菜单') 的参数中加上 \c[n] 会使主菜单的此项改变颜色,举例:
    RUBY 代码
    1. # 变成 2 号颜色(红色),注意引号和\的数量
    2. call_mapmenu('公共事件\c[2]')# 单引号里面是  \
    3. call_mapmenu("公共事件\\c[2]")# 双引号里面是 \\
    复制代码

    2. '@'后面添加 c[n] 会使子菜单的此项改变颜色,举例:设置 name = '公共事件:自动@qs[2]c[2]',则子菜单中此项显示红色

    3. 如果主菜单只有唯一的选项,呼叫菜单后会直接进入子菜单,按 x 会离开地图菜单,并且取消了主菜单的选项框
    如图:

    4. 如果想临时改变窗口位置,或者透明度,直接脚本修改常量也是可以的,因为ruby不会因为修改常量而报错……
    RUBY 代码
    1. Window_MapMenu::BACK_OPACITY = 255
    2. Window_MapMenu::POSITION_1 = [60,120,
    3. 100,160]
    4. Window_MapMenu::POSITION_2 = [60,280,
    5. 100,160]
    6. Window_MapMenu::POSITION_3 = [160,120,
    7. 360,320]
    8. call_mapmenu('\c[2]说明')
    复制代码
    效果如图:


    # 2017/2/18 新增
    5. 增加了按键的音效,想修改的请在脚本“地图菜单”里搜索 '$game_system.se_play' 然后自行修改参数或者删除

    改进版的范例:




    如果很巧你的工程中要用到叶子的任务系统脚本,请用我这个修改后的脚本,并且找到第 105 行
    RUBY 代码
    1. class Game_Party
    2.         #--------------------------------------------------------------------------
    3.         # ● 设置任务资料
    4.         #--------------------------------------------------------------------------
    5.         def get_tasks_info
    6.                 @tasks_info = []
    7.                 set_mapwindow_task
    8.         end
    9. end
    复制代码

    将你之前写的 @tasks_info[n] = Game_Task.new(name, text) 的那一堆全部插入到 set_mapwindow_task 的前面,这样就能与叶子的任务系统兼容。
                 本帖来自P1论坛作者ikki,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=398983  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-3 01:46 , Processed in 0.063636 second(s), 47 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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