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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
跳转到指定楼层
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
星屑
4476
在线时间
380 小时
注册时间
2012-11-8
帖子
272
2
发表于 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
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
3
 楼主| 发表于 2022-5-20 17:32:11 | 只看该作者
qq634488405 发表于 2022-5-20 11:02
# 捕捉系统设置
module BUZHUO_BABY
  ACID = {1=>[a,b,c,d,e...],

应该是上次卡了,问题没打全,现在写全了,你帮我看看
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
4
 楼主| 发表于 2022-5-20 22:29:17 | 只看该作者
qq634488405 发表于 2022-5-20 11:02
# 捕捉系统设置
module BUZHUO_BABY
  ACID = {1=>[a,b,c,d,e...],

发现1个问题,我把敌人数组改成  ACID = {8=>[51,52,53]} ,3个宠物ID

然后捕捉的时候队伍里设置2个角色,当角色1和2同时捕捉敌人1的时候,
会同时出现捕捉数组里面同1个宠物的情况,如何改成,同时捕捉同1个敌人的时候,
宠物在队里了,就去除一个ID,比如1先行动,捕捉敌人,然后51号宠物入队了,
2号捕捉的时候只能捕捉其它两只,当这个数组里面的所有宠物都被捕捉了,
然后再次去捕捉改敌人的时候,就显示,无法继续捕捉该宠物了



下面是我的捕捉系统

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Battle
  8.  
  9.   #======================================================
  10.   # 【捕捉系统】
  11.   # 生成提示窗口
  12.   alias bnzz main
  13.   def main
  14.     @tip_window = Window_Tip1.new
  15.     bnzz
  16.     @tip_window.dispose
  17.   end
  18.   alias tgbmj update
  19.   def update
  20.     @tip_window.update
  21.     tgbmj
  22.   end
  23.   def make_buzhuo_action_result # 捕捉
  24.     # 设置动画ID
  25.     @animation1_id = BUZHUO_BABY::ANI[@active_battler.id][0]
  26.     @animation2_id = BUZHUO_BABY::ANI[@active_battler.id][1]
  27.     # 法术值消耗
  28.     if @active_battler.sp - BUZHUO_BABY::COMP >= 0
  29.       @active_battler.sp -= BUZHUO_BABY::COMP
  30.     end
  31.     # 应用动画
  32.     index = @active_battler.current_action.target_index
  33.     en = $game_troop.smooth_target_enemy(index)
  34.     @target_battlers = [en]
  35.  
  36.     # 帮助窗口显示"捕捉"
  37.     @help_window.set_text(@active_battler.name + "发动了捕捉", 1)   
  38.  
  39.     # 队伍中的宠物
  40.     acca = []
  41.     for i in $game_party.actors
  42.       acca += i.kds_baby
  43.     end
  44.     # 限制处理
  45.     if @active_battler.kds_baby.size >= 8  # 测试用,身上8只宠物【仓库满】
  46.       @active_battler.damage = "!c[4]" + @active_battler.name + "!c[6]携带的宠物已满!无法继续捕捉!c[2]" + en.name+"!c[6]!"
  47.       @phase4_step = 3
  48.       return
  49.     elsif @active_battler.sp < BUZHUO_BABY::COMP     #【MP不足】
  50.       @active_battler.damage = "!c[4]" + @active_battler.name + "!c[6]的!c[1]MP!c[6]不足!无法捕捉!c[2]" + en.name+"!c[6]!"
  51.       @phase4_step = 3
  52.       return
  53.     elsif BUZHUO_BABY::LV[en.id] > @active_battler.level#【等级不够】
  54.       @active_battler.damage = "!c[4]" + @active_battler.name + "!c[6]的等级低于!c[2]"+BUZHUO_BABY::LV[en.id].to_s+"!c[6]无法捕捉!c[2]" + en.name+"!c[6]!"
  55.       @phase4_step = 3
  56.       return
  57.     elsif BUZHUO_BABY::UNENID.include?(en.id)#【无效目标】
  58.       @active_battler.damage = "!c[4]" + @active_battler.name + "!c[6]无法捕捉该目标!c[2]" + en.name+"!c[6]!"
  59.       @phase4_step = 3
  60.       return
  61.     elsif acca.include?(BUZHUO_BABY::ACID[en.id])#【无效目标】
  62.       @active_battler.damage = "!c[2]" + en.name + "!c[6]已经在队伍中的召唤兽!"
  63.       @phase4_step = 3
  64.       return
  65.     end
  66.     # 突破限制捕捉处理
  67.     if rand(10 + 100 * en.hp / en.maxhp) < BUZHUO_BABY::PC[@active_battler.id]
  68.       @active_battler.damage = "!c[6]恭喜!c[4]"+@active_battler.name+"!c[6]成功捕获了!c[2]"+en.name+"!c[6]作为召唤兽!"
  69.  
  70.       #获得宠物
  71.   #    @active_battler.kds_baby.push(BUZHUO_BABY::ACID[en.id])
  72.   #    $game_actors[BUZHUO_BABY::ACID[en.id]].zhuren = @active_battler.id
  73.  
  74.       #获得宠物
  75.       BUZHUO_BABY::ACID[en.id].each do |i|
  76.         unless @active_battler.kds_baby.include?(i)
  77.           @active_battler.kds_baby.push(i)
  78.           $game_actors[i].zhuren = @active_battler.id
  79.           break
  80.         end
  81.       end      
  82.  
  83.  
  84.       # 在update_phase4_step5中让其死亡,被捕捉标志
  85.       en.damage = "捕捉"
  86.     else
  87.       @active_battler.damage = "!c[2]" + en.name+"!c[6]十分机智的逃脱了!c[4]"+@active_battler.name+"!c[6]的捕捉!"
  88.     end
  89.   end
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4476
在线时间
380 小时
注册时间
2012-11-8
帖子
272
5
发表于 2022-5-20 22:33:50 | 只看该作者
黑米馒头 发表于 2022-5-20 17:32
应该是上次卡了,问题没打全,现在写全了,你帮我看看

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
6
 楼主| 发表于 2022-5-20 22:38:50 | 只看该作者
qq634488405 发表于 2022-5-20 22:33
意思是捕捉8号后添加到$game_party,放在80-100的空位?


是的,8号是个例子,后面还要设置好多宠物,因为我这个宠物系统,里面的宠物等同于角色,同个ID的宠物又不能同时出现在2个以上的角色身上,所以只能弄得这么复杂,弄多点数组,看起来好像捕捉敌人可以捕捉好多次一样~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4476
在线时间
380 小时
注册时间
2012-11-8
帖子
272
7
发表于 2022-5-21 00:50:00 | 只看该作者
黑米馒头 发表于 2022-5-20 22:38
是的,8号是个例子,后面还要设置好多宠物,因为我这个宠物系统,里面的宠物等同于角色,同个ID的宠物又 ...

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
8
 楼主| 发表于 2022-5-21 06:51:47 | 只看该作者
本帖最后由 黑米馒头 于 2022-5-21 06:54 编辑
qq634488405 发表于 2022-5-21 00:50
那这个捕捉系统要大改,ACID单对多ACID[en.id]的类型是数组,而原脚本ACID[en.id]是数字,所有用到这个的 ...


RUBY 代码复制
  1. # 捕捉系统设置
  2. module BUZHUO_BABY
  3.  
  4.   UNENID = [1,2,9,10] # 不可以捕捉的敌人id
  5.   COMP = 20 # 消耗MP
  6.  
  7.   LV = [] # 敌人等级  LV[敌人ID] = 等级
  8.   LV[1] = 1  
  9.   LV[2] = 1   
  10.   LV[8] = 1
  11.   LV[9] = 10
  12.   LV[10] = 1
  13.  
  14.   PC = [] # 成功概率 PC[角色id] = 概率
  15.   PC[1] = 100
  16.   PC[2] = 100
  17.   PC[3] = 100
  18.   PC[4] = 100
  19.   PC[5] = 100
  20.  
  21.   ANI = [] # 动画   ANI[角色id] = [我方动画id, 敌方动画id]
  22.   ANI[1] = [136, 69]
  23.   ANI[2] = [70, 69]
  24.   ANI[3] = [70, 69]
  25.   ANI[4] = [70, 69]
  26.   ANI[5] = [70, 69]
  27.  
  28.   ACID = [] # 敌人对应相应的角色  ACID[敌人id] = 角色id
  29.  
  30.   ACID[8] = 51
  31.  
  32. end



整个捕捉系统就这两段脚本
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4476
在线时间
380 小时
注册时间
2012-11-8
帖子
272
9
发表于 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
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
10
 楼主| 发表于 2022-5-21 09:47:41 | 只看该作者
qq634488405 发表于 2022-5-21 09:42
elsif acca.include?(BUZHUO_BABY::ACID[en.id])#【无效目标】
      @active_battler.damage = "!c[2] ...

大佬帮忙改下吧,自己表示看都看不太懂
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 18:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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