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

Project1

 找回密码
 注册会员
搜索

扩大分辨率然后同步扩大渐变,导致游戏不能正常退出

查看数: 2337 | 评论数: 3 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
YSC
发布时间: 2020-3-1 23:40

正文摘要:

本帖最后由 YSC 于 2020-3-1 23:57 编辑 把分辨率改成了1024*576,发现渐变范围没有改变,然后通过搜索找了一个扩大渐变的方法(方法链接https://rpg.blue/thread-479522-1-1.html)。按照这个方法成功扩大了渐变 ...

回复

SixRC 发表于 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)

就行了

评分

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

查看全部评分

YSC 发表于 2020-3-2 12:36:48
SixRC 发表于 2020-3-2 03:20
嗯...还没睡

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

加上exit之后好了。谢谢大佬
SixRC 发表于 2020-3-2 03:20:11
本帖最后由 SixRC 于 2020-3-2 03:42 编辑

嗯...还没睡

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

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

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

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

现在真睡了


我突然想到真正的问题了
可能这个退出后的操作是和F12功能关联的
所以可能按F12重新游戏也会爆炸
呃 那反正先睡觉 明天再说
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-5-5 12:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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