Últimos temas
» Batallas Pokemon
por maxlobo Hoy a las 7:47 am

» Complecsua
por MoonSoldierMx Ayer a las 12:20 am

» Readvin 1 y 2
por Muzgar Dom Nov 19, 2017 7:42 pm

» Busco ayuda para mi juego, no importa la edad
por Muzgar Dom Nov 19, 2017 3:16 pm

» [VXACE] Las Esferas de Capricornia. Actualizado 17.11.17
por Pocari Dom Nov 19, 2017 12:31 am

» [Vx/Ace] Pack Bioma de Miel
por YggdrasilHerald Vie Nov 17, 2017 4:00 am

» La Historia Infinita (DEMO)
por Chaskarron Miér Nov 15, 2017 12:36 am

» [MV+Completo]Al Ataque - Derrotemos a nuestros enemigos
por hikarukurenai Mar Nov 14, 2017 8:07 pm

» Dekar Chronicles
por KRiZaLiD Mar Nov 14, 2017 7:43 pm

» [Sugerencia] Buenas practicas
por Alojzy Lun Nov 13, 2017 9:56 pm

» [Ace]Script día/noche + reloj
por JAMSDream Dom Nov 12, 2017 1:52 am

» "La tribu" demo
por Chaskarron Vie Nov 10, 2017 10:57 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 : 54
Monedas : 168
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.