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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4647
在线时间
281 小时
注册时间
2013-10-13
帖子
852
跳转到指定楼层
1
发表于 2026-1-14 23:46:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  #--------------------------------------------------------------------------
  # ● 战斗处理
  #--------------------------------------------------------------------------
  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}战斗胜利返回调用有什么作用?

Lv4.逐梦者

素材区好人

梦石
3
星屑
11154
在线时间
4172 小时
注册时间
2011-7-21
帖子
2528

极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

2
发表于 2026-1-15 06:20:37 | 只看该作者
本帖最后由 无忧谷主幻 于 2026-1-15 06:24 编辑

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4647
在线时间
281 小时
注册时间
2013-10-13
帖子
852
3
 楼主| 发表于 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}
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
4
发表于 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  这段脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-4 09:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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