¡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]

[XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por UmbriaChronicles el 2015-09-24, 20:44

Hola a todos.

He estado probando el script Antilag de Near Fantastica, la versión modificada por Soramaro.

Código:
#======================================
# ¦ Anti Event Lag Script
#======================================
# By: Near Fantastica
# Modificado por: Soramaro
# Date: 12.04.06
#======================================

#======================================
# ¦ Game_Map
#======================================

class Game_Map
#--------------------------------------------------------------------------
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
#--------------------------------------------------------------------------
def update
if $game_map.need_refresh
refresh
end
if @scroll_rest > 0
distance = 2 ** @scroll_speed
case @scroll_direction
when 2
scroll_down(distance)
when 4
scroll_left(distance)
when 6
scroll_right(distance)
when 8
scroll_up(distance)
end
@scroll_rest -= distance
end
for event in @events.values
if in_range?(event) or event.trigger == 3 or event.trigger == 4
event.update
end
end
for common_event in @common_events.values
common_event.update
end
@fog_ox -= @fog_sx / 8.0
@fog_oy -= @fog_sy / 8.0
if @fog_tone_duration >= 1
d = @fog_tone_duration
target = @fog_tone_target
@fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
@fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
@fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
@fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
@fog_tone_duration -= 1
end
if @fog_opacity_duration >= 1
d = @fog_opacity_duration
@fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
@fog_opacity_duration -= 1
end
end
end

#======================================
# ¦ Spriteset_Map
#======================================

class Spriteset_Map
#--------------------------------------------------------------------------
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
#--------------------------------------------------------------------------
def update
if @panorama_name != $game_map.panorama_name or
@panorama_hue != $game_map.panorama_hue
@panorama_name = $game_map.panorama_name
@panorama_hue = $game_map.panorama_hue
if @panorama.bitmap != nil
@panorama.bitmap.dispose
@panorama.bitmap = nil
end
if @panorama_name != ""
@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
end
Graphics.frame_reset
end
if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
@fog_name = $game_map.fog_name
@fog_hue = $game_map.fog_hue
if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
end
Graphics.frame_reset
end
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
@panorama.ox = $game_map.display_x / 8
@panorama.oy = $game_map.display_y / 8
@fog.zoom_x = $game_map.fog_zoom / 100.0
@fog.zoom_y = $game_map.fog_zoom / 100.0
@fog.opacity = $game_map.fog_opacity
@fog.blend_type = $game_map.fog_blend_type
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
@fog.tone = $game_map.fog_tone
i=0
for sprite in @character_sprites
if sprite.character.is_a?(Game_Event)
if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
sprite.update
i+=1
end
else
sprite.update
i+=1
end
end
#p i
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.ox = $game_map.display_x / 4
@weather.oy = $game_map.display_y / 4
@weather.update
for sprite in @picture_sprites
sprite.update
end
@timer_sprite.update
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
@viewport3.color = $game_screen.flash_color
@viewport1.update
@viewport3.update
end
end

La verdad es que mejora enormemente los fps de mapas donde hay muchos eventos, pero me he topado con algunos "defectos" algo molestos. Por ejemplo, cuando me acerco a un evento, veo como éste aparece en la pantalla "de repente", osea, como si se creara en el borde de la pantalla. Además, a veces los eventos (por ejemplo un árbol) se me quedan "pegados" a los bordes de la pantalla. Por ejemplo:

Sin antilag:


Y ahora, con antilag:


Fijaros como algunos árboles cercanos se me quedaron "pegados a los bordes de la pantalla" cuando pasé cerca de ellos.

En resumen, me gustaría que el script 1) no dejara los objetos pegados a los bordes y 2) hiciera aparecer los objetos cercanos antes de que la pantalla los alcance, para que no de la sensación de que "aparecen de repente en la pantalla", me explico?

Gracias de antemano por vuestra ayuda :)

UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por Wecoc el 2015-09-24, 22:55

No te he podido arreglar el problema, aún así no es la primera vez que veo algo similar, por lo que por la red debería haber alguna solución.

Lo que sí hice fue cambiar el script para quitarle alguna parte innecesaria.

Código:
#======================================
# ¦ Anti Event Lag Script
#======================================
# By: Near Fantastica
# Modificado por: Soramaro
# Date: 12.04.06
#======================================

