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

Project1

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

[有事请教] 请问如何设置角色装备一个物品后改职业

[复制链接]

Lv2.观梦者

梦石
0
星屑
268
在线时间
160 小时
注册时间
2014-9-17
帖子
67
跳转到指定楼层
1
发表于 2019-7-25 17:12:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问如何设置角色装备一个物品后改职业,然后卸下后变回原来职业?
c

Lv3.寻梦者

梦石
0
星屑
3834
在线时间
1181 小时
注册时间
2016-8-9
帖子
2399

开拓者

2
发表于 2019-7-25 21:22:40 | 只看该作者
公共事件分歧判断

当装备【空虚飞机杯】 时  转换职业 为 假面骑士

否则 转换职业为  原职业 【剑客】

但这样子好像要一直扫描判断,比较消耗资源  

点评

对对,谢谢塞尔达同学的提醒  发表于 2019-7-27 00:10
空、空虚飞机杯。。?!其实要是担心害怕消耗资源的话,可以改为定点检测,例如有些游戏会将换装区域限制在特定位置,比如衣柜前面等  发表于 2019-7-26 13:07
酸酸甜甜就④哇噢
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
268
在线时间
160 小时
注册时间
2014-9-17
帖子
67
3
 楼主| 发表于 2019-7-26 19:42:49 | 只看该作者
白嫩白嫩的 发表于 2019-7-25 21:22
公共事件分歧判断

当装备【空虚飞机杯】 时  转换职业 为 假面骑士

我试了不行,而且如你所说要一直扫描,这样很消耗资源
c
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3781
在线时间
439 小时
注册时间
2019-3-3
帖子
87
4
发表于 2019-7-26 20:38:40 | 只看该作者
本帖最后由 多卡多卡 于 2019-7-26 21:00 编辑

JAVASCRIPT 代码复制
  1. var slot_Id = 1;
  2. var _Game_Actor_changeEquip = Game_Actor.prototype.changeEquip;
  3. Game_Actor.prototype.changeEquip = function (slotId, item) {
  4.     slotId == (slot_Id - 1) ? (item == null ? this._classId = 1 : (this.actorId() == 1 ? (item.wtypeId != undefined ? (item.id == 1 ? this._classId = 2 : this._classId = 1) : 0) : 0)) : 0;
  5.     _Game_Actor_changeEquip.call(this, slotId, item);
  6. }
  7.  
  8. var _Game_Actor_discardEquip = Game_Actor.prototype.discardEquip;
  9. Game_Actor.prototype.discardEquip = function (item) {
  10.     (slot_Id - 1) == this.equips().indexOf(item) ? (item == null ? this._classId = 1 : 0) : 0;
  11.     _Game_Actor_discardEquip.call(this, item);
  12. };

slot_Id = 1,1为第几个装备栏
item.wtypeId,武器为wtypeId,防具为atypeId。
this._classId = 1,1为原来的职业,2为更改后的职业。
this.actorId() == 1,1为角色Id。
根据需要自己修改就行了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
268
在线时间
160 小时
注册时间
2014-9-17
帖子
67
5
 楼主| 发表于 2019-7-27 10:19:55 | 只看该作者
多卡多卡 发表于 2019-7-26 20:38
var slot_Id = 1;
var _Game_Actor_changeEquip = Game_Actor.prototype.changeEquip;
Game_Actor.prototy ...

好的,谢谢!
c
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
268
在线时间
160 小时
注册时间
2014-9-17
帖子
67
6
 楼主| 发表于 2019-7-28 15:54:49 | 只看该作者
多卡多卡 发表于 2019-7-26 20:38
var slot_Id = 1;
var _Game_Actor_changeEquip = Game_Actor.prototype.changeEquip;
Game_Actor.prototy ...

