设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3489|回复: 9
打印 上一主题 下一主题

[已经解决] VX事件卡的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2013-1-29
帖子
126
跳转到指定楼层
1
 楼主| 发表于 2013-2-13 17:02:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
当一个地图事件多的话会很卡  !
有没有什么脚本可以消除这种状态!
我搜索了一下!但是用上之后都是脚本错误!貌似不兼容还是?

Lv2.观梦者

梦石
0
星屑
466
在线时间
828 小时
注册时间
2009-5-31
帖子
88
来自 2楼
发表于 2013-2-13 20:49:59 | 只看该作者
本人也说不好那个好用 任选其一插入 Main 上方即可………………
RUBY 代码复制
  1. # ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
  2. #■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  3. # ■ MOG - XAS反延迟 VX (V1.0)
  4. #■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  5. # ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
  6. # 作者 Moghunter
  7. # [url]http://www.atelier-rgss.com[/url]
  8. #●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  9. # 开启XAS系统的反延迟。
  10. #==============================================================================
  11. # 用下面这条指令来开启或关闭反延迟系统。
  12. #
  13. # $game_system.anti_lag = true
  14. #==============================================================================
  15. #=begin
  16. module XAS_ANTI_LAG
  17.   #在屏幕外刷新的范围。
  18.   UPDATE_OUT_SCREEN_RANGE = 4
  19. end
  20.  
  21. #==============================================================================
  22. # ■ Game_System
  23. #==============================================================================
  24. class Game_System
  25.   attr_accessor :anti_lag
  26.  
  27. #--------------------------------------------------------------------------
  28. # ● 初始化
  29. #--------------------------------------------------------------------------   
  30.   alias mog_antilag_initialize initialize
  31.   def initialize
  32.       @anti_lag = true
  33.       mog_antilag_initialize
  34.   end  
  35. end
  36.  
  37. #==============================================================================
  38. # ■ Game_Character
  39. #==============================================================================
  40. class Game_Character
  41.  
  42. #--------------------------------------------------------------------------
  43. # ● 检查屏幕上的事件
  44. #--------------------------------------------------------------------------
  45. def update_anti_lag
  46.      unless $game_system.anti_lag
  47.          @can_update = true
  48.          return
  49.      end  
  50.      anti_lag_event_on_screen
  51. end
  52.  
  53. #--------------------------------------------------------------------------
  54. # ● 屏幕上的事件
  55. #--------------------------------------------------------------------------
  56. def anti_lag_event_on_screen
  57.      @can_update = false
  58.      if anti_lag_need_update_out_screen?
  59.         @can_update = true
  60.         return
  61.      end   
  62.      out_screen = XAS_ANTI_LAG::UPDATE_OUT_SCREEN_RANGE
  63.      px = ($game_map.display_x / 256).truncate
  64.      py = ($game_map.display_y / 256).truncate   
  65.      distance_x = @x - px
  66.      distance_y = @y - py
  67.      if distance_x.between?(0 - out_screen, 16 + out_screen) and
  68.         distance_y.between?(0 - out_screen, 12 + out_screen)
  69.         @can_update = true
  70.      end  
  71. end      
  72.  
  73. #--------------------------------------------------------------------------
  74. # ● 屏幕上的事件
  75. #--------------------------------------------------------------------------
  76. def anti_lag_need_update_out_screen?   
  77.      if self.force_update
  78.         return true      
  79.      end   
  80.      if self.battler != nil
  81.         if self.battler.sensor_range >= 17
  82.            return true
  83.         end  
  84.      end  
  85.      return false
  86. end
  87.  
  88. #--------------------------------------------------------------------------
  89. # ● 屏幕外的事件效果
  90. #--------------------------------------------------------------------------  
  91. def execute_effects_out_screen
  92.      return if erased
  93.      if self.battler != nil
  94.         self.erase if self.battler.dead?
  95.      end
  96.      if self.tool_id > 0
  97.         self.action.duration = 1
  98.         $game_system.tools_on_map.delete(self.tool_id)
  99.         self.erase
  100.      end  
  101. end
  102.  
  103. #--------------------------------------------------------------------------
  104. # ● 刷新
  105. #--------------------------------------------------------------------------     
  106.   alias mog_anti_lag_update update
  107.   def update
  108.       unless self.is_a?(Game_Player)
  109.           update_anti_lag
  110.           unless @can_update
  111.               execute_effects_out_screen
  112.               return
  113.           end   
  114.       end
  115.       mog_anti_lag_update
  116.   end
  117. end
  118.  
  119. #==============================================================================
  120. # ■ Sprite Character
  121. #==============================================================================
  122. class Sprite_Character < Sprite_Base
  123.  
  124. #--------------------------------------------------------------------------
  125. # ● 检查是否可以刷新精灵
  126. #--------------------------------------------------------------------------      
  127.   def check_can_update_sprite
  128.       if self.visible and @character.can_update == false
  129.          reset_sprite_effects
  130.       end        
  131.       self.visible = @character.can_update           
  132.   end
  133.  
  134. #--------------------------------------------------------------------------
  135. # ● 重置精灵效果
  136. #--------------------------------------------------------------------------         
  137.   def reset_sprite_effects
  138.       dispose_animation
  139.   end
  140.  
  141. #--------------------------------------------------------------------------
  142. # ● 刷新
  143. #--------------------------------------------------------------------------           
  144.   alias mog_anti_lag_update update
  145.   def update
  146.       if $game_system.anti_lag
  147.          check_can_update_sprite
  148.          return unless self.visible
  149.       end   
  150.       mog_anti_lag_update
  151.   end
  152.  
  153. end  
  154.  
  155. $mog_rgss2_xas_anti_lag = true
  156. #=end




