注册会员 登录
Project1 返回首页

  大道至简 https://rpg.blue/?88349 [收藏] [复制] [分享] [RSS]

日志

草稿,晚上回去接着研究

热度 1已有 426 次阅读2011-8-17 15:45

class Scene_Equip
  def initialize(id=0)
    @id = id
    @actor = $game_party.actors[@id]
  end
  def main
    @bitmap = Spriteset_Map.new
    @back = Sprite.new
    @back.bitmap = Bitmap.new(640,480)    
    @back.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0,100))
    @person = Sprite.new
    @person.bitmap = Bitmap.new("Graphics/Menu/#{@actor.name}")
    @z = Sprite.new
    @z.bitmap = Bitmap.new(640,480)
    for i in 0...52
      @z.bitmap.fill_rect(0,i*4,640,4,Color.new(0,0,0,255-5*i))
      @z.bitmap.fill_rect(0,480-i*4,640,4,Color.new(0,0,0,255-5*i))
    end
    rect = Bitmap.new(40,204)
    for i in 0..51
      rect.fill_rect(0,i*2,40,2,Color.new(0,0,0,i*5))
      rect.fill_rect(0,204-i*2,40,2,Color.new(0,0,0,i*5))
      rect.fill_rect(0,i*2,1,2,Color.new(255,255,255,i*5))
      rect.fill_rect(0,204-i*2,1,2,Color.new(255,255,255,i*5))
      rect.fill_rect(39,i*2,1,2,Color.new(255,255,255,i*5))
      rect.fill_rect(39,204-i*2,1,2,Color.new(255,255,255,i*5))
    end
    @equip_rect = []
    @equip = []
    for i in 0...5
      @equip_rect[i] = RPG::Sprite.new
      @equip_rect[i].bitmap = rect
      @equip_rect[i].x = 150 + 44 * i
      @equip_rect[i].y = 200
      @equip[i] = Sprite.new
      @equip[i].bitmap = Bitmap.new(40,204)
      @equip[i].x = 150 + 44 * i
      @equip[i].y = 200
      @equip[i].bitmap.font.size = 12
      if i == 0
        @equip[i].bitmap.blur_draw_text(0,40,40,24,$data_system.words.weapon,1,
        Color.new(0,0,0,10),2)
        next if $data_weapons[@actor.weapon_id].nil?
        @equip[i].bitmap.blt(8,12,
        RPG::Cache.icon($data_weapons[@actor.weapon_id].icon_name),Rect.new(0,0,24,24))
        a = $data_weapons[@actor.weapon_id].name.scan(/./)
        a.each_index {|b| @equip[i].bitmap.blur_draw_text(0,70+16*b,40,16,
        a[b],1,Color.new(0,0,0,10),2)}
      else
        eval "@equip[i].bitmap.blur_draw_text(0,
        40,40,24,$data_system.words.armor#{i},1,Color.new(0,0,0,10),2)"
        eval "next if $data_armors[@actor.armor#{i}_id].nil?"
        eval "b = RPG::Cache.icon($data_armors[@actor.armor#{i}_id].icon_name)"
        eval "@equip[i].bitmap.blt(8,12,b,Rect.new(0,0,24,24))"
        eval "a = $data_armors[@actor.armor#{i}_id].name.scan(/./)"
        a.each_index {|b| @equip[i].bitmap.blur_draw_text(0,70+16*b,40,16,
        a[b],1,Color.new(0,0,0,10),2)}
      end
    end
    @status_back = Sprite.new
    @status_back.bitmap = Bitmap.new(306,120)
    @status_back.y = 25
    @status_back.x = 300
    for i in 0...52
      @status_back.bitmap.fill_rect(i*3,0,3,200,Color.new(0,0,0,i*5))
      @status_back.bitmap.fill_rect(306-i*3,0,3,200,Color.new(0,0,0,i*5))
      @status_back.bitmap.fill_rect(i*3,0,3,1,Color.new(255,255,255,i*5))
      @status_back.bitmap.fill_rect(306-i*3,0,3,1,Color.new(255,255,255,i*5))
      @status_back.bitmap.fill_rect(i*3,119,3,1,Color.new(255,255,255,i*5))
      @status_back.bitmap.fill_rect(306-i*3,119,3,1,Color.new(255,255,255,i*5))
      @status_back.bitmap.fill_rect(153,40,1,70,Color.new(255,255,255))
    end
    @status = Sprite.new
    @status.bitmap = Bitmap.new(306,120)
    @status.y = 25
    @status.x = 300
    @status.bitmap.font.size = 15
    @status.bitmap.draw_text(50,10,600,15,"#{@actor.name}  Lv#{@actor.level}")
    @status.bitmap.font.size = 12
    for i in 0..6
      draw_par(i)
    end
    @help = Sprite.new
    @help.bitmap = Bitmap.new(510, 20)
    @help.x = 65
    @help.y = 450
    @help_text = Sprite.new
    @help_text.bitmap = Bitmap.new(510, 20)
    @help_text.bitmap.font.name = "宋体"
    @help_text.bitmap.font.size = 13
    @help_text.x = 65
    @help_text.y = 450
    @change_equip = Sprite.new
    @change_equip.bitmap = Bitmap.new(204,200)
    @change_equip.x = 400
    @change_equip.y = 200
    @new_equip = []
    @data = [[],[],[],[],[]]
    for i in 0..255/5
      @help.bitmap.fill_rect(i*5,0,5,20,Color.new(0,0,0,i*5))
      @help.bitmap.fill_rect(510-i*5,0,5,20,Color.new(0,0,0,i*5))
      @help.bitmap.fill_rect(i*5, 0, 5, 1, Color.new(255,255,255,i*5))
      @help.bitmap.fill_rect(510-i*5, 0, 5, 1, Color.new(255,255,255,i*5))
      @help.bitmap.fill_rect(i*5, 19, 5, 1, Color.new(255,255,255,i*5))
      @help.bitmap.fill_rect(510-i*5, 19, 5, 1, Color.new(255,255,255,i*5))
      @change_equip.bitmap.fill_rect(2*i,0,2,200,Color.new(0,0,0,50+5*i))
      @change_equip.bitmap.fill_rect(204-2*i,0,2,200,Color.new(0,0,0,50+5*i))
      @change_equip.bitmap.fill_rect(2*i,0,2,1,Color.new(255,255,255,5*i))
      @change_equip.bitmap.fill_rect(2*i,199,2,1,Color.new(255,255,255,5*i))
      @change_equip.bitmap.fill_rect(204-2*i,199,2,1,Color.new(255,255,255,5*i))
      @change_equip.bitmap.fill_rect(204-2*i,0,2,1,Color.new(255,255,255,5*i))
    end
    viewport = Viewport.new(400,200,204,200)
    @equip_choose = RPG::Sprite.new(viewport)
    @equip_choose.bitmap = @help.bitmap.clone
    @equip_choose.zoom_x = 164 / 510.0
    @equip_choose.x = 20
    @equip_choose.zoom_y = 14 / 20.0
    @equip_choose.y = 28
    for i in 0...5
      @new_equip[i] = Sprite.new(viewport)
      @new_equip[i].bitmap = Bitmap.new(204,200)
      @new_equip[i].x = 204 * i
      @new_equip[i].bitmap.font.size = 12
      @new_equip[i].bitmap.draw_text(40,30,184,12,"[脱下装备]")
      @data[i].push(-1)
      y = 44
      if i == 0
        weapon_set = $data_classes[@actor.class_id].weapon_set
        for n in 1...$data_weapons.size
          if $game_party.weapon_number(n) > 0 and weapon_set.include?(n)
            @new_equip[i].bitmap.blt(10,y-6,
            RPG::Cache.icon($data_weapons[n].icon_name),Rect.new(0,0,24,20))
            @new_equip[i].bitmap.draw_text(40,y,184,12,$data_weapons[n].name)
            @new_equip[i].bitmap.draw_text(40,y,140,12,$game_party.weapon_number(n).to_s,2)
            @data[i].push($data_weapons[n])
            y += 14
          end
        end
      end
      if i != 0
        armor_set = $data_classes[@actor.class_id].armor_set
        for n in 1...$data_armors.size
          if $game_party.armor_number(n) > 0 and armor_set.include?(n)
            if $data_armors[n].kind == i-1
              @new_equip[i].bitmap.blt(10,y-6,
              RPG::Cache.icon($data_armors[n].icon_name),Rect.new(0,0,24,20))
              @new_equip[i].bitmap.draw_text(40,y,184,12,$data_armors[n].name)
              @new_equip[i].bitmap.draw_text(40,y,140,12,$game_party.armor_number(n).to_s,2)
              @data[i].push($data_armors[n])
              y += 14
            end
          end
        end
      end
    end
    if !$data_weapons[@actor.weapon_id].nil?
      @help_text.bitmap.draw_text(0,0,510,20,
      $data_weapons[@actor.weapon_id].description,1)
    end
    @equip_choose.visible = false
    @equip_rect[0].blink_on
    @left_index = 0         # 装备位的选择
    @right = false          # 右边是否选择
    @right_index = -1       # 新装备的选择
    @page = 0               # 同ITEM
    loop {update; break if $scene != self}
    @equip_rect.each {|a| a.bitmap.dispose ; a.dispose}
    @equip.each {|a| a.bitmap.dispose ; a.dispose}
    @bitmap.dispose
    @back.dispose
    @back.dispose
    @z.bitmap.dispose
    @z.dispose
    @person.dispose
    @change_equip.bitmap.dispose; @change_equip.dispose
    @new_equip.each {|a| a.bitmap.dispose;a.dispose}
    @equip_choose.dispose
  end
  def update
    Graphics.update
    @equip_rect.each {|a| a.update} if !@right
    @equip_choose.visible = true if !@equip_choose.visible && @right
    @equip_choose.visible = false if !@right && @equip_choose.visible
    @equip_choose.blink_on if !@equip_choose.blink? && @equip_choose.visible
    @equip_choose.update if @equip_choose.visible
    update_change if @right
    return if @right
    update_input
  end
  def update_input
    Input.update
    left_index(true) if Input.trigger?(Input::RIGHT)
    left_index if Input.trigger?(Input::LEFT)
    @right_index = 0 and @right = true and $game_system.se_play($data_system.decision_se) if Input.trigger?(Input::C)
    $scene = Scene_Menu.new and $game_system.se_play($data_system.cancel_se) if Input.trigger?(Input::B)
  end
  def left_index(plus=false)
    if plus
      return if @left_index >= 4
      @left_index += 1
      @equip_rect.each {|a| a.blink_off}
      @equip_rect[@left_index].blink_on
      for i in 0...4
        @new_equip.each {|a| a.x -= 51}
        Graphics.update
      end
    else
      return if @left_index <= 0
      @left_index -= 1
      @equip_rect.each {|a| a.blink_off}
      @equip_rect[@left_index].blink_on
      for i in 0...4
        @new_equip.each {|a| a.x += 51}
        Graphics.update
      end
    end
    $game_system.se_play($data_system.cursor_se)
    @help_text.bitmap.clear
    if @left_index == 0
      if !$data_weapons[@actor.weapon_id].nil?
        @help_text.bitmap.draw_text(0,0,510,20,
        $data_weapons[@actor.weapon_id].description,1)
      end
    else
      eval "return if $data_armors[@actor.armor#{@left_index}_id].nil?"
      eval "@help_text.bitmap.draw_text(0,0,510,20,
      $data_armors[@actor.armor#{@left_index}_id].description,1)"
    end
  end
  def draw_par(type)
    case type
    when 0
      parameter_name = $data_system.words.atk
      parameter_value = @actor.atk
    when 1
      parameter_name = $data_system.words.pdef
      parameter_value = @actor.pdef
    when 2
      parameter_name = $data_system.words.mdef
      parameter_value = @actor.mdef
    when 3
      parameter_name = $data_system.words.str
      parameter_value = @actor.str
    when 4
      parameter_name = $data_system.words.dex
      parameter_value = @actor.dex
    when 5
      parameter_name = $data_system.words.agi
      parameter_value = @actor.agi
    when 6
      parameter_name = $data_system.words.int
      parameter_value = @actor.int
    end
    @status.bitmap.draw_text(type / 4 == 0 ? 27 : 170, 40 + (15 * (type % 4)),
    126,15,"#{parameter_name}:#{parameter_value}")
  end
end





class Scene_Equip
  def initialize(id=0)
    @id = id
    @actor = $game_party.actors[@id]
  end
  def main
    @bitmap = Spriteset_Map.new
    @back = Sprite.new
    @back.bitmap = Bitmap.new(640,480)    
    @back.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0,100))
    @person = Sprite.new
    @person.bitmap = Bitmap.new("Graphics/Menu/#{@actor.name}")
    @z = Sprite.new
    @z.bitmap = Bitmap.new(640,480)
    for i in 0...52
      @z.bitmap.fill_rect(0,i*4,640,4,Color.new(0,0,0,255-5*i))
      @z.bitmap.fill_rect(0,480-i*4,640,4,Color.new(0,0,0,255-5*i))
    end
    rect = Bitmap.new(40,204)
    for i in 0..51
      rect.fill_rect(0,i*2,40,2,Color.new(0,0,0,i*5))
      rect.fill_rect(0,204-i*2,40,2,Color.new(0,0,0,i*5))
      rect.fill_rect(0,i*2,1,2,Color.new(255,255,255,i*5))
      rect.fill_rect(0,204-i*2,1,2,Color.new(255,255,255,i*5))
      rect.fill_rect(39,i*2,1,2,Color.new(255,255,255,i*5))
      rect.fill_rect(39,204-i*2,1,2,Color.new(255,255,255,i*5))
    end
    @equip_rect = []
    @equip = []
    for i in 0...5
      @equip_rect[i] = RPG::Sprite.new
      @equip_rect[i].bitmap = rect
      @equip_rect[i].x = 150 + 44 * i
      @equip_rect[i].y = 200
      @equip[i] = Sprite.new
      @equip[i].bitmap = Bitmap.new(40,204)
      @equip[i].x = 150 + 44 * i
      @equip[i].y = 200
      @equip[i].bitmap.font.size = 12
      if i == 0
        @equip[i].bitmap.blur_draw_text(0,40,40,24,$data_system.words.weapon,1,
        Color.new(0,0,0,10),2)
        next if $data_weapons[@actor.weapon_id].nil?
        @equip[i].bitmap.blt(8,12,
        RPG::Cache.icon($data_weapons[@actor.weapon_id].icon_name),Rect.new(0,0,24,24))
        a = $data_weapons[@actor.weapon_id].name.scan(/./)
        a.each_index {|b| @equip[i].bitmap.blur_draw_text(0,70+16*b,40,16,
        a[b],1,Color.new(0,0,0,10),2)}
      else
        eval "@equip[i].bitmap.blur_draw_text(0,
        40,40,24,$data_system.words.armor#{i},1,Color.new(0,0,0,10),2)"
        eval "next if $data_armors[@actor.armor#{i}_id].nil?"
        eval "b = RPG::Cache.icon($data_armors[@actor.armor#{i}_id].icon_name)"
        eval "@equip[i].bitmap.blt(8,12,b,Rect.new(0,0,24,24))"
        eval "a = $data_armors[@actor.armor#{i}_id].name.scan(/./)"
        a.each_index {|b| @equip[i].bitmap.blur_draw_text(0,70+16*b,40,16,
        a[b],1,Color.new(0,0,0,10),2)}
      end
    end
    @status_back = Sprite.new
    @status_back.bitmap = Bitmap.new(306,120)
    @status_back.y = 25
    @status_back.x = 300
    for i in 0...52
      @status_back.bitmap.fill_rect(i*3,0,3,200,Color.new(0,0,0,i*5))
      @status_back.bitmap.fill_rect(306-i*3,0,3,200,Color.new(0,0,0,i*5))
      @status_back.bitmap.fill_rect(i*3,0,3,1,Color.new(255,255,255,i*5))
      @status_back.bitmap.fill_rect(306-i*3,0,3,1,Color.new(255,255,255,i*5))
      @status_back.bitmap.fill_rect(i*3,119,3,1,Color.new(255,255,255,i*5))
      @status_back.bitmap.fill_rect(306-i*3,119,3,1,Color.new(255,255,255,i*5))
      @status_back.bitmap.fill_rect(153,40,1,70,Color.new(255,255,255))
    end
    @status = Sprite.new
    @status.bitmap = Bitmap.new(306,120)
    @status.y = 25
    @status.x = 300
    @status.bitmap.font.size = 15
    @status.bitmap.draw_text(50,10,600,15,"#{@actor.name}  Lv#{@actor.level}")
    @status.bitmap.font.size = 12
    for i in 0..6
      draw_par(i)
    end
    @help = Sprite.new
    @help.bitmap = Bitmap.new(510, 20)
    @help.x = 65
    @help.y = 450
    @help_text = Sprite.new
    @help_text.bitmap = Bitmap.new(510, 20)
    @help_text.bitmap.font.name = "宋体"
    @help_text.bitmap.font.size = 13
    @help_text.x = 65
    @help_text.y = 450
    @change_equip = Sprite.new
    @change_equip.bitmap = Bitmap.new(204,200)
    @change_equip.x = 400
    @change_equip.y = 200
    @new_equip = []
    @data = [[],[],[],[],[]]
    for i in 0..255/5
      @help.bitmap.fill_rect(i*5,0,5,20,Color.new(0,0,0,i*5))
      @help.bitmap.fill_rect(510-i*5,0,5,20,Color.new(0,0,0,i*5))
      @help.bitmap.fill_rect(i*5, 0, 5, 1, Color.new(255,255,255,i*5))
      @help.bitmap.fill_rect(510-i*5, 0, 5, 1, Color.new(255,255,255,i*5))
      @help.bitmap.fill_rect(i*5, 19, 5, 1, Color.new(255,255,255,i*5))
      @help.bitmap.fill_rect(510-i*5, 19, 5, 1, Color.new(255,255,255,i*5))
      @change_equip.bitmap.fill_rect(2*i,0,2,200,Color.new(0,0,0,50+5*i))
      @change_equip.bitmap.fill_rect(204-2*i,0,2,200,Color.new(0,0,0,50+5*i))
      @change_equip.bitmap.fill_rect(2*i,0,2,1,Color.new(255,255,255,5*i))
      @change_equip.bitmap.fill_rect(2*i,199,2,1,Color.new(255,255,255,5*i))
      @change_equip.bitmap.fill_rect(204-2*i,199,2,1,Color.new(255,255,255,5*i))
      @change_equip.bitmap.fill_rect(204-2*i,0,2,1,Color.new(255,255,255,5*i))
    end
    viewport = Viewport.new(400,200,204,200)
    @equip_choose = RPG::Sprite.new(viewport)
    @equip_choose.bitmap = @help.bitmap.clone
    @equip_choose.zoom_x = 164 / 510.0
    @equip_choose.x = 20
    @equip_choose.zoom_y = 14 / 20.0
    @equip_choose.y = 28
    for i in 0...5
      @new_equip[i] = Sprite.new(viewport)
      @new_equip[i].bitmap = Bitmap.new(204,200)
      @new_equip[i].x = 204 * i
      @new_equip[i].bitmap.font.size = 12
      @new_equip[i].bitmap.draw_text(40,30,184,12,"[脱下装备]")
      @data[i].push(-1)
      y = 44
      if i == 0
        weapon_set = $data_classes[@actor.class_id].weapon_set
        for n in 1...$data_weapons.size
          if $game_party.weapon_number(n) > 0 and weapon_set.include?(n)
            @new_equip[i].bitmap.blt(10,y-6,
            RPG::Cache.icon($data_weapons[n].icon_name),Rect.new(0,0,24,20))
            @new_equip[i].bitmap.draw_text(40,y,184,12,$data_weapons[n].name)
            @new_equip[i].bitmap.draw_text(40,y,140,12,$game_party.weapon_number(n).to_s,2)
            @data[i].push($data_weapons[n])
            y += 14
          end
        end
      end
      if i != 0
        armor_set = $data_classes[@actor.class_id].armor_set
        for n in 1...$data_armors.size
          if $game_party.armor_number(n) > 0 and armor_set.include?(n)
            if $data_armors[n].kind == i-1
              @new_equip[i].bitmap.blt(10,y-6,
              RPG::Cache.icon($data_armors[n].icon_name),Rect.new(0,0,24,20))
              @new_equip[i].bitmap.draw_text(40,y,184,12,$data_armors[n].name)
              @new_equip[i].bitmap.draw_text(40,y,140,12,$game_party.armor_number(n).to_s,2)
              @data[i].push($data_armors[n])
              y += 14
            end
          end
        end
      end
    end
    if !$data_weapons[@actor.weapon_id].nil?
      @help_text.bitmap.draw_text(0,0,510,20,
      $data_weapons[@actor.weapon_id].description,1)
    end
    @equip_choose.visible = false
    @equip_rect[0].blink_on
    @left_index = 0         # 装备位的选择
    @right = false          # 右边是否选择
    @right_index = -1       # 新装备的选择
    @page = 0               # 同ITEM
    loop {update; break if $scene != self}
    @equip_rect.each {|a| a.bitmap.dispose ; a.dispose}
    @equip.each {|a| a.bitmap.dispose ; a.dispose}
    @bitmap.dispose
    @back.dispose
    @back.dispose
    @z.bitmap.dispose
    @z.dispose
    @person.dispose
    @change_equip.bitmap.dispose; @change_equip.dispose
    @new_equip.each {|a| a.bitmap.dispose;a.dispose}
    @equip_choose.dispose
  end
  def update
    Graphics.update
    @equip_rect.each {|a| a.update} if !@right
    @equip_choose.visible = true if !@equip_choose.visible && @right
    @equip_choose.visible = false if !@right && @equip_choose.visible
    @equip_choose.blink_on if !@equip_choose.blink? && @equip_choose.visible
    @equip_choose.update if @equip_choose.visible
    update_change if @right
    return if @right
    update_input
  end
  def update_input
    Input.update
    left_index(true) if Input.trigger?(Input::RIGHT)
    left_index if Input.trigger?(Input::LEFT)
    @right_index = 0 and @right = true and $game_system.se_play($data_system.decision_se) if Input.trigger?(Input::C)
    $scene = Scene_Menu.new and $game_system.se_play($data_system.cancel_se) if Input.trigger?(Input::B)
  end
  def left_index(plus=false)
    if plus
      return if @left_index >= 4
      @left_index += 1
      @equip_rect.each {|a| a.blink_off}
      @equip_rect[@left_index].blink_on
      for i in 0...4
        @new_equip.each {|a| a.x -= 51}
        Graphics.update
      end
    else
      return if @left_index <= 0
      @left_index -= 1
      @equip_rect.each {|a| a.blink_off}
      @equip_rect[@left_index].blink_on
      for i in 0...4
        @new_equip.each {|a| a.x += 51}
        Graphics.update
      end
    end
    $game_system.se_play($data_system.cursor_se)
    @help_text.bitmap.clear
    if @left_index == 0
      if !$data_weapons[@actor.weapon_id].nil?
        @help_text.bitmap.draw_text(0,0,510,20,
        $data_weapons[@actor.weapon_id].description,1)
      end
    else
      eval "return if $data_armors[@actor.armor#{@left_index}_id].nil?"
      eval "@help_text.bitmap.draw_text(0,0,510,20,
      $data_armors[@actor.armor#{@left_index}_id].description,1)"
    end
  end
  def draw_par(type)
    case type
    when 0
      parameter_name = $data_system.words.atk
      parameter_value = @actor.atk
    when 1
      parameter_name = $data_system.words.pdef
      parameter_value = @actor.pdef
    when 2
      parameter_name = $data_system.words.mdef
      parameter_value = @actor.mdef
    when 3
      parameter_name = $data_system.words.str
      parameter_value = @actor.str
    when 4
      parameter_name = $data_system.words.dex
      parameter_value = @actor.dex
    when 5
      parameter_name = $data_system.words.agi
      parameter_value = @actor.agi
    when 6
      parameter_name = $data_system.words.int
      parameter_value = @actor.int
    end
    @status.bitmap.draw_text(type / 4 == 0 ? 27 : 170, 40 + (15 * (type % 4)),
    126,15,"#{parameter_name}:#{parameter_value}")
  end
end

鸡蛋

鲜花

发表评论 评论 (1 个评论)

回复 时光机 2012-4-30 21:57
卧槽太触了

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

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

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

GMT+8, 2024-4-26 21:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部