rpgmakermv吧 关注:21,894贴子:68,662

回复:【长期】RPGMAKER MV插件介绍与笔记——新手上线,一同学习

取消只看楼主收藏回复

AddSubCategoryWeapon追加武器类PartA



29楼2019-02-02 20:51
回复
    AdjustPictureGraphical可视化调整图片PartA



    30楼2019-02-02 20:57
    回复
      2026-04-24 16:31:16
      广告
      不感兴趣
      开通SVIP免广告
      AirshipEvent飞行船事件PartA


      31楼2019-02-02 21:02
      回复
        AirshipHeight飞行船高度PartA


        32楼2019-02-02 21:08
        回复
          AllowEventOverlap允许事件重叠PartA


          33楼2019-02-02 21:21
          回复
            因为三次元很忙碌,所以很久没更新。
            现在回来了。



            34楼2019-03-07 18:20
            回复
              # [Triacontane(トリアコンタン)]HiddenSkillsCannotUse隐藏不可使用的技能
              # PartA
              # 题记
              * 作者:Triacontane(トリアコンタン)
              * 版本:1.0.0
              * 简介:在战斗中隐藏不可使用的技能
              # 概况
              战斗画面中,不显示无法使用的技能,通常菜单里还是会显示。
              # 插件可能性分析(情况推荐)
              * 为玩家,在战斗中提供了更为简洁的技能选择界面。
              # 插件使用方法
              * 在插件管理器中启用即可。
              # PartB
              # 大致原理
              Window_BattleSkill.includes这个函数执行的结果修改为:同时满足两个条件:1、该技能符合技能类型 2、这个角色可以使用该技能。必须同时满足两个条件,此函数执行结果才为true。
              # 一些啰嗦的笔记
              如果单独去找Window_BattleSkill.prototype.includes可能无法直接找到。
              但实际上,Window_BattleSkill的构造借用了Window_SkillList的构造方式。
              也就是说在MV的源代码执行的过程里,Window_BattleSkill.prototype.includes是存在的,结构和Window_SkillList中的Window_SkillList.prototype.includes是一样的。
              所以Triacontane这个修改方式我们可以参考一下,对于借用别的函数构造出的函数,要修改一部分保留一部分时,可以通过写出借用的函数,再加上自己修改的部分。
              在这个插件里:Triacontane把该函数改写为
              '''
              return Window_SkillList.prototype.includes.call(this, item) && this._actor.canUse(item);
              '''
              # 其他
              * 无更新,暂无PartC。


              37楼2019-04-10 19:55
              回复
                # [Triacontane(トリアコンタン)]CommandIcon命令项可加图标
                # PartA
                # 题记
                * 作者:Triacontane(トリアコンタン)
                * 版本:1.0.1
                * 简介:标题和菜单的命令项可以使用MV中的转义文字
                # 概况
                简单而实用的插件,丰富了标题和菜单的显示,其实这个插件,不止是增加图标,作者用增加图标命名可能因为增加图标是最常见的转义文字使用情况。
                先啰嗦一下MV的转义文字。
                MV原本的设计是在对话中可使用,把鼠标放在输入框内,会出现提示,这个提示是MV自带的转义。
                当你用了插件之后,可能会有插件所增加的转义文字。例如YEP系列会增加很多实用转义,比如显示队伍第N个人员的脸图和姓名,如果以后有机会介绍YEP,大概会详细说一下。
                # 插件可能性分析(情况推荐)
                在命令项中支持转义文字,增加图标,变色等都可实现。
                # 插件使用方法
                * 在插件管理器中启用即可。
                # 注意事项
                * 这个插件并未支持判断ICON+文字在菜单中的总宽度是不是超过了设置的宽度。也就是说,要手动调试。文字不会自动缩小。
                # 使用效果图

                # PartB
                # 大致原理
                复写Window_Command.prototype.drawText。
                如果去源码里搜,会发现无法直接找到Window_Command.prototype.drawText这个函数。
                但我们之前看过HiddenSkillsCannotUse这个插件,那时找的是被借来构造函数的另一个函数。
                而Window_Command的构造方式,是Window_Selectable。
                而Window_Selectable又是借用了Window_Base来构造。
                隐藏得略微深了一些,祖传DNA....(喂!)
                源码里,Window_base的drawText是这样定义的:
                ```
                Window_Base.prototype.drawText = function(text, x, y, maxWidth, align) {
                this.contents.drawText(text, x, y, maxWidth, this.lineHeight(), align);
                };
                ```
                而Triacontane单独改写了Window_Command从祖辈那里继承的这个函数。
                增加了一个判断条件,如果是选项窗口(就是调整音量什么的那个界面)的实例,那么和祖辈的方式一样。
                如果不是选项窗口,是主菜单或标题菜单,那么调用的函数是drawTextEx。
                # 一些啰嗦的笔记
                * instanceof
                值得一提的是,Triacontane追加的判断条件语句是这样的:
                ```
                if (this instanceof Window_Options)
                ```
                这里面有个instanceof,C和C++可能没有这个运算符,因此我感到了陌生。
                查了一下,在JS里,应该说会相当实用。
                instanceof:判断其左边对象是否为其右边类的实例,然后返回布尔值。
                * apply与this
                时间隔得太久,我忘记我以前有没有提到过apply以及this指向。
                this可能是JS最灵活也最深的坑。
                一般情况下,this是指代调用者。
                举个例子,A这个对象去敲门,敲门这个动作如果看做一个函数,那么函数体内的this指的就是A对象,比this觉得手疼,就是说A觉得手疼。
                当然还有很多复杂的情况,但一般都是如此。
                MV的JS,大部分都是一般情况。
                apply和call也非常灵活,简单来说两者都是继承。apply和call的区别最明显的是函数参数。
                apply是(this, arguments),而call在一般情况下,要写出一个一个的参数。apply参数里,arguments是数组形式,直接写个数组上去也可以。
                * Window_Base.prototype.drawTextEx
                从插件里可以发现,其实是调用drawTextEx实现了转义文字。
                那么,借此计划研究一下源码Window_Base.prototype.drawTextEx。
                此插件的说明暂时结束。
                # 其他
                * 无更新,暂无PartC。


                38楼2019-04-12 21:05
                回复
                  2026-04-24 16:25:16
                  广告
                  不感兴趣
                  开通SVIP免广告
                  Window_Base.prototype.drawTextEx 转义字符处理的大入口




                  41楼2019-04-12 22:42
                  回复
                    [Triacontane(トリアコンタン)]HiddenLevel隐藏等级
                    # PartA
                    # 题记
                    * 作者:Triacontane(トリアコンタン)
                    * 版本:1.0.0
                    * 简介:状态窗口隐藏等级和经验值的显示
                    # 概况
                    不显示经验值和等级。
                    # 插件可能性分析(情况推荐)
                    适用于无升级机制的游戏。恋爱或解密GAME的制作者可以尝试。
                    # 插件使用方法
                    * 在插件管理器中启用即可。
                    # PartB
                    # 大致原理
                    复写3个源码中的函数。Window_Base.prototype.drawActorLevel、Window_Status.prototype.drawBasicInfo、Window_Status.prototype.drawExpInfo。
                    描绘角色等级和经验的函数不再有必要,复写为空函数。夹在中间的Window_Status.prototype.drawBasicInfo比较关键。这个是绘制状态窗口基本信息的函数,作者去掉了原函数中调用等级描绘的函数。最终,不再显示等级。
                    # 一些啰嗦的笔记
                    这次的原理相对简单,是从原函数中删去语句。因此这次就不啰嗦了。
                    # 其他
                    * 无更新,暂无PartC。


                    44楼2019-04-23 19:43
                    回复




                      45楼2019-04-23 19:46
                      回复
                        # [Triacontane(トリアコンタン)]ChangeGameOverCondition游戏结束条件变更
                        # PartA
                        # 题记
                        * 作者:Triacontane(トリアコンタン)
                        * 版本:1.1.0
                        * 简介:游戏结束条件变更
                        # 概况
                        原自动GAMEOVER条件为己方全灭且游戏作者未设置可全灭。使用这个插件将会改变这个自动GAMEOVER的触发条件。指定ID的角色挂了,或者全队中任何一人挂了。
                        # 插件可能性分析(情况推荐)
                        如果接到了特别任务,比如保护公主这个角色,公主也同样参与了战斗,那么公主享受VIP待遇,当公主倒地,游戏就结束了。
                        如果是任何一人挂了就结束...感觉游戏难度变高了...
                        # 插件使用方法
                        * 在插件管理器中启用。
                        * 在事件中执行脚本命令
                        ## 脚本命令
                        * $gameParty.setVip(1); 当ID编号为1的角色战斗不能时,游戏结束,这个ID请自行改变。
                        * $gameParty.setVipAll(); 队伍中任何一人战斗不能时,游戏结束。
                        * $gameParty.removeVip(); 移除VIP设置,也就是条件恢复成原MV设置的己方全灭。
                        # 未验证事项
                        help中未写,但是从代码里,有种感觉,这个插件在启动时,默认会执行setVipAll的效果,如果需要默认的全灭再GAMEOVER,可能要先执行一次$gameParty.removeVip()。
                        # PartB
                        # 大致原理
                        Game_Party多两个属性,_vipActor和_vipAll。前者的值是数值,后者的值是布尔值。三个脚本命令其实是对这两个属性的值进行赋值改变。MV判断GAMEOVER的条件依然是Game_Party.prototype.isAllDead,也就是说这两个属性会欺瞒MV,VIP挂了就变成全员挂了哈哈哈。
                        # 一些啰嗦的笔记
                        * var result = _Game_Party_isAllDead.apply(this, arguments);
                        赋值的同时调用执行函数,很简练的写法。因为原本的函数就会返回一个值。
                        如果全员都挂了,这个值为真,那么直接跳过判断,返回真。
                        当不为真时,有超过一个队员挂了的情况,进行连续判断。这个连续判断的解读是从左到右推进。
                        ```
                        return this._vipAll ? true :
                        this._vipActor ? this.deadMembers().contains($gameActors.actor(this._vipActor)) : false;
                        ```
                        拆解:属性_vipAll是否为真?如果为真那么return的值为true,如果不为真则到分号右边。分号右边首先判断的是this._vipActor是否有值(不为null),如果有的话返回this.deadMembers().contains($gameActors.actor(this._vipActor))的结果,如果为null,那么到分号右边,返回false。
                        * this.deadMembers().contains($gameActors.actor(this._vipActor))
                        Game_Actors.prototype.actor = function(actorId) 根绝角色ID返回对应角色。
                        Game_Party的创建借用了Game_Unit,而deadMembers()这个方法原本是定义在Game_Unit里的。
                        Game_Unit.prototype.deadMembers会返回被过滤出的已挂掉成员。
                        contains这个方法是MV源生函数里自行定义的方法。用于判断数组是否包含。
                        当已挂的成员里包含这个VIP成员,那么返回true,否则返回false。
                        * 编程思路里增加一条:欺瞒利用MV源生函数。
                        # 其他
                        * 无更新,暂无PartC。
                        * 阅读任务里增加阅读rpg_core.js


                        46楼2019-04-24 18:55
                        回复
                          今天开始更新,从0开始的例子


                          53楼2019-07-16 18:57
                          收起回复
                            [RMMV笔记实例]Step4 更改字体(非必须步骤)
                            0如果觉得自带字体足够使用,可以不改。如果需要改,可以参考以下不使用插件的修改字体的方式。
                            1下载开源字体(免费授权的字体)或购买字体包
                            其实游戏素材中有一个容易被忽视的细节,那就是字体。
                            很多作者用了好看的字体却因没有授权而被找上门,所以要么是购买可使用的字体包,要么是一开始就用开源字体。
                            字体首先是字库全,其次才是好看。
                            比如思源黑体(Source Han Sans)。这个字体种类较多,注意有的只保留了中文字库,去掉了韩文和日文,如果有输入韩文日文的需要,可以用一个较为全面的思源黑体。
                            2修改字体(GameFont)。
                            把字体复制进fonts文件夹(工程文件目录中)。
                            然后使用编辑器(如果没装编辑器,可以用记事本)打开gamefont.css。
                            会看到:
                            src: url("xxxx")的代码,其中的xxxx就是字体文件名,MV自带字体是mplus-1m-regular.ttf,因此默认就是”mplus-1m-regular.ttf”,把这个替换成你要换的字体即可,注意后缀名ttf或者otf也需要。如果你的电脑是隐藏后缀名的,可以右键属性,看看后缀名是什么。
                            一般的浏览器,支持ttf和otf,所以这两种MV也都支持。
                            3使所有文字适用于此字体
                            打开JS文件夹下的rpg_windows.js文件。
                            找到函数:Window_Base.prototype.standardFontFace
                            删除一些,改写成Window_Base.prototype.standardFontFace = function() {
                            return 'GameFont';
                            };
                            即可。
                            第一次修改记得备份原文件,万一改错了可以替换回来。
                            4检验修改效果。

                            TO BE CONTINUE


                            59楼2019-07-19 02:59
                            回复
                              2026-04-24 16:19:16
                              广告
                              不感兴趣
                              开通SVIP免广告
                              今天更新的是:从0开始的MV-JavaScript(插件实例)可能也有点跳。等我写好MV操作教程后再回来看也行。


                              63楼2019-08-10 10:31
                              回复