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

Project1

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

[已经过期] 狂版RTAB ver 0.24PF敌人有动作吗

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
227 小时
注册时间
2011-1-5
帖子
187
跳转到指定楼层
1
发表于 2011-11-14 14:22:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 davis2000 于 2011-11-14 17:24 编辑

1.pdf (20.5 KB, 下载次数: 28)

攻击


技能1
技能2
防御
受伤
我在动画里找不到敌人的动作

class Game_Party
  #--------------------------------------------------------------------------
  # ● 設置任務資料
  #--------------------------------------------------------------------------
  def get_tasks_info
    @tasks_info = []
   
   
    name = "\\c[9]帮助"
    intro = "狂版RTAB ver 0.24PF
\\c[9]操作说明:
A(Shift):决定使用回声
(注:回声就是右下角的星星,攒足一定的攻击数可以攻击力翻倍)
B(X):取消
C(C):确定
X(A):攻击的快捷键
Y(S):技能快捷键
Z(D):防御快捷键
L(Q):物品快捷键
R(W):逃跑快捷键
(具体看F1设定)
请进入菜单,调整角色设置.
注:回声只对物理技能有效
     


"
    @tasks_info[2] = Game_Task.new(name, intro)
   
   
    name = "\\c[9]连携技能演示"
    intro = "冰刃+寒冰斩=落霜剑
落雷术+奔雷斩=天雷破
爆发术+V型斩=幻胧术





"
    @tasks_info[1] = Game_Task.new(name, intro)
  end
end
   
#==============================================================================
# ■ Interpreter
#------------------------------------------------------------------------------
#  执行事件命令的解释器。本类在 Game_System 类
# 与 Game_Event 类的内部使用。
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 接受任务
  #--------------------------------------------------------------------------
  def get_task(id)
    task = $game_party.tasks_info[id]
    return true if (task.nil? or $game_party.current_tasks.include?(task.id))
    $game_party.current_tasks.unshift(task.id)
    return true
  end
  #--------------------------------------------------------------------------
  # ● 获得全部任务
  #--------------------------------------------------------------------------
  def get_all_task
    # 清空当前任务
    $game_party.current_tasks.clear
    for task in $game_party.tasks_info
      next if task.nil?
      $game_party.current_tasks.unshift(task.id)
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 完成/放弃任务
  #--------------------------------------------------------------------------
  def finish_task(id)
    task = $game_party.tasks_info[id]
    return true if task.nil?
    $game_party.current_tasks.delete(task.id)
    return true
  end
  #--------------------------------------------------------------------------
  # ● 删除全部任务
  #--------------------------------------------------------------------------
  def finish_all_task
    $game_party.current_tasks.clear
    return true
  end
end

#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
#  处理队伍的类。包含金钱以及物品的信息。
# 这个类的实例请参考 $game_party 。
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_writer     :latest_task                  # 上次查看任务
  #--------------------------------------------------------------------------
  # ● 取得任务资料
  #--------------------------------------------------------------------------
  def tasks_info
    if @tasks_info.nil?
      get_tasks_info
    end
    return @tasks_info
  end
  #--------------------------------------------------------------------------
  # ● 取得当前任务
  #--------------------------------------------------------------------------
  def current_tasks
    if @current_tasks.nil?
      @current_tasks = []
    end
    return @current_tasks
  end
  #--------------------------------------------------------------------------
  # ● 上次查看任务
  #--------------------------------------------------------------------------
  def latest_task
    if !current_tasks.include?(@latest_task)
      @latest_task = current_tasks[0]
    end
    return @latest_task
  end
end

