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

Project1

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

[已经解决] 捕捉时宠物加入

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
1
发表于 2022-5-20 11:02:32 | 显示全部楼层
# 捕捉系统设置
module BUZHUO_BABY
  ACID = {1=>[a,b,c,d,e...],
               2=>[f,g,h,i...],
               …………} # 敌人对应相应的角色  ACID[敌人id] = [角色id数组]
end

# ACID = {敌人ID=>[对应角色ID数组]}

#获得宠物
BUZHUO_BABY::ACID[en.id].each do |i|
  unless @active_battler.kds_baby.include?(i)
    @active_battler.kds_baby.push(i)
    $game_actors[i].zhuren = @active_battler.id
    break
  end
end

没太明白楼主的意思,这段的意思是每个敌人ID可以对应多个角色id
获得时依次判定是否已有对应角色id,没有就加入,这个只能加入一个,如果要改为加入所有不存在的就去掉break

评分

参与人数 1星屑 +200 +1 收起 理由
RyanBern + 200 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
2
发表于 2022-5-20 22:33:50 | 显示全部楼层
黑米馒头 发表于 2022-5-20 17:32
应该是上次卡了,问题没打全,现在写全了,你帮我看看

意思是捕捉8号后添加到$game_party,放在80-100的空位?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
3
发表于 2022-5-21 00:50:00 | 显示全部楼层
黑米馒头 发表于 2022-5-20 22:38
是的,8号是个例子,后面还要设置好多宠物,因为我这个宠物系统,里面的宠物等同于角色,同个ID的宠物又 ...

那这个捕捉系统要大改,ACID单对多ACID[en.id]的类型是数组,而原脚本ACID[en.id]是数字,所有用到这个的地方都要改
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
4
发表于 2022-5-21 09:42:55 | 显示全部楼层
    elsif acca.include?(BUZHUO_BABY::ACID[en.id])#【无效目标】
      @active_battler.damage = "!c[2]" + en.name + "!c[6]已经在队伍中的召唤兽!"
      @phase4_step = 3
      return
    end
这一段的判断条件改一下就好,用数组交集运算判断是否有重复
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
5
发表于 2022-5-21 09:56:43 | 显示全部楼层
elsif acca & BUZHUO_BABY::ACID[en.id] != nil
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
6
发表于 2022-5-21 10:13:40 | 显示全部楼层
这个是有任意一个对应ID在队伍就不行,要全部都在队伍就不能捕捉那就是
elsif acca & BUZHUO_BABY::ACID[en.id] == BUZHUO_BABY::ACID[en.id]
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
7
发表于 2022-5-21 11:08:44 | 显示全部楼层
本帖最后由 qq634488405 于 2022-5-21 14:55 编辑

原来的判断是单个角色单独判断是否有ID
#获得宠物
BUZHUO_BABY::ACID[en.id].each do |i|
  unless acca.include?(i)
…………
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
8
发表于 2022-5-21 16:44:39 | 显示全部楼层
改成acca还有BUG?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
9
发表于 2022-5-21 23:45:01 | 显示全部楼层
黑米馒头 发表于 2022-5-21 18:20
Bug:现在数组里的宠物全在队伍里了,也能继续捕捉

    # 已经在队伍的情况

acca是所有角色宠物总集合。acca & BUZHUO_BABY::ACID[en.id]返回的是角色宠物总集合与敌人对应ID的交集,这个交集与BUZHUO_BABY::ACID[en.id]相同意味着acca包含所有这个敌人对应的ID,所以要显示捕捉到上限。而获得宠物那里是取这个敌人对应的ID,依次判断acca中是否含有这个ID,没有就加入宠物
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4501
在线时间
381 小时
注册时间
2012-11-8
帖子
273
10
发表于 2022-5-22 23:13:08 | 显示全部楼层
黑米馒头 发表于 2022-5-22 00:22
这是范例,你进去看下,用1个角色捕捉宠物的话,捕捉玩3只就不能捕捉了,但是你如果用别的角色去捕捉,就 ...

知道原因了,因为不同角色捕捉的顺序不同,导致即便抓满了acca & BUZHUO_BABY::ACID[en.id]的结果顺序不唯一,所以== BUZHUO_BABY::ACID[en.id]时不一定为true,改成(acca & BUZHUO_BABY::ACID[en.id]).size == BUZHUO_BABY::ACID[en.id].size就好了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-7 05:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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