Loading Bar RM xP

Thảo luận trong 'Game Development' bắt đầu bởi zaizai_88, 4/5/06.

  1. zaizai_88

    zaizai_88 C O N T R A

    Tham gia ngày:
    28/9/04
    Bài viết:
    1,968
    Nơi ở:
    HCM CITY
    Chào các bạn ...Mình hôm nay có một cái Loading bar , chạy khá tốt ....Mình xin mạng phép hướng dẫn cho các bạn

    [​IMG]

    Vào RM XP , F11

    bạn là một cái Script mới : và cho cái Code này vào :



    # A gradient bar... no need to explain :P
    # Made By Illusion
    class Bitmap
    def gradient_fill_rect(x, y, width = nil, height = nil, color = nil)
    if x.is_a?(Rect)
    color = y
    height = x.height
    end
    origin_aplha = color.alpha
    temp_color_alpha = 0
    for i in 0...height
    temp_color_alpha += origin_aplha / height.to_f
    temp_color = Color.new(color.red, color.green, color.blue, temp_color_alpha)
    if x.is_a?(Rect)
    self.fill_rect(x, temp_color)
    else
    self.fill_rect(x, y + i, width, height - i, temp_color)
    end
    end
    end
    end





    Xong , Bạn vào Cái window effects , Cho cái này vào :



    #==============================================================================
    # ■ Window_Base
    #------------------------------------------------------------------------------
    # Some modifications to make some special effects.
    # By : Illusion
    # Descriptions :
    # self.shake = true >> Will shake the window and its contents.
    # self.bounce(x or y or both) >> Will "bounce" the window up, donw, left and right.
    # self.continuous_transparency = true >> Will make the window fade in and out.
    # Before setting one these settings in your scene do this :
    # @window_thing.x = desired x
    # @window_thing.y = desired y
    # @window_thing.update
    # @window_thing.effect_attribute = true or false
    #==============================================================================

    class Window_Base
    attr_accessor :shake
    attr_accessor :bounce_x
    attr_accessor :bounce_y
    attr_accessor :continuous_transparency
    alias effects_initialize initialize
    alias effects_update update
    def initialize(x, y, width, height)
    @old_x = x
    @old_y = y
    effects_initialize(x, y, width, height)
    self.shake = false
    self.bounce_x = false
    self.bounce_y = false
    self.continuous_transparency = false
    end
    def update
    @old_x = self.x unless move_effects
    @old_y = self.y unless move_effects
    effects_update
    # If the window has a shake status, shake it.
    if self.shake
    self.x = @old_x + rand(5)
    self.y = @old_y - rand(5)
    end
    # If the window has a bouncing status, move it.
    if self.bounce_y
    @down = true if self.y < @old_y - 40
    @down = false if self.y > @old_y+ 10
    self.y += 1 if @down
    self.y -= 1 unless @down
    end
    if self.bounce_x
    @left = true if self.x < @old_x - 20
    @left = false if self.x > @old_x + 30
    self.x += 1 if @left
    self.x -= 1 unless @left
    end
    # If the window has a transparency status, change its transparency it.
    if self.continuous_transparency
    @opacity_up = true if self.opacity <= 10
    @opacity_up = false if self.opacity >= 255
    self.opacity += 2 if @opacity_up
    self.opacity -= 2 unless @opacity_up
    end
    end
    #-------------------------------------------------------------
    # ● Enables bouncing effect
    #-------------------------------------------------------------
    def bounce
    self.bounce_x = self.bounce_y = true
    end
    #-------------------------------------------------------------
    # ● Checks that no window effect is active.
    #-------------------------------------------------------------
    def move_effects
    a = false
    a = true if self.bounce_x
    a = true if self.bounce_y
    a = true if self.shake
    return a
    end
    end




    Tiếp , Bạn vào Game_System và sửa nó : sau đó cho cái dòng này vào :




    class Game_System
    #--------------------------------------------------------------------------
    # ● Returns the default windowskin name.
    #--------------------------------------------------------------------------
    def windowskin_name
    if @windowskin_name == nil
    begin
    return $data_system.windowskin_name
    rescue
    return '001-Blue01'
    end
    else
    return @windowskin_name
    end
    end
    end



    Sau đó là Tiếp cai Sript mới : tên Là Load Window :cho cái này vào :



    #==============================================================================
    # ■ Window_Load_Data
    #------------------------------------------------------------------------------
    # Shows the loading data bar and percentage.
    # By : Illusion
    #==============================================================================

    class Window_Load_Data < Window_Base
    attr_accessor :text
    attr_accessor :color
    #--------------------------------------------------------------------------
    # ● Initializes the window.
    #--------------------------------------------------------------------------
    def initialize
    super(190, 206, 250 + 32, 30 + 32 - 15)
    self.contents = Bitmap.new(250, 32 - 6)
    self.contents.font.name = $defaultfonttype
    self.contents.font.size = 16
    self.contents.font.color = Color.new(255, 255, 255, 255)
    @text = ""
    @color = Color.new(0, 0, 0, 255)
    self.visible = true
    end
    #--------------------------------------------------------------------------
    # ● Updates the bar and the text.
    #--------------------------------------------------------------------------
    def set_text_and_bar(percentage)
    percentage = percentage.floor.to_i
    update
    # Clears the contents.
    self.contents.clear
    self.contents.gradient_fill_rect(0, 0, (percentage / 100.0 * self.contents.width), self.contents.height, @color)
    text = @text+percentage.to_s+'%'
    self.contents.draw_text(8, -4, text.size * 32, 32, text, 0)
    end
    end


    Và cuối cùng là .... Các bạn đến cái Scene_Title

    Tìm cái dòng 67 , Xóa hết ,,,, Xong cho vào Cái này :




    #==============================================================================
    # ■ Scene_Title
    #------------------------------------------------------------------------------
    # Custom load window added.
    # By Illusion
    #==============================================================================

    class Scene_Title
    #--------------------------------------------------------------------------
    # ● Main
    #--------------------------------------------------------------------------
    def main
    # Go to B_TEST if user is testing a batttle.
    if $BTEST
    battle_test
    return
    end
    # Create a new game_system
    $game_system = Game_System.new
    # Create the Sprites and windows.
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title(load_data("Data/System.rxdata").title_name)
    # If data is already loaded, skip this part.
    if $data_system == nil
    Graphics.transition
    @window = Window_Load_Data.new
    @window.color = Color.new(rand(255), rand(255), rand(255), 255)
    @window.width = 283
    @window.height = 60
    load_hero_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_class_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_skill_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_item_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_weapons_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_armor_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_ennemy_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_troop_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_states_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_animations_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_tilesets_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_common_events_data
    @window.color.set(rand(255), rand(255), rand(255))
    load_system_data
    Graphics.freeze
    @window.dispose
    end
    # Define the commands.
    s1 = "New Game"
    s2 = "Continue"
    s3 = "Exit"
    @command_window = Window_Command.new(192, [s1, s2, s3])
    @command_window.back_opacity = 160
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 288
    @command_window.update
    # Makes the command window bounce, removed if not desired.
    @command_window.bounce
    # Checks if a save file exists.
    @continue_enabled = false
    for i in 0..3
    if FileTest.exist?("Save#{i+1}.sav")
    @continue_enabled = true
    end
    end
    # Disable the command if no save file exists, otherwise, place cursor on the continue option.
    if @continue_enabled
    @command_window.index = 1
    else
    @command_window.disable_item(1)
    end
    # Play title BGM.
    $game_system.bgm_play($data_system.title_bgm)
    # Stop the ME and BGS.
    Audio.me_stop
    Audio.bgs_stop
    # De-freeze the screen.
    Graphics.transition
    # メインループ
    loop do
    # Update the screen.
    Graphics.update
    # Update the keyboard input.
    Input.update
    # Update.
    update
    # If $scene is not a Scene_Title, break.
    if $scene != self
    break
    end
    end
    # Freezes the screen.
    Graphics.freeze
    # Release all the bitmaps / erase them.
    @command_window.dispose
    @sprite.bitmap.dispose
    @sprite.dispose
    end
    #--------------------------------------------------------------------------
    # ● Load Hero data
    #--------------------------------------------------------------------------
    def load_hero_data
    @window.text = 'Loading actor data '
    size = load_data("Data/Actors.rxdata").size
    $data_actors = []
    for i in 0...size + 1
    $data_actors = load_data("Data/Actors.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load class data
    #--------------------------------------------------------------------------
    def load_class_data
    @window.text ='Loading class data '
    size = load_data("Data/Classes.rxdata").size
    $data_classes = []
    for i in 0...size + 1
    $data_classes = load_data("Data/Classes.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load skill data
    #--------------------------------------------------------------------------
    def load_skill_data
    @window.text = 'Loading skill data '
    size = load_data("Data/Skills.rxdata").size
    $data_skills = []
    for i in 0...size + 1
    $data_skills = load_data("Data/Skills.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load item data
    #--------------------------------------------------------------------------
    def load_item_data
    @window.text = 'Loading items data '
    size = load_data("Data/Items.rxdata").size
    $data_items = []
    for i in 0...size + 1
    $data_items = load_data("Data/Items.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load weapons data
    #--------------------------------------------------------------------------
    def load_weapons_data
    size = load_data("Data/Weapons.rxdata").size
    $data_weapons = []
    @window.text = 'Loading weapon data '
    for i in 0...size + 1
    $data_weapons = load_data("Data/Weapons.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load armor data
    #--------------------------------------------------------------------------
    def load_armor_data
    size = load_data("Data/Armors.rxdata").size
    $data_armors = []
    @window.text = 'Loading armor data '
    for i in 0...size + 1
    $data_armors = load_data("Data/Armors.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load ennemy data
    #--------------------------------------------------------------------------
    def load_ennemy_data
    size = load_data("Data/Enemies.rxdata").size
    $data_enemies = []
    @window.text = 'Loading ennemy data '
    for i in 0...size + 1
    $data_enemies = load_data("Data/Enemies.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load troop data
    #--------------------------------------------------------------------------
    def load_troop_data
    size = load_data("Data/Troops.rxdata").size
    $data_troops = []
    @window.text = 'Loading troop data '
    for i in 0...size + 1
    $data_troops = load_data("Data/Troops.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load states data
    #--------------------------------------------------------------------------
    def load_states_data
    size = load_data("Data/States.rxdata").size
    $data_states = []
    @window.text = 'Loading state data '
    for i in 0...size + 1
    $data_states = load_data("Data/States.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load animations data
    #--------------------------------------------------------------------------
    def load_animations_data
    size = load_data("Data/Animations.rxdata").size
    $data_animations = []
    @window.text = 'Loading animations data '
    for i in 0...size + 1
    $data_animations = load_data("Data/Animations.rxdata")
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load tilesets data
    #--------------------------------------------------------------------------
    def load_tilesets_data
    size = load_data("Data/Tilesets.rxdata").size
    $data_tilesets = []
    @window.text = 'Loading tilestets data '
    for i in 0...size + 1
    $data_tilesets[i] = load_data("Data/Tilesets.rxdata")[i]
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load common events data
    #--------------------------------------------------------------------------
    def load_common_events_data
    size = load_data("Data/CommonEvents.rxdata").size
    $data_common_events = []
    @window.text = 'Loading common events data '
    for i in 0...size
    $data_common_events[i] = load_data("Data/CommonEvents.rxdata")[i]
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    #--------------------------------------------------------------------------
    # ● Load system data
    #--------------------------------------------------------------------------
    def load_system_data
    system_attr_data = ['magic_number', 'party_members',
    'elements', 'switches', 'variables', 'windowskin_name',
    'title_name ', 'gameover_name' , 'battle_transition',
    'title_bgm', 'battle_bgm ', 'battle_end_me ',
    'gameover_me ', 'cursor_se', 'decision_se',
    'cancel_se', 'buzzer_se', 'equip_se', 'shop_se ',
    'save_se ', 'load_se', 'battle_start_se',
    'escape_se', 'actor_collapse_se ', 'enemy_collapse_se',
    'words', 'start_map_id', 'start_x', 'start_y',
    'test_battlers', 'test_troop_id', 'battleback_name ',
    'battler_name ', 'battler_hue', 'edit_map_id ']
    size = system_attr_data.size
    $data_system = RPG::System.new
    @window.text = 'Loading system data '
    for i in 0...size + 1
    eval('$data_system.'+system_attr_data[i]+' = load_data("Data/System.rxdata").'+system_attr_data[i]) rescue nil
    @window.set_text_and_bar((i / size.to_f * 100).to_i)
    Graphics.update
    Input.update
    end
    end
    end




    Xong rùi ....Chúc thành công nha ...

    Nếu là không được thì Vào đây lấy Demo nha :

    [URL=http://www.megaupload.com/?d=WDE3LGMC]DEMO[/URL][/i][/i][/i][/i][/i][/i]
     
  2. Dương 4444

    Dương 4444 Mr & Ms Pac-Man

    Tham gia ngày:
    8/2/06
    Bài viết:
    189
    Nơi ở:
    Hải Phòng
    Đề nghị ông cho mã vào trong bảng code đi , để dài thế này kiếm MP hả :D , ủa , mà Window Effect ở đâu rậy :-/
     
  3. Dương 4444

    Dương 4444 Mr & Ms Pac-Man

    Tham gia ngày:
    8/2/06
    Bài viết:
    189
    Nơi ở:
    Hải Phòng
    Đề nghị ông cho mã vào trong bảng code đi , để dài thế này kiếm MP hả :D , ủa , mà Window Effect ở đâu rậy :-/
     
  4. DarkPaladin

    DarkPaladin Youtube Master Race

    Tham gia ngày:
    23/3/06
    Bài viết:
    90
    Nơi ở:
    Bạc Liêu
    Cái Loading Bar này thật ra là có công dụng gì ? Sao tui nhìn hổng hiểu gì hết trơn dzậy ???
    -----------------------------------------------------------
    AI GIẤU CÁI CHỮ KÍ CỦA TUI THÌ TRẢ LẠI NGHe ! KO GIỠN ĐÂU À !!!
     
  5. hoangkda

    hoangkda Youtube Master Race

    Tham gia ngày:
    26/4/06
    Bài viết:
    7
    Ông Duong44 ơi, tui thấy ông nhiều chuyện quá đừng có lúc nào cũng dậy không người ta phải thế này thế kia chứ nếu ông giỏi thì đừng chạy lăng xăng hãy ngồi 1 chỗ mà thể hiện tài năng xem ông có tự mình viết được 1 cái script như các bạn khác không nhé.
     
  6. Dương 4444

    Dương 4444 Mr & Ms Pac-Man

    Tham gia ngày:
    8/2/06
    Bài viết:
    189
    Nơi ở:
    Hải Phòng
    Bố cái thằng điên này , tao có động gì tới mày đâu , chẳng qua nói phét mấy câu với anh em cho vui thui , ủa , mày ko đủ trí khôn để hiểu tao đang đùa à =))
     
  7. dekarvn

    dekarvn Donkey Kong

    Tham gia ngày:
    23/1/05
    Bài viết:
    369
    Nơi ở:
    Law City of Zenebatos
    cái code trên rất hay, tuy nhiên hầu như chỉ dành cho game nào to và có 1 thư viện nhạc + hình ảnh lớn. Chứ với game nhỏ thì làm chơi chơi cho oai thì cũng.......giảm giá trị của game và tăng thời gian load game thay vì giảm.... => not applicable

    Cám ơn vì đã share
     
  8. Dương 4444

    Dương 4444 Mr & Ms Pac-Man

    Tham gia ngày:
    8/2/06
    Bài viết:
    189
    Nơi ở:
    Hải Phòng
    Thằng ôn kia đâu gòi , vào đá đểu 1 bài rùi xéo hả =))
     
  9. zaizai_88

    zaizai_88 C O N T R A

    Tham gia ngày:
    28/9/04
    Bài viết:
    1,968
    Nơi ở:
    HCM CITY
    Code này dùng cho màu mè một chút thui ..chứ nó cũng chẵng công dụng gì ...Y như là bạn install game thì nó Load ra đấy thui mà ...Nếu bạn thích thì lấy ...Còn không thì thui ....Lần sau mình sẽ gởi cho bà con cái CBS theo kiểu FF 9 ( hay và đôc đáo)
     
  10. Dương 4444

    Dương 4444 Mr & Ms Pac-Man

    Tham gia ngày:
    8/2/06
    Bài viết:
    189
    Nơi ở:
    Hải Phòng
    Về rồi ko thèm tắt nick hả , cái Code này của ông có dùng đc đâu , làm gì có cái nào gọi là Window_Effect =))
     

Chia sẻ trang này