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

Project1

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

[已经解决] 防止卡机脚本syntax Error出错如何解决

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2015-1-18
帖子
151
跳转到指定楼层
1
发表于 2015-4-5 03:48:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 电脑仔 于 2015-4-5 03:51 编辑


脚本如下:


RUBY 代码复制
  1. 防止事件过多卡机
  2.  
  3. 作者
  4. Near Fantastica
  5.   版本与更新
  6. 200512
  7.  
  8. ver 3
  9.  
  10. 相关网址
  11.   点此进入讨论贴
  12.   范例工程
  13.  
  14.  
  15.  
  16. 脚本功能
  17. 防止事件卡机。介绍如下:
  18.  
  19. This script uses my view range script to limit which events are being updated... therefore a large map with lots of events 300 + can still run at 40 fps... this is probably not a final version as I can think of a few more ways to limit event lag...
  20.  
  21. “这个脚本用我的视野范围去限制刷新的事件,因此一个有300多个事件的大地图仍然可以运行在40的帧速率。这可能不是最后一个版本,我还在考虑更多的方法减少事件的拖慢”
  22.  
  23. 使用方法
  24. main前插入脚本即可
  25.  
  26. 注意!只有屏幕内的事件才会刷新。自动事件请注意放的位置
  27.  
  28. 其它
  29. 没什么了
  30.  
  31.  
  32.  
  33.  
  34. --------------------------------------------------------------------------------
  35.  
  36.  
  37.  
  38.    脚本内容
  39.  
  40. #======================================
  41. # ■ Anti Event Lag Script
  42. #======================================
  43. #  By: Near Fantastica
  44. #   Date: 12.06.05
  45. #   Version: 3
  46. #======================================
  47.  
  48. #======================================
  49. # ■ Game_Map
  50. #======================================
  51.  
  52. class Game_Map
  53. #--------------------------------------------------------------------------
  54. def in_range?(object)
  55. screne_x = $game_map.display_x
  56. screne_x -= 256
  57. screne_y = $game_map.display_y
  58. screne_y -= 256
  59. screne_width = $game_map.display_x
  60. screne_width += 2816
  61. screne_height = $game_map.display_y
  62. screne_height += 2176
  63. return false if object.real_x <= screne_x
  64. return false if object.real_x >= screne_width
  65. return false if object.real_y <= screne_y
  66. return false if object.real_y >= screne_height
  67. return true
  68. end
  69. #--------------------------------------------------------------------------
  70. def update
  71. if $game_map.need_refresh
  72.    refresh
  73. end
  74. if @scroll_rest > 0
  75.    distance = 2 ** @scroll_speed
  76.    case @scroll_direction
  77.    when 2
  78.      scroll_down(distance)
  79.    when 4
  80.      scroll_left(distance)
  81.    when 6  
  82.      scroll_right(distance)
  83.    when 8  
  84.      scroll_up(distance)
  85.    end
  86.    @scroll_rest -= distance
  87. end
  88. for event in @events.values
  89.    if in_range?(event) or event.trigger == 3 or event.trigger == 4
  90.      event.update
  91.    end
  92. end
  93. for common_event in @common_events.values
  94.    common_event.update
  95. end
  96. @fog_ox -= @fog_sx / 8.0
  97. @fog_oy -= @fog_sy / 8.0
  98. if @fog_tone_duration >= 1
  99.    d = @fog_tone_duration
  100.    target = @fog_tone_target
  101.    @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
  102.    @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
  103.    @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
  104.    @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
  105.    @fog_tone_duration -= 1
  106. end
  107. if @fog_opacity_duration >= 1
  108.    d = @fog_opacity_duration
  109.    @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
  110.    @fog_opacity_duration -= 1
  111. end
  112. end
  113. end
  114.  
  115. #======================================
  116. # ■ Spriteset_Map
  117. #======================================
  118.  
  119. class Spriteset_Map
  120. #--------------------------------------------------------------------------
  121. def in_range?(object)
  122. screne_x = $game_map.display_x
  123. screne_x -= 256
  124. screne_y = $game_map.display_y
  125. screne_y -= 256
  126. screne_width = $game_map.display_x
  127. screne_width += 2816
  128. screne_height = $game_map.display_y
  129. screne_height += 2176
  130. return false if object.real_x <= screne_x
  131. return false if object.real_x >= screne_width
  132. return false if object.real_y <= screne_y
  133. return false if object.real_y >= screne_height
  134. return true
  135. end
  136. #--------------------------------------------------------------------------
  137. def update
  138. if @panorama_name != $game_map.panorama_name or
  139.     @panorama_hue != $game_map.panorama_hue
  140.    @panorama_name = $game_map.panorama_name
  141.    @panorama_hue = $game_map.panorama_hue
  142.    if @panorama.bitmap != nil
  143.      @panorama.bitmap.dispose
  144.      @panorama.bitmap = nil
  145.    end
  146.    if @panorama_name != ""
  147.      @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  148.    end
  149.    Graphics.frame_reset
  150. end
  151. if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  152.    @fog_name = $game_map.fog_name
  153.    @fog_hue = $game_map.fog_hue
  154.    if @fog.bitmap != nil
  155.      @fog.bitmap.dispose
  156.      @fog.bitmap = nil
  157.    end
  158.    if @fog_name != ""
  159.      @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  160.    end
  161.    Graphics.frame_reset
  162. end
  163. @tilemap.ox = $game_map.display_x / 4
  164. @tilemap.oy = $game_map.display_y / 4
  165. @tilemap.update
  166. @panorama.ox = $game_map.display_x / 8
  167. @panorama.oy = $game_map.display_y / 8
  168. @fog.zoom_x = $game_map.fog_zoom / 100.0
  169. @fog.zoom_y = $game_map.fog_zoom / 100.0
  170. @fog.opacity = $game_map.fog_opacity
  171. @fog.blend_type = $game_map.fog_blend_type
  172. @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  173. @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  174. @fog.tone = $game_map.fog_tone
  175. i=0
  176. for sprite in @character_sprites
  177.    if sprite.character.is_a?(Game_Event)
  178.      if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
  179.        sprite.update
  180.        i+=1
  181.      end
  182.    else
  183.      sprite.update
  184.      i+=1
  185.    end
  186. end
  187. #p i
  188. @weather.type = $game_screen.weather_type
  189. @weather.max = $game_screen.weather_max
  190. @weather.ox = $game_map.display_x / 4
  191. @weather.oy = $game_map.display_y / 4
  192. @weather.update
  193. for sprite in @picture_sprites
  194.    sprite.update
  195. end
  196. @timer_sprite.update
  197. @viewport1.tone = $game_screen.tone
  198. @viewport1.ox = $game_screen.shake
  199. @viewport3.color = $game_screen.flash_color
  200. @viewport1.update
  201. @viewport3.update
  202. end
  203. end
  204.  
  205. 复制代码

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-4-5 05:59:18 | 只看该作者
把脚本扔进去就好了,别把帖子内容也复制进去啊……

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2015-1-18
帖子
151
3
 楼主| 发表于 2015-4-5 20:57:18 | 只看该作者
谢谢,问题已解决
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-20 06:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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