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

Project1

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

[已经解决] 提个问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2009-7-24
帖子
5
跳转到指定楼层
1
发表于 2009-12-2 17:01:28 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 julie334600 于 2009-12-2 17:05 编辑

怎么在45度角战斗中下方显示角色的头像,战斗图依然在右边站着的,顺便问下在战斗结束时显示战斗胜利图片的脚本

Lv1.梦旅人

梦石
0
星屑
55
在线时间
5 小时
注册时间
2009-4-11
帖子
131
2
发表于 2009-12-2 18:17:35 | 只看该作者
本帖最后由 li807609447 于 2009-12-2 18:20 编辑

准备工作:在Gameovers文件夹里存入战斗失败图“失败”和胜利图“胜利”

下面是要修改的脚本:

将Scene_Gameover全部替换为以下内容:

#==============================================================================
# ■ Scene_Gameover
#------------------------------------------------------------------------------
#  处理游戏结束画面的类。
#==============================================================================

class Scene_Gameover
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 停止 BGM、BGS
    $game_system.bgm_play(nil)
    $game_system.bgs_play(nil)
    # 演奏游戏结束 ME
    $game_system.me_play($data_system.gameover_me)
    # 准备过渡
    Graphics.freeze
    # 生成游戏结束图形
    @sprite2 = Sprite.new
    @sprite2.z = 9577
    @sprite2.bitmap = RPG::Cache.gameover("失败")
    # 执行过渡
    Graphics.transition(60)
    # 准备过渡
    Graphics.freeze
    # 释放游戏结束图形
    @sprite2.bitmap.dispose
    # 执行过度
    Graphics.transition(60)
    # 准备过渡
    Graphics.freeze
    # 生成游戏结束图形
    @sprite = Sprite.new
    @sprite.z = 9576
    @sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
    # 执行过渡
    Graphics.transition(120)
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面情报
      update
      # 如果画面被切换的话就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放游戏结束图形
    @sprite.bitmap.dispose
    @sprite.dispose
    @sprite2.dispose
    # 执行过度
    Graphics.transition(40)
    # 准备过渡
    Graphics.freeze
    # 战斗测试的情况下
    if $BTEST
      $scene = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 切换到标题画面
      $scene = Scene_Title.new
    end
  end
end

然后将Scene_Battle 2全部替换为以下内容:(其实只改了最后两部分)

#==============================================================================
# ■ Scene_Battle (分割定义 2)
#------------------------------------------------------------------------------
#  处理战斗画面的类。
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 开始自由战斗回合
  #--------------------------------------------------------------------------
  def start_phase1
    # 转移到回合 1
    @phase = 1
    # 清除全体同伴的行动
    $game_party.clear_actions
    # 设置战斗事件
    setup_battle_event
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (自由战斗回合)
  #--------------------------------------------------------------------------
  def update_phase1
    # 胜败判定
    if judge
      # 胜利或者失败的情况下 : 过程结束
      return
    end
    # 开始同伴命令回合
    start_phase2
  end
  #--------------------------------------------------------------------------
  # ● 开始同伴命令回合
  #--------------------------------------------------------------------------
  def start_phase2
    # 转移到回合 2
    @phase = 2
    # 设置角色为非选择状态
    @actor_index = -1
    @active_battler = nil
    # 有效化同伴指令窗口
    @party_command_window.active = true
    @party_command_window.visible = true
    # 无效化角色指令窗口
    @actor_command_window.active = false
    @actor_command_window.visible = false
    # 清除主回合标志
    $game_temp.battle_main_phase = false
    # 清除全体同伴的行动
    $game_party.clear_actions
    # 不能输入命令的情况下
    unless $game_party.inputable?
      # 开始主回合
      start_phase4
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (同伴命令回合)
  #--------------------------------------------------------------------------
  def update_phase2
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 同伴指令窗口光标位置分支
      case @party_command_window.index
      when 0  # 战斗
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 开始角色的命令回合
        start_phase3
      when 1  # 逃跑
        # 不能逃跑的情况下
        if $game_temp.battle_can_escape == false
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 逃走处理
        update_phase2_escape
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 画面更新 (同伴指令回合 : 逃跑)
  #--------------------------------------------------------------------------
  def update_phase2_escape
    # 计算敌人速度的平均值
    enemies_agi = 0
    enemies_number = 0
    for enemy in $game_troop.enemies
      if enemy.exist?
        enemies_agi += enemy.agi
        enemies_number += 1
      end
    end
    if enemies_number > 0
      enemies_agi /= enemies_number
    end
    # 计算角色速度的平均值
    actors_agi = 0
    actors_number = 0
    for actor in $game_party.actors
      if actor.exist?
        actors_agi += actor.agi
        actors_number += 1
      end
    end
    if actors_number > 0
      actors_agi /= actors_number
    end
    # 计算敌人魔法防御的平均值
    enemies_mdef = 0
    enemies_number = 0
    for enemy in $game_troop.enemies
      if enemy.exist?
        enemies_mdef += enemy.mdef
        enemies_number += 1
      end
    end
    if enemies_number > 0
      enemies_mdef /= enemies_number
    end
    # 计算角色魔法防御的平均值
    actors_mdef = 0
    actors_number = 0
    for actor in $game_party.actors
      if actor.exist?
        actors_mdef += actor.agi
        actors_number += 1
      end
    end
    if actors_number > 0
      actors_mdef /= actors_number
    end
   
    # 逃跑成功判定
    success = rand(100) < 40 * actors_agi / enemies_agi * actors_mdef / enemies_mdef
    # 成功逃跑的情况下
    if success
      # 演奏逃跑 SE
      $game_system.se_play($data_system.escape_se)
      # 还原为战斗开始前的 BGM
      $game_system.bgm_play($game_temp.map_bgm)
      # 战斗结束
      battle_end(1)
    # 逃跑失败的情况下
    else
     # 清除全体同伴的行动
      $game_party.clear_actions
      @help_window.set_text("逃跑失败", 1)#显示『逃走失败』字样
      @wait_count = 40
      # 开始主回合
      start_phase4
    end
  end
