Loading Bar RM xP

zaizai_88

C O N T R A
Lão Làng GVN
Tham gia ngày
28/9/04
Bài viết
1,968
Reaction score
22
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

bar2rp.png


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 = load_data("Data/Tilesets.rxdata")
@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 = load_data("Data/CommonEvents.rxdata")
@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+' = load_data("Data/System.rxdata").'+system_attr_data) 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 :

DEMO
 
Đề 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 :-/
 
Đề 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 :-/
 
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 À !!!
 
Ô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é.
 
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 à =))
 
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
 
Thằng ôn kia đâu gòi , vào đá đểu 1 bài rùi xéo hả =))
 
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)
 
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 =))
 
Back
Top