Project1

标题: 800*600分辨率 完美版 [打印本页]

作者: 不是马甲    时间: 2010-12-5 15:34
标题: 800*600分辨率 完美版
本帖最后由 不是马甲 于 2010-12-5 15:57 编辑

此版本将柳柳的1024的脚本修改为了800的脚本  并使用了苏紫大大扩展dll之类   现在将修改后的工程发布给需要的人使用
另外 对 八云紫 大大表示由衷的感谢

Project.rar (794.4 KB, 下载次数: 5375)
在刚开始的时候发现了一个漏洞 现在已经修补好了 如果大家在用的时候发现有漏洞 希望告诉马甲

http://rpg.blue/thread-162317-1-1.html
作者: 伊湛    时间: 2010-12-8 18:36
你好 请问 如果在我以前做过的游戏里 修改要怎样修改呢

因为游戏做了一半了 又想重新做过…… 但又想换个大点的分辨率
作者: 不是马甲    时间: 2010-12-10 12:10
回复 伊湛 的帖子

能说详细一点吗
作者: 伊湛    时间: 2010-12-10 12:17
回复 不是马甲 的帖子

就是 貌似我把你那个工程里的 800脚本复制进去我的游戏  分辨率也没变大

想请教下 加哪800脚本之外 还要修改些什么才能换分辨率
作者: 不是马甲    时间: 2010-12-10 12:27
回复 伊湛 的帖子

将 Game。exe   user33.dll   kernel33.dll  RGSS103J.dll Game。ini  全部替换
作者: eve592370698    时间: 2011-2-17 22:34
标题: 请注意这个模板对显卡要求高
本帖最后由 eve592370698 于 2011-4-6 20:33 编辑

这个模板分辨率变更系统有个很大的缺陷,就是当您的地图太大,而且结构负责,里面并行处理的事件比较多的时候,人物行走及屏幕转动会特别卡,可以说,是自身的动画加速缺陷导致的。我就回答一下楼下两位的问题吧:
不能全屏使用,因为核心还是640×480,这里本质上是对显示做了增强扩展,这原理,我解释不是特别清楚,大概跟32位windows2003和2008支持32G内存的原理差不多吧;
渐变这方面,是脚本本身已经到位了,但是显示增强扩展组件不够导致的。

最大的麻烦,不兼容ZTBS战斗系统!这个核心问题我已经解决了!请放心使用吧:
http://rpg.blue/thread-173201-1-1.html
说白了就是给ZTBS加入扩展功能。

ZTBS战旗系统86.rar

1.15 MB, 下载次数: 0

800×600分辨率扩展的ZTBS,凑合着用吧,等以后有时间我再更新。


作者: wbsy8241    时间: 2011-2-17 22:49
最主要的全屏后依然只有640*480
作者: R-零    时间: 2011-2-19 15:59
渐变的问题也解决了吗?
作者: eve592370698    时间: 2011-3-16 14:47
标题: 不是马甲,希望您能积极把脚本好好弄弄
本帖最后由 eve592370698 于 2011-4-10 18:49 编辑

该作者目前上高中,要迎战高考,没办法。目前需要DX3D加速才行。
我公布一下测试结果吧:
测试地图:图块自己做的,事件60个,其中1个是带有自动消除事件的自动执行事件,还有1个事记录角色坐标及设置背景音乐、场所移动的并行处理事件。
台式机:
CPU:AMD 速龙4200双核,1G内存,Nvidia独立显卡512M,操作系统XP,桌面分辨率1280×1024,32位真彩色当您设置的图块优先级比较复杂的时候,人物行走特别卡。打开任务管理器,CPU使用率40%,内存占用64M左右。DX9测试正常。
测试地图:《寻找神龙测试版》合并的王宫内部(图块139×133,开启记录角色坐标变量的并行事件时候超级卡),世界大地图(有航海和飞空脚本,动画效果欠佳)。FPS才15
笔记本:
CPU:Intel Core2 T5870,2G内存,显卡ATI M R HD4300显存1G,桌面分辨率1366×768,16位增强色测试如上地图:
XP事儿流畅,时而迟钝,FPS能达到25
windows7略比XP好一点点。但游戏时间长了也会卡屏。

