Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
MSX Menu
Autor Wiadomość
Loki 




Preferowany:
RPG Maker VX

Pomógł: 12 razy
Dołączył: 25 Kwi 2012
Posty: 162
Wysłany: Czw 28 Cze, 2012 10:59
MSX Menu
~ MSX - Scene_Menu MOD ~


Krótki opis:
Inne menu z ikonami i paskami hp/mp w menu.

Kompatybilność:
RPG Maker VX Ace

Skrypt:
Spoiler:

Kod:
#=============================================================================
# ** MSX - Scene_Menu MOD
#=============================================================================
# Author: Melosx
# Version: 2.0 Beta 1
# Release Date: 06-01-2012 => v1.0
#                          13-06-2012 => v2.0 Beta 1
#
#=============================================================================
# * Instructions
#-----------------------------------------------------------------------------
# Copy the script below Materials and above Main.
#
#=============================================================================
# * Rewrite
#-----------------------------------------------------------------------------
#
# Window_Base:
#
#               def draw_character
#               def draw_actor_graphic
#               def draw_gauge
#
#=============================================================================
# * Add
#-----------------------------------------------------------------------------
#
# Window_Base:
#
#               def draw_actor_exp_gauge
#
#==============================================================================



module MSX


#==============================================================================#
#=============================CONFIGURATION START==============================#
#==============================================================================#

  ACTIVE_MEMBERS = 4 # Default -> 4. Number ofactive member in menu.

  USE_GRAPHIC = true # true/false - Use/Not use graphic
  USE_FACE = true       # true/false - Use/Not use face.

  MAIN_X = 50 # General x coordinate
  MAIN_Y = 0 # General y coordinate


  # FACE

  FACE_X = 1 # Actor Face x coordinate
  FACE_Y = 1 # Actor Face y coordinate

  FACE_HEIGHT = 64 # Actor Face height


  # GRAPHIC

  GRAPHIC_X = 24 # Actor Graphic x coordinate
  GRAPHIC_Y = 52 # Actor Graphic y coordinate


  # GAUGE STYLE

  GAUGE_HEIGHT = 6 # HP/MP Gauge width
  GAUGE_BORDER = true # HP/MP Gauge Border


  # HP

  HP_X = 170 # Gauge x coordinate
  HP_Y = 20 # Gauge y coordinate

  HP_WIDTH = 130 # Gauge width

  HP_TYPE = 0 # 0 -> default; 1 -> center; 2 -> inverse;


  # MP

  MP_X = 175 # Gauge x coordinate
  MP_Y = 44 # Gauge y coordinate

  MP_WIDTH = 130 # Gauge width

  MP_TYPE = 0 # 0 -> default; 1 -> center; 2 -> inverse;


  # EXP

  EXP_GAUGE_X = 345 # Gauge x coordinate
  EXP_GAUGE_Y = 44 # Gauge y coordinate

  EXP_GAUGE_WIDTH = 90 # Gauge width
  EXP_GAUGE_HEIGHT = 6 # Gauge height

  EXP_INFO_X = 340 # Exp Info x coordinate
  EXP_INFO_Y = 18 # Exp Info y coordinate


  # NAME

  NAME_X = 0 # Name x coordinate
  NAME_Y = 0 # Name y coordinate


  # NICKNAME

  NICK_X = 0 # Nickname x coordinate
  NICK_Y = 20 # Nickname y coordinate


  # LEVEL

  LVL_X = 290 # Level x coordinate
  LVL_Y = 0 # Level y coordinate


  # CLASS

  CLASS_X = 100 # Class x coordinate
  CLASS_Y = 0 # Class y coordinate


  # STATE

  STATE_X = 50 # State x coordinate
  STATE_Y = 0 # State y coordinate
  STATE_NUMBER = 6 # Number of state


#==============================================================================#
#==============================CONFIGURATION END===============================#
#==============================================================================#
end


#==============================================================================
# ** Game_Party
#==============================================================================

class Game_Party < Game_Unit

  def menu_members
        all_members[0, MSX::ACTIVE_MEMBERS].select {|actor| actor.exist? }
  end

end


#==============================================================================
# ** Scene_Menu
#==============================================================================
class Scene_Menu < Scene_MenuBase

  def start
        super
        create_command_window
        create_gold_window
        create_status_window
  end

  def create_gold_window
        @gold_window = Window_MenuPlus_Horz.new
        @gold_window.x = 0
        @gold_window.y = Graphics.height - @gold_window.height
  end

  def create_status_window
        @status_window = Window_MenuStatus.new(0, 48)
  end

