查看: 1076|回复: 3

[有事请教] 请问$game_temp.battle_proc的作用

[复制链接]
梦石
0
星屑
4761
在线时间
285 小时
注册时间
2013-10-13
回帖
580
发表于 2026-1-14 23:46:20 | 显示全部楼层 |阅读模式

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

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

×
  #--------------------------------------------------------------------------
  # ● 战斗处理
  #--------------------------------------------------------------------------
  def command_301
    # 如果不是无效的队伍
    if $data_troops[@parameters[0]] != nil
      # 设置中断战斗标志
      $game_temp.battle_abort = true
      # 设置战斗调用标志
      $game_temp.battle_calling = true
      $game_temp.battle_troop_id = @parameters[0]
      $game_temp.battle_can_escape = @parameters[1]
      $game_temp.battle_can_lose = @parameters[2]
      # 设置返回调用
      current_indent = @list[@index].indent
      $game_temp.battle_proc = Proc.new { |n| @branch[current_indent] = n}

    end
    # 推进索引
    @index += 1
    # 结束
    return false
  end




请问: $game_temp.battle_proc = Proc.new { |n| @branch[current_indent] = n}的作用是什么?@branch等于{0=>0}战斗胜利返回调用有什么作用?

素材区好人

梦石
5
星屑
12559
在线时间
4345 小时
注册时间
2011-7-21
回帖
2264

超评测参与极短28参与极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

发表于 2026-1-15 06:20:37 | 显示全部楼层
本帖最后由 无忧谷主幻 于 2026-1-15 06:24 编辑

简单来说,就是战斗事件后的后续条件分支,判断不同的战斗结果(如胜利、失败、逃跑),以此执行不同的事件
@branch等于{0=>0}应该就是判定为战斗胜利,然后执行胜利对应的剧情
回复

使用道具 举报

梦石
0
星屑
4761
在线时间
285 小时
注册时间
2013-10-13
回帖
580
 楼主| 发表于 2026-1-15 23:46:15 | 显示全部楼层
  #--------------------------------------------------------------------------
  # ● 战斗结束
  #     result : 結果 (0:胜利 1:失败 2:逃跑)
  #--------------------------------------------------------------------------
  def battle_end(result)
   
    # 清除战斗中标志
    $game_temp.in_battle = false
    # 清除全体同伴的行动
    $game_party.clear_actions
    # 解除战斗用状态
    for actor in $game_party.actors
      actor.remove_states_battle
    end
    # 清除敌人
    $game_troop.enemies.clear
    # 调用战斗返回
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
    end
  end
为什么在P  battle_end(0) 的时候,返回值是0 而不是{0=>0}
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2026-1-24 17:50:57 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2026-1-24 17:56 编辑

F1查看Proc 这一类的解释

用个栗子, 它就是"指令仓库", 生成实例的时候, 把一段脚本指令"存"进去, 然后在需要的地方"取"出来(#call)  

所以, 在 $game_temp.battle_proc.call(result) 这里就是取出它保存的指令, 同时赋予参数0, 所以这里实际运行的其实是之前保存的 @branch[current_indent] = 0  这段脚本
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部