#==============================================================================
# ■ Game_Task
#------------------------------------------------------------------------------
#  处理任务的类。包含任务信息。
#==============================================================================
class Game_Task
  attr_accessor   :name                   # 名称
  attr_accessor   :briefing               # 简介
  def initialize(name, briefing)
    @name = name
    @briefing = briefing
  end
  def height
    text = @briefing.clone
    x = 0
    y = 64
    min_y = 0
    # 限制文字处理
    begin
      last_text = text.clone
      text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
    end until text == last_text
    text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
      $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
    end
    # 為了方便、將 "\\\\" 變換為 "\000"
    text.gsub!(/\\\\/) { "\000" }
    # "\C" 變為 "\001"
    text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
    # "\I" 變為 "\002"
    text.gsub!(/\\[Ii]/) { "\002" }
    # "\P" 變為 "\003"
    text.gsub!(/\\[Pp]/) { "\003" }
    # c 獲取 1 個字 (如果不能取得文字就循環)
    while ((c = text.slice!(/./m)) != nil)
      # \\ 的情況下
      if c == "\000"
        # 還原為本來的文字
        c = "\\"
      end
      # \C[n] 的情況下
      if c == "\001"
        # 更改文字色
        text.sub!(/\[([0-9]+)\]/, "")
        # 下面的文字
        next
      end
      # 圖標的情況下
      if c == "\002"
        icon_name = ''
        while ((cha = text.slice!(/./m)) != ']')
          next if cha == '['
          icon_name += cha
        end
        if x + 24 > 368
          x = 0
          y += [24, min_y].max
          min_y = 0
        end
        x += 28
        next
      end
      # 圖片的情況下
      if c == "\003"
        pic_name = ''
        while ((cha = text.slice!(/./m)) != ']')
          next if cha == '['
          pic_name += cha
        end
        pic = Cache.picture(pic_name)
        if x + pic.width > 368
          x = 0
          y += [32, min_y].max
          min_y = 0
        end
        x += pic.width
        min_y = [pic.height, 32].max
        next
      end
      # 另起一行文字的情況下
      if c == "
"
        y += [24, min_y].max
        min_y = 0
        x = 0
        # 下面的文字
        next
      end
      # 自動換行處理
      if x + 22 > 368
        y += [24, min_y].max
        min_y = 0
        x = 0
      end
      # x 為要描繪文字的加法運算
      x += 22
    end
    return (y + [24, min_y].max)
  end
  def id
    return $game_party.tasks_info.index(self)
  end
end

#==============================================================================
# ■ Window_Task_Name
#------------------------------------------------------------------------------
#  任務名稱顯示窗口。
#==============================================================================

