ZoneToony - Playstation 4, Xbox 720, Windows 8, Smartphones, Android, Divulgue seu Servidor, Gam
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

1Lune Elemental Level Empty Lune Elemental Level Sáb Abr 06, 2013 1:54 pm

T-LordT-Lord
Admin
Lune Elemental Level
Compativel com: RMVXAce
Compatibilidade :média
Facilidade de uso: médio
Lag gerado: baixo

Condições de Uso
Pode ser modificado, e divulgado em outros lugares, mas peço que não retire os créditos.


Para que serve o script
O
script permite que no jogo tenha leveis para diferentes elementos,
permitindo que suba niveis do mesmo e que adicionem dano extra de acordo
com o level do elemento.


Detalhes do script


  • Compatível com a maioria dos scripts que se baseiam no sistema de
    batalha padrão, ou seja, quase todos com exceção de Sistemas de batalha
    ativo.
  • Os elementos ficam organizados no menu de acordo com o número do mesmo.
  • fórmula de experiência, dano, cores das barras no menu, elementos que dão dano tudo configurável dentro do script.
  • Não necessita imagens.
  • Para ativar a janela de elementos, Chamar Script: SceneManager.call(Scene_Raizen_Elements)
  • Instruções no script.

Script.
Código:
#=======================================================
#        Lune Element Level
# Autor: Raizen
# Compativel com: RMVXAce
# O script permite que seja possivel subir niveis de elementos
# de acordo com o quanto cada elemento é utilizado.
# Os niveis aumentarão o dano causado por aquele elemento.

#IMPORTANTE: Não é muito simples a configuração, preste bastante
# atenção para deixar do jeito mais desejavel possivel.

# Lembrando que é possivel mudar uma afinidade elemental no próprio
# database, na classe de cada personagem.

# Para criar novos elementos, vá até a aba "Termos" dentro do database.

# É compativel com a maioria dos scripts que se baseiam no sistema padrão,
# que em geral é um número elevado.

# Para chamar a janela de elementos.
# Chamar Script: SceneManager.call(Scene_Raizen_Elements)


module Raizen_Elements
# Escolha os elementos do database que recebem dano
# extra e sobem de acordo com a exp.

Extra_Damage = [3,4,5,6,7,8,9,10]
# Indique as cores de cada elemento como aparecerá na janela de Elementos.
# Seguindo a mesma ordem dos Ids acima.
# lembrando da ordem (r, g, b) r = red(vermelho), g = green(verde)
# b = blue(azul)
# Para conseguir a cor desejada, olhe essa tabela por exemplo.
# http://shibolete.tripod.com/RGB.html

Damage_Elements = [
Color.new(255, 55, 55),
Color.new(30, 255, 255),
Color.new(255, 255, 30),
Color.new(50, 50, 255),
Color.new(92, 51, 23),
Color.new(20, 230, 100),
Color.new(240, 240, 240),
Color.new(255, 255, 255),]

# Mesma coisa que acima, mas dessa vez indique a nomenclatura para
# cada elemento. Sempre entre aspas
Name_Elements = [
"Fogo",
"Gelo",
"Trovão",
"Água",
"Terra",
"Vento",
"Sagrado",
"Sombrio",]




# Funciona apenas com magia? Caso seja uma arma ignora
# o efeito de bonus de dano, além da experiência.
# true = aceita as armas, false = ignora armas.
Accept_Weapons = false

# formula da experiência.
# lembrando que o level é adquirido conforme a quantidade
# de dano causado.

def self.formula(level)
  level * level * 200 + 100 # modifique essa linha com os calculos da experiência.
end

# formula de dano extra a partir do level.

def self.damage(level)
  l = level.to_f
  l / 10 + 1  # modifique essa linha para obter o dano extra.
end

# Quantidade de elementos no database.

Size = 10

# Nomenclatura do level no Menu.

Lv = "Lv."

# Nome que aparecerá no menu.
Elements = "Elements"

# Nome que indicará os leveis no menu.
LevelTotal = "Level Total"

end

#==========================================================================
# ======================Aqui começa o Script===============================
#==========================================================================


#==============================================================================
# ** Scene_Status
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de atributos.
#==============================================================================