module Kernel
  def event_in_range?(event)
    x = $game_map.display_x - 256
    y = $game_map.display_y - 256
    width = $game_map.display_x + 11 * 256
    height = $game_map.display_y + 9 * 256
    return (event.real_x >= x and event.real_y >= y and
      event.real_x <= width and event.real_y <= height)
  end
end

#======================================
# ¦ Game_Map
#======================================

class Game_Map
  def update
    if $game_map.need_refresh
      refresh
    end
    if @scroll_rest > 0
      distance = 2 ** @scroll_speed
      case @scroll_direction
      when 2
        scroll_down(distance)
      when 4
        scroll_left(distance)
      when 6
        scroll_right(distance)
      when 8
        scroll_up(distance)
      end
      @scroll_rest -= distance
    end
    for event in @events.values
      if event_in_range?(event) or event.trigger == 3 or event.trigger == 4
        event.update
      end
    end
    for common_event in @common_events.values
      common_event.update
    end
    @fog_ox -= @fog_sx / 8.0
    @fog_oy -= @fog_sy / 8.0
    if @fog_tone_duration >= 1
      d = @fog_tone_duration
      target = @fog_tone_target
      @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
      @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
      @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
      @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
      @fog_tone_duration -= 1
    end
    if @fog_opacity_duration >= 1
      d = @fog_opacity_duration
      @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
      @fog_opacity_duration -= 1
    end
  end
end

#======================================
# ¦ Spriteset_Map
#======================================

class Spriteset_Map
  def update
    if @panorama_name != $game_map.panorama_name or
      @panorama_hue != $game_map.panorama_hue
      @panorama_name = $game_map.panorama_name
      @panorama_hue = $game_map.panorama_hue
      if @panorama.bitmap != nil
        @panorama.bitmap.dispose
        @panorama.bitmap = nil
      end
      if @panorama_name != ""
        @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
      end
      Graphics.frame_reset
    end
    if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
      @fog_name = $game_map.fog_name
      @fog_hue = $game_map.fog_hue
      if @fog.bitmap != nil
        @fog.bitmap.dispose
        @fog.bitmap = nil
      end
      if @fog_name != ""
        @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
      end
      Graphics.frame_reset
    end
    @tilemap.ox = $game_map.display_x / 4
    @tilemap.oy = $game_map.display_y / 4
    @tilemap.update
    @panorama.ox = $game_map.display_x / 8
    @panorama.oy = $game_map.display_y / 8
    @fog.zoom_x = $game_map.fog_zoom / 100.0
    @fog.zoom_y = $game_map.fog_zoom / 100.0
    @fog.opacity = $game_map.fog_opacity
    @fog.blend_type = $game_map.fog_blend_type
    @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
    @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
    @fog.tone = $game_map.fog_tone
    for sprite in @character_sprites
      if sprite.character.is_a?(Game_Event)
        if event_in_range?(sprite.character) or sprite.character.trigger == 3 or
            sprite.character.trigger == 4
          sprite.update
        end
      else
        sprite.update
      end
    end
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.ox = $game_map.display_x / 4
    @weather.oy = $game_map.display_y / 4
    @weather.update
    for sprite in @picture_sprites
      sprite.update
    end
    @timer_sprite.update
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    @viewport3.color = $game_screen.flash_color
    @viewport1.update
    @viewport3.update
  end
end

Está exactamente igual solo que más corto. El lag también será el mismo.

Creo que los límites del rango son demasiado estrechos. Si los aumentas reducirás un poco el efecto del antilag pero en principio evitarás esos bugs.

Esos rangos se encuentran en éstas líneas:

x = $game_map.display_x - 256
y = $game_map.display_y - 256
width = $game_map.display_x + 11 * 256
height = $game_map.display_y + 9 * 256

Principalmente son ese 11 y ese 9 que no sé mucho de dónde salen en realidad...

Si solo te pasa con eventos grandes como el árbol quizá con una comprobación del tamaño del gráfico del evento sea suficiente, para que el antilag solo tenga efecto sobre eventos más pequeños. No sé cómo afectará al lag esa comprobación de más.

PD.- ¿Por qué usas eventos para los árboles en vez de tiles? ¿O era solo para ilustrar el fallo?

Wecoc
Administrador
Administrador



Créditos 8272

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por UmbriaChronicles el 2015-09-25, 18:05

Wecoc escribió:No te he podido arreglar el problema, aún así no es la primera vez que veo algo similar, por lo que por la red debería haber alguna solución.

Lo que sí hice fue cambiar el script para quitarle alguna parte innecesaria.