class Window_Task_Name < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化對像
  #--------------------------------------------------------------------------
  def initialize(tasks)
    super(0, 0, 192, 416)
    @tasks = []
    for id in tasks
      @tasks.push($game_party.tasks_info[id])
    end
    @item_max = tasks.size
    self.contents = Bitmap.new(
    self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    if @tasks != []
      for task in @tasks
        draw_item(task)
      end
    else
      draw_blank
    end
  end
  
  
  #--------------------------------------------------------------------------
  # ● 描繪空行
  #--------------------------------------------------------------------------
  def draw_blank
    self.contents.font.color = disabled_color
    rect = Rect.new(4, 0, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, '没有任务')
  end
  
  #--------------------------------------------------------------------------
  # ● 描繪項目
  #--------------------------------------------------------------------------
  def draw_item(task)
    text = task.name.clone
    x = 0
    y = @tasks.index(task) * WLH
    # 限制文字處理
    begin
      last_text = text.clone
      text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
    end until text == last_text
    text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
      $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
    end
    # 為了方便、將 "\\\\" 變換為 "\000"
    text.gsub!(/\\\\/) { "\000" }
    # "\\C" 變為 "\001"
    text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
    # "\I" 變為 "\002"
    text.gsub!(/\\[Ii]/) { "\002" }
    # "\P" 變為 "\003"
    text.gsub!(/\\[Pp]/) { "\003" }
    # c 獲取 1 個字 (如果不能取得文字就循環)
    while ((c = text.slice!(/./m)) != nil)
      # \\ 的情況下
      if c == "\000"
        # 還原為本來的文字
        c = "\\"
      end
      # \C[n] 的情況下
      if c == "\001"
        # 更改文字色
        text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
        # 如果是设定RGB颜色
        if $1[0,1]=="H"
          # 先拷贝一下文字
          c=$1.dup
          # 分3段分别取出R,G,B颜色
          c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
          # 设定文字颜色
          self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
          next
        else
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          elsif color == 8
            self.contents.font.color = disabled_color
          elsif color == 9
            self.contents.font.color = system_color
          end
        end
        # 下面的文字
        next
      end
      # 圖標的情況下
      if c == "\002"
        icon_name = ''
        while ((cha = text.slice!(/./m)) != ']')
          next if cha == '['
          icon_name += cha
        end
        if x + 24 > self.contents.width
          x = 0
          y += [WLH, min_y].max
          min_y = 0
        end
        draw_icon(icon_name.to_i, x+24, y+18, true)
        x += 28
        next
      end
      # 圖片的情況下
      if c == "\003"
        pic_name = ''
        while ((cha = text.slice!(/./m)) != ']')
          next if cha == '['
          pic_name += cha
        end
        pic = Cache.picture(pic_name)
        if x + pic.width > self.contents.width
          x = 0
          y += [WLH, min_y].max
          min_y = 0
        end
        self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
        x += pic.width
        next
      end
      # 描繪文字
      self.contents.draw_text(4 + x, y, 40, WLH, c)
      # x 為要描繪文字的加法運算
      x += self.contents.text_size(c).width
    end
  end
  #--------------------------------------------------------------------------
  # ● 獲取任務
  #--------------------------------------------------------------------------
  def task
    return @tasks[self.index]
  end
end
  
#==============================================================================
# ■ Window_Task
#------------------------------------------------------------------------------
#  任務內容顯示窗口。
#==============================================================================

class Window_Task < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化對像
  #--------------------------------------------------------------------------
  def initialize(task_id)
    super(192, 0, 352, 416)
    refresh(task_id)
  end
  #--------------------------------------------------------------------------
  # ● 刷新內容
  #--------------------------------------------------------------------------
  def refresh(task_id)
    self.oy = 0
    self.visible = true
    return if task_id.nil?
    task = $game_party.tasks_info[task_id]
    if !task.nil?
      if task.height < 128
        self.contents = Bitmap.new(self.width - 32, self.height - 32)
      else
        self.contents = Bitmap.new(self.width - 32, task.height - 128)
      end
    else
      self.contents = Bitmap.new(self.width - 32, self.height - 64)
      return
    end
    self.contents.font.color = normal_color
    # 描繪任務內容
    draw_task_info(task)
  end
  
  #--------------------------------------------------------------------------
  # ● 描繪任務內容
  #--------------------------------------------------------------------------
  def draw_task_info(task)
    # 記錄文字x坐標
    x = 0
    # 記錄文字y坐標
    y = 0
    # 記錄換行時y坐標最小加值
    min_y = 0
    self.contents.font.color = normal_color
    # 描繪任務簡介
    text = task.briefing.clone
    # 限制文字處理
    begin
      last_text = text.clone
      text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
    end until text == last_text
    text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
      $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
    end
    # 為了方便、將 "\\\\" 變換為 "\000"
    text.gsub!(/\\\\/) { "\000" }
    # "\C" 變為 "\001"
    text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/)  { "\001[#{$1}]" }
    #text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
    # "\I" 變為 "\002"
    text.gsub!(/\\[Ii]/) { "\002" }
    # "\P" 變為 "\003"
    text.gsub!(/\\[Pp]/) { "\003" }
    # c 獲取 1 個字 (如果不能取得文字就循環)
    while ((c = text.slice!(/./m)) != nil)
      # \\ 的情況下
      if c == "\000"
        # 還原為本來的文字
        c = "\\"
      end
      # \C[n] 的情況下
      if c == "\001"
        # 更改文字色
        text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
        # 如果是设定RGB颜色
        if $1[0,1]=="H"
          # 先拷贝一下文字
          c=$1.dup
          # 分3段分别取出R,G,B颜色
          c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
          # 设定文字颜色
          self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
        else
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          elsif color == 8
            self.contents.font.color = disabled_color
          elsif color == 9
            self.contents.font.color = system_color
          end
        end
        # 下面的文字
        next
      end
      
      # 圖標的情況下
      if c == "\002"
        icon_name = ''
        while ((cha = text.slice!(/./m)) != ']')
          next if cha == '['
          icon_name += cha
        end
        if x + 24 > self.contents.width
          x = 0
          y += [WLH, min_y].max
          min_y = 0
        end
        draw_icon(icon_name.to_i, x+24, y+18, true)
        x += 28
        next
      end
      
      # 圖片的情況下
      if c == "\003"
        pic_name = ''
        while ((cha = text.slice!(/./m)) != ']')
          next if cha == '['
          pic_name += cha
        end
        pic = Cache.picture(pic_name)
        if x + pic.width > self.contents.width
          x = 0
          y += [WLH, min_y].max
          min_y = 0
        end
        self.contents.blt(x + 20, y +18, pic, Rect.new(0, 0, pic.width, pic.height))
        x += pic.width
        min_y = [pic.height, WLH].max
        next
      end
      # 另起一行文字的情況下
      if c == "
