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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3606
在线时间
1891 小时
注册时间
2010-6-19
帖子
1211
跳转到指定楼层
1
发表于 2022-5-18 11:24:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 黑米馒头 于 2022-5-20 17:31 编辑

在脚本里用了个捕捉功能,

敌人对应角色ID,现在是单个敌人对应单个角色,如何改成单个敌人对应多个角色ID?

现在是8号敌人对应80号角色,如何改成8号对应80-100号角色,

当捕捉8号敌人的时候,队伍里有80-100角色的话,就去除已经获得的角色编号,当80-100号角色全在队伍里了,在次捕捉该敌人就捕捉不了了

注:一次只能捕捉1只宠物

# 捕捉系统设置
module BUZHUO_BABY
     ACID = [] # 敌人对应相应的角色  ACID[敌人id] = 角色id
  ACID[8] = 80
end



#获得宠物
@active_battler.kds_baby.push(BUZHUO_BABY::ACID[en.id])
$game_actors[BUZHUO_BABY::ACID[en.id]].zhuren = @active_battler.id

Lv3.寻梦者

梦石
0
星屑
3606
在线时间
1891 小时
注册时间
2010-6-19
帖子
1211
25
 楼主| 发表于 2022-5-23 21:04:43 | 只看该作者
完美解决
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
24
发表于 2022-5-23 09:38:33 | 只看该作者
elsif BUZHUO_BABY::LV[en.id] !=nil and BUZHUO_BABY::LV[en.id] > @active_battler.level
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3606
在线时间
1891 小时
注册时间
2010-6-19
帖子
1211
23
 楼主| 发表于 2022-5-23 00:19:38 | 只看该作者
本帖最后由 黑米馒头 于 2022-5-23 00:20 编辑
qq634488405 发表于 2022-5-22 23:13
知道原因了,因为不同角色捕捉的顺序不同,导致即便抓满了acca & BUZHUO_BABY::ACID[en.id]的结果顺序不 ...


上面这个判定完美解决了,非常感谢,
    #【等级不够】  
    elsif BUZHUO_BABY::LV[en.id] > @active_battler.level
这句好像是敌人等级比角色等级高级不能捕捉,但是每个都设置等级太麻烦了,能不能把条件在改一下,改成 敌人等级>角色等级不可以捕捉,如果敌人没设置等级也可以捕捉,因为想偷懒一下,不然每个怪都设置等级太繁琐了,好几百个怪...... 我现在在敌人等级库里没设置敌人等级的话,一捕捉就报错
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
22
发表于 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就好了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3606
在线时间
1891 小时
注册时间
2010-6-19
帖子
1211
21
 楼主| 发表于 2022-5-22 21:49:27 | 只看该作者
解决了 谢谢
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3606
在线时间
1891 小时
注册时间
2010-6-19
帖子
1211
20
 楼主| 发表于 2022-5-22 00:22:08 | 只看该作者
qq634488405 发表于 2022-5-21 23:45
acca是所有角色宠物总集合。acca & BUZHUO_BABY::ACID[en.id]返回的是角色宠物总集合与敌人对应ID的交集 ...

这是范例,你进去看下,用1个角色捕捉宠物的话,捕捉玩3只就不能捕捉了,但是你如果用别的角色去捕捉,就不行了

捕捉宠物.rar

1.35 MB, 下载次数: 2

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
19
发表于 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,没有就加入宠物

点评

那这BUG没办法改吗?我是没头绪了  发表于 2022-5-21 23:52
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3606
在线时间
1891 小时
注册时间
2010-6-19
帖子
1211
18
 楼主| 发表于 2022-5-21 18:20:48 | 只看该作者
本帖最后由 黑米馒头 于 2022-5-21 21:28 编辑

Bug:现在数组里的宠物全在队伍里了,也能继续捕捉

    # 已经在队伍的情况
      elsif acca & BUZHUO_BABY::ACID[en.id] == BUZHUO_BABY::ACID[en.id]
      @active_battler.damage = "!c[2]" + en.name + "!c[6]捕捉数量已达上限!"
      @phase4_step = 3
      return
    end

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

      
我大概排查出BUG了,按照上面这样修改,战斗的时候除非数组里的宠物全在1个队员身上,你在继续捕捉才会显示无法继续捕捉了,
不然的话就会出现能无限捕捉的情况,举例:数组设置3只宠物,角色1身上捕捉了1只,角色2身上捕捉了2只,那么上面的判定就没用了,
你可以无限捕捉,除非角色1或角色2其中一个身上有这3只宠物,那么上面的判定才生效,你继续捕捉会显示 捕捉数量已达到上限。
elsif acca & BUZHUO_BABY::ACID[en.id] == BUZHUO_BABY::ACID[en.id]
这句是不是 数组里的宠物数量  =  单个角色身上宠物的数量?
我的理解是,应该改成 ,数组里宠物的数量 = 队伍里宠物的数量

点评

多p一下,分段看看各部分数值  发表于 2022-5-22 00:13
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
17
发表于 2022-5-21 16:44:39 | 只看该作者
改成acca还有BUG?

点评

是的,好像判定没效果一样,可以无限捕捉  发表于 2022-5-21 16:55
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 23:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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