设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3835|回复: 5
打印 上一主题 下一主题

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1601
在线时间
253 小时
注册时间
2020-1-24
帖子
45
跳转到指定楼层
1
发表于 2020-9-1 20:13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 中二幻者 于 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. };

Lv3.寻梦者

梦石
0
星屑
3448
在线时间
285 小时
注册时间
2013-10-13
帖子
262

开拓者

2
发表于 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
一次放纵自己违反规则以后,就会养成习惯,一旦变成习惯了想改也改不了了
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31923
在线时间
5080 小时
注册时间
2012-11-19
帖子
4877

开拓者

3
发表于 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

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-25 15:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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