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

Project1

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

[已经解决] 扩大分辨率然后同步扩大渐变,导致游戏不能正常退出

[复制链接]

Lv2.观梦者

梦石
0
星屑
625
在线时间
130 小时
注册时间
2015-4-2
帖子
78

开拓者

跳转到指定楼层
1
发表于 2020-3-1 23:40:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 YSC 于 2020-3-1 23:57 编辑

把分辨率改成了1024*576,发现渐变范围没有改变,然后通过搜索找了一个扩大渐变的方法(方法链接https://rpg.blue/thread-479522-1-1.html)。按照这个方法成功扩大了渐变范围。然后发现了另一个问题:退出游戏的时候,游戏程序会直接崩溃,并不是正常退出。。。。求各位大侠帮忙看一下,谢谢谢谢

2222.jpg (425.8 KB, 下载次数: 6)

2222.jpg

非正常关闭.jpg (135.84 KB, 下载次数: 4)

非正常关闭.jpg

问题工程.rar

1.81 MB, 下载次数: 78

点评

是我的产物.. 以bug多著称 先睡觉 我明天改(不过上次怎么没人提...)  发表于 2020-3-2 01:23

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

2
发表于 2020-3-2 03:20:11 | 只看该作者
本帖最后由 SixRC 于 2020-3-2 03:42 编辑

嗯...还没睡

这个问题的原因是我拿bitmap去替换了原来的东西
然后大概bitmap在退出时会被销毁
然后rm退出时又还对资源进行了一些操作 导致了非法读取

解决方法非常简单 不要正常退出就行了..
方法就是在Main脚本页的最后加上一行 exit
相当于你在游戏里点退出的同时点了窗口红叉叉关进程 对于用户没有任何体验上的区别
而游戏退出 系统会自动回收任何假如没有回收的资源(不然点叉叉关进程就爆炸啦)
所以 我想说
解决方法就这么简单 嗯 没有副作用

当然也有麻烦的做法 可是那是没有必要的

有不理解的地方或希望改进的请提

现在真睡了


我突然想到真正的问题了
可能这个退出后的操作是和F12功能关联的
所以可能按F12重新游戏也会爆炸
呃 那反正先睡觉 明天再说
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
625
在线时间
130 小时
注册时间
2015-4-2
帖子
78

开拓者

3
 楼主| 发表于 2020-3-2 12:36:48 | 只看该作者
SixRC 发表于 2020-3-2 03:20
嗯...还没睡

这个问题的原因是我拿bitmap去替换了原来的东西

加上exit之后好了。谢谢大佬
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

4
发表于 2020-3-2 15:48:36 | 只看该作者
本帖最后由 SixRC 于 2020-3-3 00:33 编辑
YSC 发表于 2020-3-2 12:36
加上exit之后好了。谢谢大佬


是有问题的
原因是刷新的需要
我的脚本你改成
RUBY 代码复制
  1. class << Graphics
  2.   # 渐变修正 用于 103J
  3.   FXTN_dll = Win32API.new("kernel32","GetModuleHandleA","p","l").call("RGSS103J")
  4.   gdi = Win32API.new("kernel32","GetModuleHandleA","p","l").call("gdi32")
  5.   delo = Win32API.new("kernel32","GetProcAddress","lp","l").call(gdi, "DeleteObject")
  6.   # pass width, height
  7.   FXTN_rep = ExtraFunc.parse %Q{
  8.     mov edi,#{FXTN_dll}
  9.     mov esi,[edi + 0x12B6C4]
  10.     mov esi,[esi + 0x144]
  11.     push dword [esi + 0x2C]
  12.     mov eax, #{delo}
  13.     call eax
  14.     mov dword[esi + 0x20], 0x20
  15.     mov ecx,esi
  16.     push dword[esp + 8]
  17.     push dword[esp + 8]
  18.     lea eax,[edi+0x86540]
  19.     call eax
  20.     mov edi,[edi + 0x12B6C4]
  21.     mov edi,[edi + 0x148]
  22.     mov eax,[esp + 4]
  23.     mov [edi + 0x10],eax
  24.     mov [edi + 0xC8],eax
  25.     mov eax,[esp + 8]
  26.     mov [edi + 0x14],eax
  27.     mov [edi + 0xCC],eax
  28.     ret 8
  29.   }
  30.   # 修正为 w * h  可以重复调用
  31.   def fix_trans(width, height)
  32.     ExtraFunc.run FXTN_rep, width, height
  33.   end
  34. end

就行了 按F12 也不会出问题

以及 你的脚本页★Game_Resolution 也有同样的问题 没有考虑到 F12
假如按F12  窗口会不断变大
32行开始改成
RUBY 代码复制
  1. addw =  wds[2] - wds[0]
  2.   addh =  wds[3] - wds[1]
  3.   if addw >= GAME_WINDOW::INT_WIDTH
  4.     addw -= GAME_WINDOW::INT_WIDTH
  5.     addh -= GAME_WINDOW::INT_HEIGHT
  6.     x, y = wds[0], wds[1]
  7.   else
  8.     addw -= 640
  9.     addh -= 480
  10.     x = wds[0] - (GAME_WINDOW::INT_WIDTH - 640) / 2
  11.     y = wds[1] - (GAME_WINDOW::INT_HEIGHT - 480) / 2
  12.   end
  13.   swp.call(hWnd, 0, x, y, GAME_WINDOW::INT_WIDTH + addw, GAME_WINDOW::INT_HEIGHT+addh,0x20)

就行了

点评

YSC
多谢大侠,都好了  发表于 2020-3-4 01:42
现在可以了 时间有点久我忘记细节了 东西少写了  发表于 2020-3-3 00:34
YSC
如果光加一个exit,按F12游戏会崩掉。但是换完这两段代码,渐变范围又变成640*480了。  发表于 2020-3-2 21:45

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 00:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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