Código:
#======================================
# ¦ Anti Event Lag Script
#======================================
# By: Near Fantastica
# Modificado por: Soramaro
# Date: 12.04.06
#======================================

module Kernel
  def event_in_range?(event)
    x = $game_map.display_x - 256
    y = $game_map.display_y - 256
    width = $game_map.display_x + 11 * 256
    height = $game_map.display_y + 9 * 256
    return (event.real_x >= x and event.real_y >= y and
      event.real_x <= width and event.real_y <= height)
  end
end

#======================================
# ¦ Game_Map
#======================================

class Game_Map
  def update
    if $game_map.need_refresh
      refresh
    end
    if @scroll_rest > 0
      distance = 2 ** @scroll_speed
      case @scroll_direction
      when 2
        scroll_down(distance)
      when 4
        scroll_left(distance)
      when 6
        scroll_right(distance)
      when 8
        scroll_up(distance)
      end
      @scroll_rest -= distance
    end
    for event in @events.values
      if event_in_range?(event) or event.trigger == 3 or event.trigger == 4
        event.update
      end
    end
    for common_event in @common_events.values
      common_event.update
    end
    @fog_ox -= @fog_sx / 8.0
    @fog_oy -= @fog_sy / 8.0
    if @fog_tone_duration >= 1
      d = @fog_tone_duration
      target = @fog_tone_target
      @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
      @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
      @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
      @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
      @fog_tone_duration -= 1
    end
    if @fog_opacity_duration >= 1
      d = @fog_opacity_duration
      @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
      @fog_opacity_duration -= 1
    end
  end
end

#======================================
# ¦ Spriteset_Map
#======================================

class Spriteset_Map
  def update
    if @panorama_name != $game_map.panorama_name or
      @panorama_hue != $game_map.panorama_hue
      @panorama_name = $game_map.panorama_name
      @panorama_hue = $game_map.panorama_hue
      if @panorama.bitmap != nil
        @panorama.bitmap.dispose
        @panorama.bitmap = nil
      end
      if @panorama_name != ""
        @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
      end
      Graphics.frame_reset
    end
    if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
      @fog_name = $game_map.fog_name
      @fog_hue = $game_map.fog_hue
      if @fog.bitmap != nil
        @fog.bitmap.dispose
        @fog.bitmap = nil
      end
      if @fog_name != ""
        @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
      end
      Graphics.frame_reset
    end
    @tilemap.ox = $game_map.display_x / 4
    @tilemap.oy = $game_map.display_y / 4
    @tilemap.update
    @panorama.ox = $game_map.display_x / 8
    @panorama.oy = $game_map.display_y / 8
    @fog.zoom_x = $game_map.fog_zoom / 100.0
    @fog.zoom_y = $game_map.fog_zoom / 100.0
    @fog.opacity = $game_map.fog_opacity
    @fog.blend_type = $game_map.fog_blend_type
    @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
    @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
    @fog.tone = $game_map.fog_tone
    for sprite in @character_sprites
      if sprite.character.is_a?(Game_Event)
        if event_in_range?(sprite.character) or sprite.character.trigger == 3 or
            sprite.character.trigger == 4
          sprite.update
        end
      else
        sprite.update
      end
    end
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.ox = $game_map.display_x / 4
    @weather.oy = $game_map.display_y / 4
    @weather.update
    for sprite in @picture_sprites
      sprite.update
    end
    @timer_sprite.update
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    @viewport3.color = $game_screen.flash_color
    @viewport1.update
    @viewport3.update
  end
end

Está exactamente igual solo que más corto. El lag también será el mismo.

Creo que los límites del rango son demasiado estrechos. Si los aumentas reducirás un poco el efecto del antilag pero en principio evitarás esos bugs.

Esos rangos se encuentran en éstas líneas:

   x = $game_map.display_x - 256
   y = $game_map.display_y - 256
   width = $game_map.display_x + 11 * 256
   height = $game_map.display_y + 9 * 256

Principalmente son ese 11 y ese 9 que no sé mucho de dónde salen en realidad...

Si solo te pasa con eventos grandes como el árbol quizá con una comprobación del tamaño del gráfico del evento sea suficiente, para que el antilag solo tenga efecto sobre eventos más pequeños. No sé cómo afectará al lag esa comprobación de más.

PD.- ¿Por qué usas eventos para los árboles en vez de tiles? ¿O era solo para ilustrar el fallo?