你好,我的项目是有很多个防具,然后这些防具都对应一个职业,装备了之后变成这个职业,但是大神你给我的脚本好像不能实现这个功能,我改成了ifelse格式也不行哦
  1. /* @help
  2. * =========================================================
  3. * 该脚本可以让角色装备某一准备后更改状态
  4. * 目前是更改职业
  5. * 2019.7.27
  6. * from project 1 多卡多卡
  7. * slot_Id = 1,1为第几个装备栏
  8. * item.wtypeId,武器为wtypeId,防具为atypeId。
  9. * this._classId = 1,1为原来的职业,2为更改后的职业。
  10. * this.actorId() == 1,1为角色Id。
  11. * 根据需要自己修改就行了
  12. * =========================================================
  13. */

  14. var slot_Id = 5; //1:武器;2:盾;3.头部;4.身体;5: 职业金属;6.饰品
  15. var _Game_Actor_changeEquip = Game_Actor.prototype.changeEquip;
  16. Game_Actor.prototype.changeEquip = function (slotId, item) {
  17.     slotId == (slot_Id - 1) ? (item == null ? this._classId = 15 : (this.actorId() == 1 ? (item.atypeId != undefined ? (item.id == 2 ? this._classId = 16 : this._classId = 1) : 0) : 0)) : 0;
  18.                 slotId == (slot_Id - 1) ? (item == null ? this._classId = 15 : (this.actorId() == 1 ? (item.atypeId != undefined ? (item.id == 3 ? this._classId = 17 : this._classId = 1) : 0) : 0)) : 0;

  19. //    if(slotId == (slot_Id - 1)){
  20. //            if(item==null){
  21. //                    this._classId=15;
  22. //            }else{
  23. //                    if(this.actorId()==1){
  24. //                            // sb
  25. //                            if(item.atypeId != undefined){
  26. //                                    if(item.id == 2){
  27. //                                            this._classId = 16;
  28. //                                    }else{
  29. //                                            this._classId = 15;
  30. //                                    }
  31. //                            }else{
  32. //                                    slotId=0;
  33. //                            }
  34. //                    }else if(this.actorId()==7){
  35. //                            // Kima Sett
  36. //                           
  37. //                    }else if(this.actorId()==8){
  38. //                            // Sheejack Lee
  39. //                           
  40. //                    }else if(this.actorId()==9){
  41. //                            // Tanny Pabick
  42. //                           
  43. //                    }else if(this.actorId()==10){
  44. //                            // Suchen Nara
  45. //                           
  46. //                    }else{
  47. //                           
  48. //                            slotId=0;
  49. //                    }
  50. //                   
  51. //            }
  52. //    }else{
  53. //            slotId=0;
  54. //    }
  55.     _Game_Actor_changeEquip.call(this, slotId, item);
  56. }

  57. var _Game_Actor_discardEquip = Game_Actor.prototype.discardEquip;
  58. Game_Actor.prototype.discardEquip = function (item) {
  59.     (slot_Id - 1) == this.equips().indexOf(item) ? (item == null ? this._classId = 15 : 0) : 0;
  60.     _Game_Actor_discardEquip.call(this, item);
  61. };
复制代码
c
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3781
在线时间
439 小时
注册时间
2019-3-3
帖子
87
7
发表于 2019-7-28 16:10:41 | 只看该作者
ccArtermices 发表于 2019-7-28 15:54
你好,我的项目是有很多个防具,然后这些防具都对应一个职业,装备了之后变成这个职业,但是大神你给我的 ...

如果要实现换一个防具就切换一个职业的话,这个实现起来就比较困难了,我试试看能不能做出来
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
268
在线时间
160 小时
注册时间
2014-9-17
帖子
67
8
 楼主| 发表于 2019-7-28 19:26:03 | 只看该作者
多卡多卡 发表于 2019-7-28 16:10
如果要实现换一个防具就切换一个职业的话,这个实现起来就比较困难了,我试试看能不能做出来 ...

好的,谢谢!
c
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3781
在线时间
439 小时
注册时间
2019-3-3
帖子
87
9
发表于 2019-7-28 20:47:32 | 只看该作者
本帖最后由 多卡多卡 于 2019-7-31 22:30 编辑

