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

Project1

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

[已经解决] 获取正在装备中的某种道具的总数

[复制链接]

Lv4.逐梦者

梦石
0
星屑
11706
在线时间
991 小时
注册时间
2019-11-5
帖子
2427

极短24参与

跳转到指定楼层
1
发表于 2022-1-20 18:39:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 哇哇哇啊叭叭 于 2022-1-20 17:31 编辑

  

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



  再说详细一点吧:

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




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


风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23186
在线时间
2387 小时
注册时间
2005-10-15
帖子
1166

开拓者

来自 4楼
发表于 2022-1-20 22:40:34 | 只看该作者
本帖最后由 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

点评

多说一句我没加item是否为空的判定,如果item传nil进来,会返回给你裸着没装装备的装备位置数目  发表于 2022-1-20 22:42

评分

参与人数 1星屑 +70 收起 理由
alexncf125 + 70 版主认可的优秀回答

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11706
在线时间
991 小时
注册时间
2019-11-5
帖子
2427

极短24参与

7
 楼主| 发表于 2022-1-21 00:38:21 | 只看该作者
任小雪 发表于 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相同的装备数量。



点评

不是一种语言,js我都不太懂,算了,我估计思路都差不多(也可能楼主之前的疑惑点是在字串符中提取数据,https://rpg.blue/thread-486948-1-1.html),溜了  发表于 2022-1-21 00:45
风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
6
发表于 2022-1-21 00:05:44 | 只看该作者
虽然你貌似做出来了,因为没具体弄过所以我只是猜测,法子肯定是循环,
获取单个角色诸个装备格是否有着装备还是不存在,若有,则若该角色装备了某指定装备,则指定数值加一,
按这个法子,现有角色循环一波
最终指定数值就是你要的数值

点评

等等,哈希?这个不懂,告辞!  发表于 2022-1-21 00:07
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11706
在线时间
991 小时
注册时间
2019-11-5
帖子
2427

极短24参与

5
 楼主| 发表于 2022-1-20 22:51:56 | 只看该作者
本帖最后由 哇哇哇啊叭叭 于 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可能是“将内存中实例转为对象的方法”??




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

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






点评

n是一个Game_BaseItem, n.object就是返回这个Game_BaseItem所对应的RPG::xxxx(如果存在)  发表于 2022-1-21 00:46
风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36372
在线时间
10785 小时
注册时间
2009-3-15
帖子
4813
3
发表于 2022-1-20 21:17:14 | 只看该作者
本帖最后由 soulsaga 于 2022-1-20 21:18 编辑

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


没有说武器还是防具..萌新不会

点评

包括武器和防具呀。  发表于 2022-1-20 22:15
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
2
发表于 2022-1-20 19:46:22 | 只看该作者
【以下皆是瞎说】
没有弄过,我的思路是用脚本获取每个角色身上的装备长度

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

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

然后去具体写(唔,va的思路。。。不确定,没怎样用,
算了,还是不多说了,免得被人误解是瞎说,反正我mv写代码时是这么俺寻思的,va也不知道有没有类似console.log这招来快速找代码)

点评

楼主都看得懂,你咋就看不懂?不要过于针对了  发表于 2022-2-1 23:54
这部分的工作已经完成了,就是思路很麻烦呢  发表于 2022-1-20 22:17

评分

参与人数 1星屑 -15 收起 理由
alexncf125 -15 文不对题 不知所云

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-11 19:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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