RUBY 代码复制
  1. #============================================================================
  2. # ■ VX_事件图形刷新简化    —— By 诡异の猫
  3. #============================================================================
  4. #    脚本内容: 只刷新视野内的事件图形,改善大地图事件过多卡机情况.
  5. #============================================================================
  6. class Sprite_Character < Sprite_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 判定图形是否再视野内
  9.   #--------------------------------------------------------------------------
  10.   def in_view?
  11.     add_x = (self.width-32)*4 + 384#256
  12.     add_y = self.height*8
  13.     begin_x = $game_map.display_x - add_x
  14.     begin_y = $game_map.display_y - add_y
  15.     end_x = $game_map.display_x + 4352 + add_x
  16.     end_y = $game_map.display_y + 3328 + add_y
  17.     limit_x = $game_map.width * 256 - 256 + add_x
  18.     limit_y = $game_map.height * 256 - 256 + add_y
  19.     char_x = @character.real_x
  20.     char_y = @character.real_y
  21.     if end_x <= limit_x
  22.       return false if char_x < begin_x or char_x > end_x
  23.     end
  24.     if end_y <= limit_y
  25.       return false if char_y < begin_y or char_y > end_y
  26.     end
  27.     if end_x > limit_x and end_y > limit_y
  28.       return false if char_x < begin_x and char_x > end_x - limit_x
  29.       return false if char_y < begin_y and char_y > end_y - limit_y
  30.     end
  31.     return true
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 更新画面
  35.   #--------------------------------------------------------------------------
  36.   def update
  37.     super
  38.     if in_view?
  39.       update_bitmap
  40.       self.visible = (not @character.transparent)
  41.       update_src_rect
  42.       self.x = @character.screen_x
  43.       self.y = @character.screen_y
  44.       self.z = @character.screen_z
  45.       self.opacity = @character.opacity
  46.       self.blend_type = @character.blend_type
  47.       self.bush_depth = @character.bush_depth
  48.     end
  49.     update_balloon
  50.     if @character.animation_id != 0
  51.       animation = $data_animations[@character.animation_id]
  52.       start_animation(animation)
  53.       @character.animation_id = 0
  54.     end
  55.     if @character.balloon_id != 0
  56.       @balloon_id = @character.balloon_id
  57.       start_balloon
  58.       @character.balloon_id = 0
  59.     end
  60.   end
  61. end
  62. #==============================================================================
  63.  
  64.  
  65.  
  66. #==============================================================================
  67. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  68. #==============================================================================




RUBY 代码复制
  1. #==============================================================================
  2. # Módulo AntiLag 超级防卡脚本
  3. #==============================================================================
  4.     module AntiLag
  5.       SPC = Win32API.new("kernel32", "SetPriorityClass", "pi", "i")
  6.       @@high_priority = false
  7.       def self.high_priority ; @@high_priority; end
  8.       def self.high_priority?; @@high_priority; end
  9.       def self.high_priority=(valor)
  10.         return if @@high_priority == valor
  11.         @@high_priority = valor
  12.         if @@high_priority
  13.           SPC.call(-1, 0x80)
  14.           return
  15.         end
  16.         SPC.call(-1, 0x20)
  17.       end
  18.     end
  19.     AntiLag.high_priority = true

点评

对不起!第一个第19行错误.第二个第61行错误.第三个第18行错误  发表于 2013-2-14 12:56
谢谢!我试试!  发表于 2013-2-13 22:49

评分

参与人数 1星屑 +40 收起 理由
怪蜀黍 + 40 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3841
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
3
发表于 2013-2-13 17:08:26 | 只看该作者
事件卡其实没什么办法,试着把事件编少点,或者把地图分成几份。

点评

额 等于没说  发表于 2013-2-13 17:45
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2013-1-29
帖子
126
4
 楼主| 发表于 2013-2-13 17:17:33 | 只看该作者
紫英晓狼1130 发表于 2013-2-13 17:08
事件卡其实没什么办法,试着把事件编少点,或者把地图分成几份。

阁下真是无处不在啊!又见到了!
我搜索过一些帖子,有几个帖子还发了脚本!
说明如果脚本的话还是有可能弄个类似缓冲或者是扩容的状态
虽然搜到的都是脚本错误
但还是有可能的
只是我不甚懂得脚本!所以无能为力了
所以才求救......VX地图的地图,单个地图可以做到500*500,这么大的地图事件怎么可能少,一多的的有卡,那不是没有意义吗?所以我想应该还是有解决方法的!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

