Suporte ao desenvolvimento de jogos!


    2 Breaks- Save window

    Compartilhe
    avatar
    Hatsurugi
    Diva
    Diva

    Mensagens : 236
    Créditos : 125

    2 Breaks- Save window

    Mensagem por Hatsurugi em Seg Maio 14, 2012 10:03 am

    Olá mais uma vez a todos, hoje vim trazer este Spript que traz uma beleza a mais a sua Save window.

    Caracteristicas:


    • Modifica a tela de salvamento
    • Desing agradavel.


    Screenshot





    Script


    Código:
    #==============================================================================
    # ■ VXAce-RGSS3-20 セーブ画面-改2 [Ver.1.0.0]        by Claimh
    #------------------------------------------------------------------------------
    #  Modifica a window scene.
    #==============================================================================

    #==============================================================================
    # ■ SaveActor  : セーブファイル用のダミーアクター
    #==============================================================================
    class SaveActor
      #--------------------------------------------------------------------------
      # ● 公開インスタンス変数
      #--------------------------------------------------------------------------
      attr_reader :name
      attr_reader :level
      attr_reader :hp
      attr_reader :mp
      attr_reader :mhp
      attr_reader :mmp
      attr_reader :face_name
      attr_reader :face_index
      #--------------------------------------------------------------------------
      # ● オブジェクト初期化
      #--------------------------------------------------------------------------
      def initialize(actor)
        @name = actor.name
        @level = actor.level
        @hp = actor.hp; @mhp = actor.mhp
        @mp = actor.mp; @mmp = actor.mmp
        @face_name = actor.face_name
        @face_index = actor.face_index
        @dead = actor.dead?
      end
      #--------------------------------------------------------------------------
      # ● 戦闘不能判定
      #--------------------------------------------------------------------------
      def dead?
        @dead
      end
      #--------------------------------------------------------------------------
      # ● HP の割合を取得
      #--------------------------------------------------------------------------
      def hp_rate
        @hp.to_f / @mhp
      end
      #--------------------------------------------------------------------------
      # ● MP の割合を取得
      #--------------------------------------------------------------------------
      def mp_rate
        @mmp > 0 ? @mp.to_f / @mmp : 0
      end
    end

    #==============================================================================
    # ■ Game_Party
    #==============================================================================
    class Game_Party < Game_Unit
      #--------------------------------------------------------------------------
      # ● セーブファイル表示用の顔グラフィック画像情報
      #--------------------------------------------------------------------------
      def member_for_savefile
        members.collect { |actor| SaveActor.new(actor) }
      end
    end

    #==============================================================================
    # ■ DataManager
    #==============================================================================
    class << DataManager
      #--------------------------------------------------------------------------
      # ● セーブヘッダの作成
      #--------------------------------------------------------------------------
      alias make_save_header_faces make_save_header
      def make_save_header
        header = make_save_header_faces
        header[:map_name] = $game_map.display_name
        header[:actors] = $game_party.member_for_savefile
        header
      end
    end


    #==============================================================================
    # ■ Window_SaveFile
    #==============================================================================
    class Window_SaveFile < Window_Base
      #--------------------------------------------------------------------------
      # ● オブジェクト初期化 [再定義]
      #    index : セーブファイルのインデックス
      #--------------------------------------------------------------------------
      def initialize(height, index)
        super(0, index * height, window_width, height)
        @file_index = index
        refresh
        @selected = false
      end
      #--------------------------------------------------------------------------
      # ● ウィンドウ幅
      #--------------------------------------------------------------------------
      def window_width
        return 134
      end
      #--------------------------------------------------------------------------
      # ● リフレッシュ [再定義]
      #--------------------------------------------------------------------------
      def refresh
        contents.clear
        change_color(normal_color)
        name = Vocab::File + " #{@file_index + 1}"
        draw_text(4, 0, 200, line_height, name)
        @name_width = text_size(name).width
      end
    end

    #==============================================================================
    # ■ Window_SaveFile
    #==============================================================================
    class Window_SaveInfo < Window_Selectable
      #--------------------------------------------------------------------------
      # ● オブジェクト初期化
      #--------------------------------------------------------------------------
      def initialize(x, h)
        @actors = []
        super(x, h, Graphics.width - x, Graphics.height - h)
        self.file_index = index
      end
      #--------------------------------------------------------------------------
      # ● 項目の高さを取得
      #--------------------------------------------------------------------------
      def item_height
        (contents_height - (line_height * 2)) / row_num
      end
      #--------------------------------------------------------------------------
      # ● ウィンドウ内容の高さを計算
      #--------------------------------------------------------------------------
      def contents_height
        height - standard_padding * 2
      end
      #--------------------------------------------------------------------------
      # ● 列数の取得
      #--------------------------------------------------------------------------
      def row_num
        return 3
      end
      #--------------------------------------------------------------------------
      # ● 桁数の取得
      #--------------------------------------------------------------------------
      def col_max
        return 2
      end
      #--------------------------------------------------------------------------
      # ● 下端パディングの更新
      #--------------------------------------------------------------------------
      def update_padding_bottom
      end
      #--------------------------------------------------------------------------
      # ● 横に項目が並ぶときの空白の幅を取得
      #--------------------------------------------------------------------------
      def spacing
        return 16
      end
      #--------------------------------------------------------------------------
      # ● 項目数の取得
      #--------------------------------------------------------------------------
      def item_max
        return [@actors.size, 6].min
      end
      #--------------------------------------------------------------------------
      # ● ファイル変更
      #--------------------------------------------------------------------------
      def file_index=(index)
        return if @file_index == index
        @file_index = index
        header = DataManager.load_header(@file_index)
        @actors  = !header.nil? ? header[:actors] : []
        @map_name = !header.nil? ? header[:map_name] : ""
        @playtime = !header.nil? ? header[:playtime_s] : ""
        create_contents
        refresh
      end
      #--------------------------------------------------------------------------
      # ● リフレッシュ
      #--------------------------------------------------------------------------
      def refresh
        super
        if @actors.empty? or @actors.nil?
          draw_text(0, 0, contents_width, contents_height, "- empty -", 1)
          return
        end
        draw_text(0, 0, contents_width, line_height, @map_name)
        draw_playtime(200, 0, contents_width - 200)
        draw_horz_line(line_height)
      end
      #--------------------------------------------------------------------------
      # ● 項目の描画
      #--------------------------------------------------------------------------
      def draw_item(index)
        return if @actors.empty? or @actors.nil?
        actor = @actors[index]
        rect = item_rect(index)
        rect.y += line_height * 2
        draw_actor_face(actor, rect.x, rect.y, !actor.dead?)
        draw_actor_name(actor,  rect.x + 100, rect.y+line_height*0)
        draw_actor_level(actor, rect.x + 100, rect.y+line_height*1)
        w = [124, rect.width - 100].min
        draw_actor_hp(actor,  rect.x + 100, rect.y+line_height*2, w)
        draw_actor_mp(actor,  rect.x + 100, rect.y+line_height*3, w)
      end
      #--------------------------------------------------------------------------
      # ● プレイ時間の描画
      #--------------------------------------------------------------------------
      def draw_playtime(x, y, width)
        draw_text(x, y, width, line_height, @playtime, 2)
      end
      #--------------------------------------------------------------------------
      # ● 水平線の描画
      #--------------------------------------------------------------------------
      def draw_horz_line(y)
        line_y = y + line_height / 2 - 1
        contents.fill_rect(0, line_y, contents_width, 2, line_color)
      end
      #--------------------------------------------------------------------------
      # ● 水平線の色を取得
      #--------------------------------------------------------------------------
      def line_color
        color = normal_color
        color.alpha = 48
        color
      end
    end

    #==============================================================================
    # ■ Scene_File
    #==============================================================================
    class Scene_File < Scene_MenuBase
      #--------------------------------------------------------------------------
      # ● セーブファイルウィンドウの作成
      #--------------------------------------------------------------------------
      alias create_savefile_windows_save create_savefile_windows
      def create_savefile_windows
        create_savefile_windows_save
        @info_window = Window_SaveInfo.new(@savefile_windows[0].window_width, @help_window.height)
      end
      #--------------------------------------------------------------------------
      # ● 選択状態の初期化
      #--------------------------------------------------------------------------
      alias init_selection_save init_selection
      def init_selection
        init_selection_save
        @info_window.file_index = @index
      end
      #--------------------------------------------------------------------------
      # ● 画面内に表示するセーブファイル数を取得
      #--------------------------------------------------------------------------
      def visible_max
        return @savefile_viewport.rect.height / @help_window.height
      end
      #--------------------------------------------------------------------------
      # ● カーソルの更新
      #--------------------------------------------------------------------------
      alias update_cursor_save update_cursor
      def update_cursor
        update_cursor_save
        @info_window.file_index = @index
      end
    end

    Creditos:


    • A Claimh: Por ciar o Script
    • A Hatsurugi: Por postar na Aldeia.


    Espero que esteja útil aos senhores.

    De sua atiradora

    Hatsurugi


    _________________
    Fanbars:

    Guild:

    Project:





    Minha deusa:



    avatar
    Felix Blayder
    Membro de Honra
    Membro de Honra

    Mensagens : 1490
    Créditos : 219

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: 2 Breaks- Save window

    Mensagem por Felix Blayder em Seg Maio 14, 2012 10:15 am

    Como sempre, Hat ñ deixando a nossa queria área do Ace morrer...

    +1 Cred...


    _________________

    Se inscreva em meu Canal no YouTube:
    https://www.youtube.com/localnerd

    Faça uma doação para ajudar nos custos:

    https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3N8T2RJ977RCQ


    Gumg
    Membro Ativo
    Membro Ativo

    Mensagens : 285
    Créditos : 29

    Re: 2 Breaks- Save window

    Mensagem por Gumg em Seg Maio 14, 2012 4:44 pm

    Ficou bem agradável,

    Eu utilizaria se... usasse o Ace e.e


    _________________

    avatar
    joaovitor2763
    Membro de Honra
    Membro de Honra

    Medalhas :
    Mensagens : 662
    Créditos : 137

    Re: 2 Breaks- Save window

    Mensagem por joaovitor2763 em Seg Maio 14, 2012 4:44 pm

    Não uso o ace, más parece ser bem bacana, afinal a tela de save de todos os Rm que já usei sempre foi muito ruim.


    _________________
    Ser maker e ser capaz de dar vida a sua imaginação.



    Conteúdo patrocinado

    Re: 2 Breaks- Save window

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sab Out 20, 2018 11:02 pm