Gracias por limpiar el script Wecoc. Efectivamente al modificar esos dos números (los puse ambos en 14) el problema desaparece "casi" completamente, porque extrañamente, no importa cuan altos sean los números, el problema persiste en el lado izquierdo de la pantalla. ¿Qué raro, no?

Respecto a por qué uso eventos, es porque tengo algunos elementos, como los árboles, que uso en muchos mapas con distintos tilesets, así que lo hice para no modificar todos los tilesets.

UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por Wecoc el 2015-09-25, 22:22

Respecto a por qué uso eventos, es porque tengo algunos elementos, como los árboles, que uso en muchos mapas con distintos tilesets, así que lo hice para no modificar todos los tilesets.

Uf... Sinceramente creo que fue mala decisión, es mucho mejor poner los árboles a cada uno de los tilesets, ni que sea añadirlos al final (es lo bueno de tener tilesets sin límite de altura). Luego claro que tenías lag, los eventos son lo que más lag da incluso si están vacíos, y de hecho éste script lo único que hace es dejar de updatearlos si no están en pantalla para que parezca que hay menos. Eso y lo vacía que se ve la screen también me indica que seguramente haces mapas muy grandes, iría bien plantearte si es necesario que lo sean tanto, porque es la segunda causa principal de lag en mapa.

En fin, si usas los árboles como tiles y limitas los eventos a los casos dónde se requieran ya no necesitarás antilag.

Y bueno, si quieres arreglar eso con antilag sí o sí, mi consejo es que busques otro similar y que no tenga ese bug.

Wecoc
Administrador
Administrador



Créditos 8272

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por UmbriaChronicles el 2015-09-26, 10:33

Wecoc escribió:
Respecto a por qué uso eventos, es porque tengo algunos elementos, como los árboles, que uso en muchos mapas con distintos tilesets, así que lo hice para no modificar todos los tilesets.

Uf... Sinceramente creo que fue mala decisión, es mucho mejor poner los árboles a cada uno de los tilesets, ni que sea añadirlos al final (es lo bueno de tener tilesets sin límite de altura). Luego claro que tenías lag, los eventos son lo que más lag da incluso si están vacíos, y de hecho éste script lo único que hace es dejar de updatearlos si no están en pantalla para que parezca que hay menos. Eso y lo vacía que se ve la screen también me indica que seguramente haces mapas muy grandes, iría bien plantearte si es necesario que lo sean tanto, porque es la segunda causa principal de lag en mapa.

En fin, si usas los árboles como tiles y limitas los eventos a los casos dónde se requieran ya no necesitarás antilag.

Y bueno, si quieres arreglar eso con antilag sí o sí, mi consejo es que busques otro similar y que no tenga ese bug.

Lo tendré en cuenta Wecoc. Gracias!

EDIT: Oh, vaya, parece que lo he arreglado toqueteando cosas al azar. En la línea 11 ponía:
x = $game_map.display_x - 256

Simplemente he cambiado ese 256 por 400 y se ha arreglado. Espero no haber estropeado alguna otra cosa... :p

UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por UmbriaChronicles el 2015-10-04, 08:54

Por cierto, ¿cómo puedo crear un comando para activar/desactivar este script cuando yo quiera?

UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por Wecoc el 2015-10-09, 23:15

Activar y desactivar un script de anti-lag no tiene demasiado sentido. Te lo hago porque no es difícil, pero la verdad, si fuera por mí no hubiera siquiera usado el script xD

Código:
#======================================
# ¦ Anti Event Lag Script
#======================================
# By: Near Fantastica
# Modificado por: Soramaro
# Date: 12.04.06
#======================================

module Kernel
  def event_in_range?(event)
    x = $game_map.display_x - 256 * 2
    y = $game_map.display_y - 256 * 2
    width = $game_map.display_x + 256 * 11
    height = $game_map.display_y + 256 * 9
    return (event.real_x >= x and event.real_y >= y and
      event.real_x <= width and event.real_y <= height)
  end
end

class Game_System
  attr_accessor :event_antilag
  alias antievent_ini initialize unless $@
  def initialize
    antievent_ini
    @event_antilag = true
  end
end

#======================================
# ¦ Game_Map
#======================================