"
        y += [WLH, min_y].max
        min_y = 0
        x = 0
        # 下面的文字
        next
      end
      # 自動換行處理
      if x + self.contents.text_size(c).width + 20 > self.contents.width
        y += [WLH, min_y].max
        min_y = 0
        x = 0
      end
      # 描繪文字
      #self.contents.draw_text(4 + x, y, 40, 32, c)
      self.contents.draw_text(x + 20, y + 18, 40, WLH, c)
      # x 為要描繪文字的加法運算
      x += self.contents.text_size(c).width
    end
  end
end
class Window_Base < Window
  def disabled_color
    return Color.new(255, 255, 255, 128)
  end
end
#==============================================================================
# ■ Scene_Task
#------------------------------------------------------------------------------
#  處理任務畫面的類。
#==============================================================================
class Scene_Task < Scene_Base

  # 這裡設置任務內容翻頁音效
  CHANGE_PAGE_SE = "Audio/SE/Book.ogg"
  
  #--------------------------------------------------------------------------
  # ● 主處理
  #--------------------------------------------------------------------------
  def start
    # 刷新任務資料
    $game_party.get_tasks_info
    # 生成任務名稱窗口
    @task_names_window = Window_Task_Name.new($game_party.current_tasks)
    @task_names_window.z = 200
   
    if $game_party.current_tasks != []
      @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
    end
   
    # 生成任務內容窗口
    @task_info_window = Window_Task.new($game_party.latest_task)
    @task_info_window.active = true
    @task_info_window.update
  end
  
  def terminate
    # 釋放窗口
    @task_names_window.dispose
    @task_info_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新畫面
  #--------------------------------------------------------------------------
  def update
    # 刷新窗口
    @task_names_window.update
    @task_info_window.update
   
    if @task_names_window.active
      update_task_names_window
    else
      update_task_infos_window
    end
   
  end
  #--------------------------------------------------------------------------
  # ● 刷新任務名稱窗口
  #--------------------------------------------------------------------------
  def update_task_names_window
    # 按下 B 鍵的情況下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      Sound.play_cancel
      # 這裡設置返回的場景,返回地圖是Scene_Map.new,菜單是Scene_Menu.new(任務界面index)
      $scene = Scene_Map.new
      return
    end
    # 按下 C 鍵的情況下
    if Input.trigger?(Input::C)
      # 無任務可顯示的話
      if @task_names_window.task == nil
        # 演奏凍結 SE
        Sound.play_buzzer
        return
      end
      @task_info_window.refresh(@task_names_window.task.id)
      $game_party.latest_task = @task_names_window.task.id
      # 演奏確定 SE
      Sound.play_decision
      
      #@task_names_window.visible = false
      @task_names_window.active = false
      
      #@task_info_window.visible = true
      @task_info_window.update
    end
  end
  
  def update_task_infos_window
    # 按下 B 鍵的情況下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      Sound.play_cancel
      
      #@task_names_window.visible = true
      @task_names_window.active = true

      #@task_info_window.visible = false
      @task_info_window.update
      
      return
    end
    # 按下 C 鍵的情況下
    if Input.trigger?(Input::C)
      # 如果光標沒有移動的話,翻頁
      #if @task_info_window.oy + @task_info_window.height - 64 > @task_info_window.contents.height
      if @task_info_window.oy + @task_info_window.height > @task_info_window.contents.height
        @task_info_window.oy = 0
      else
        @task_info_window.oy += 416 - 64
      end
      if @task_info_window.contents.height > @task_info_window.height - 64
        # 演奏翻頁 SE
        Audio.se_play(CHANGE_PAGE_SE)
      end
    end
  end
end

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1071 小时
注册时间
2011-5-12
帖子
2317

贵宾

2
发表于 2011-11-14 16:03:47 | 只看该作者
请放进代码框谢谢……

点评

上传中,请稍候!  发表于 2011-11-14 16:57
找我请找芙蕾娅
顺带一提,完全看得懂我头像请捡起你自己的节操哟(自重
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 04:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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