RMB - Vivenciando as mudanças da vida. Vá agora para a nova RMB! rpgmakerbrasil.net!


    [RMVX] Distribuição de Pontos

    Compartilhe
    avatar
    Jhonn
    Membro
    Membro

    Masculino Mensagens : 114
    Experiência : 2933
    Reputação : 48

    [RMVX] Distribuição de Pontos

    Mensagem por Jhonn em Qui Jul 15, 2010 12:28 pm

    Distribuição de Pontos v1.6ß
    por Lettuce


    Introdução
    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.


    Como usar
    Abra o Editor de Scripts, crie um novo script na seção de Scripts Adicionais e cole o código abaixo. As configurações e instruções se encontram no início do script.


    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 = 20

    # Valor máximo dos atributos em seu jogo
    MaxStat = 255
    MaxHP = 9999
    MaxMP = 999

    # 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 = 2
    PointsPerMP = 2
    PointsPerHIT = 15
    PointsPerEVA = 7
    PointsPerCRIT = 5

    # O quanto os atributos irão aumentar por cada ponto?
    IncreaseBy = 2
    HPIncreaseBy = 25
    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 e Agradecimentos
    • Criado por Lettuce
    • Backup da antiga RMB restaurado por Jhonn


    Última edição por Jhonn em Qua Ago 04, 2010 6:15 pm, editado 1 vez(es) (Razão : Adequar script ao modelo do RafaelSOPA)
    avatar
    wagnercgil
    Colaborador
    Colaborador

    Masculino Mensagens : 203
    Experiência : 2945
    Reputação : 24

    Re: [RMVX] Distribuição de Pontos

    Mensagem por wagnercgil em Qui Jul 15, 2010 2:29 pm

    gostei, certo q vo usa
    +rep
    avatar
    allzero
    Colaborador
    Colaborador

    Masculino Mensagens : 198
    Experiência : 2985
    Reputação : 16

    Re: [RMVX] Distribuição de Pontos

    Mensagem por allzero em Ter Jul 20, 2010 8:32 pm

    ja tem uma versão mais nova, perdi quando meu pc formato, é bom esse, mais buga com algums scripts...
    avatar
    Jhonn
    Membro
    Membro

    Masculino Mensagens : 114
    Experiência : 2933
    Reputação : 48

    Re: [RMVX] Distribuição de Pontos

    Mensagem por Jhonn em Qua Jul 21, 2010 4:38 pm

    Se conseguir a versão recente me mande para atualizar o tópico, essa versão que eu postei aqui era a que eu tinha no meu backup da antiga RMB.
    avatar
    RafaelSOPA
    Veterano
    Veterano

    Masculino Mensagens : 339
    Experiência : 3082
    Reputação : 53
    - : MelhorTópico - Oscar 2010

    Re: [RMVX] Distribuição de Pontos

    Mensagem por RafaelSOPA em Qua Jul 21, 2010 6:05 pm

    Belo script ;D
    Continue sempre assim ;D
    avatar
    NickTheMaster
    Membro
    Membro

    Masculino Mensagens : 87
    Experiência : 2779
    Reputação : 22

    Re: [RMVX] Distribuição de Pontos

    Mensagem por NickTheMaster em Qua Jul 21, 2010 7:59 pm

    john vlw +rep pra vc, eu combinei esse script com o meu sistema de veneraçao.
    http://rpgmakerbrasil.ephpbb.com/tutoriais-f6/sistema-de-veneracao-no-vx-t423.htm#2773
    avatar
    Jhonn
    Membro
    Membro

    Masculino Mensagens : 114
    Experiência : 2933
    Reputação : 48

    Re: [RMVX] Distribuição de Pontos

    Mensagem por Jhonn em Qua Jul 21, 2010 8:07 pm

    Acabei de testar o sistema de veneração + esse script, ficou muito legal :D
    avatar
    Katsu
    Convidado

    Re: [RMVX] Distribuição de Pontos

    Mensagem por Katsu em Qui Ago 19, 2010 9:03 am

    Jhonn, tenho um problema quanto ao script. Eu já estava usando esse script, só que tem um BUG, se eu estiver usando uma arma ela conta como se você tivesse colocado o atributo de ataque, então quando você vai comprar status no carinha, tipo em vez de ser 2 pontos pra comprar, você gasta 12 pontos por causa da arma, entendeu ? Pô, tem como tu ver isso pra mim ? Se tiver como eu ficarei muitíssimo agradecido.

    Muito obrigado,
    Katsuhiro.
    avatar
    Katsuhiro
    Novato
    Novato

    Mensagens : 4
    Experiência : 2624
    Reputação : 10

    Re: [RMVX] Distribuição de Pontos

    Mensagem por Katsuhiro em Qui Ago 19, 2010 9:34 am

    Isso só acontece com o atríbuto de ataque, no de defesa posso pôr os equipamentos que não vai aumentar os pontos necessário para colocar no atríbuto, mas neste caso acabei de perceber que só acontece isso quando estou usando duas armas, se eu estiver usando uma arma(consequentemente um escudo) apenas não ocorre esse "BUG".

    -Edit-

    Tipo, acabei de ver outra coisa. Se minha arma dá atríbutos, (Exemplo: Usando esta arma você recebe 20 pontos de agilidade enquanto estiver utilizando-a), neste caso eu também estarei pagando um maior número de pontos de atríbutos para comprar o atríbuto de agilidade. Será que tem algum modo de impedir que ísto ocorra, pois caso contrário eu nunca poderei fazer um item que dê agilidade ou qualquer outro atríbuto. A menos que o jogador submeta-se em ficar tirando e colocando o item na hora de distribuir os pontos. Caso tenha como solucionar este problema dê uma luz por favor.

    Agradecido,
    Katsuhiro.
    avatar
    Jhonn
    Membro
    Membro

    Masculino Mensagens : 114
    Experiência : 2933
    Reputação : 48

    Re: [RMVX] Distribuição de Pontos

    Mensagem por Jhonn em Qui Ago 19, 2010 8:40 pm

    Tentei resolver mas não consegui, talvez algum outro membro consiga. E só lembrando que esse script é uma versão beta, segundo o allzero existe uma versão mais recente, (provavelmente sem esse bug) talvez procurando no Google você encontre Poring ;)
    avatar
    Katsuhiro
    Novato
    Novato

    Mensagens : 4
    Experiência : 2624
    Reputação : 10

    Re: [RMVX] Distribuição de Pontos

    Mensagem por Katsuhiro em Qui Ago 19, 2010 9:48 pm

    Bem, neste caso o meu deve ser o mais atual. Estou utilizando a versão 1.71, não sei se há uma versão mais recente do que esta, mas de qualquer forma, esta versão também há o mesmo "BUG".
    avatar
    Pheryus
    Colaborador
    Colaborador

    Masculino Mensagens : 214
    Experiência : 2943
    Reputação : 38

    Re: [RMVX] Distribuição de Pontos

    Mensagem por Pheryus em Qui Ago 19, 2010 9:51 pm

    Ja tinha este script em meu jogo e em meu pc mas obrigado por posta-lo antes. ^^'
    avatar
    kjhosefe
    Novato
    Novato

    Mensagens : 1
    Experiência : 1829
    Reputação : 10
    - : Nada :) - : nada :)

    Re: [RMVX] Distribuição de Pontos

    Mensagem por kjhosefe em Seg Dez 03, 2012 5:06 pm

    ele é para o vx ou pro vx ace?
    avatar
    YaacovB
    Colaborador
    Colaborador

    Masculino Mensagens : 214
    Experiência : 2673
    Reputação : 24
    - : Nada :) - : nada :)

    Re: [RMVX] Distribuição de Pontos

    Mensagem por YaacovB em Seg Dez 03, 2012 6:33 pm

    Ah, Vamo Ser Felizes...
    Se tá na seção de scripts pra VX, é porque é pra VX...

    Já que VX é RGSS2, e o Ace é RGSS3.

    Mas existe sim para VX Ace...

    O Link tá aki:
    http://www.santuariorpgmaker.com/forum/index.php?topic=12636

    E um conselho: Ah, esquece, dessa vez não aconteceu nada de ruim.

    Conteúdo patrocinado

    Re: [RMVX] Distribuição de Pontos

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qua Out 18, 2017 11:07 am