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
» Pokémon Genesis Online! (PGO)
Qua 05 Jul 2017, 17:08 por Lexar

» 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


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 Distribuição de Pontos em Qui 04 Out 2012, 00:17

Carlos

avatar
Administrador
Administrador
Distribuição de Pontos


Permite distribuir pontos para seu personagem, incrementando atributos ao jogador.

Como usar?
1º Copie e cole o Script para a área de scripts adicionais no seu jogo

2º Pronto,agora leia a parte verde no script onde é ensinado passo a passo de como usar. Você também pode alterar facilmente alguns valores no Script.

Screenshots:

Spoiler:
[Você precisa estar registrado e conectado para ver este link.]



[Você precisa estar registrado e conectado para ver este link.]


Script:

Código:
#==============================================================================
# Distribuição de Pontos
#------------------------------------------------------------------------------
# Este script permite que você coloque um sistema de distribuição de pontos em
# seu jogo. Estes pontos são usados para incrementar atributos do jogador, como
# HP, MP, etc.
#------------------------------------------------------------------------------
# Criado por Lettuce em 01/05/2008
# Versão 1.6ß
#==============================================================================
# :: Como utilizar
#
# Crie um evento e coloque um comando de evento Chamar Script. Logo, insira
# este código na janela do Chamar Script:
#
#  $scene = Scene_Stat_Dist.new(0)
#
# Você pode dar pontos aos jogador utilizando o código abaixo:
#
#  $game_party.members[ID_DO_PERSONAGEM].points += NUMERO_DE_PONTOS
#
# Por exemplo:
# $game_party.members[0].points += 5
#
# Isso daria ao personagem Adam, 5 pontos para distribuir. Você também pode
# fazer com que o personagem receba pontos depois de subir de nível. Para isso
# basta ir no script Game_actor e procurar por "def change_exp". Você verá uma
# linha com o seguinte código "level_up", abaixo dela, cole o seguinte:
#
#  difference = @level - last_level
#  $game_actors[@actor_id].points += NUMERO_DE_PONTOS
#
# Caso você esteja utilizando o modo Ragnarök Online, cole:
#
#  difference = @level - last_level
#  $game_actors[@actor_id].points += ((@level/5).floor+2).floor*difference
#
#==============================================================================

# Quantos pontos você quer dar o personagem no início do jogo?
StartPoints = 3

# Valor máximo dos atributos em seu jogo
MaxStat = 200
MaxHP = 100
MaxMP = 100

# Os valores abaixo são todos em %
MaxHIT = 80 # 100 significa nunca errar
MaxEVA = 12 # 100 significa sempre se esquivar, use 50/70
MaxCRIT = 15 # 100 significa sempre um ataque crítico

# Quantos pontos são necessários para aumentar?
PointsPerHP = 1
PointsPerMP = 1
PointsPerHIT = 2
PointsPerEVA = 1
PointsPerCRIT = 1

# O quanto os atributos irão aumentar por cada ponto?
IncreaseBy = 2
HPIncreaseBy = 15
MPIncreaseBy = 15
HITIncreaseBy = 5
EVAIncreaseBy = 1
CRITIncreaseBy = 1


# Escolha 1 para o modo normal, ou então 2 para o modo Ragnarök Online, onde
# os pontos serão cálculados por uma fórmula.
Mode = 1

# Aqui você pode trocar o nome da fonte e seu tamanho.
Fontname = Font.default_name
Fontsize = 20

# Tipo de layout mode usado
LayoutMode = 2

#==============================================================================

OFFSET = -10 # Mover os equipamentos para cima ou para baixo

#==============================================================================
# Lettuce_Window_Top
#==============================================================================

class Lettuce_Window_Top < Window_Base
  def initialize
   super(0,0,544,70)
   self.contents = Bitmap.new(width-32,height-32)
   self.contents.font.name = Fontname
   self.contents.font.size = Fontsize
   refresh
   end
   
  def refresh
   self.contents.clear
   self.contents.draw_text(0,-10,544-32,32,"Distribuição de Pontos",1)
   self.contents.font.size = Fontsize-4
   self.contents.draw_text(0,10,544-32,32,"Pressione esquerda ou direita para trocar o personagem",1)
  end
   