class Scene_Raizen_Elements < Scene_MenuBase

  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    super
    @status_window = Window_Raizen_Elements.new(@actor)
    @status_window.set_handler(:cancel,  method(:return_scene))
    @status_window.set_handler(:pagedown, method(:next_actor))
    @status_window.set_handler(:pageup,  method(:prev_actor))
   
  end
  #--------------------------------------------------------------------------
  # * Processo da mudança de herói
  #--------------------------------------------------------------------------
  def on_actor_change
    @status_window.actor = @actor
    @status_window.activate
  end
end


#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
#  Esta janela exibe as especificações completas na janela de atributos.
#==============================================================================

class Window_Raizen_Elements  < Window_Selectable
include Raizen_Elements
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #    actor : herói
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, Graphics.width, Graphics.height)
    @actor = actor
    refresh
    activate
  end
  #--------------------------------------------------------------------------
  # * Definição de herói
  #    actor : herói
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Renovação
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_block1  (line_height * 0)
    draw_block2  (line_height * 2)
    draw_block3  (line_height * 7)
    draw_vert_line (250)
    for n in 0...Extra_Damage.size
    draw_bars(n)
    end
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 1
  #    y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_bars(n)
  y = n * 360 / Extra_Damage.size + 40
  contents.fill_rect(300, y, 200, 12, bar_color)
  contents.fill_rect(302, y + 2, 196, 8, line_color)
  x = 196
  e = Extra_Damage[n]
  x *= $affinity_exp[@actor.class_id][e] / Raizen_Elements.formula($affinity_levels[@actor.class_id][e])
  contents.fill_rect(302, y + 2, x, 8, Damage_Elements[n])
  draw_text(310, y - 14, 100, 25, Name_Elements[n], 0)
  draw_text(430, y - 14, 100, 25, Lv, 0)
  draw_text(410, y - 14, 80, 25, $affinity_levels[@actor.class_id][e], 2)
  end
  def draw_block1(y)
    draw_actor_name(@actor, 4, y)
    draw_actor_class(@actor, 128, y)
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 1
  #    y : coordenada Y
  #--------------------------------------------------------------------------
  def bar_color
    color = Color.new(0,0,0, 150)
    color
  end
  def draw_block2(y)
    draw_actor_face(@actor, 8, y)
    draw_exp_info(0, 330)
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 3
  #    y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_block3(y)
    draw_parameters(32, y)
  end
  #--------------------------------------------------------------------------
  # * Desenho de uma linha horzontal
  #--------------------------------------------------------------------------
  def draw_vert_line(x)
    line_x = x
    contents.fill_rect(line_x, 0, 2, contents_height, line_color)
  end
  #--------------------------------------------------------------------------
  # * Aquisção da cor da linha horizontal
  #--------------------------------------------------------------------------
  def line_color
    color = normal_color
    color.alpha = 48
    color
  end
  #--------------------------------------------------------------------------
  # * Desenho das informações básicas
  #    x : coordenada X
  #    y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_basic_info(x, y)
    draw_actor_icons(@actor, x, y + line_height * 1)
    draw_actor_hp(@actor, x, y + line_height * 2)
    draw_actor_mp(@actor, x, y + line_height * 3)
  end
  #--------------------------------------------------------------------------
  # * Desenho dos parâmetros
  #    x : coordenada X
  #    y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_parameters(x, y)
    6.times {|i| draw_actor_param(@actor, x, y + line_height * i, i + 2) }
  end
  #--------------------------------------------------------------------------
  # * Desenho das informações de experiência
  #    x : coordenada X
  #    y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_exp_info(x, y)
    s1 = 0
    for n in 1...Raizen_Elements::Size
    s1 += $affinity_levels[@actor.class_id][n]
    end
    change_color(system_color)
    draw_text(x, y + line_height * 0, 180, line_height, LevelTotal)
    change_color(normal_color)
    draw_text(x, y + line_height * 1, 180, line_height, s1, 2)
  end

  #--------------------------------------------------------------------------
  # * Desenho da descrição
  #    x : coordenada X
  #    y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_description(x, y)
    draw_text_ex(x, y, @actor.description)
  end