end


#==============================================================================
# ** Window_MenuCommand
#==============================================================================
class Window_MenuCommand < Window_Command

  def initialize
        super(0, 0)
        self.contents.font.size = 16
        select_last
  end

  def visible_line_number
        return 1
  end

  def col_max
        return 7
  end

  def spacing
        return 4
  end

  def window_width
        return 544
  end

  def window_height
        return 48
  end

end



#==============================================================================
# ** Window_MenuStatus
#==============================================================================
class Window_MenuStatus < Window_Selectable
  attr_reader   :pending_index

  def initialize(x, y)
        super(x, y, window_width, window_height)
        self.contents.font.size = 16
        @pending_index = -1
        refresh
  end

  def window_width
        544
  end

  def window_height
        320
  end

  def draw_item(index)
        actor = $game_party.members[index]
        enabled = $game_party.menu_members.include?(actor)
        rect = item_rect(index)
        draw_item_background(index)
        if MSX::USE_FACE
          draw_actor_menu_face(actor, rect.x + MSX::FACE_X, rect.y + MSX::FACE_Y, enabled)
          draw_actor_simple_status(actor, rect.x + MSX::MAIN_X, rect.y + MSX::MAIN_Y)
        else
          draw_actor_simple_status(actor, rect.x + MSX::MAIN_X, rect.y + MSX::MAIN_Y)
        end
        if MSX::USE_GRAPHIC
          draw_actor_graphic(actor, MSX::GRAPHIC_X, rect.y + MSX::GRAPHIC_Y, enabled)
        end
  end

  def draw_actor_simple_status(actor, x, y)
        draw_actor_name(actor, x + MSX::NAME_X, y + MSX::NAME_Y)
        draw_actor_nickname(actor, x + MSX::NICK_X, y + MSX::NICK_Y, 160)
        draw_actor_level(actor, x + MSX::LVL_X, y + MSX::LVL_Y)
        draw_actor_icons(actor, MSX::STATE_X, MSX::STATE_Y + line_height * 2, MSX::STATE_NUMBER * 24)
        draw_actor_class(actor, x + MSX::CLASS_X, y + MSX::CLASS_Y)
        draw_actor_hp(actor, x + MSX::HP_X, y + MSX::HP_Y, MSX::HP_WIDTH, MSX::HP_TYPE)
        draw_actor_mp(actor, x + MSX::MP_X, y + MSX::MP_Y, MSX::MP_WIDTH, MSX::MP_TYPE)
        draw_actor_exp_gauge(actor, x + MSX::EXP_GAUGE_X,  y + MSX::EXP_GAUGE_Y, MSX::EXP_GAUGE_WIDTH)
        draw_exp_info(actor, x + MSX::EXP_INFO_X, y + MSX::EXP_INFO_Y)
  end

  def draw_actor_class(actor, x, y, width = 112)
        change_color(system_color)
        draw_text(x, y, 52, line_height, "Class:")
        change_color(normal_color)
        draw_text(x + 54, y, width, line_height, actor.class.name)
  end

  def draw_exp_info(actor, x, y)
        self.contents.font.color = text_color(0)
        if actor.level != 99
          s1 = actor.exp - actor.current_level_exp
          s2 = actor.next_level_exp - actor.current_level_exp
        else
          s1 = "-"
          s2 = "-"
        end
        exp = s1.to_s + " / " + s2.to_s
        change_color(system_color)
        draw_text(x, y, 100, line_height, "Experience")
        change_color(normal_color)
        draw_text(x, y + 12, 100, line_height, exp, 2)
  end

end



