Ir a contenido

0

Regeneracion de HP&SP


2 las respuestas a este tema

#1 KillerG

    Heroe legendario

  • voidzonero
  • 764 Mensajes:
  • Location:Uruguay carajo!! xD
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Mapeo

Publicado el 11 September 2006 - 07:33 PM

Este script nos deja recuperar nuestro HP&SP mientras caminamos por el mapa
Se puede editar para que en un mapa no regenere, para que se de como recompenza
Entre mas HP o SP tengas, más alto es la tasa de recuperacion
Solo pongalo arriba d Main y ya esta

BY: Caldaron
CODE
#==============================================================================
# On Map Regeneration Script v. 1.07
# by Caldaron (11.09.2006)
#==============================================================================
#                               DESCRIPTIONS                                  
#==============================================================================
 #--------------------------------------------------------------------------
 #  USE_MAPS:      when true: Regeneration is enabled, except for REG_MAPS
 #                 when false: Regeneration is only for REG_MAPS enabled
 #  REG_MAPS:      insert the Map_IDs where Regeneration is enabled/disabled
 #  HP/SP_WAIT:    time to Wait until HP/SP recovers, will be divided by MAXHP/SP
 #                 should be Limit of MAXHP/MAXSP
 #  HP/SP_REG:     the Value of HP/SP Regeneration
 #  HP/SP_PERCENT: when true: the Value of HP/SP_REG changes to its meant Percentage
 #  HP/SP_MOD:     the Percentage of HP/SP Recovery (1. Value contains 1. Actor's Percentage)
 #                 0 means no Regeneration
 #                 !!NUMBER OF VALUES MUST BE EQUAL THE NUMBER OF ACTORS!!
 #  HP/SP_STOP:    insert the State IDs which prevent the Actor to recover HP/SP
 #                 insert all State IDs which marked 'Regard as HP 0'
 #                 to prevent the Actor to Raise from Dead
 #
 #                 to change the actor's regenerate speed, use:
 #                 $game_system.hp_mod[actor.id-1] = value
 #--------------------------------------------------------------------------
#==============================================================================
module Regenerate
 USE_MAPS      = true
 REG_MAPS      = []
 HP_WAIT       = 9999
 SP_WAIT       = 9999
 HP_REG        = 1
 SP_REG        = 1
 HP_PERCENT    = false
 SP_PERCENT    = false
 HP_STOP       = [1]
 SP_STOP       = [1]
end
#==============================================================================
class Game_System
 #--------------------------------------------------------------------------
 attr_accessor :hp_mod
 attr_accessor :sp_mod
 #--------------------------------------------------------------------------
 alias system_reg_init initialize
 def initialize
   @hp_mod     = [100, 100, 100, 100, 100, 100, 100, 100]
   @sp_mod     = [100, 100, 100, 100, 100, 100, 100, 100]
   system_reg_init
 end
 #--------------------------------------------------------------------------
end
#==============================================================================
class Game_Map
 #--------------------------------------------------------------------------
 alias map_reg_init initialize
 def initialize
   @hp_wait    = [0,0,0,0,0,0,0,0]  # !!NUMBER OF VALUES MUST BE EQUAL THE NUMBER OF ACTORS!!
   @sp_wait    = [0,0,0,0,0,0,0,0]  # !!NUMBER OF VALUES MUST BE EQUAL THE NUMBER OF ACTORS!!
   map_reg_init
 end
 #--------------------------------------------------------------------------
 alias map_reg_update update
 def update
   for actor in $game_party.actors
     i = actor.id
     i -= 1
     @actor = actor
     @hp_wait[i] -= 1
     @sp_wait[i] -= 1
     if Regenerate::USE_MAPS and not Regenerate::REG_MAPS.include?(@map_id) or
       (Regenerate::USE_MAPS == false and Regenerate::REG_MAPS.include?(@map_id))
       if @hp_wait[i] < 1
         @actor.hp_reg
         if Regenerate::HP_PERCENT
           @hp_wait[i] = Regenerate::HP_WAIT/(@actor.maxhp * (@actor.maxhp/(Regenerate::HP_REG*100)) * ($game_system.hp_mod[i]/100.00))
         else
           @hp_wait[i] = Regenerate::HP_WAIT/(@actor.maxhp * Regenerate::HP_REG * ($game_system.hp_mod[i]/100.00))
         end
       end
       if @sp_wait[i] < 1
         @actor.sp_reg
         if @actor.maxsp != 0
           if Regenerate::HP_PERCENT
             @sp_wait[i] = Regenerate::SP_WAIT/(@actor.maxsp * (@actor.maxsp/(Regenerate::SP_REG*100)) * ($game_system.sp_mod[i]/100.00))
           else
             @sp_wait[i] = Regenerate::SP_WAIT/(@actor.maxsp * Regenerate::SP_REG * ($game_system.sp_mod[i]/100.00))
           end
         end
       end
     end
   end
   map_reg_update
 end
 #--------------------------------------------------------------------------
end
#==============================================================================
class Game_Actor
 #--------------------------------------------------------------------------
 def stop_reg(type)
   case type
   when 0
     for i in Regenerate::HP_STOP
       if self.state?(i)
         return true
       end
     end
   when 1
     for i in Regenerate::SP_STOP
       if self.state?(i)
         return true
       end
     end
   end
   return false
 end
 #--------------------------------------------------------------------------
 def hp_reg
   i = -1 + id
   @mod = $game_system.hp_mod[i]
   if not self.stop_reg(0) and not (@mod == 0 or @mod == nil)
     self.hp += 1
   end
   self.hp = Integer([self.hp, self.maxhp].min)
 end
 #--------------------------------------------------------------------------
 def sp_reg
   i = -1 + id
   @mod = $game_system.sp_mod[i]
   if not self.stop_reg(1) and not (@mod == 0 or @mod == nil)
     self.sp += 1
   end
   self.sp = Integer([self.sp, self.maxsp].min)
 end
 #--------------------------------------------------------------------------
end




#2 Fegarur

    Vago

  • Moderador Power!
  • 2,331 Mensajes:
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Guion

Publicado el 12 September 2006 - 05:35 AM

Entonces... ¿Funciona como en algunos Action RPG, que se recupera cierta cantidad cada pocos segundos?

#3 Caim

    Caballero

  • voidzonero
  • 250 Mensajes:
  • Interests:Evitar escribir aficiones reales en los foros
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Mapeo

Publicado el 12 September 2006 - 07:32 AM

Supongo, la verdad es que me viene bien para el juego que toy haciendo xD(Sí, aunque mi favorito es entidad 3d, no he dejado el maker xD)

byes muerte.gif