Lordmartins
UNranked
Mensagens : 20 Créditos : 11 Data de inscrição : 04/02/2010
| Assunto: APS_Alternative_Skill_Scene Qui Fev 04, 2010 8:59 pm | |
| Nome: APS_Alternative_Skill_Scene Autor: Anderon Porto Versão: 1.0 X-RGSS: X-SC Descrição/Utilidade: Este script altera a tela de skills, com ele é possível ver os atributos da magia, o poder e quanto gasta de mana, fora o fato de vc poder usar ícones de até 192x192 nas suas magias! Screen: https://2img.net/r/ihimizer/img508/8013/apsassmd2tz2.jpgscript: ################################################################### #################APS_Alternative_Skill_Scene####################### #########################by Anderson############################### ################################################################### ## Data de Criação - 24/06/07 (Versão 0.9) ## ## Versão 1.0 - 27/06/07 ## ################################################################### ## Este script foi inspirado no Alternative Item Scene, edite o ## ##dos atributos nas primeiras linhas do script, para adicionar ## ##mais atributos ou editar as cores dos que já existem procure no## ##script e edite as linhas(390-405) se não entender de script eu ## ##edito para vc. ## ##Você pode usar ícones grandes para as skills ## ################################################################### ## Dúvidas? E-MAIL-ME: ANDERPORTOSILVA@HOTMAIL.COM ## ################################################################### #Nomes dos Atributos EL1 = 'Fogo' EL2 = 'Gelo' EL3 = 'Trovão' EL4 = 'Água' EL5 = 'Terra' EL6 = 'Ar' EL7 = 'Luz' EL8 = 'Trevas'
class Scene_Skill #-------------------------------------------------------------------------- # - Inicialização dos Objetos # # actor_index : Índice de Heróis #-------------------------------------------------------------------------- def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index end #-------------------------------------------------------------------------- # - Processamento Principal #-------------------------------------------------------------------------- def main # Selecionar Herói @actor = $game_party.actors[@actor_index] # Criar janela de Ajuda, Status e Habilidades @help_window = Window_Help.new @status_window = Window_SkillStatus.new(@actor) @skill_window = Window_Skill2.new(@actor) # Associar a janela de Ajuda @skill_window.help_window = @help_window @details_window = Window_Details2.new # Criar janela alvo (definir como invisível / inativa) @target_window = Window_Target.new @target_window.visible = false @target_window.active = false # Executar transição Graphics.transition # Loop Principal loop do # Atualizar tela de Jogo Graphics.update # Atualizar a entrada de informações Input.update # Atualizar frame update # Abortoar loop se a tela for alterada if $scene != self break end end # Preparar para transição Graphics.freeze # Exibição das janelas @help_window.dispose @status_window.dispose @skill_window.dispose @target_window.dispose @details_window.dispose end #-------------------------------------------------------------------------- # - Atualização do Frame #-------------------------------------------------------------------------- def update # Atualizar janelas @help_window.update @status_window.update @skill_window.update @target_window.update # Se a janela de Habilidades estiver ativa: chamar update_skill if @skill_window.active update_skill return end # Se a janela alvo estiver ativa: chamar update_target if @target_window.active update_target return end @details_window.update end #-------------------------------------------------------------------------- # - Atualização do Frame (Qunado a janela de Habilidades estiver ativa) #-------------------------------------------------------------------------- def update_skill @skill = @skill_window.skill @details_window.set_details(@skill) # Se o botão B for pressionado if Input.trigger?(Input::B) # Reproduzir SE de cancelamento $game_system.se_play($data_system.cancel_se) # Alternar para a tela de Menu $scene = Scene_Menu.new(1) return end # Se o botão C for pressionado if Input.trigger?(Input::C) # Selecionar dados escolhidos na janela de Habilidades @skill = @skill_window.skill # Aqui é verificado se é possível utilizar a Habilidade if @skill == nil or not @actor.skill_can_use?(@skill.id) # Reproduzir SE de erro $game_system.se_play($data_system.buzzer_se) return end # Reproduzir SE de OK $game_system.se_play($data_system.decision_se) # Se o efeito da Habilidade for um aliado if @skill.scope >= 3 # Ativar janela alvo @skill_window.active = false @target_window.x = (@skill_window.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true # Definir se o alcance é um aliado ou todo o grupo if @skill.scope == 4 || @skill.scope == 6 @target_window.index = -1 elsif @skill.scope == 7 @target_window.index = @actor_index - 10 else @target_window.index = 0 end # Se o efeito for outro senão para um aliado else # Se o ID do evento comum for válido if @skill.common_event_id > 0 # Chamar evento comum da reserva $game_temp.common_event_id = @skill.common_event_id # Reproduzir SE da Habilidade $game_system.se_play(@skill.menu_se) # Descontar MP @actor.sp -= @skill.sp_cost # Recriar cada conteúdo das janelas @status_window.refresh @skill_window.refresh @target_window.refresh # Alternar para a tela do Mapa $scene = Scene_Map.new return end end return end # Se o botão R for pressionado if Input.trigger?(Input::R) # Reproduzir SE de cursor $game_system.se_play($data_system.cursor_se) # O comando leva ao próximo Herói @actor_index += 1 @actor_index %= $game_party.actors.size # Alternar para uma tela de Habilidades diferente $scene = Scene_Skill.new(@actor_index) return end # Se o botão L for pressionado if Input.trigger?(Input::L) # Reproduzir SE de cursor $game_system.se_play($data_system.cursor_se) # O comando leva ao Herói anterior @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size # Alternar para uma tela de Habilidades diferente $scene = Scene_Skill.new(@actor_index) return end end #-------------------------------------------------------------------------- # - Atualização do Frame (Quando a janela alvo estiver ativa) #-------------------------------------------------------------------------- def update_target # Se o botão B for pressionado if Input.trigger?(Input::B) # Reproduzir SE de cancelamento $game_system.se_play($data_system.cancel_se) # Apagar janela alvo @skill_window.active = true @target_window.visible = false @target_window.active = false return end # Se o botão C for pressionado if Input.trigger?(Input::C) # Aqui é verificada a quantidade de MP a ser usada, # caso não seja suficiente unless @actor.skill_can_use?(@skill.id) # Reproduzir SE de erro $game_system.se_play($data_system.buzzer_se) return end # Se o alvo for todos os aliados if @target_window.index == -1 # Aplicar os efeitos da Habilidade em todo o Grupo de Heróis used = false for i in $game_party.actors used |= i.skill_effect(@actor, @skill) end end # Se o alvo for o usuário if @target_window.index <= -2 # Aplicar os efeitos da Habilidade em si mesmo target = $game_party.actors[@target_window.index + 10] used = target.skill_effect(@actor, @skill) end # Se o alvo for um aliado if @target_window.index >= 0 # Aplicar os efeitos da Habilidade no Herói alvo target = $game_party.actors[@target_window.index] used = target.skill_effect(@actor, @skill) end # Se a Habilidade for utilizada if used # Reproduzir SE da Habilidade $game_system.se_play(@skill.menu_se) # Descontar o MP @actor.sp -= @skill.sp_cost # Recriar o conteúdo de cada janela @status_window.refresh @skill_window.refresh @target_window.refresh # Se todo o Grupo de Heróis estiver morto if $game_party.all_dead? # Alternar para a tela de Game Over $scene = Scene_Gameover.new return end # Se o ID do evento comum for válido if @skill.common_event_id > 0 # Chamar evento comum da reserva $game_temp.common_event_id = @skill.common_event_id # Alternar para a tela do Mapa $scene = Scene_Map.new return end end # Se a Habilidade não foi usada unless used # Reproduzir SE de erro $game_system.se_play($data_system.buzzer_se) end return end end end
#============================================================================== # Window_Skill #------------------------------------------------------------------------------ # É a janela que mostra as Habilidades #==============================================================================
class Window_Skill2 < Window_Selectable #-------------------------------------------------------------------------- # - Inicialização dos Objetos # # ator : Herói #-------------------------------------------------------------------------- def initialize(actor) super(0, 128, 416, 352) @actor = actor @column_max = 1 refresh self.index = 0 # Se for em batalha, mover a janela e colocá-la em translucidez if $game_temp.in_battle self.y = 64 self.height = 256 self.back_opacity = 160 end end #-------------------------------------------------------------------------- # - Uso de Habilidades #-------------------------------------------------------------------------- def skill return @data[self.index] end #-------------------------------------------------------------------------- # - Atualização #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 0...@actor.skills.size skill = $data_skills[@actor.skills[i]] if skill != nil @data.push(skill) end end # Número de Itens. Se não for 0 desenhá-los. @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...@item_max draw_item(i) end end end #-------------------------------------------------------------------------- # - Desenhando Itens # # index : Número de Itens #-------------------------------------------------------------------------- def draw_item(index) skill = @data[index] if @actor.skill_can_use?(skill.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 y = index * 32 self.contents.draw_text(x,y,376,32, skill.name, 0) end #-------------------------------------------------------------------------- # - Atualização do texto de Ajuda #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.skill == nil ? "" : self.skill.description) end end
class Window_Details2 < Window_Base def initialize super(416, 128, 224, 352) self.contents = Bitmap.new(width - 32, height - 32) end def set_details(skill) if icon != @icon self.contents.clear self.contents.font.color = normal_color bitmap = RPG::Cache.icon(icon) self.contents.blt(96 - bitmap.width/2 ,96 - bitmap.height/2, bitmap, Rect.new(0,0,192,192)) @icon = icon end self.visible = true end def set_details(skill) if skill != nil self.contents.clear #ICONE bitmap = RPG::Cache.icon(skill.icon_name) self.contents.blt(96 - bitmap.width/2 ,96 - bitmap.height/2, bitmap, Rect.new(0,0,192,192)) self.contents.font.color = normal_color self.contents.draw_text(0,192,192,32,'Dano :',0) self.contents.font.color = normal_color self.contents.draw_text(0,192,192,32,skill_damage(skill),2) self.contents.font.color = normal_color self.contents.draw_text(0,208,192,32,'Mana :',0) self.contents.font.color = normal_color self.contents.draw_text(0,208,192,32,'-'+skill.sp_cost.to_s,2) self.contents.draw_text(0,240,192,32,'Atributos :',0) y = 256 self.contents.font.color = Color.new(255,0,0) self.contents.draw_text(0,y,192,32,EL1,0) if skill.element_set.include?(1) self.contents.font.color = Color.new(0,255,255) self.contents.draw_text(0,y,192,32,EL2,1) if skill.element_set.include?(2) self.contents.font.color = Color.new(255,255,0) self.contents.draw_text(0,y,192,32,EL3,2) if skill.element_set.include?(3) self.contents.font.color = Color.new(0,0,255) self.contents.draw_text(0,y+16,192,32,EL4,0) if skill.element_set.include?(4) self.contents.font.color = Color.new(128,0,0) self.contents.draw_text(0,y+16,192,32,EL5,1) if skill.element_set.include?(5) self.contents.font.color = Color.new(0,255,0) self.contents.draw_text(0,y+16,192,32,EL6,2) if skill.element_set.include?(6) self.contents.font.color = Color.new(255,255,255) self.contents.draw_text(0,y+32,192,32,EL7,0) if skill.element_set.include?(7) self.contents.font.color = Color.new(100,100,100) self.contents.draw_text(0,y+32,192,32,EL8,1) if skill.element_set.include?( end end def skill_damage(skill) m = 0 if $data_weapons[$game_actors[1].weapon_id] != nil if $data_weapons[$game_actors[1].weapon_id].int_plus != nil m = skill.power*($data_weapons[$game_actors[1].weapon_id].int_plus/100) end end n = (skill.power) o = (n*/10 a = '' a = '('+'+'+"#{m}"+')' if m != 0 return o.to_s+'~'+n.to_s+a if n != 0 return '-' end end |
|