Buscador avanzado
Navegación
 Portal
 Índice
 Miembros
 Perfil
 FAQ
 Buscar
¿Quién está en línea?
En total hay 5 usuarios en línea: 0 Registrados, 0 Ocultos y 5 Invitados

Ninguno

[ Ver toda la lista ]


La mayor cantidad de usuarios en línea fue 30 el Lun Dic 21, 2015 12:37 am.
Últimos temas
» MundoDeluxe cierra - Muchas Gracias a todos
por ZAnimeMaker Miér Mar 02, 2016 3:45 pm

» Recomendaciones para subir aportes
por Xpe Mar Ene 05, 2016 5:00 pm

» dUDA Sobre mi Rpg maker XP en ES
por SketchDeluxe Sáb Ene 02, 2016 7:26 pm

» Arruina el anterior y pide un deseo
por asdseba123 Mar Dic 29, 2015 11:07 pm

» ¿Qué haremos en nuestros días libres?
por bathory123 Sáb Dic 26, 2015 4:02 pm

» Monster Strike (Anime)
por kyonides Sáb Dic 26, 2015 3:33 am

» Galeria de avatares
por bathory123 Vie Dic 25, 2015 6:57 pm

» Feliz Navidad 2015
por kyonides Vie Dic 25, 2015 2:18 am

» Battlers laterales(Ragnarok)
por Maghno Miér Dic 23, 2015 6:57 pm

» Buenas a todos!
por SketchDeluxe Mar Dic 22, 2015 4:36 pm

Publicidad
Afiliados


KTimers XP - Temporizadores para crear Plantas que dan frutos u otras cosas

Ver el tema anterior Ver el tema siguiente Ir abajo

KTimers XP - Temporizadores para crear Plantas que dan frutos u otras cosas

Mensaje por kyonides el Sáb Oct 24, 2015 12:36 pm

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.
 
DESCARGA DEL DEMO
 
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
Usuario VIP
Usuario VIP

Mensajes : 66
Fecha de inscripción : 09/03/2009

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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