#==============================================================================
# ** Window_Base
#==============================================================================
class Window_Base < Window

  def draw_menu_face(face_name, face_index, x, y, enabled = true)
        bitmap = Cache.face(face_name)
        rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, MSX::FACE_HEIGHT)
        contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
        bitmap.dispose
  end

  def draw_actor_menu_face(actor, x, y, enabled = true)
        draw_menu_face(actor.face_name, actor.face_index, x, y, enabled)
  end

  def draw_character(character_name, character_index, x, y, enabled=true)
        return unless character_name
        bitmap = Cache.character(character_name)
        sign = character_name[/^[\!\$]./]
        if sign && sign.include?('$')
          cw = bitmap.width / 3
          ch = bitmap.height / 4
        else
          cw = bitmap.width / 12
          ch = bitmap.height / 8
        end
        n = character_index
        src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
        contents.blt(x - cw / 2, y - ch, bitmap, src_rect, enabled ? 255 : translucent_alpha)
  end

  def draw_actor_graphic(actor, x, y, enabled=true)
        draw_character(actor.character_name, actor.character_index, x, y, enabled)
  end

  def draw_gauge(x, y, width, rate, color1, color2, type = 0)
        fill_w = (width * rate).to_i
        gauge_y = y + line_height - 8
        if MSX::GAUGE_BORDER
          contents.fill_rect(x - 2, gauge_y - 2, width + 4, MSX::GAUGE_HEIGHT + 4, gauge_back_color)
          contents.fill_rect(x - 1, gauge_y - 1, width + 2, MSX::GAUGE_HEIGHT + 2, normal_color)
        end
        case type
          when 0
                contents.fill_rect(x, gauge_y, width, MSX::GAUGE_HEIGHT, gauge_back_color)
                contents.gradient_fill_rect(x, gauge_y, fill_w, MSX::GAUGE_HEIGHT, color1, color2)
          when 1
                gr_x = x + (width - fill_w) / 2
                contents.fill_rect(x, gauge_y, width, MSX::GAUGE_HEIGHT, gauge_back_color)
                contents.gradient_fill_rect(gr_x, gauge_y, fill_w, MSX::GAUGE_HEIGHT, color1, color2)
          when 2
                gr_x = x + (width - fill_w)
                contents.fill_rect(x, gauge_y, width, MSX::GAUGE_HEIGHT, gauge_back_color)
                contents.gradient_fill_rect(gr_x, gauge_y, fill_w, MSX::GAUGE_HEIGHT, color1, color2)
        end
  end

  def draw_actor_hp(actor, x, y, width = 124, type = 0)
        draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2, type)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::hp_a)
        draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
          hp_color(actor), normal_color)
  end
 
  def draw_actor_mp(actor, x, y, width = 124, type = 0)
        draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2, type)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::mp_a)
        draw_current_and_max_values(x, y, width, actor.mp, actor.mmp,
          mp_color(actor), normal_color)
  end

  def draw_actor_exp_gauge(actor, x, y, width = 100)
        if actor.level != 99
          s1 = actor.exp - actor.current_level_exp
          s2 = actor.next_level_exp - actor.current_level_exp
          gw = width * s1 / s2
        else
          gw = 0
        end
        gc1 = text_color(14)
        gc2 = text_color(6)
        self.contents.fill_rect(x - 1, y - 1, width + 4, MSX::EXP_GAUGE_HEIGHT + 4, gauge_back_color)
        self.contents.fill_rect(x, y, width + 2, MSX::EXP_GAUGE_HEIGHT + 2, normal_color)
        self.contents.fill_rect(x + 1, y + 1, width, MSX::EXP_GAUGE_HEIGHT, gauge_back_color)
        self.contents.gradient_fill_rect(x + 1, y + 1, gw, MSX::EXP_GAUGE_HEIGHT, gc1, gc2)
  end

end



#==============================================================================
# ** Window_MenuPlus_Horz
#==============================================================================
class Window_MenuPlus_Horz < Window_Base

  def initialize
        super(0, 0, window_width, fitting_height(1))
        self.contents.font.size = 16
        refresh
  end

  def update
        super
        sec = (Graphics.frame_count / Graphics.frame_rate) % 60
        if sec > @total_sec % 60 or sec == 0
          refresh
        end
  end

  def window_width
        return 544
  end

  def refresh
        contents.clear
        draw_currency_value(value, currency_unit, 4, 0, 120)
        draw_text(4, 0, 120, line_height, "Gold:", 0)
        draw_text(195, 0, 120, line_height, "Steps:", 0)
        draw_text(390, 0, 120, line_height, "Time:", 0)
        change_color(normal_color)
        draw_text(195, 0, 120, line_height, $game_party.steps, 2)
        @total_sec = Graphics.frame_count / Graphics.frame_rate
        ora = @total_sec / 60 / 60
        min = @total_sec / 60 % 60
        sec = @total_sec % 60
        tempo = sprintf("%02d:%02d:%02d", ora, min, sec)
        draw_text(390, 0, 120, line_height, tempo, 2)
  end

  def value
        $game_party.gold
  end

  def currency_unit
        Vocab::currency_unit
  end

  def open
        refresh
        super
  end

end


Screeny:
Spoiler:


 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene