EmilyAnnCoons 7 Report post Posted January 14, 2007 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
Marked 197 Report post Posted January 15, 2007 This is a another great script. Although I havent really seen it do that much in the past to be honest. Have you seen it dramatically reduce lag? Share this post Link to post Share on other sites
EmilyAnnCoons 7 Report post Posted January 15, 2007 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
Marked 197 Report post Posted January 15, 2007 My computer is slow anyway...that dosent help. I make heaps of events, and test it fully. Share this post Link to post Share on other sites
EmilyAnnCoons 7 Report post Posted January 15, 2007 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
Xes Rax 0 Report post Posted February 29, 2008 Finally Thax i need it! xD Share this post Link to post Share on other sites
Polraudio 122 Report post Posted February 29, 2008 Please don't necro post please read the rules Here Share this post Link to post Share on other sites
Heretic86 25 Report post Posted May 20, 2012 (edited) 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 May 21, 2012 by Heretic86 Share this post Link to post Share on other sites