Jump to content
New account registrations are disabed. This website is now an archive. Read more here.

Recommended Posts

This script helps reduce event lag (lag you get from having several events on the map) by a LOT let me tell you. I use it cause it helps reduce the lag in my dungeons and such...only place it hasn't helped is in the South of Shilan area of my game so far...As with every other script, just copy it below Scene_Debug and above Main.

 

#======================================
# ■ Anti Event Lag Script
#======================================
#  By: Near Fantastica
#   Date: 12.06.05
#   Version: 3
#======================================

#======================================
# ■ 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 @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

Share this post


Link to post
Share on other sites

It reduced lag a bit in my dungeons and in the Desert of Illusions...but it doesn't work well in the South of Shilan...at least for me anyway...I wonder what other people have had...

Share this post


Link to post
Share on other sites

heh...yeah, having a slow computer doesn't help much...also, for anyone who hasn't noticed yet, the god mode script is edited to be permanent now. It doesn't turn off and cause the game to glitch anymore when you quit and reload.

Share this post


Link to post
Share on other sites

I found a nasty bug in this script, but fixed it.

 

  def update
  if @scroll_rest > 0

 

This needs to be

 def update
# Refresh map if necessary
if $game_map.need_refresh
  refresh
end
# If scrolling  
if @scroll_rest > 0

 

Minor oversight. What happens is this. If you have an event that has multiple pages, each page is dependant on switch conditions. When those switch conditions are changed, each event needs to be checked again. Excluding that snippit of code prevented Events from being able to change Pages correctly. Events are only refreshed when they need to be, and changing game switches is a valid reason to refresh each event.

 

I know this is a Necropost, however, I feel the importance of that single minor glitch can cause too many issues for anyone who uses this script.

 

---

 

Edit:

 

This script is INCREDIBLE! I kid you not! In order to push it to its limit, I made a map and literally had 999 Events all moving around all at once, and managed to maintain 100% full speed framerate! Dont believe me? Make a map with 999 Moving Events and try it with, and without this script! If you can get more than one frame per second, good for you, but not everyones computer is that fast! I was getting a frame every 4 seconds!

 

Anyway, I went back and double checked, and did manage to come across another bug. It happens with Off Screen Event Movement that needs to occur. Such as an Event (NPC Game Character) walking or doings something off screen. Easy solution, but required some extra code. I changed it around a bit so that any time you use "Set Move Route", for example, in a Cutscene, it will automatically ALWAYS be Updated with no funky stuff from you.

 

Now for the funky stuff. The other thing I did was allowed for a "Naming Parameter" for Events that ALWAYS need to be up to date. This might be something like an NPC that is following a specific pattern. It might appear strange to a Player if the NPC was supposed to appear to be doing something specific. This is EXTREMELY USEFUL for Events that move On and Off the screen.

 

If you want to use the Naming Parameter, change the Name of an Event to include the string "\al_update". So, for example, "EV001" would become "EV001\al_update", without the Quotes.

 

I've been having a bit of difficulty using the [ CODE ] tags for the Site, so I uploaded it as a Text File. If you want it, grab it from the Link below. Near Fantastica deserves all the credit, I just fixed a couple things that I thought would cause trouble.

 

All Legal Stuff belongs to Near Fantastica, I dont really care if you give me credit or not.

 

MODIFIED ANTI LAG SCRIPT

http://www.775.net/~heretic/downloads/rmxp/anti-lag.txt

Edited by Heretic86

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...