Últimos temas
» Pack de Rpg maker XP
por KRiZaLiD Ayer a las 7:17 pm

» (ACE) Succubus Academy
por Kuroneko Gore Ayer a las 4:34 am

» Good Lyca Demo
por nazo493 Vie Sep 22, 2017 6:52 am

» [VX ACE] Black Winter - Terror y Suspenso - Descargalo ya!
por lolachan-desuu Jue Sep 21, 2017 6:30 pm

» Hoseki (Versión de Prueba)
por The Ferydra Jue Sep 21, 2017 4:58 am

» Duda mapeado rpg maker xp
por LordIthacar Jue Sep 21, 2017 4:02 am

» La Historia Infinita (DEMO)
por Chioban Miér Sep 20, 2017 7:35 am

» The Legend of Celestia II: A World of Twilight Shadows Demo
por jlopez_96 Dom Sep 17, 2017 6:27 pm

» Pregunta sobre el RPG Maker Fes ¿está permitido hablar o presentar juegos con este nuevo maker?
por Muzgar Sáb Sep 16, 2017 11:21 am

» Rpg Maker VX Ace: Lampara que se apaguen y enciendan.
por Muzgar Jue Sep 14, 2017 10:39 pm

» Pregunta sobre colaboracion en linea
por Tomate Jue Sep 14, 2017 9:23 pm

» [ACE] Nuevas partes para el generador (solo para faces)
por MargarArts Jue Sep 14, 2017 8:08 pm


KTimers XP

Ver el tema anterior Ver el tema siguiente Ir abajo

KTimers XP

Mensaje por kyonides el Vie Jul 14, 2017 12:51 am

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.
 
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.



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
PJ de Quest
PJ de Quest

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 51
Monedas : 161
Reputación : 1

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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