end

class Game_Actor < Game_Battler
alias raizen_element_initialize initialize
  def initialize(actor_id)
    raizen_element_initialize(actor_id)
    if $affinity_start == nil
      $affinity_levels = []
      $affinity_exp = []
      for i in 1...$data_classes.size
        $affinity_levels[i] = Array.new(Raizen_Elements::Size + 1, 0)
        $affinity_exp[i] = Array.new(Raizen_Elements::Size + 1, 0)
      end
    $affinity_start = true
    end
  end
end
module DataManager
  def self.make_save_contents
    contents = {}
    contents[:system]        = $game_system
    contents[:timer]        = $game_timer
    contents[:message]      = $game_message
    contents[:switches]      = $game_switches
    contents[:variables]    = $game_variables
    contents[:self_switches] = $game_self_switches
    contents[:actors]        = $game_actors
    contents[:party]        = $game_party
    contents[:troop]        = $game_troop
    contents[:map]          = $game_map
    contents[:player]        = $game_player
    contents[:affin]        = $affinity_levels
    contents[:affinl]        = $affinity_exp
    contents
  end

  #--------------------------------------------------------------------------
  # * Extrair conteúdo salvo
  #--------------------------------------------------------------------------
  def self.extract_save_contents(contents)
    $game_system        = contents[:system]
    $game_timer        = contents[:timer]
    $game_message      = contents[:message]
    $game_switches      = contents[:switches]
    $game_variables    = contents[:variables]
    $game_self_switches = contents[:self_switches]
    $game_actors        = contents[:actors]
    $game_party        = contents[:party]
    $game_troop        = contents[:troop]
    $game_map          = contents[:map]
    $game_player        = contents[:player]
    $affinity_levels    = contents[:affin]
    $affinity_exp      = contents[:affinl]
  end
end

class Game_Battler < Game_BattlerBase
  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables)
    value *= item_element_rate(user, item)
    value *= pdr if item.physical?
    value *= mdr if item.magical?
    value *= rec if item.damage.recover?
    value = apply_critical(value) if @result.critical
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
    if @class_id == nil
    value *= item_element_afinity(user.class_id, user.atk_elements.pop)
    value.to_i
    call_exp_element(user.class_id, user.atk_elements.pop, value, item)
    end
    @result.make_damage(value.to_i, item)
  end
  def call_exp_element(id, elem, value, item)
    return if item.damage.element_id < 0 and !Raizen_Elements::Accept_Weapons
    return unless Raizen_Elements::Extra_Damage.include?(elem)
    $affinity_exp[id][elem] += value
    if $affinity_exp[id][elem] >= Raizen_Elements.formula($affinity_levels[id][elem])
    $affinity_exp[id][elem] = 0
    $affinity_levels[id][elem] += 1
    end
  end
  def item_element_afinity(class_id, item)
  item_damage = item
  return 1 unless item_damage >= 0 or Raizen_Elements::Accept_Weapons
  value = Raizen_Elements.damage($affinity_levels[class_id][item_damage])
  return value
  end
end 

Caso use o menu padrão e pretende adicionar essa opção nele.

Código:
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de menu.
#==============================================================================

class Scene_Menu < Scene_MenuBase
  def create_command_window
    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill,    method(:command_personal))
    @command_window.set_handler(:equip,    method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:elements,  method(:command_personal))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
  end
  def on_personal_ok
    case @command_window.current_symbol
    when :skill
      SceneManager.call(Scene_Skill)
    when :equip
      SceneManager.call(Scene_Equip)
    when :status
      SceneManager.call(Scene_Status)
    when :elements
      SceneManager.call(Scene_Raizen_Elements)
    end
  end
end

#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
#  Esta janela exibe os comandos do menu.
#==============================================================================

class Window_MenuCommand < Window_Command
alias raizen_add_main_commands add_main_commands
  def add_main_commands
    raizen_add_main_commands
    add_command(Raizen_Elements::Elements, :elements, main_commands_enabled)
  end
end


Imagens

Spoiler:


Download
Não necessário


Créditos e Avisos
Raizen pelo script

http://www.zonetoony.net

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos