Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Tileset Converter to MV
Sex 12 Maio 2017, 13:07 por Douggi

» [Dúvida] Como tirar a porcentagem de esquiva
Ter 09 Maio 2017, 22:15 por Neil Flame Runner

» Pack Resources, Sprites e etc
Qua 23 Dez 2015, 09:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Ter 22 Dez 2015, 08:14 por ::KimMax::

» Fantasy Art Online
Dom 18 Out 2015, 16:42 por daviih123

» Você vai ter medo do Nerve gear?
Sab 25 Jul 2015, 16:02 por Kirito-kun

» O Barato é louco
Sab 27 Jun 2015, 15:26 por Halt

» Download RPG Maker 2000 + RTP em português
Qui 21 Maio 2015, 19:28 por Wismael

» Divulgando meu grupo e página do Facebook
Ter 19 Maio 2015, 13:06 por Halt

» Craftage Engine (Eclipse Origins totalmente modificado e sem bugs)
Seg 27 Abr 2015, 18:24 por pigot98


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

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

1 Lune Elemental Level em Qua 14 Nov 2012, 21:59

Carlos

avatar
Administrador
Administrador
Introdução:

O script permite que no jogo tenha leveis para diferentes elementos, permitindo que suba níveis 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.

Screenshots:



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

Créditos:

Raizen pelo script.


__________________________________________





Ver perfil do usuário http://arenarpgmaker.eclipserpg.com

2 Re: Lune Elemental Level em Qua 14 Nov 2012, 22:26

SameKage

avatar
Membro - Postador
Membro - Postador
Eu estava louco atrás desse script * -*

Sumiu aqui dos favoritos de tanta coisa que tem xD


__________________________________________
Ei, tem um tempinho livre? Visite o Distrito Maker !!
Ver perfil do usuário http://distritomaker.forumeiros.com

3 Re: Lune Elemental Level em Qua 14 Nov 2012, 23:19

Carlos

avatar
Administrador
Administrador
SameKage escreveu:Eu estava louco atrás desse script * -*

Sumiu aqui dos favoritos de tanta coisa que tem xD

KKKKK, ta parecendo eu 30 Minutos para encontrar algum arquivo, vídeo e etc...


__________________________________________





Ver perfil do usuário http://arenarpgmaker.eclipserpg.com

4 Re: Lune Elemental Level em Qui 15 Nov 2012, 08:25

Tiaguu

avatar
Membro - semi experiente
Membro - semi experiente
Vish cara, era isso que eu precisava, concertesa vou usar.

Ver perfil do usuário

5 Re: Lune Elemental Level em Qui 15 Nov 2012, 09:39

~Razor

avatar
Membro de Honra
Membro de Honra
vlw , como ja disseram aqui todos estavam precisando desse script entao obrigado por disponibilizar

+ 1 credcard


__________________________________________


Principal Engine :Game Maker
Especialidade : Roteirista
Jogos: The old mine (Game Maker)
Site(Fórum): Lost Makers
Ver perfil do usuário http://lostmakers.web-rpg.com/

Conteúdo patrocinado


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

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum