Project1

标题: 获取正在装备中的某种道具的总数 [打印本页]

作者: 哇哇哇啊叭叭    时间: 2022-1-20 18:39
标题: 获取正在装备中的某种道具的总数
本帖最后由 哇哇哇啊叭叭 于 2022-1-20 17:31 编辑

  

  唉...如果照官方做法,就得重建三类道具的哈希,然后把所有方法复制一遍...天呐

[line]6[/line]
  再说详细一点吧:

  $game_party.equip_items 可以获得所有“未被装备”的道具。但va这里有个问题:所有装备中的道具,是放在角色身上的,在$game_party里并不包括它们。
  用某actor.equips可以获得这个角色身上所有的装备。但用这种方法的思路是:1. 新建5个变量; 2. 遍历所有队伍角色,将所有装备分别存入5个变量里; 3. 统计每个变量(每个变量是一个数组)数组中,每类object的重复值。这太过分了。


[line]6[/line]
  如题。已知道具id,如何获取当前队伍中,该装备在所有队友(包括自己)身上的总数?



作者: 任小雪    时间: 2022-1-20 19:46
【以下皆是瞎说】
没有弄过,我的思路是用脚本获取每个角色身上的装备长度

具体代码,mv的话,我是先console.log($gameParty)
不知道上面有没有写错

然后按f8看看后面接着的代码是什么(指的队伍内装备的代码怎么写)

然后去具体写(唔,va的思路。。。不确定,没怎样用,
算了,还是不多说了,免得被人误解是瞎说,反正我mv写代码时是这么俺寻思的,va也不知道有没有类似console.log这招来快速找代码)
作者: soulsaga    时间: 2022-1-20 21:17
本帖最后由 soulsaga 于 2022-1-20 21:18 编辑

RUBY 代码复制
  1. $game_party.members[0].equips


没有说武器还是防具..萌新不会
作者: SailCat    时间: 2022-1-20 22:40
本帖最后由 SailCat 于 2022-1-20 22:43 编辑

RUBY 代码复制
  1. def get_equip_count(item)
  2. $game_party.members.inject(0) {|a, i| a += i.equips.count {|n| n.object == item}}
  3. end


然后item参数实体传进来,应该是没问题的,主要是我主力不用VA,不确认1.92有没有sum和count函数(1.81反正都没有),找了下API参考,确认1.92有count但没sum
作者: 哇哇哇啊叭叭    时间: 2022-1-20 22:51
本帖最后由 哇哇哇啊叭叭 于 2022-1-20 18:26 编辑
SailCat 发表于 2022-1-20 17:40
def get_equip_count(item)
$game_party.members.inject(0) {|a, i| a += i.equips.count {|n| n.object == ...



$game_party.members.inject(0) {|a, i| a += i.equips.count {|n| n.object == item}}应写成这样:
$game_party.members.inject(0) {|a, i| a += i.equips.count {|n| n == item}}

.object可能是“将内存中实例转为对象的方法”??

[line]6[/line]

好激动,有大神回答我的问题啦!!!

  拜服,拜谢!拿代码回家试试去啦(突然有种史派克找人修飞船的既视感,修船师傅是个有经验的老手,但飞船实在太旧了,很多零件都停产了...蛤蛤蛤...)







作者: 任小雪    时间: 2022-1-21 00:05
虽然你貌似做出来了,因为没具体弄过所以我只是猜测,法子肯定是循环,
获取单个角色诸个装备格是否有着装备还是不存在,若有,则若该角色装备了某指定装备,则指定数值加一,
按这个法子,现有角色循环一波
最终指定数值就是你要的数值
作者: 哇哇哇啊叭叭    时间: 2022-1-21 00:38
任小雪 发表于 2022-1-20 19:05
虽然你貌似做出来了,因为没具体弄过所以我只是猜测,法子肯定是循环,
获取单个角色诸个装备格是否有着装 ...


是数组啦
.inject(0)包括一个block和一个参数,用法是(栗子):
  某数组.inject(0){|结果,元素|结果+=元素}
  [1,2,3,4].inject(0){|结果,元素|结果+=元素} #结果初始为.inject(0)中带入的参数,栗子里是0。元素是“某数组”里的所有元素,因此数组中的元素数量,就是block的执行次数。在栗子里,结果开始为0,然后逐项加运算所有数组元素,运行结果就是10

  在$game_party.members.inject(0) {|a, i| a += i.equips.count {|n| n == item}}里,.inject(0)是将所有队伍中角色在block里进行运算。i是每个队员,equips.count是统计所有与item相同的装备数量。








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