这个就可以实现切换装备的同时切换职业了,如果脱下装备或者换了普通的装备,就会切回原来的职业。
JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // Doka_ChangeClassWithEquip.js
  3. // by 多卡多卡 on 2019/7/28
  4. //=============================================================================
  5.  
  6. /*:
  7.  * @plugindesc 换装切换职业
  8.  * @author 多卡多卡
  9.  *
  10.  * @param 装备-1
  11.  * @type struct<Equip>
  12.  * @desc 装备的详细配置信息。
  13.  * @default
  14.  *
  15.  * @param 装备-2
  16.  * @type struct<Equip>
  17.  * @desc 装备的详细配置信息。
  18.  * @default
  19.  *
  20.  * @param 装备-3
  21.  * @type struct<Equip>
  22.  * @desc 装备的详细配置信息。
  23.  * @default
  24.  *
  25.  * @param 装备-4
  26.  * @type struct<Equip>
  27.  * @desc 装备的详细配置信息。
  28.  * @default
  29.  *
  30.  * @param 装备-5
  31.  * @type struct<Equip>
  32.  * @desc 装备的详细配置信息。
  33.  * @default
  34.  *
  35.  * @param 装备-6
  36.  * @type struct<Equip>
  37.  * @desc 装备的详细配置信息。
  38.  * @default
  39.  *
  40.  * @param 装备-7
  41.  * @type struct<Equip>
  42.  * @desc 装备的详细配置信息。
  43.  * @default
  44.  *
  45.  * @param 装备-8
  46.  * @type struct<Equip>
  47.  * @desc 装备的详细配置信息。
  48.  * @default
  49.  *
  50.  * @param 装备-9
  51.  * @type struct<Equip>
  52.  * @desc 装备的详细配置信息。
  53.  * @default
  54.  *
  55.  * @param 装备-10
  56.  * @type struct<Equip>
  57.  * @desc 装备的详细配置信息。
  58.  * @default
  59.  *
  60.  * @param 装备-11
  61.  * @type struct<Equip>
  62.  * @desc 装备的详细配置信息。
  63.  * @default
  64.  *
  65.  * @param 装备-12
  66.  * @type struct<Equip>
  67.  * @desc 装备的详细配置信息。
  68.  * @default
  69.  *
  70.  * @param 装备-13
  71.  * @type struct<Equip>
  72.  * @desc 装备的详细配置信息。
  73.  * @default
  74.  *
  75.  * @param 装备-14
  76.  * @type struct<Equip>
  77.  * @desc 装备的详细配置信息。
  78.  * @default
  79.  *
  80.  * @param 装备-15
  81.  * @type struct<Equip>
  82.  * @desc 装备的详细配置信息。
  83.  * @default
  84.  *
  85.  * @param 装备-16
  86.  * @type struct<Equip>
  87.  * @desc 装备的详细配置信息。
  88.  * @default
  89.  *
  90.  * @param 装备-17
  91.  * @type struct<Equip>
  92.  * @desc 装备的详细配置信息。
  93.  * @default
  94.  *
  95.  * @param 装备-18
  96.  * @type struct<Equip>
  97.  * @desc 装备的详细配置信息。
  98.  * @default
  99.  *
  100.  * @param 装备-19
  101.  * @type struct<Equip>
  102.  * @desc 装备的详细配置信息。
  103.  * @default
  104.  *
  105.  * @param 装备-20
  106.  * @type struct<Equip>
  107.  * @desc 装备的详细配置信息。
  108.  * @default
  109.  *
  110.  * @help
  111.  * 切换装备可以同时切换职业
  112.  * 当换上一件装备时,如果可以变更职业,
  113.  * 那么职业将会转变成装备对应的职业。
  114.  * 如果脱下装备或换上一件普通的装备,
  115.  * 那么职业将会切换会原来的职业
  116.  */
  117. /*~struct~Equip:
  118.  *
  119.  * @param 切换职业
  120.  * @desc 切换装备后的职业
  121.  * @type class
  122.  * @default 0  
  123.  *
  124.  * @param 装备类型
  125.  * @type boolean
  126.  * @on 武器
  127.  * @off 防具
  128.  * @desc 装备的类型
  129.  * @default true
  130.  *
  131.  * @param ----装备Id----
  132.  * @default
  133.  *
  134.  * @param 武器Id
  135.  * @parent ----装备Id----
  136.  * @type weapon
  137.  * @desc 武器的Id(仅当装备类型为武器时生效)
  138.  * @default 0
  139.  *
  140.  * @param 防具Id
  141.  * @parent ----装备Id----
  142.  * @type armor
  143.  * @desc 防具的Id(仅当装备类型为防具时生效)
  144.  * @default 0
  145.  */
  146.  
  147. var Imported = Imported || {};
  148. Imported.Doka_ChangeClassWithEquip = true;
  149. var Doka_ChangeClassWithEquip = Doka_ChangeClassWithEquip || {};
  150.  
  151. Doka_ChangeClassWithEquip.parameters = PluginManager.parameters('Doka_ChangeClassWithEquip');
  152. Doka_ChangeClassWithEquip.MaxEquip = 20;
  153. Doka_ChangeClassWithEquip.Equips = [];
  154.  
  155. for (var i = 0; i < Doka_ChangeClassWithEquip.MaxEquip; i++) {
  156.     if (Doka_ChangeClassWithEquip.parameters['装备-' + String(i + 1)] != "") {
  157.         Doka_ChangeClassWithEquip.Equips[i] = JSON.parse(Doka_ChangeClassWithEquip.parameters['装备-' + String(i + 1)]);  //不知道这个有什么用,先抄下来
  158.         Doka_ChangeClassWithEquip.Equips[i]['Later Class'] = Number(Doka_ChangeClassWithEquip.Equips[i]['切换职业']);
  159.         Doka_ChangeClassWithEquip.Equips[i]['Type'] = String(Doka_ChangeClassWithEquip.Equips[i]["装备类型"] || "true") == "true";
  160.         Doka_ChangeClassWithEquip.Equips[i]['Weapon Id'] = Number(Doka_ChangeClassWithEquip.Equips[i]['武器Id']);
  161.         Doka_ChangeClassWithEquip.Equips[i]['Armor Id'] = Number(Doka_ChangeClassWithEquip.Equips[i]['防具Id']);
  162.     }
  163.     else {
  164.         Doka_ChangeClassWithEquip.Equips[i] = [];
  165.     }
  166. }
  167.  
  168. var Doka_Game_Actor_initMembers = Game_Actor.prototype.initMembers;
  169. Game_Actor.prototype.initMembers = function () {
  170.     Doka_Game_Actor_initMembers.call(this);
  171.     this.initOriginClass();
  172. };
  173.  
  174. Game_Actor.prototype.initOriginClass = function () {
  175.     if (!this._originClass) {
  176.         this._originClass = 0;
  177.     }
  178. };
  179.  
  180. var Doka_Game_Actor_changeEquip = Game_Actor.prototype.changeEquip;
  181. Game_Actor.prototype.changeEquip = function (slotId, item) {
  182.     for (var i = 0; i <= Doka_ChangeClassWithEquip.MaxEquip; i++) {
  183.         if (i < Doka_ChangeClassWithEquip.MaxEquip && this.equips()[slotId] != null && Doka_ChangeClassWithEquip.Equips[i]['Type'] != undefined) {
  184.             if ((Doka_ChangeClassWithEquip.Equips[i]['Type'] && (this.equips()[slotId].wtypeId != undefined && this.equips()[slotId].id != Doka_ChangeClassWithEquip.Equips[i]['Weapon Id']))
  185.                 || (!Doka_ChangeClassWithEquip.Equips[i]['Type'] && (this.equips()[slotId].atypeId != undefined && this.equips()[slotId].id != Doka_ChangeClassWithEquip.Equips[i]['Armor Id'])))
  186.             this._originClass = this._classId;
  187.         }
  188.     }
  189.     Doka_Game_Actor_changeEquip.call(this, slotId, item);
  190.     for (var i = 0; i <= Doka_ChangeClassWithEquip.MaxEquip; i++) {
  191.         if (i < Doka_ChangeClassWithEquip.MaxEquip && this.equips()[slotId] != null && Doka_ChangeClassWithEquip.Equips[i]['Type'] != undefined)
  192.         {
  193.             if ((Doka_ChangeClassWithEquip.Equips[i]['Type'] && this.equips()[slotId].wtypeId != undefined && this.equips()[slotId].id == Doka_ChangeClassWithEquip.Equips[i]['Weapon Id'])
  194.                 || (!Doka_ChangeClassWithEquip.Equips[i]['Type'] && this.equips()[slotId].atypeId != undefined && this.equips()[slotId].id == Doka_ChangeClassWithEquip.Equips[i]['Armor Id']))
  195.             {
  196.                 this._originClass = this._classId;
  197.                 this._classId = Doka_ChangeClassWithEquip.Equips[i]['Later Class']; break;
  198.             }
  199.         }
  200.         Doka_ChangeClassWithEquip.MaxEquip == i ? this._classId = this._originClass : 0;
  201.     }  
  202. }


如果20个装备不够的话,可以自己加

Doka_ChangeClassWithEquip.zip

1.41 KB, 下载次数: 126

评分

参与人数 1+1 收起 理由
j296196585 + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
268
在线时间
160 小时
注册时间
2014-9-17
帖子
67
10
 楼主| 发表于 2019-7-31 21:25:28 | 只看该作者
多卡多卡 发表于 2019-7-28 20:47
这个就可以实现切换装备的同时切换职业了,如果脱下装备或者换了普通的装备,就会切回原来的职业。
//===== ...

多神,这个脚本使用后只要角色一装备物品就会出现 cannot read property 'params' of null的错误,如何破啊?
c
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 16:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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