¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3396 miembros registrados.
El último usuario registrado es Discorded.

Nuestros miembros han publicado un total de 79807 mensajes en 11256 argumentos.
Navega con Google Chrome
[DESCARGA]

KTimers XP - Para Plantas

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP KTimers XP - Para Plantas

Mensaje por kyonides-arkanthos el 2015-06-30, 10:38

KTimers XP
v 1.0.0

por Kyonides-Arkanthos


Este script permite ayudarles a los desarrolladores que puedan crear plantas que dan frutos cada cierto tiempo o cualquier otra cosa que al cabo de un rato pueda dejarle alguna ganancia al jugador que pase por uno de estos eventos.

Lo que lo hace conveniente es que no es específico para las plantas que dan frutos o las hortalizas que ya están esperando que las cosechen. Esto permite que Uds. vean cuántos otros usos le pueden dar a mi script. Además no hay un cronómetro o temporizador visible en pantalla.

Si no entienden por qué lo creé, piensen en juegos como Pokémon o Harvest Moon y las semillas o frutos que uno sembraba.


INSTRUCCIONES


Copien y peguen el script donde Uds. ya saben que deben hacerlo.

Después editan la Constante llamada STAGES. Cada Tipo de Cronómetro indica por cuántas etapas pasará la planta antes de terminar dando su fruto.

STAGES = {1 => 3, 2 => 2} # Tipo de Cronómetro => Número de etapas

Luego creen un evento de varias páginas, con tantas páginas como el Número de etapas más 1, como crearían el de una planta que da frutos, en cada página configuren el gráfico correspondiente, estos deben ir en orden de menor a mayor siendo mayor cuando ya se puede recolectar el fruto o lo que sea que obtenga el jugador.

Lo siguiente sería ir a la primera página y dejar un comentario como el de este sencillo ejemplo:

timer 1 refresh 15

que quiere decir "cronómetro (ID) 1 refresca (cada) 15 segundos"

El tiempo siempre debe colocarse en segundos, o sea, para un minuto sería 60 segundos, etc.

En la última página hagan un llamado a script que diga:

reset_timer

¡Y todo quedará listo! De lo demás se encargará el script incluso si no están en el mismo mapa.

DESCARGA EL DEMO DEL SCRIPT

SCRIPT

Código:
#   KTimers XP
#   1.0.0 - 2012-10-30
#   Scripter : Kyonides alias Kyonides-Arkanthos

#   Do you need to setup a growing plant event or anything like that?
#   Would you prefer not to watch the Game System timer on screen?
#   If so, then give this script a shot.

#   INSTRUCTIONS

#      Copy and paste this script in the script editor.
#      Then create a new multi-page event with their graphics and self switches
#      Except for the first page, you should setup a Self Switch as a page
#      starting condition on every single page.
#      Later on leave a comment on the first page:
#           timer 1 refresh 20
#      And just let the script update the event for you even if they're not on
#      the same map. When you come back, the plant will be ripe.
#      To start all over again, add the following script call
#           reset_timer

module KTimers
  TAG = /timer (\d) refresh (\d+)/ # timer (ID) refresh (seconds)
  STAGES = {1 => 3, 2 => 2}
  SWITCHES = ['A', 'B', 'C', 'D']
end

class Timer
  attr_reader :count, :count_max, :stage_max
  attr_accessor :stage
  def initialize(count, count_max, stage, stage_max)
    @count, @count_max, @stage, @stage_max = count, count_max, stage, stage_max
  end

  def reset() @count, @stage = @count_max, -1 end

  def count=(val) @count = val if @count >= 0 end

  def active?() @stage < @stage_max end

  def refresh?() @count == 0 and @stage < @stage_max end
end

class Game_System
  attr_reader :timers
  alias kyon_ktimers_gm_system_init initialize
  alias kyon_ktimers_gm_system_up update
  def initialize
    kyon_ktimers_gm_system_init
    @timers = {}
  end

  def update
    kyon_ktimers_gm_system_up
    @timers.each {|map, hsh| hsh.each {|eid, val| timer = @timers[map][eid]
      timer.count -= 1 if timer.active?
      refresh_events(timer, map, eid) if timer.refresh?} } if !@timers.empty?
  end

  def refresh_events(timer, mapid, eid)
    timer.count, timer.stage = timer.count_max, timer.stage + 1
    key = [mapid, eid, KTimers::SWITCHES[timer.stage]]
    $game_self_switches[key] = true if timer.active?
    ($game_map.events[eid].refresh; return) if mapid == $game_map.map_id
    $game_map.special_events[mapid][eid].refresh
  end

  def reset_timer(mapid, eid, refresh)
    @timers[mapid][eid].reset
    k, stages = [mapid, eid], @timers[mapid][eid].stage_max
    stages.times {|n| $game_self_switches[k + [KTimers::SWITCHES[n]]] = false}
  end
end

class Game_Map
  attr_reader :special_events
  alias kyon_ktimers_gm_init initialize
  alias kyon_ktimers_gm_setup setup
  def initialize
    kyon_ktimers_gm_init
    @special_events = {}
  end

  def setup(map_id)
    kyon_ktimers_gm_setup(map_id)
    setup_special_events(map_id) unless @special_events.include?(map_id)
  end

  def setup_special_events(map_id)
    @special_events[map_id], $game_system.timers[map_id] = {}, {}
    @events.map {|e| next unless e[1].list[0].code == 108
      next unless e[1].list[0].parameters[0].match(KTimers::TAG)
      param, time = e[1].list[0].parameters[0], Graphics.frame_rate
      param.gsub(KTimers::TAG, '')
      time, stages = time * $2.to_i, KTimers::STAGES[$1.to_i]
      $game_system.timers[map_id][e[0]] = Timer.new(time, time, -1, stages)
      @special_events[map_id][e[0]] = e[1] }
  end
end

class Interpreter
  def reset_timer
    map_id, event = $game_map.map_id, get_character(0)
    $game_system.reset_timer(map_id, event.id, true)
    event.refresh
  end
end

kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 397

Gracias : 54

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

Permisos de este foro:
No puedes responder a temas en este foro.