Project1

标题: 如何判断玩家是否装备某一类型的护甲? [打印本页]

作者: 仇九    时间: 2020-7-23 16:13
标题: 如何判断玩家是否装备某一类型的护甲?
我在rpg_objects里找到了判断是否装备某一类型武器的语句:
$gameActors.actor(1).isWtypeEquipped(1)
但是我找不到判断玩家是否装备某一类型护甲的语句。
请大佬指教。


同时,当玩家装备栏中装备类型1有装备时,如何获得这个weapon的id?
同样,当玩家装备栏中装备类型2,3,4……有装备时,如何获得这个armor的id?
作者: wabcmcc    时间: 2020-7-23 17:46
資料來自網上.

獲取演員裝備的武器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:20
本帖最后由 仇九 于 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)






为了得到答案我已经很努力得写清楚了,但还是感觉乱……希望大佬们不要……呃……哎………………
作者: 远去之情    时间: 2020-7-24 15:32
仇九 发表于 2020-7-24 00:20
啊,十分感谢!。
同时再询问一下:
(默认装备类型一为weapon,其他的都是armor,若这个角色为双刀流,则 ...


说了那么多那么绕,我觉得这样就能解决啊
作者: 芯☆淡茹水    时间: 2020-7-25 11:06
本帖最后由 芯☆淡茹水 于 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号变量。




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