class Game_Map
  def update
    if $game_map.need_refresh
      refresh
    end
    if @scroll_rest > 0
      distance = 2 ** @scroll_speed
      case @scroll_direction
      when 2
        scroll_down(distance)
      when 4
        scroll_left(distance)
      when 6
        scroll_right(distance)
      when 8
        scroll_up(distance)
      end
      @scroll_rest -= distance
    end
    for event in @events.values
      if event_in_range?(event) or event.trigger == 3 or event.trigger == 4 or
          $game_system.event_antilag == false
        event.update
      end
    end
    for common_event in @common_events.values
      common_event.update
    end
    @fog_ox -= @fog_sx / 8.0
    @fog_oy -= @fog_sy / 8.0
    if @fog_tone_duration >= 1
      d = @fog_tone_duration
      target = @fog_tone_target
      @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
      @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
      @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
      @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
      @fog_tone_duration -= 1
    end
    if @fog_opacity_duration >= 1
      d = @fog_opacity_duration
      @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
      @fog_opacity_duration -= 1
    end
  end
end

#======================================
# ¦ Spriteset_Map
#======================================

class Spriteset_Map
  def update
    if @panorama_name != $game_map.panorama_name or
      @panorama_hue != $game_map.panorama_hue
      @panorama_name = $game_map.panorama_name
      @panorama_hue = $game_map.panorama_hue
      if @panorama.bitmap != nil
        @panorama.bitmap.dispose
        @panorama.bitmap = nil
      end
      if @panorama_name != ""
        @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
      end
      Graphics.frame_reset
    end
    if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
      @fog_name = $game_map.fog_name
      @fog_hue = $game_map.fog_hue
      if @fog.bitmap != nil
        @fog.bitmap.dispose
        @fog.bitmap = nil
      end
      if @fog_name != ""
        @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
      end
      Graphics.frame_reset
    end
    @tilemap.ox = $game_map.display_x / 4
    @tilemap.oy = $game_map.display_y / 4
    @tilemap.update
    @panorama.ox = $game_map.display_x / 8
    @panorama.oy = $game_map.display_y / 8
    @fog.zoom_x = $game_map.fog_zoom / 100.0
    @fog.zoom_y = $game_map.fog_zoom / 100.0
    @fog.opacity = $game_map.fog_opacity
    @fog.blend_type = $game_map.fog_blend_type
    @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
    @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
    @fog.tone = $game_map.fog_tone
    for sprite in @character_sprites
      if sprite.character.is_a?(Game_Event)
        if event_in_range?(sprite.character) or sprite.character.trigger == 3 or
            sprite.character.trigger == 4 or $game_system.event_antilag == false
          sprite.update
        end
      else
        sprite.update
      end
    end
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.ox = $game_map.display_x / 4
    @weather.oy = $game_map.display_y / 4
    @weather.update
    for sprite in @picture_sprites
      sprite.update
    end
    @timer_sprite.update
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    @viewport3.color = $game_screen.flash_color
    @viewport1.update
    @viewport3.update
  end
end

Para activarlo y desactivarlo usa
$game_system.event_antilag = true
$game_system.event_antilag = false; true


Spoiler:
Recuerda que cuando en una llamada de script igualas algo a false se produce un error, por eso puse lo de "; true" detrás, si estás usando el script bugfix para eso ya no hace falta.


Última edición por Wecoc el 2015-10-11, 17:51, editado 1 vez

Wecoc
Administrador
Administrador



Créditos 8272

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por UmbriaChronicles el 2015-10-11, 15:51

Wecoc escribió:Activar y desactivar un script de anti-lag no tiene demasiado sentido. Te lo hago porque no es difícil, pero la verdad, si fuera por mí no hubiera siquiera usado el script xD

Código:
#======================================
# ¦ Anti Event Lag Script
#======================================
# By: Near Fantastica
# Modificado por: Soramaro
# Date: 12.04.06
#======================================

module Kernel
  def event_in_range?(event)
    x = $game_map.display_x - 256 * 2
    y = $game_map.display_y - 256 * 2
    width = $game_map.display_x + 256 * 11
    height = $game_map.display_y + 256 * 9
    return (event.real_x >= x and event.real_y >= y and
      event.real_x <= width and event.real_y <= height)
  end
end

class Game_System
  attr_accessor :event_antilag
  alias antievent_ini initialize unless $@
  def initialize
    antievent_ini
    @event_antilag = true
  end
end

#======================================
# ¦ Game_Map
#======================================

