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

Project1

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

[有事请教] 如何判断玩家是否装备某一类型的护甲?

[复制链接]

Lv5.捕梦者

梦石
16
星屑
12324
在线时间
1439 小时
注册时间
2020-3-21
帖子
367

极短23获奖

跳转到指定楼层
1
发表于 2020-7-23 16:13:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我在rpg_objects里找到了判断是否装备某一类型武器的语句:
$gameActors.actor(1).isWtypeEquipped(1)
但是我找不到判断玩家是否装备某一类型护甲的语句。
请大佬指教。


同时,当玩家装备栏中装备类型1有装备时,如何获得这个weapon的id?
同样,当玩家装备栏中装备类型2,3,4……有装备时,如何获得这个armor的id?

Lv4.逐梦者

梦石
0
星屑
16134
在线时间
3998 小时
注册时间
2015-9-14
帖子
1337

开拓者

2
发表于 2020-7-23 17:46:52 | 只看该作者
資料來自網上.

獲取演員裝備的武器ID   
    $gameActors.actor(n).weapons()[m].id;
    //n:演員ID  m:設備索引   如果配備多個,則添加m的值。如果您沒有裝備武器,則會報錯

獲取演員裝備的護甲ID   
   $gameActors.actor(n).armors()[m].id;
   //n:演員ID  m:設備索引   如果配備多個,則添加m的值。如果您沒有裝備護甲,則會報錯

点评

谢谢大佬!!!  发表于 2020-7-24 00:58
回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者

梦石
16
星屑
12324
在线时间
1439 小时
注册时间
2020-3-21
帖子
367

极短23获奖

3
 楼主| 发表于 2020-7-24 00:20:59 | 只看该作者
本帖最后由 仇九 于 2020-7-24 00:57 编辑
wabcmcc 发表于 2020-7-23 17:46
資料來自網上.

獲取演員裝備的武器ID   


啊,十分感谢!。
同时再询问一下:
(默认装备类型一为weapon,其他的都是armor,若这个角色为双刀流,则装备类型一,二都是weapon,其他的是armor)(此处分清装备类型,武器类型,武器id,护甲类型,护甲id)
$gameActors.actor(n).weapons()[m].wtypeId可以获得正装备的武器的武器类型,如果没有装备则返回null。armors同理。m指的是装备栏中的武器。
weapon的m一般是0,当玩家指定双刀流时可以是1。
armor的m指装备栏中从上到下第几个已装备护甲的次序。(话说这样的机制好麻烦。)
比如我们的n号角色不是双刀流,且游戏的默认装备类型一共有3个,第一个默认为武器weapon,第二个和第三个为护甲armor。当我们的这三个装备类型的装备为【小刀,无,衣服】时,我们用$gameActors.actor(n).armors()[0].id得到的是衣服的护甲armor的id,用$gameActors.actor(n).weapons()[0].id得到的是小刀的武器weapon的id,而$gameActors.actor(n).armors()[1].id会返回null。当我们的这三个装备类型的装备为【小刀,项链,无】时我们用$gameActors.actor(n).armors()[0].id得到的是项链的护甲armor的id,而$gameActors.actor(n).armors()[1].id会返回null。这对比我们能看出,$gameActors.actor(n).armors()[0].id会跳过空的装备类型。读取的是已装备的第一个护甲的id。
__________________________________________________________________________________________________________________________________________
以上是我自己做对比试验得到的结果……我刚学mv的插件,懂了一些,先在rpg_objects里找了半天,找不到关于“装备类型”的任何脚本……不知道为什么……然后我想看看装备栏的武器是怎么储存的,结果在Scene_Equip里找到了答案,印证了我上面的实验结果。
然后现在就有了问题:
如何判断n号角色的装备栏中,装备类型(不是武器或者护甲类型)为m的栏中的weapon/armors的id?(m为0指weapon。m为1且此角色为双刀流时为weapon,m为1且此角色不是双刀流时为armor。m为2,3,4……时都是armor)






为了得到答案我已经很努力得写清楚了,但还是感觉乱……希望大佬们不要……呃……哎………………
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
913
在线时间
162 小时
注册时间
2019-4-18
帖子
38
4
发表于 2020-7-24 15:32:59 | 只看该作者
仇九 发表于 2020-7-24 00:20
啊,十分感谢!。
同时再询问一下:
(默认装备类型一为weapon,其他的都是armor,若这个角色为双刀流,则 ...


说了那么多那么绕,我觉得这样就能解决啊
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33692
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

5
发表于 2020-7-25 11:06:53 | 只看该作者
本帖最后由 芯☆淡茹水 于 2020-7-25 11:18 编辑
  1. Game_Actor.prototype.getArmorIdFrom = function(atypeId) {
  2.     var armor = this.armors().filter(function(armor) {
  3.         return armor && armor.atypeId === atypeId;
  4.     }).shift();
  5.     return armor ? armor.id : 0;
  6. };
复制代码


把上面那段写到插件里,给 Game_Actor 加一个 根据 防具类型ID 获取 对应的 防具ID 的方法。
用法是 脚本:$gameActors.actor(角色ID).getArmorIdFrom(防具的类型ID);
如果角色装备有这个类型的防具,获取到的是 对应防具的ID ; 如果没有,值为 0 。可以依照值是否为 0 判断是否装备了该类型防具。

如果嫌麻烦,可以直接在事件脚本写下面这段
JAVASCRIPT 代码复制
  1. var actor = $gameActors.actor(角色ID);
  2. var armor = actor.armors().filter(function(armor) {
  3.     return armor && armor.atypeId === 防具类型ID;
  4. }).shift();
  5. $gameVariables.setValue(10, armor ? armor.id : 0);


将 角色ID 与 防具类型ID 替换成你需要获取的就行了, 这是将 防具ID 代入 10号变量。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-13 03:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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