Douglanilo
Mestre
Postagens : 959 Data de inscrição : 02/04/2009
| Assunto: Tales of Symphonia Menu Dom Out 11, 2009 4:09 pm | |
| Tales of Symphonia Menu por Vash-X IntroduçãoEste script muda o estilo do menu para o estilo do famoso jogo Tales of Symphonia. Como usarRenomeie a imagem abaixo para "cursor" e coloque-a dentro da pasta de Windowskins: Crie um novo script acima do Main e coloque o script dentro dele. Vá até o Scene_Title e abaixo de $data_system = load_data("Data/System.rxdata"), adicione: - Citação :
- $data_map_infos = load_data("Data/MapInfos.rxdata")
script - Código:
-
#============================================================ # Tales of Symphonia Menu # Compilado por: Vash (aka Vash-X, Edward Elric, Gadguard) # Criado em: 27 de Dezembro de 2005 # Última atualização: 4 de Janeiro de 2006 # Versão: 1.2 # Créditos do autor: Vários sites japoneses e os membros do RMXP.net # Este menu foi feito à tempo atrás junto e eu fui acrecentando varios scripts mas não # lembro de todos os lugares e quais scripts usei. # Traduzido por: Darkjouse #============================================================
class Window_Base < Window
def draw_actor_hp_meter_line(actor, x, y, width = 156, height = 4) w = width * actor.hp / actor.maxhp hp_color_1 = Color.new(255, 0, 0, 192) hp_color_2 = Color.new(255, 255, 0, 192) self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) x -= 1 y += (height/4).floor self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) end
def draw_actor_sp_meter_line(actor, x, y, width = 156, height = 4) w = width * actor.sp / actor.maxsp hp_color_1 = Color.new( 0, 0, 255, 192) hp_color_2 = Color.new( 0, 255, 255, 192) self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) x -= 1 y += (height/4).floor self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) end
alias xrxs_bp7_draw_actor_name draw_actor_name def draw_actor_name(actor, x, y) xrxs_bp7_draw_actor_name(actor, x, y) if @draw_ban != true end
alias xrxs_bp7_draw_actor_state draw_actor_state def draw_actor_state(actor, x, y, width = 120) xrxs_bp7_draw_actor_state(actor, x, y, width) if @draw_ban != true end
alias xrxs_bp7_draw_actor_hp draw_actor_hp def draw_actor_hp(actor, x, y, width = 144) xrxs_bp7_draw_actor_hp(actor, x, y, width) if @draw_ban != true end
alias xrxs_bp7_draw_actor_sp draw_actor_sp def draw_actor_sp(actor, x, y, width = 144) xrxs_bp7_draw_actor_sp(actor, x, y, width) if @draw_ban != true end end
class Window_Base
def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color) distance = (start_x - end_x).abs + (start_y - end_y).abs if end_color == start_color for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i self.contents.fill_rect(x, y, width, width, start_color) end else for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i r = start_color.red * (distance-i)/distance + end_color.red * i/distance g = start_color.green * (distance-i)/distance + end_color.green * i/distance b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a)) end end end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Bitmap
ShadowIndent = 2 # Size of the shadow (usually 1..3) ShadowColour = Color.new(0, 0, 0, 255)# the colour of the shadow # the 4th value is transparency (0-255)
unless @ja_ta_feito == 1 # Fix for F12 Reboot by P@nCHo alias draw_text_plain draw_text @ja_ta_feito = 1 end
def draw_text(arg1 = 0, arg2 = 0, arg3 = 0, arg4 = 0, arg5 = 0, arg6 = 0) if arg1.is_a?(Rect) x = arg1.x y = arg1.y width = arg1.width height = arg1.height string = arg2 align = arg3 else x = arg1 y = arg2 width = arg3 height = arg4 string = arg5 align = arg6 end colour = self.font.color.dup self.font.color = ShadowColour draw_text_plain(x + ShadowIndent, y + ShadowIndent, width, height, string, align) draw_text_plain(x + 1, y + 1, width, height, string, align) draw_text_plain(x + 1, y - 1, width, height, string, align) draw_text_plain(x - 1, y - 1, width, height, string, align) draw_text_plain(x - 1, y + 1, width, height, string, align) self.font.color = colour draw_text_plain(x, y, width, height, string, align) end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
module PARA_LEFT_CURSOR FILE_NAME = "cursor" TYPE = 0
end
class Window_Base alias cursor_rect_para_lcr cursor_rect def cursor_rect=(rect) if PARA_LEFT_CURSOR::TYPE == 1 super(rect) end empty = Rect.new(0,0,0,0) if rect != empty and self.visible != false and @index != -1 if @cursor == nil or @cursor.disposed? @cursor = Sprite.new @cursor.bitmap = RPG::Cache.windowskin(PARA_LEFT_CURSOR::FILE_NAME) end @cursor.x = self.x + rect.x cy = (rect.height-32) / 2 @cursor.y = self.y + cy + rect.y + 16 @cursor.z = self.z + 2 elsif @cursor != nil @cursor.dispose end end alias dispose_para_cur dispose def dispose super if @cursor != nil @cursor.dispose end end def visible=(bool) super if @cursor != nil and bool == false @cursor.dispose end end def x=(x) super if @index != nil update_cursor_rect end end def y=(y) super if @index != nil update_cursor_rect end end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
module PARA_BATTLE_COUNT
TYPE = 1 NAME_ENCOUNT = "Encounters" NAME_DEFEAT = "Defeats" NAME_ESCAPE = "Escapes" end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Game_Party attr_reader :battle_count attr_reader :defeat_count attr_reader :escape_count alias initialize_para_battle_count initialize def initialize initialize_para_battle_count @battle_count = 0 @defeat_count = 0 @escape_count = 0 end def increase_battle_count @battle_count = [@battle_count + 1, 9999999].min end def increase_defeat_count(count) @defeat_count = [@defeat_count + count, 9999999].min end def increase_escape_count @escape_count = [@escape_count + 1, 9999999].min end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Scene_Battle
alias start_phase1_para_battle_count start_phase1 def start_phase1 @enemies_count = $game_troop.enemies.size start_phase1_para_battle_count end alias battle_end_para_battle_count battle_end def battle_end(result) case result when 0 $game_party.increase_battle_count $game_party.increase_defeat_count(@enemies_count) when 1 $game_party.increase_battle_count $game_party.increase_escape_count exist_enemy = 0 for enemy in $game_troop.enemies if enemy.exist? exist_enemy += 1 end end @enemies_count = @enemies_count - exist_enemy $game_party.increase_defeat_count(@enemies_count) end battle_end_para_battle_count(result) end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Window_Other < Window_Base
def initialize super(0, 0, 170, 386) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize refresh end
def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(1, -7, 120, 32, "Time") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(4, 10, 120, 32, text, 2)
self.contents.font.color = system_color self.contents.draw_text(1, 30, 120, 32, "Steps") self.contents.font.color = normal_color self.contents.draw_text(2, 32, 120, 32, $game_party.steps.to_s, 2)
cx = contents.text_size($data_system.words.gold).width self.contents.font.color = normal_color self.contents.draw_text(4, 216, 122.5-cx-6, 32, $game_party.gold.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(124-cx, 220, cx, 25, $data_system.words.gold, 2)
self.contents.font.color = system_color self.contents.draw_text(2, 64, 120, 32, PARA_BATTLE_COUNT::NAME_ENCOUNT) self.contents.font.color = normal_color self.contents.draw_text(3, 66, 120, 32, $game_party.battle_count.to_s, 2)
self.contents.font.color = system_color self.contents.draw_text(2, 95, 120, 32, "Location") self.contents.font.color = normal_color self.contents.draw_text(- 2, 115, 124, 32, $data_map_infos[$game_map.map_id].name, 2)
end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Window_MenuStatus < Window_Selectable def initialize super(0, 0, 470, 386) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize refresh self.active = false self.index = -1 end def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 93 actor = $game_party.actors[i] draw_actor_graphic(actor, x - 32, y + 65) draw_actor_name(actor, x + 5, y - 8) draw_actor_class(actor, x + 5, y + 18) draw_actor_level(actor, x, y + 45) draw_actor_state(actor, x + 95, y + 45) draw_actor_hp_meter_line(actor, x + 223, y + 9, 116, 8) draw_actor_sp_meter_line(actor, x + 223, y + 37, 116, 8) draw_actor_hp(actor, x + 195, y + - 8) draw_actor_sp(actor, x + 195, y + 20) self.contents.font.color = system_color self.contents.draw_text(x + 175, y + 45, 84, 32, "Next") self.contents.font.color = normal_color self.contents.draw_text(x + 310, y + 45, 84, 32, actor.next_exp_s) end end def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(5, @index * 90, 32, 32) end end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Window_MenuCommand < Window_Selectable #-------------------------------------------------------------------------- def initialize(commands) col_max = 4 super(0, 0, 640, (commands.size / col_max + 2) * 21.5 + 32) @column_max = col_max @item_max = commands.size @commands = commands self.contents = Bitmap.new(width - 32, height - 32) refresh self.index = 0 end #-------------------------------------------------------------------------- def refresh(commands = nil) @commands = commands if commands != nil self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize self.contents.clear for i in 0...@item_max draw_item(i, normal_color) end end #-------------------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color rect = Rect.new((index % @column_max) * ((width - 32) / @column_max), index / @column_max * 32, (width - 32) / @column_max, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect, @commands[index], 1) end #-------------------------------------------------------------------------- def disable_item(index) draw_item(index, disabled_color) end #-------------------------------------------------------------------------- def update_cursor_rect if @index < 0 self.cursor_rect.empty return end row = @index / @column_max if row < self.top_row self.top_row = row end if row > self.top_row + (self.page_row_max - 1) self.top_row = row - (self.page_row_max - 1) end cursor_width = (self.width - 55) / @column_max x = @index % @column_max * (cursor_width + 3) y = @index / @column_max * 32 - self.oy self.cursor_rect.set(x, y, 32, 32) end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Window_Base < Window
def draw_actor_level(actor, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 40, 32, " Lv.") self.contents.font.color = normal_color self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2) end
def draw_actor_name(actor, x, y) self.contents.font.color = normal_color self.contents.draw_text(x, y, 120, 32, actor.name) end
def draw_actor_class(actor, x, y) self.contents.font.color = normal_color self.contents.draw_text(x, y, 236, 32, actor.class_name) end
def draw_actor_state(actor, x, y, width = 120) text = make_battler_state_text(actor, width, true) self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color self.contents.draw_text(x, y, width, 32, text) end
def draw_actor_exp(actor, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 24, 32, "Exp") self.contents.font.color = normal_color self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2) self.contents.draw_text(x + 108, y, 12, 32, "/", 1) self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s) end
def draw_actor_hp(actor, x, y, width = 144) self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, $data_system.words.hp) if width - 32 >= 108 hp_x = x + width - 108 flag = true elsif width - 32 >= 48 hp_x = x + width - 48 flag = false end self.contents.font.color = actor.hp == 0 ? knockout_color : actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2) if flag self.contents.font.color = normal_color self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1) self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s) end end
def draw_actor_sp(actor, x, y, width = 144) self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, $data_system.words.sp) if width - 32 >= 108 sp_x = x + width - 108 flag = true elsif width - 32 >= 48 sp_x = x + width - 48 flag = false end self.contents.font.color = actor.sp == 0 ? knockout_color : actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2) if flag self.contents.font.color = normal_color self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1) self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s) end end
def draw_actor_parameter(actor, x, y, 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 self.contents.font.color = system_color self.contents.draw_text(x, y, 120, 32, parameter_name) self.contents.font.color = normal_color self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2) end
def draw_item_name(item, x, y) if item == nil return end bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color self.contents.draw_text(x + 28, y, 212, 32, item.name) end end
class Scene_Menu MA_MENU_TRANSITION = "015-Diamond01" end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Scene_Menu def initialize(menu_index = 0) @menu_index = menu_index @changer = 0 @where = 0 @checker = 0 end def main @commands = [] @commands[0] = $data_system.words.item @commands[1] = $data_system.words.skill @commands[2] = $data_system.words.equip @commands[3] = "Status" @commands[4] = "Party" @commands[5] = "Save" @commands[6] = "End" @command_window = Window_MenuCommand.new(@commands) @command_window.back_opacity = 160 @command_window.index = @menu_index if $game_party.actors.size == 0 @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) end if $game_system.save_disabled @command_window.disable_item(4) end @other_window = Window_Other.new @other_window.back_opacity = 160 @other_window.x = 470 @other_window.y = 96 @status_window = Window_MenuStatus.new @status_window.back_opacity = 160 @status_window.x = 0 @status_window.y = 96
@mapset = Spriteset_Map.new
win1=Window_Base.new(0, 96, 470, 100) win2=Window_Base.new(0, 196, 470, 93) win3=Window_Base.new(0, 289, 470, 93) win4=Window_Base.new(0, 382, 470, 98) win1.back_opacity= 0 win2.back_opacity= 0 win3.back_opacity= 0 win4.back_opacity= 0 win1.z=9999 win2.z=9999 win3.z=9999 win4.z=9999 Graphics.transition(30, "Graphics/Transitions/" + MA_MENU_TRANSITION) loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze win1.dispose win2.dispose win3.dispose win4.dispose @command_window.dispose @other_window.dispose @status_window.dispose
end def update @command_window.update @other_window.update @status_window.update
if @command_window.active update_command return end if @status_window.active update_status return end if @difficulty_window != nil && @difficulty_window.active update_difficulty return end end def update_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) if $game_party.actors.size == 0 and @command_window.index < 4 $game_system.se_play($data_system.buzzer_se) return end case @command_window.index when 0 # Item $game_system.se_play($data_system.decision_se) $scene = Scene_Item.new when 1 # Skill $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 2 # Equip $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 3 # Status $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 4 # Party Changer $game_system.se_play($data_system.decision_se) @checker = 0 @command_window.active = false @status_window.active = true @status_window.index = 0 when 5 # Save if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Save.new when 6 # End $game_system.se_play($data_system.decision_se) $scene = Scene_End.new end return end end # -------------------------------- def update_status if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @status_window.active = false @status_window.index = -1 return end if Input.trigger?(Input::C) case @command_window.index when 1 if $game_party.actors[@status_window.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Skill.new(@status_window.index) when 2 $game_system.se_play($data_system.decision_se) $scene = Scene_Equip.new(@status_window.index) when 3 $game_system.se_play($data_system.decision_se) $scene = Scene_Status.new(@status_window.index) when 4 $game_system.se_play($data_system.decision_se) if @checker == 0 @changer = $game_party.actors[@status_window.index] @where = @status_window.index @checker = 1 else $game_party.actors[@where] = $game_party.actors[@status_window.index] $game_party.actors[@status_window.index] = @changer @checker = 0 @status_window.refresh end end return end end end Créditos e Agradecimentos1. Criado por Vash-X 2. Postagem por Douglanilo |
|