死亡颂唱者

梦石
0
星屑
1154
在线时间
1794 小时
注册时间
2011-10-21
帖子
2245

开拓者

5
发表于 2013-2-13 19:16:21 | 只看该作者
试下这个脚本,是即时清除缓存的,直接贴到脚本编辑器中即可
  1. ############################################################################
  2. # RM内存自动清理脚本(XP&VX) v 1.00
  3. # 作者:精灵使者 创意:夏娜 各种压力的猫君
  4. # 按惯例,此类脚本应该放在最上面,就会自动工作。
  5. # 使用方法:直接插入脚本的最上面即可
  6. # 如果感觉卡机,请修改GC_FREQ
  7. ############################################################################
  8.   #--------------------------------------------------------------------------
  9.   # ● 设定部分
  10.   #--------------------------------------------------------------------------
  11. module GC_CLEAR
  12. GC_FREQ = 60 #清理内存的频率(如果卡机,请调大清理频率,默认1秒整理1次)
  13. GC_TRANSITION = true #场景变换的时候是否立即清理,默认开启
  14. end
  15.   #--------------------------------------------------------------------------
  16.   # ● 创建自动清理线程
  17.   #--------------------------------------------------------------------------
  18. if @gc_thread.nil?
  19. @gc_thread = Thread.new{loop{GC.start;sleep(GC_CLEAR::GC_FREQ)}}
  20. end
  21.   #--------------------------------------------------------------------------
  22.   # ● 场景变换时清理部分
  23.   #--------------------------------------------------------------------------
  24. class << Graphics
  25. alias origin_transition transition unless method_defined? :origin_transition
  26. alias origin_freeze freeze unless method_defined? :origin_freeze

  27. def transition(*args)
  28.   origin_transition(*args)
  29.   GC.start if GC_CLEAR::GC_TRANSITION
  30. end
  31. def freeze
  32.   origin_freeze
  33.   GC.start if GC_CLEAR::GC_TRANSITION
  34. end
  35. end
复制代码

点评

这个抱歉...没有发生脚本错误但是貌似效果不大.....我实验对象是一个地图里放着170个事件  发表于 2013-2-14 12:51
缓存的作用就是在多次调用的情况下加速读取的…… 这个是用garbage collector做清理,我记得ruby本来就对不使用的东西做清理(SPRITE BITMAP)  发表于 2013-2-14 03:21
谢谢!我试下!  发表于 2013-2-13 19:39

评分

参与人数 1星屑 +30 收起 理由
怪蜀黍 + 30 谢谢参与

查看全部评分

这家伙很懒,什么也没有留下
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
466
在线时间
828 小时
注册时间
2009-5-31
帖子
88
6
发表于 2013-2-14 13:34:21 | 只看该作者
我用过都没事啊。你新建个空白工程试试

点评

依旧不行确认是VX的?或者是我复制方式不同?弄个复制代码的....项试试.  发表于 2013-2-14 16:55
好的!  发表于 2013-2-14 14:27
回复 支持 反对

使用道具 举报

Lv4.逐梦者

送快递的水表员

梦石
10
星屑
4797
在线时间
3303 小时
注册时间
2012-6-27
帖子
7160

开拓者贵宾

7
发表于 2013-2-16 14:45:17 | 只看该作者
局部刷新脚本
http://rpg.blue/thread-233461-1-1.html
(来自图书馆)

这个试过咩?

点评

出现个诡异的现象...在初始地图正常..但一转换场景地图就41行出错了  发表于 2013-2-17 12:44
苏联菌好啊!  发表于 2013-2-17 12:02
↓累……  发表于 2013-2-16 14:47
很久不见。  发表于 2013-2-16 14:46

评分

参与人数 1星屑 +40 收起 理由
怪蜀黍 + 40 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2013-1-29
帖子
126
8
 楼主| 发表于 2013-2-17 12:02:53 | 只看该作者
Password 发表于 2013-2-16 14:45
局部刷新脚本
http://rpg.blue/thread-233461-1-1.html
(来自图书馆)

点评

把脚本调调位置?(比如放到最后(但要在Main前)或者外来脚本中的最前面?)  发表于 2013-2-17 12:14
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2013-1-29
帖子
126
9
 楼主| 发表于 2013-2-17 12:04:05 | 只看该作者
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
119 小时
注册时间
2012-12-16
帖子
425
10
发表于 2013-2-18 08:23:28 | 只看该作者
天秤 发表于 2013-2-17 12:04
http://rpg.blue/forum.php?mod=viewthread&tid=284953&page=1#pid2115444  这个游戏第四关超卡! ...

话说应该很简单啊,你是不是设成很多个事件自动执行了?应该并列执行啊!

点评

我在1个地图上设置了150多个事件也没有并行处理..只是随机移动!  发表于 2013-2-18 12:36

评分

参与人数 1星屑 +1 收起 理由
怪蜀黍 + 1 我不赞同

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-28 01:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表