目前找到了一个RGE系统的800×600,但是因为使用的脚本不用,所以不支持外来脚本
http://rpg.blue/forum.php?mod=vi ... 1&highlight=rge

补充一下,我找到了个卡屏的解决方法,请看此脚本,从CPU提速和防卡经过加工处理过来的:
不能照搬的原脚本位置
http://rpg.blue/forum.php?mod=vi ... =%E5%8A%A0%E9%80%9F
还有,就是这个脚本跟您的CPU、驱动及系统设置有关系,经测试,AMD的CPU似乎不太好使
  1. =begin

  2. ★首先,请不要在单核CPU,低于768M内存的电脑上上使用此脚本!否则死机概不负责

  3. ☆其次,请不要使用该脚本和后台运行加以改造来无限占用系统资源,否则会引起死机!

  4.   做这个脚本目的是在您的CPU允许的情况下,当您的一个地图设置事件过多而卡机时
  5. 通过适当提高CPU使用率来阻止卡机的发生。请注意:

  6.   该脚本针对的是800×600等扩展分辨率的脚本设计的,因为一个地图超过30个事件
  7. 时,使用扩展分辨率脚本就会出现卡机状况,为了能够像过去那样使用故添加此项。刚切
  8. 换到容易卡机的地图时需要几秒钟的事件等待系统反应过来,所以不要太着急!但是使用
  9. 加速也未必能像正常运行那样达到40FPS,也就是增加10个FPS,例如不加入此脚本位20
  10. FPS的,加入此脚本也就能达到25~35FPS。  

  11. 设置CPU线程
  12. =end
  13. class Antilag_Settings
  14.   
  15.   attr_accessor :event
  16.   attr_accessor :max_cpu_utilization
  17.   attr_accessor :cpu_tolerance
  18.   # 初始化对象
  19.   #-----------------------------------------------------------------------------
  20.   def initialize
  21.     @event = true
  22.     @high_priority = true
  23.     @max_cpu_utilization = 60
  24.     #这个是控制优先级。
  25.     @cpu_tolerance = 20
  26.     @SetPriorityClass = Win32API.new('kernel32', 'SetPriorityClass',
  27.                                      ['p', 'i'], 'i')
  28.     @GetProcessTimes = Win32API.new('kernel32', 'GetProcessTimes',
  29.                                     ['i','p','p','p','p'], 'i')
  30.   end
  31.   # 更改优先级 on(true)/off(false)
  32.   #-----------------------------------------------------------------------------
  33.   def high_priority=(value)
  34.     @high_priority = value

  35.     if @high_priority
  36.       @SetPriorityClass.call(-1, 0x00000060) # 高质量
  37.       # 设置CPU优先级80为高。110为实时。20为标准。
  38.     else
  39.       @SetPriorityClass.call(-1, 0x00000020) # 标准优先
  40.     end
  41.   end
  42.   #-----------------------------------------------------------------------------
  43.   # 返回现在的CPU使用率
  44.   #-----------------------------------------------------------------------------
  45.   def get_cpu_utilization
  46.     # 使用API获取内核用户调用时间
  47.     creation_time = '0' * 10
  48.     exit_time = '0' * 10
  49.     kernel_time = '0' * 10
  50.     user_time = '0' * 10
  51.     @GetProcessTimes.call(-1, creation_time, exit_time, kernel_time, user_time)
  52.     kernel_time = kernel_time.unpack('l2')
  53.     user_time = user_time.unpack('l2')
  54.     kernel_time = kernel_time[0] + kernel_time[1]
  55.     user_time = user_time[0] + user_time[1]
  56.     # 计算不同的CPU使用率
  57.     if @old_time != nil
  58.       timer_difference = Time.new - @old_timer
  59.       time_difference = kernel_time + user_time - @old_time
  60.       result = time_difference / timer_difference / 100000
  61.     else
  62.       result = $antilag.max_cpu_utilization
  63.     end
  64.     # 节约CPU使用(还是计算)
  65.     @old_timer = Time.new
  66.     @old_time = kernel_time + user_time
  67.     return result
  68.   end
  69. end
  70. $antilag = Antilag_Settings.new
  71. #==============================================================================
  72. # ■ Scene_Map
  73. #------------------------------------------------------------------------------
  74. #  处理地图画面的类。
  75. #==============================================================================
  76. class Scene_Map
  77.   #-----------------------------------------------------------------------------
  78.   # 刷新模块, 增加平滑帧数
  79.   #-----------------------------------------------------------------------------
  80.   alias f0tzis_anti_lag_scene_map_update update
  81.   def update
  82.     f0tzis_anti_lag_scene_map_update
  83.     if Graphics.frame_count % 20 == 0 and $antilag.max_cpu_utilization <= 100
  84.       # 计算CPU最大限度利用和当前的利用率
  85.       abs = $antilag.max_cpu_utilization - $antilag.get_cpu_utilization
  86.       # 如果改变帧速率的差异
  87.       if abs.abs >= $antilag.max_cpu_utilization * $antilag.cpu_tolerance/100.0
  88.         Graphics.frame_rate = [[10, Graphics.frame_rate + abs / 2].max, 40].min
  89.       end
  90.     end
  91.   end
  92. end
  93. #==============================================================================
  94. # Game_Event Class
  95. # 处理事件
  96. #===============================================================================
  97. class Game_Event
  98.   # 这里不需要理会
  99.   def in_range?
  100.         
  101.     # 如果TRUE 返回一个虚拟的事件
  102.     # 自动启动/并行处理事件或者一个空的事件
  103.     if not $antilag.event or (@trigger == 3 or @trigger == 4 or
  104.     (@list != nil and @list[0].code == 108 and @list[0].parameters == ['']))
  105.       return true
  106.     end
  107.          
  108.     screne_x = $game_map.display_x
  109.     screne_x -= 256
  110.     screne_y = $game_map.display_y
  111.     screne_y -= 256
  112.     screne_width = $game_map.display_x
  113.     screne_width += 2816
  114.     screne_height = $game_map.display_y
  115.     screne_height += 2176
  116.    
  117.     return false if @real_x <= screne_x
  118.     return false if @real_x >= screne_width
  119.     return false if @real_y <= screne_y
  120.     return false if @real_y >= screne_height
  121.     return true
  122.             
  123.   end
  124.   #-----------------------------------------------------------------------------
  125.   # ● 更新画面
  126.   #-----------------------------------------------------------------------------
  127.   alias f0tzis_anti_lag_game_event_update update
  128.   def update
  129.     return if not self.in_range?      
  130.     f0tzis_anti_lag_game_event_update
  131.   end
  132.   
  133. end

  134. #===============================================================================
  135. # ■ Game_Map
  136. #
  137. # 处理地图的类。包含卷动以及可以通行的判断功能。
  138. #===============================================================================
  139. class Game_Map
  140.   def update
  141.     # 还原必要的地图
  142.     if $game_map.need_refresh
  143.       refresh
  144.     end
  145.      # 滚动中的情况下
  146.     if @scroll_rest > 0
  147.       # 滚动速度变化为地图坐标系的距离
  148.       distance = 2 ** @scroll_speed
  149.       # 执行滚动
  150.       case @scroll_direction
  151.       when 2    # 下  
  152.         scroll_down(distance)
  153.       when 4    # 左  
  154.         scroll_left(distance)
  155.       when 6    # 右
  156.         scroll_right(distance)
  157.       when 8    # 上
  158.         scroll_up(distance)
  159.       end
  160.       # 滚动距离的减法运算
  161.       @scroll_rest -= distance
  162.     end
  163.     # 更新地图事件
  164.     for event in @events.values
  165.       if in_range?(event) or event.trigger == 3 or event.trigger == 4
  166.         event.update
  167.       end
  168.     end
  169.     # 更新公共事件
  170.     for common_event in @common_events.values
  171.       common_event.update
  172.     end
  173.     # 处理雾的滚动
  174.     @fog_ox -= @fog_sx / 8.0
  175.     @fog_oy -= @fog_sy / 8.0
  176.     # 处理雾的色调变更
  177.     if @fog_tone_duration >= 1
  178.       d = @fog_tone_duration
  179.       target = @fog_tone_target
  180.       @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
  181.       @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
  182.       @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
  183.       @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
  184.       @fog_tone_duration -= 1
  185.     end
  186.     # 处理雾的不透明度变更
  187.     if @fog_opacity_duration >= 1
  188.       d = @fog_opacity_duration
  189.       @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
  190.       @fog_opacity_duration -= 1
  191.     end
  192.   end
  193.   def in_range?(object)
  194.     diff_x = ($game_map.display_x - object.real_x).abs  # 绝对值
  195.     diff_y = ($game_map.display_x - object.real_x).abs  # 绝对值
  196.     width = 128 * 24   # size * tiles
  197.     height = 128 * 19  # size * tiles
  198.     return !((diff_x > width) or (diff_y > height))
  199.   end
  200. end
  201. #===============================================================================
  202. #  ■ Spriteset_Map
  203. #
  204. #  处理地图画面活动块和元件的类。
  205. #===============================================================================
  206. class Spriteset_Map
  207.   #--------------------------------------------------------------------------
  208.   # ● 刷新画面
  209.   #--------------------------------------------------------------------------
  210.   def update
  211.     # 远景与现在的情况有差异发情况下
  212.     if @panorama_name != $game_map.panorama_name or  @panorama_hue != $game_map.panorama_hue
  213.       @panorama_name = $game_map.panorama_name
  214.       @panorama_hue = $game_map.panorama_hue
  215.       if @panorama.bitmap != nil
  216.         @panorama.bitmap.dispose
  217.         @panorama.bitmap = nil
  218.         @panorama2.bitmap.dispose
  219.         @panorama2.bitmap = nil
  220.         @panorama3.bitmap.dispose
  221.         @panorama3.bitmap = nil
  222.         @panorama4.bitmap.dispose
  223.         @panorama4.bitmap = nil
  224.       end
  225.       if @panorama_name != ""
  226.         @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  227.         @panorama2.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  228.         @panorama3.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  229.         @panorama4.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  230.       end
  231.       Graphics.frame_reset
  232.     end
  233.     # 雾与现在的情况有差异的情况下
  234.     if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  235.       @fog_name = $game_map.fog_name
  236.       @fog_hue = $game_map.fog_hue
  237.     if @fog.bitmap != nil
  238.       @fog.bitmap.dispose
  239.       @fog.bitmap = nil
  240.       @fog2.bitmap.dispose
  241.       @fog2.bitmap = nil
  242.       @fog3.bitmap.dispose
  243.       @fog3.bitmap = nil
  244.       @fog4.bitmap.dispose
  245.       @fog4.bitmap = nil
  246.     end
  247.     if @fog_name != ""
  248.       @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  249.       @fog2.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  250.       @fog3.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  251.       @fog4.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  252.     end
  253.       Graphics.frame_reset
  254.     end
  255.     # 刷新元件地图
  256.     @tilemap.ox = $game_map.display_x / 4
  257.     @tilemap.oy = $game_map.display_y / 4
  258.     @tilemap.update
  259.     @tilemap2.ox = @tilemap.ox
  260.     @tilemap2.oy = @tilemap.oy
  261.     @tilemap2.update
  262.     @tilemap3.ox = @tilemap.ox
  263.     @tilemap3.oy = @tilemap.oy + 480
  264.     @tilemap3.update
  265.     @tilemap4.ox = @tilemap.ox
  266.     @tilemap4.oy = @tilemap.oy + 480
  267.     @tilemap4.update
  268.     # 刷新远景平面
  269.     @panorama.ox = $game_map.display_x / 8
  270.     @panorama.oy = $game_map.display_y / 8
  271.     @panorama2.ox = @panorama.ox
  272.     @panorama2.oy = @panorama.oy
  273.     @panorama3.ox = @panorama.ox
  274.     @panorama3.oy = @panorama.oy + 480
  275.     @panorama4.ox = @panorama.ox
  276.     @panorama4.oy = @panorama.oy + 480
  277.     # 刷新雾平面
  278.     @[email protected][email protected][email protected]_x = $game_map.fog_zoom / 100.0
  279.     @[email protected][email protected][email protected]_y = $game_map.fog_zoom / 100.0
  280.     @[email protected][email protected][email protected] = $game_map.fog_opacity
  281.     @[email protected][email protected][email protected]_type = $game_map.fog_blend_type
  282.     @fog4.tone = @fog3.tone = @fog2.tone = @fog.tone = $game_map.fog_tone
  283.     @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  284.     @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  285.     @fog2.ox = @fog.ox #+ 140#*@fog.zoom_x
  286.     @fog2.oy = @fog.oy
  287.     @fog3.ox = @fog.ox
  288.     @fog3.oy = @fog.oy + 480
  289.     @fog4.ox = @fog.ox
  290.     @fog4.oy = @fog.oy + 480
  291.     # 刷新角色活动块
  292.     for sprite in @character_sprites
  293.       sprite.update
  294.     end
  295.     # 刷新天候图形
  296.     @weather.type = $game_screen.weather_type
  297.     @weather.max = $game_screen.weather_max
  298.     @weather.ox = $game_map.display_x / 4
  299.     @weather.oy = $game_map.display_y / 4
  300.     @weather.update  
  301.     # 刷新图片
  302.     for sprite in @picture_sprites
  303.       sprite.update
  304.     end
  305.     # 刷新计时器块
  306.     @timer_sprite.update
  307.     # 设置画面的色调与震动位置
  308.     $viewport1.tone = $game_screen.tone
  309.     $viewport1.ox = $game_screen.shake
  310.     $viewport4.tone = $game_screen.tone
  311.     $viewport4.ox = $game_screen.shake+640
  312.     $viewport5.tone = $game_screen.tone
  313.     $viewport5.ox = $game_screen.shake  
  314.     $viewport6.tone = $game_screen.tone
  315.     $viewport6.ox = $game_screen.shake+640
  316.     # 设置画面的闪烁色
  317.     @viewport3.color = $game_screen.flash_color
  318.     # 刷新显示端口
  319.     $viewport1.update
  320.     @viewport3.update
  321.     $viewport4.update
  322.     $viewport5.update
  323.     $viewport6.update
  324.   end
  325.   def in_range?(object)
  326.     diff_x = ($game_player.real_x - object.real_x).abs  # 绝对值
  327.     diff_y = ($game_player.real_y - object.real_y).abs  # 绝对值
  328.     width = 128 * 24   # size * tiles
  329.     height = 128 * 19  # size * tiles
  330.     return !((diff_x > width) or (diff_y > height))
  331.   end
  332. end
  333. #===============================================================================
  334. # ■ Interpreter
  335. #
  336. # 执行事件命令的解释器
  337. #===============================================================================
  338. class Interpreter
  339.   #-----------------------------------------------------------------------------
  340.   # * 脚本
  341.   #-----------------------------------------------------------------------------
  342.   def command_355
  343.     # script 设置第一行
  344.     script = @list[@index].parameters[0] + "\n"
  345.     # 循环
  346.     loop do
  347.       # 下一个事件指令在脚本 2 行以上的情况下
  348.       if @list[@index+1].code == 655
  349.         # 添加到 script 2 行以后
  350.         script += @list[@index+1].parameters[0] + "\n"
  351.       # 事件指令不在脚本 2 行以上的情况下
  352.       else
  353.         # 中断循环
  354.         break
  355.       end
  356.       # 推进索引
  357.       @index += 1
  358.     end
  359.     # 评价
  360.     result = eval(script)
  361.     #---------------------------------------------------------------------------
  362.     # 返回值为 false 的情况下
  363.     # NEW: the last word of the code mustnt be false!
  364.     #---------------------------------------------------------------------------
  365.     if result == false and script[script.length-6..script.length-2] != 'false'
  366.       # 结束
  367.       return false
  368.     end
  369.     # 继续
  370.     return true
  371.   end
  372. end
  373. #咳咳少了几行代码
  374. $antilag.max_cpu_utilization = 75                              
  375. $antilag.cpu_tolerance = 20      
  376. $antilag.high_priority = true   
  377. $antilag.event = true
  378. #自动回滚标准
  379. if $antilag.max_cpu_utilization>=100
  380.        $antilag.max_cpu_utilization=70
  381. end                 # 分歧结束。  