#--------------------------------------------------------------------------
# ● 开始结束战斗回合
#--------------------------------------------------------------------------
def start_phase5
   # 转移到回合 5
   @phase = 5
   # 演奏战斗结束 ME
   $game_system.me_play($game_system.battle_end_me)
   # 还原为战斗开始前的 BGM
   $game_system.bgm_play($game_temp.map_bgm)
   # 初始化 EXP、金钱、宝物
   @exp = 0
   gold = 0
   treasures = []
   # 循环
   for enemy in $game_troop.enemies
     # 敌人不是隐藏状态的情况下
     unless enemy.hidden
       # 获得 EXP、增加金钱
       @exp += enemy.exp
       gold += enemy.gold
       # 出现宝物判定
       if rand(100) < enemy.treasure_prob
         if enemy.item_id > 0
           treasures.push($data_items[enemy.item_id])
         end
         if enemy.weapon_id > 0
           treasures.push($data_weapons[enemy.weapon_id])
         end
         if enemy.armor_id > 0
           treasures.push($data_armors[enemy.armor_id])
         end
       end
     end
   end
   # 限制宝物数为 6 个
   treasures = treasures[0..5]
   # 获得金钱
   $game_party.gain_gold(gold)
   # 获得宝物
   for item in treasures
     case item
     when RPG::Item
       $game_party.gain_item(item.id, 1)
     when RPG::Weapon
       $game_party.gain_weapon(item.id, 1)
     when RPG::Armor
       $game_party.gain_armor(item.id, 1)
     end
   end
   # 生成战斗结果窗口
   @result_window = Window_BattleResult.new(@exp, gold, treasures)
   # 设置等待计数
   @phase5_wait_count = 10
end
#--------------------------------------------------------------------------
# ● 画面更新 (结束战斗回合)
#--------------------------------------------------------------------------
def update_phase5
   # 等待计数大于 0 的情况下
   if @phase5_wait_count > 0
     # 减少等待计数
     @phase5_wait_count -= 1
     # 等待计数为 0 的情况下
     if @phase5_wait_count == 0
    # 准备过渡
    Graphics.freeze
    # 生成战斗胜利图形
    @sprite = Sprite.new
    @sprite.z = 9999
    @sprite.bitmap = RPG::Cache.gameover("胜利")
    # 执行过渡
    Graphics.transition(40)
    @wait_count = 40
    # 准备过渡
    Graphics.freeze
    # 释放战斗胜利图形
    @sprite.bitmap.dispose
    # 执行过渡
    Graphics.transition(40)
       # 显示结果窗口
       @result_window.visible = true
       # 清除主回合标志
       $game_temp.battle_main_phase = false
       # 刷新状态窗口
       @status_window.refresh
     end
     return
   end
   # 按下 C 键的情况下
   if Input.trigger?(Input::C)
     # 关闭结果窗口
     @result_window.visible = false
     # 获得 EXP
     for i in 0...$game_party.actors.size
       actor = $game_party.actors
       if actor.cant_get_exp? == false
         last_level = actor.level
         actor.exp += @exp
         if actor.level > last_level
           @status_window.level_up(i)
         end
       end
     end
     # 战斗结束
     battle_end(0)
   end
end
end

就是这样了。

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-26 22:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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