Project1

标题: RPGMZ的插件如何写插件指令。 [打印本页]

作者: 中二幻者    时间: 2020-9-1 20:13
标题: RPGMZ的插件如何写插件指令。
本帖最后由 中二幻者 于 2020-9-1 22:34 编辑

在RPGMZ发售之前学了一点JS,想尝试自己写一些插件,但发现还是很难下手,即使只是一些简单的思路也无法不知道如何去实现。
于是开始在各种教程,在RPGMAKER的官方论坛里找到了一个不错的教程,即使是机翻也能看的懂,但可惜的是这是一个MV的教程。
这个插件的功能非常简单,就是在状态里显示一个种族,当然也可以换成其他的,比如性别之类的,前面确实没什么问题,关键在于后面。
因为MV的插件指令是需要手动输入的,而MZ改变了这一点,这就让我不知道怎么去调整,因为一点经验也没有,插件指令可以正确显示,但是没有效果,好几个小时也还是没成功,希望有大佬帮忙把这个简单的改一下,改成MZ能用的。
JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // RPG Maker MZ
  3. //=============================================================================
  4.  
  5. /*:
  6.  * @target MZ
  7.  * @plugindesc 设置角色种族
  8.  * @author
  9.  *
  10.  * @help
  11.  *
  12.  * 这个插件可以设置角色的种族,并且可以通过插件指令在中途改变种族。
  13.  *
  14.  * 角色备注:<race:XX>  XX为你设定的种族。
  15.  *
  16.  *
  17.  *
  18.  * @command set
  19.  * @text 改变种族
  20.  * @desc 设定改变后的种族
  21.  *
  22.  *
  23.  * @arg text
  24.  * @type multiline_string
  25.  * @text Text
  26.  * @desc 要变成的种族
  27.  *
  28.  */
  29.  
  30.   // 保留对原始函数的引用
  31.     const Game_Actor_setup = Game_Actor.prototype.setup;
  32.  
  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.  
  39.     Game_Actor.prototype.changeRace = function (newRace) {
  40.         this.race = newRace;
  41.     };
  42.  
  43.     Window_Status.prototype.drawActorNickname = function (actor, x, y, width = 270) {
  44.         this.resetTextColor();
  45.         if (actor.race) {
  46.             this.drawText(actor.race, x, y, width);
  47.         } else {
  48.             this.drawText(actor.nickname(), x, y, width);
  49.         }
  50.     };
  51.  
  52.     // 保留对原始函数的引用
  53.     const Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  54.  
  55.     Game_Interpreter.prototype.pluginCommand = function (command, args) {
  56.         // 调用原始函数
  57.         Game_Interpreter_pluginCommand.call(this, command, args);
  58.         // 如果插件命令是我们的
  59.         if (command.toLowerCase() === "changerace") {
  60.             // 获取参数
  61.             const id = parseInt(args[0]);
  62.             const newRace = args[1];
  63.             // 改变角色的种族
  64.             $gameActors.actor(id).changeRace(newRace);
  65.         }
  66. };

作者: saiya酱    时间: 2020-9-1 20:28
这个可以参考 https://tkool.jp/mz/plugin/ 官方的讲座(指如何写插件指令部分
能上youtube的话可以参考 siakomobi 的视频
作者: 芯☆淡茹水    时间: 2020-9-1 22:56
本帖最后由 芯☆淡茹水 于 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. })();
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1