end
#==============================================================================
# Lettuce_Window_Points
#==============================================================================
class Lettuce_Window_Points < Window_Base
  def initialize(member_index)
   super(401,320,144,52)
   self.contents = Bitmap.new(width-32,height-32)
   self.contents.font.name = Fontname
   self.contents.font.size = Fontsize
   refresh(member_index)
  end
 
  def refresh(member_index)
   actor = $game_party.members[member_index]
   points = actor.points
  self.contents.clear
   self.contents.draw_text(0,0,162,20,"Pontos: "+points.to_s)   
  end
end

#==============================================================================
# Lettuce_Window_Info
#==============================================================================

class Lettuce_Window_Info < Window_Base
  def initialize(member_index)
   super(0,71,400,346)
   self.contents = Bitmap.new(width-32,height-32)
   self.contents.font.name = Fontname
   self.contents.font.size = Fontsize
  @exo = 25
  @exo2 = 35
  @eyo = -10
   refresh(member_index)
  end
   
  def refresh(member_index)
   actor = $game_party.members[member_index]
   self.contents.clear
  self.contents.font.size = Fontsize
   draw_actor_face(actor,10,10,92)
   draw_actor_name(actor,120,10)
   self.contents.font.size = Fontsize
   self.contents.draw_text(190,30,200,20,"Classe: "+actor.class.name)
   self.contents.draw_text(120,30,200,20,"Nv. "+actor.level.to_s)
 
  if LayoutMode == 1
    draw_actor_state(actor,200,280,168)
  elsif LayoutMode == 2
    draw_actor_state(actor,220,10)
  end
 
   s1 = actor.exp_s
  s2 = actor.current_lvl_exp
  if s1.is_a?(Numeric)
    s3 = s1-s2
    s4 = actor.next_lvl_exp
    self.contents.font.size = Fontsize - 5
    self.contents.draw_text(230,74,90,20,"EXP: "+s3.to_s+"/"+s4.to_s,0)
    self.contents.font.size = Fontsize
  else
    self.contents.draw_text(230,74,85,20,"-----/-----",2)
  end
   
   #Preparing bar colours
   back_color = Color.new(39, 58, 83, 255)
   
   str_color1 = Color.new(229, 153, 73, 255)
   str_color2 = Color.new(255, 72, 0, 255)
   
   def_color1 = Color.new(210, 255, 0, 255)
   def_color2 = Color.new(85, 129, 9, 255)
   
   spi_color1 = Color.new(99, 133, 161, 255)
   spi_color2 = Color.new(10, 60,107, 255)
   
   agi_color1 = Color.new(167, 125, 180, 255)
   agi_color2 = Color.new(90, 11, 107, 255)
 
  hp_color1 = Color.new(66, 114, 164, 255)
  hp_color2 = Color.new(122, 175, 229, 255)
 
  mp_color1 = Color.new(93, 50, 158, 255)
  mp_color2 = Color.new(145, 122, 229, 255)
 
  exp_color1 = Color.new(246, 243, 224, 255)
  exp_color2 = Color.new(255, 182, 0, 255)
  if s1.is_a?(Numeric)
    self.contents.fill_rect(230,90,89,7,back_color)
    self.contents.gradient_fill_rect(232,92,(85*s3)/s4,3,exp_color1,exp_color2)

  else
    self.contents.fill_rect(230,60,89,7,back_color)
  end
 
   
  self.contents.fill_rect(120,67,104,7,back_color)
   self.contents.gradient_fill_rect(122,69,100*actor.hp/actor.maxhp,3,hp_color1,hp_color2)
  self.contents.draw_text(120,44,100,30,"HP",0)
  self.contents.draw_text(120,44,100,30,actor.hp.to_s + "/" + actor.maxhp.to_s,2)
 
  self.contents.fill_rect(120,90,104,7,back_color)
   self.contents.gradient_fill_rect(122,92,100*actor.mp/actor.maxmp,3,mp_color1,mp_color2)
  self.contents.draw_text(120,67,100,30,"MP",0)
  self.contents.draw_text(120,67,100,30,actor.mp.to_s + "/" + actor.maxmp.to_s,2)
 
  # Armas
 
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
 
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  evasion = 0
  crit = 4
 
  if $data_actors[actor.id].critical_bonus
    crit +=4
  end
 
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
    if weapon.critical_bonus
      crit += 4
    end
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
    evasion += shield.eva
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
    evasion += helm.eva
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
    evasion += body.eva
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
    evasion += accessory.eva
  end
  if LayoutMode == 1
    draw_item_name(weapon,160+@exo,125+@eyo,true)
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo,155+@eyo,true)     
    else
      draw_item_name(shield,160+@exo,155+@eyo,true)
    end
    draw_item_name(helm,160+@exo,185+@eyo,true)
    draw_item_name(body,160+@exo,215+@eyo,true)
    draw_item_name(accessory,160+@exo,245+@eyo,true)
   
    self.contents.font.color = Color.new(87,87,87,255)
    if !weapon
      #draw_icon(216,160+@exo,125+@eyo,true)
      self.contents.draw_text(184+@exo,127+@eyo,200,20,"Não equipada")
    end
    if !shield
      #draw_icon(217,160+@exo,155+@eyo,true)
      self.contents.draw_text(184+@exo,157+@eyo,200,20,"Não equipada")
    end
    if !helm
      #draw_icon(218,160+@exo,185+@eyo,true)
      self.contents.draw_text(184+@exo,187+@eyo,200,20,"Não equipada")
    end
    if !body
      #draw_icon(219,160+@exo,215+@eyo,true)
      self.contents.draw_text(184+@exo,217+@eyo,200,20,"Não equipada")
    end
    if !accessory
      #draw_icon(220,160+@exo,245+@eyo,true)
      self.contents.draw_text(184+@exo,247+@eyo,200,20,"Não equipada")
    end
    self.contents.font.color = Color.new(255,255,255,255)
   
  elsif LayoutMode == 2
    draw_item_name(weapon,160+@exo2,125+OFFSET+@eyo,true)
    #if weapon
  if weapon
    two_hand = true if weapon.two_handed
  end
      if two_hand
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
      end
    #end
