Royal RPG Maker

Fórum para os RPGs Makers de plantão.
 
InícioCalendárioGaleriaFAQBuscarMembrosGruposRegistrar-seConectar-se

Compartilhe | 
 

 APS_Alternative_Skill_Scene

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
Lordmartins

UNranked
UNranked


Mensagens : 20
Créditos : 11
Data de inscrição : 04/02/2010

MensagemAssunto: 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:

http://img508.imageshack.us/img508/8013/apsassmd2tz2.jpg

script:

###################################################################
#################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 Smile ##
###################################################################
## 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?(Cool
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*Cool/10
a = ''
a = '('+'+'+"#{m}"+')' if m != 0
return o.to_s+'~'+n.to_s+a if n != 0
return '-'
end
end
Voltar ao Topo Ir em baixo
Ver perfil do usuário
 

APS_Alternative_Skill_Scene

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Royal RPG Maker :: RPG Maker XP :: Scripts para XP (RGSS)-