复制代码
为了从根本上防止卡屏,您使用此模板如果没有自动执行和并行处理的事件,一个地图最多容纳45个,如果有并行处理事件,那一个地图不能超过30个。
作者: 不是马甲    时间: 2011-4-4 08:09
回复 eve592370698 的帖子

额,没到15天,不算挖坟吧(虽然就剩一天了)。
因为此ID暂时不用了,所以一直没有看见。我更换为 零度 ID 有事请通过站内内短信发给 零度
今天偶然看了一下,像上面一位说的渐变 好像在 主站内可以搜到800*600的渐变。
我们很多人会感觉到640*480太小了,但xp要用800*600的话很麻烦,网上有很多说是改变窗口大小,其实分辨率没有变,结果是画面感十分不好。于是,便有了这个悲剧的产物。
其实在用的时候,可以不用我提供的那个脚本,直接一步步在原脚本上修改,不过很麻烦。
就像lz上的那样,很多脚本和此脚本有冲突,这是避免不了的,我在测试时就发现了几个脚本冲突。这脚本其实就是强制性修改画面,所以很暴力。如果你不怕费事的话,可以遵循上面的“在原脚本上修改”的方法。
其实像lz ,如果可以,你完全可以用RGE,它也支持xp脚本,但前提是你必须会脚本编程。
xp1.03其实经常有方块出现,建议使用1.02版,本人感觉(包括他人推荐)都说1.02版是很不错的。
对于卡的问题,推荐你在主站内寻找 防卡脚本 和 脚本加速 。
目前,只想到这么多,其余的,下次再基于解答,有事可以通过站内短信找我。
作者: 88510051as    时间: 2011-4-25 15:56
感谢LZ分享
作者: tommay    时间: 2011-5-7 00:18
汇报一个BUG:
在程序运行后按Alt+Enter最大化,显示有误。貌似只是将640*480的区域最大化了。。。

提供两个解决方法:
(1)屏蔽Alt+Enter
(2)重写Alt_Enter部分代码

等待高手。
作者: j433463    时间: 2012-12-17 04:19
1.02 能使用自定字体吗?我就是因为需要升级到 1.03 的。
作者: blueppe    时间: 2024-5-15 19:40
不好意思...我想知道有没有人使用这个800x600的时候 fog效果来增加画面光影时会对不准 还是我自己的问题
不知道有没有什么解决方法....
已经比较熟悉xp操作不想放弃使用其他的rpg maker





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1