=begin
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
    end
=end
    draw_item_name(helm,160+@exo2,205+OFFSET+@eyo,true)
    draw_item_name(body,160+@exo2,245+OFFSET+@eyo,true)
    draw_item_name(accessory,160+@exo2,285+OFFSET+@eyo,true)
   

     
      self.contents.font.color = Color.new(87,87,87,255)
    if !weapon
      #draw_icon(216,160+@exo2,125+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,127+OFFSET+@eyo,200,20,"Não equipada")
    end
    if weapon
    if !shield and weapon.two_handed == false
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,20,"Não equipada")
    end
    else
    if !shield
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,20,"Não equipada")
    end
    end
   
    if !helm
      #draw_icon(218,160+@exo2,205+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,207+OFFSET+@eyo,200,20,"Não equipada")
    end
    if !body
      #draw_icon(219,160+@exo2,245+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,247+OFFSET+@eyo,200,20,"Não equipada")
    end
    if !accessory
      #draw_icon(220,160+@exo2,285+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,287+OFFSET+@eyo,200,20,"Não equipada")
    end
    self.contents.font.color = Color.new(255,255,255,255)
  end
 
 
 
  self.contents.font.size = Fontsize - 5
   self.contents.draw_text(10,120,100,20,Vocab::atk+": ")
   self.contents.draw_text(10,120,100,20,(actor.atk-bonus_atk).to_s+" + "+bonus_atk.to_s,2)
   
   self.contents.fill_rect(10,140,104,7,back_color)
   self.contents.gradient_fill_rect(12,142,((actor.atk-bonus_atk)*100)/MaxStat,3,str_color1,str_color2)
   
   self.contents.draw_text(10,150,100,20,Vocab::def+": ")
   self.contents.draw_text(10,150,100,20,(actor.def-bonus_def).to_s+" + "+bonus_def.to_s,2)
   
   self.contents.fill_rect(10,170,104,7,back_color)
   self.contents.gradient_fill_rect(12,172,((actor.def-bonus_def)*100)/MaxStat,3,def_color1,def_color2)
   
   self.contents.draw_text(10,180,100,20,"Intel.: ")
   self.contents.draw_text(10,180,100,20,(actor.spi-bonus_spi).to_s+" + "+bonus_spi.to_s,2)
   
   self.contents.fill_rect(10,200,104,7,back_color)
   self.contents.gradient_fill_rect(12,202,((actor.spi-bonus_spi)*100)/MaxStat,3,spi_color1,spi_color2)
   
   self.contents.draw_text(10,210,100,20,"Agilid.: ")
   self.contents.draw_text(10,210,100,20,(actor.agi-bonus_agi).to_s+" + "+bonus_agi.to_s,2)
   
   self.contents.fill_rect(10,230,104,7,back_color)
   self.contents.gradient_fill_rect(12,232,((actor.agi-bonus_agi)*100)/MaxStat,3,agi_color1,agi_color2)
   
  if weapon
    hit_rate = weapon.hit
  else
    hit_rate = 95
  end
   
   
  self.contents.font.size = Fontsize - 5
  self.contents.font.color = Color.new(162,212,98,255)
  self.contents.draw_text(1,245,100,20,"Ataque Máximo:",2)
  self.contents.draw_text(1,260,100,20,"Taxa de Acerto (%) :",2)
  self.contents.draw_text(1,275,100,20,"Taxa de Evasão (%) :",2)
  self.contents.draw_text(1,290,100,20,"Taxa Crítica (%) :",2)
 
  self.contents.draw_text(105,245,60,20,(actor.atk*4).to_s,0)
  self.contents.draw_text(105,260,60,20,actor.base_hit.to_s + "+" + actor.hitr.to_s,0)
  self.contents.draw_text(105,275,60,20,actor.base_eva.to_s + "+" +actor.evar.to_s,0)
  self.contents.draw_text(105,290,60,20,actor.base_cri.to_s + "+" + actor.crir.to_s,0)
 
  self.contents.font.size = Fontsize-6
  self.contents.font.color = text_color(16)
  self.contents.draw_text(135,260,60,20,"[Req:"+PointsPerHIT.to_s+"pt.]",2)
  self.contents.draw_text(135,275,60,20,"[Req:"+PointsPerEVA.to_s+"pt.]",2)
  self.contents.draw_text(135,290,60,20,"[Req:"+PointsPerCRIT.to_s+"pt.]",2)
 
  if LayoutMode == 1
   
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize - 8
  if weapon
  self.contents.draw_text(185+@exo,140+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(219+@exo,140+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo,140+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(287+@exo,140+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo,170+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(219+@exo,170+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo,170+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(287+@exo,170+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
 
  if helm
  self.contents.draw_text(185+@exo,200+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(219+@exo,200+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo,200+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(287+@exo,200+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
 
  if body
  self.contents.draw_text(185+@exo,230+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(219+@exo,230+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo,230+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(287+@exo,230+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
 
  if accessory
  self.contents.draw_text(185+@exo,260+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(219+@exo,260+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo,260+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(287+@exo,260+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
 
   if Mode == 2
     self.contents.font.size = Fontsize - 8
     self.contents.font.color = Color.new(155,199,206,255)
     self.contents.draw_text(23,100,125,20,"PONTOS",2)
     self.contents.draw_text(29,110,125,20,"NECESSÁRIOS",2)
     self.contents.font.size = Fontsize - 4
     self.contents.draw_text(20,125,115,20,required(actor.atk-bonus_atk).to_s,2)
     self.contents.draw_text(20,155,115,20,required(actor.def-bonus_def).to_s,2)
     self.contents.draw_text(20,185,115,20,required(actor.spi-bonus_spi).to_s,2)
     self.contents.draw_text(20,215,115,20,required(actor.agi-bonus_agi).to_s,2)
   end

  if LayoutMode == 2
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize - 8
  if weapon
  self.contents.draw_text(185+@exo2,140+OFFSET+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(185+@exo2,150+OFFSET+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo2,140+OFFSET+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(253+@exo2,150+OFFSET+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo2,180+OFFSET+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(185+@exo2,190+OFFSET+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo2,180+OFFSET+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(253+@exo2,190+OFFSET+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
 
  if helm
  self.contents.draw_text(185+@exo2,220+OFFSET+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(185+@exo2,230+OFFSET+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo2,220+OFFSET+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(253+@exo2,230+OFFSET+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
 
  if body
  self.contents.draw_text(185+@exo2,260+OFFSET+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(185+@exo2,270+OFFSET+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo2,260+OFFSET+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(253+@exo2,270+OFFSET+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
 
  if accessory
  self.contents.draw_text(185+@exo2,300+OFFSET+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(185+@exo2,310+OFFSET+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo2,300+OFFSET+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(253+@exo2,310+OFFSET+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
end

  def required(base)
   return (((base-1)/10)+2).floor
  end
 
end

#==============================================================================
# Lettuce_Window_Help
#==============================================================================
class Lettuce_Window_Help < Window_Base
  def initialize(index)
   super(401,372,144,44)
   self.contents = Bitmap.new(width-32,height-32)
   self.contents.font.size = Fontsize - 6
   refresh(index)
  end
 
  def refresh(index)
   self.contents.clear
  self.contents.font.color = text_color(16)

    case index
    when 0
      self.contents.draw_text(0,-5,112,20,"HP + "+HPIncreaseBy.to_s)
    when 1
      self.contents.draw_text(0,-5,112,20,"MP + "+MPIncreaseBy.to_s)
    when 2
      self.contents.draw_text(0,-5,112,20,Vocab::atk+" + "+IncreaseBy.to_s)
    when 3
      self.contents.draw_text(0,-5,112,20,Vocab::def+" + "+IncreaseBy.to_s)
    when 4
      self.contents.draw_text(0,-5,112,20,Vocab::spi+" + "+IncreaseBy.to_s)
    when 5
      self.contents.draw_text(0,-5,112,20,Vocab::agi+" + "+IncreaseBy.to_s)
    when 6
      self.contents.draw_text(0,-5,112,20,"HIT + "+HITIncreaseBy.to_s)
    when 7
      self.contents.draw_text(0,-5,112,20,"EVA + "+EVAIncreaseBy.to_s)
    when 8
      self.contents.draw_text(0,-5,112,20,"CRIT + "+CRITIncreaseBy.to_s)
    end

 
  end
 
end
 

#==============================================================================
# Scene_Stat_Dist
#==============================================================================
class Scene_Stat_Dist < Scene_Base
  def initialize(menu_index)
   @menu_index = menu_index
  end
 
  def start
   super
   create_menu_background
  ihp = Vocab::hp
  imp = Vocab::mp
   i1 = Vocab::atk
   i2 = Vocab::def
   i3 = Vocab::spi
   i4 = Vocab::agi
  i5 = "HIT"
  i6 = "EVA"
  i7 = "CRIT"
   @window_select = Window_Command.new(144,[ihp,imp,i1,i2,i3,i4,i5,i6,i7])
   if $position
     @window_select.index = $position - 1
   else
     @window_select.index = 0
   end
   
   @window_select.active = true
   @window_select.x = 401
   @window_select.y = 71
   
   @window_top = Lettuce_Window_Top.new
   @window_points = Lettuce_Window_Points.new(@menu_index)
   @window_info = Lettuce_Window_Info.new(@menu_index)
   @window_help = Lettuce_Window_Help.new(@window_select.index)
  end
   
  def terminate
   super
   dispose_menu_background
   @window_top.dispose
   @window_points.dispose
   @window_info.dispose
   @window_help.dispose
   @window_select.dispose
  end
 
  def update
   update_menu_background
 
   @window_select.update
  if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
    @window_help.refresh(@window_select.index)
  end
 
   @changes = 0
   if Input.trigger?(Input::B)
     Sound.play_cancel
     $scene = Scene_Map.new
   elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
     @menu_index += 1
     @menu_index %= $game_party.members.size
     $scene = Scene_Stat_Dist.new(@menu_index)
   elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
     @menu_index += $game_party.members.size - 1
     @menu_index %= $game_party.members.size
     $scene = Scene_Stat_Dist.new(@menu_index)
   elsif Input.trigger?(Input::C)
     if Mode == 1
      do_point_reg
     elsif Mode == 2
      do_point_rag
     end
   end 

  end
 
  def do_point_reg
   @att = @window_select.index
 
  actor = $game_party.members[@menu_index]
 
  # Armas
 
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
 
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
 
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
 
     case @att
   
    when 0 # HP
      if actor.points < PointsPerHP
        Sound.play_cancel
      elsif actor.maxhp >= MaxHP
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
        actor.points -= PointsPerHP
        @changes += 1
      $position = 1
      end
   
    when 1 # MP
      if actor.points < PointsPerMP
        Sound.play_cancel
      elsif actor.maxmp >= MaxMP
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
        actor.points -= PointsPerMP
        @changes += 1
      $position = 1
      end
   
     when 2 # Ataque
      if actor.points < 1
        Sound.play_cancel
      elsif (actor.atk-bonus_atk) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
        actor.points -= 1
        @changes += 1
      $position = 1
      end
      
     when 3 # Defesa
      if actor.points < 1
        Sound.play_cancel
      elsif (actor.def-bonus_def) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
        actor.points -= 1
        @changes += 1
      $position = 2
      end
      
     when 4 # Inteligência
      if actor.points < 1
        Sound.play_cancel
      elsif (actor.spi-bonus_spi) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
        actor.points -= 1
        @changes += 1
      $position = 3
      end
     when 5 # Agilidade
      if actor.points < 1
        Sound.play_cancel
      elsif (actor.agi-bonus_agi) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
        actor.points -= 1
        @changes += 1
      $position = 4
      end
    
    
    when 6 # Acerto
      if actor.points < PointsPerHIT
        Sound.play_cancel
      elsif actor.hitr >= MaxHIT
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
        actor.points -= PointsPerHIT
        @changes += 1
      $position = 1
      end
    when 7 # Evasão
      if actor.points < PointsPerEVA
        Sound.play_cancel
      elsif actor.evar >= MaxEVA
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
        actor.points -= PointsPerEVA
        @changes += 1
      $position = 1
      end
    when 8 # Crítico
      if actor.points < PointsPerCRIT
        Sound.play_cancel
      elsif actor.crir >= MaxCRIT
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
        actor.points -= PointsPerCRIT
        @changes += 1
      $position = 1
      end
  end
 
  if @changes > 0
      @window_info.refresh(@menu_index)
      @window_points.refresh(@menu_index)
     end
  end
 
  def do_point_rag
   @att = @window_select.index
 
  actor = $game_party.members[@menu_index]
 
  # Armas
 
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
 
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
 
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
 
     case @att
   
    when 0 # HP
      if actor.points < PointsPerHP
        Sound.play_cancel
      elsif actor.maxhp >= MaxHP
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
        actor.points -= PointsPerHP
        @changes += 1
      $position = 1
      end
   
    when 1 # MP
      if actor.points < PointsPerMP
        Sound.play_cancel
      elsif actor.maxmp >= MaxMP
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
        actor.points -= PointsPerMP
        @changes += 1
      $position = 1
      end
   
     when 2 # Ataque
      base_value = actor.atk-bonus_atk
      points = actor.points
      if enough_point(base_value,points)
        Sound.play_cancel
      elsif (actor.atk-bonus_atk) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
        actor.points -= required(base_value)
        @changes += 1
        $position = 1
      end
      
     when 3 # Defesa
      base_value = actor.def-bonus_def
      points = actor.points
      if enough_point(base_value,points)
        Sound.play_cancel
      elsif (actor.def-bonus_def) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
        actor.points -= required(base_value)
        @changes += 1
        $position = 2
      end
      
     when 4 # Inteligência
      base_value = actor.spi-bonus_spi
      points = actor.points
      if enough_point(base_value,points)
        Sound.play_cancel
      elsif (actor.spi-bonus_spi) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
        actor.points -= required(base_value)
        @changes += 1
        $position = 3
      end
     when 5 # Agilidade
      base_value = actor.agi-bonus_agi
      points = actor.points
      if enough_point(base_value,points)
        Sound.play_cancel
      elsif (actor.agi-bonus_agi) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
        actor.points -= required(base_value)
        @changes += 1
        $position = 4
      end
    when 6 # Acerto
      if actor.points < PointsPerHIT
        Sound.play_cancel
      elsif actor.hitr >= MaxHIT
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
        actor.points -= PointsPerHIT
        @changes += 1
      $position = 1
      end
    when 7 # Evasão
      if actor.points < PointsPerEVA
        Sound.play_cancel
      elsif actor.evar >= MaxEVA
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
        actor.points -= PointsPerEVA
        @changes += 1
      $position = 1
      end
    when 8 # Crítico
      if actor.points < PointsPerCRIT
        Sound.play_cancel
      elsif actor.crir >= MaxCRIT
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
        actor.points -= PointsPerCRIT
        @changes += 1
      $position = 1
      end
     end
     if @changes > 0
      @window_points.refresh(@menu_index)
      @window_info.refresh(@menu_index)
     end
  end
 
  def enough_point(base,points)
   required = (((base-1)/10)+2).floor
   if required > points
     return true
   elsif required <= points
     return false
   end
  end
 
  def required(base)
   return (((base-1)/10)+2).floor
  end
 
end


#==============================================================================
# Game_Actor
#------------------------------------------------------------------------------
# Dando pontos de atributo:
#    $game_party.member[x].points
#==============================================================================

class Game_Actor < Game_Battler

  attr_accessor :points
  attr_accessor :hit_bonus
  attr_accessor :eva_bonus
  attr_accessor :cri_bonus
  attr_accessor :hitr
  attr_accessor :evar
  attr_accessor :crir
  alias Lettuce_Game_Actor_Ini initialize
 
  def initialize(actor_id)
    Lettuce_Game_Actor_Ini(actor_id)
    @points = StartPoints
    @hitr = 0
    @evar = 0
    @crir = 0
  end

  def points
    return @points
  end
 
  def hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    if n+@hitr <= MaxHIT
    return n+@hitr
  else return MaxHIT
    end
  end

  def eva
    n = 5
    for item in armors.compact do n += item.eva end
    if n+@evar <= MaxEVA
    return n+@evar
  else return MaxEVA
    end
  end

  def cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    if n+@crir <= MaxCRIT
      return n+@crir
    else return MaxCRIT
      end
  end

  def base_hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    return n
  end

  def base_eva
    n = 5
    for item in armors.compact do n += item.eva end
    return n
  end

  def base_cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    return n
  end
 
  def hitr
    return @hitr
  end
 
  def evar
    return @evar
  end
 
  def crir
    return @crir
  end
   
   
 
  def current_lvl_exp
    return @exp_list[@level]
  end
 
  def next_lvl_exp
    return @exp_list[@level+1]-@exp_list[@level]
  end
end

Créditos:

Spoiler:
A Lettuce por criar o script
A mim por disponibilizar aqui


__________________________________________
[Você precisa estar registrado e conectado para ver este link.]


[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
Ver perfil do usuário http://arenarpgmaker.eclipserpg.com

2 Re: Distribuição de Pontos em Qui 04 Out 2012, 12:29

SameKage

avatar
Membro - Postador
Membro - Postador
Bom script, obrigado por disponibilizar, vou usar de base para fazer um pra mim ^^


__________________________________________
Ei, tem um tempinho livre? Visite o Distrito Maker !!
[Você precisa estar registrado e conectado para ver este link.]
Ver perfil do usuário http://distritomaker.forumeiros.com

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