class Game_Map
  def update
    if $game_map.need_refresh
      refresh
    end
    if @scroll_rest > 0
      distance = 2 ** @scroll_speed
      case @scroll_direction
      when 2
        scroll_down(distance)
      when 4
        scroll_left(distance)
      when 6
        scroll_right(distance)
      when 8
        scroll_up(distance)
      end
      @scroll_rest -= distance
    end
    for event in @events.values
      if event_in_range?(event) or event.trigger == 3 or event.trigger == 4 or
          $game_system.event_antilag == false
        event.update
      end
    end
    for common_event in @common_events.values
      common_event.update
    end
    @fog_ox -= @fog_sx / 8.0
    @fog_oy -= @fog_sy / 8.0
    if @fog_tone_duration >= 1
      d = @fog_tone_duration
      target = @fog_tone_target
      @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
      @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
      @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
      @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
      @fog_tone_duration -= 1
    end
    if @fog_opacity_duration >= 1
      d = @fog_opacity_duration
      @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
      @fog_opacity_duration -= 1
    end
  end
end

#======================================
# ¦ Spriteset_Map
#======================================

class Spriteset_Map
  def update
    if @panorama_name != $game_map.panorama_name or
      @panorama_hue != $game_map.panorama_hue
      @panorama_name = $game_map.panorama_name
      @panorama_hue = $game_map.panorama_hue
      if @panorama.bitmap != nil
        @panorama.bitmap.dispose
        @panorama.bitmap = nil
      end
      if @panorama_name != ""
        @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
      end
      Graphics.frame_reset
    end
    if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
      @fog_name = $game_map.fog_name
      @fog_hue = $game_map.fog_hue
      if @fog.bitmap != nil
        @fog.bitmap.dispose
        @fog.bitmap = nil
      end
      if @fog_name != ""
        @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
      end
      Graphics.frame_reset
    end
    @tilemap.ox = $game_map.display_x / 4
    @tilemap.oy = $game_map.display_y / 4
    @tilemap.update
    @panorama.ox = $game_map.display_x / 8
    @panorama.oy = $game_map.display_y / 8
    @fog.zoom_x = $game_map.fog_zoom / 100.0
    @fog.zoom_y = $game_map.fog_zoom / 100.0
    @fog.opacity = $game_map.fog_opacity
    @fog.blend_type = $game_map.fog_blend_type
    @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
    @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
    @fog.tone = $game_map.fog_tone
    for sprite in @character_sprites
      if sprite.character.is_a?(Game_Event)
        if event_in_range?(sprite.character) or sprite.character.trigger == 3 or
            sprite.character.trigger == 4 or $game_system.event_antilag == false
          sprite.update
        end
      else
        sprite.update
      end
    end
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.ox = $game_map.display_x / 4
    @weather.oy = $game_map.display_y / 4
    @weather.update
    for sprite in @picture_sprites
      sprite.update
    end
    @timer_sprite.update
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    @viewport3.color = $game_screen.flash_color
    @viewport1.update
    @viewport3.update
  end
end

Para activarlo y desactivarlo usa
$game_screen.event_antilag = true
$game_screen.event_antilag = false; true

Spoiler:
Recuerda que cuando en una llamada de script igualas algo a false se produce un error, por eso puse lo de "; true" detrás, si estás usando el script bugfix para eso ya no hace falta.

Gracias Wecoc! Como siempre eres muy amable :) Verás, activar/desactivar este script antilag sí que tiene sentido debido a que si quieres afectar a eventos que están muy alejados del personaje, no puedes a menos que desactives este script. Hay algunos momentos en mi juego en los que hago ese tipo de acciones y, al testear me han dado error si tenía el antilag activo.

UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por UmbriaChronicles el 2015-10-11, 17:17

Ups, me precipité al responder sin probarlo. Me da error al activarlo o desactivarlo! Sweat Además parece que siempre está activado aunque no use el comando de activación...

??????? NoMethodError ???????
undefined method 'event_antilag=' for # Game_Screen:0x99eee20

UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por Wecoc el 2015-10-11, 17:50

Uy, estoy tonto xD No era $game_screen sinó $game_system.
Y por defecto está activado.
Si quieres que por defecto esté desactivado busca ésta línea:
@event_antilag = true
y le pones = false

Wecoc
Administrador
Administrador



Créditos 8272

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por UmbriaChronicles el 2015-10-18, 08:31

Wecoc escribió:Uy, estoy tonto xD No era $game_screen sinó $game_system.
Y por defecto está activado.
Si quieres que por defecto esté desactivado busca ésta línea:
@event_antilag = true
y le pones = false

Gracias!

UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] (Ayuda) Script Antilag NearFantastica Mod. Soramaro

Mensaje por Contenido patrocinado Hoy a las 05:02


Contenido patrocinado


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.