查看: 7558|回复: 5

[有事请教] RPGMZ的插件如何写插件指令。

[复制链接]
梦石
0
星屑
1623
在线时间
253 小时
注册时间
2020-1-24
回帖
35
发表于 2020-9-1 20:13:48 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

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

×
本帖最后由 中二幻者 于 2020-9-1 22:34 编辑

在RPGMZ发售之前学了一点JS,想尝试自己写一些插件,但发现还是很难下手,即使只是一些简单的思路也无法不知道如何去实现。
于是开始在各种教程,在RPGMAKER的官方论坛里找到了一个不错的教程,即使是机翻也能看的懂,但可惜的是这是一个MV的教程。
这个插件的功能非常简单,就是在状态里显示一个种族,当然也可以换成其他的,比如性别之类的,前面确实没什么问题,关键在于后面。
因为MV的插件指令是需要手动输入的,而MZ改变了这一点,这就让我不知道怎么去调整,因为一点经验也没有,插件指令可以正确显示,但是没有效果,好几个小时也还是没成功,希望有大佬帮忙把这个简单的改一下,改成MZ能用的。
[pre lang="javascript"]//=============================================================================
// RPG Maker MZ
//=============================================================================

/*:
* @target MZ
* @plugindesc 设置角色种族
* @author
*
* @help
*
* 这个插件可以设置角色的种族,并且可以通过插件指令在中途改变种族。
*
* 角色备注:<race:XX>  XX为你设定的种族。
*
*
*
* @command set
* @text 改变种族
* @desc 设定改变后的种族
*
*
* @arg text
* @type multiline_string
* @text Text
* @desc 要变成的种族
*
*/

  // 保留对原始函数的引用
    const Game_Actor_setup = Game_Actor.prototype.setup;

    Game_Actor.prototype.setup = function (actorId) {
        // 调用原函数
        Game_Actor_setup.call(this, actorId);
        this.race = $dataActors[actorId].meta.race || null;
    };

    Game_Actor.prototype.changeRace = function (newRace) {
        this.race = newRace;
    };

    Window_Status.prototype.drawActorNickname = function (actor, x, y, width = 270) {
        this.resetTextColor();
        if (actor.race) {
            this.drawText(actor.race, x, y, width);
        } else {
            this.drawText(actor.nickname(), x, y, width);
        }
    };

    // 保留对原始函数的引用
    const Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;

    Game_Interpreter.prototype.pluginCommand = function (command, args) {
        // 调用原始函数
        Game_Interpreter_pluginCommand.call(this, command, args);
        // 如果插件命令是我们的
        if (command.toLowerCase() === "changerace") {
            // 获取参数
            const id = parseInt(args[0]);
            const newRace = args[1];
            // 改变角色的种族
            $gameActors.actor(id).changeRace(newRace);
        }
};[/pre]
梦石
0
星屑
3463
在线时间
286 小时
注册时间
2013-10-13
回帖
253

开拓者

发表于 2020-9-1 20:28:49 | 显示全部楼层
这个可以参考 https://tkool.jp/mz/plugin/ 官方的讲座(指如何写插件指令部分
能上youtube的话可以参考 siakomobi 的视频

点评

上YOUTUBE看了下,确实出MZ视频了,感谢,这就去学习。  发表于 2020-9-1 20:32
这个我看了,但是用到我现在这个插件里就不知道怎么用了,siakomobi出MZ的视频了吗?  发表于 2020-9-1 20:31
一次放纵自己违反规则以后,就会养成习惯,一旦变成习惯了想改也改不了了
回复

使用道具 举报

梦石
0
星屑
34459
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2020-9-1 22:56:55 | 显示全部楼层
本帖最后由 芯☆淡茹水 于 2020-9-1 23:00 编辑

把 PluginName 填上你的插件文件名。

  1. //=============================================================================
  2. // RPG Maker MZ
  3. //=============================================================================

  4. /*:
  5. * @target MZ
  6. * @plugindesc 设置角色种族
  7. * @author
  8. *
  9. * @help
  10. *
  11. * 这个插件可以设置角色的种族,并且可以通过插件指令在中途改变种族。
  12. *
  13. * 角色备注:<race:XX>  XX为你设定的种族。
  14. *
  15. *
  16. *
  17. * @command set
  18. * @text 改变种族
  19. * @desc 设定改变后的种族
  20. *
  21. * @arg actorId
  22. * @type number
  23. * @text 角色ID
  24. * @desc 要变更种族的角色ID。
  25. *
  26. * @arg text
  27. * @text 要变成的种族
  28. * @desc 要变成的种族
  29. *
  30. */

  31.   // 保留对原始函数的引用
  32.     const Game_Actor_setup = Game_Actor.prototype.setup;

  33.     Game_Actor.prototype.setup = function (actorId) {
  34.         // 调用原函数
  35.         Game_Actor_setup.call(this, actorId);
  36.         this.race = $dataActors[actorId].meta.race || null;
  37.     };

  38.     Game_Actor.prototype.changeRace = function (newRace) {
  39.         this.race = newRace;
  40.     };

  41.     Window_Status.prototype.drawActorNickname = function (actor, x, y, width = 270) {
  42.         this.resetTextColor();
  43.         if (actor.race) {
  44.             this.drawText(actor.race, x, y, width);
  45.         } else {
  46.             this.drawText(actor.nickname(), x, y, width);
  47.         }
  48.     };

  49.     // 保留对原始函数的引用
  50.     //const Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;

  51.     //Game_Interpreter.prototype.pluginCommand = function (command, args) {
  52.         // 调用原始函数
  53.        // Game_Interpreter_pluginCommand.call(this, command, args);
  54.         // 如果插件命令是我们的
  55.         //if (command.toLowerCase() === "changerace") {
  56.             // 获取参数
  57.             //const id = parseInt(args[0]);
  58.             //const newRace = args[1];
  59.             // 改变角色的种族
  60.             //$gameActors.actor(id).changeRace(newRace);
  61.         //}
  62.     //};

  63. (() => {
  64. const PluginName = '';
  65. PluginManager.registerCommand(PluginName, 'set', args => {
  66.     const id = parseInt(args.actorId);
  67.     if ($gameActors.actor(id)) {
  68.         $gameActors.actor(id).changeRace(args.text);
  69.     }
  70. });
  71. })();
复制代码

点评

感谢大佬,没这方面的基础真是太难了,对着教程照猫画猫然后瞎JB乱改却没想到要增加一个arg属性。。  发表于 2020-9-1 23:49

评分

参与人数 1赞 +1 收起 理由
中二幻者 + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 1 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部