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

Project1

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

[已经解决] 请问有没有RPG XP 的仓库脚本以及全屏脚本?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1017
在线时间
43 小时
注册时间
2020-10-28
帖子
25
跳转到指定楼层
1
发表于 2021-10-28 21:27:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
现在需要一个仓库脚本,
本人做了前缀系统和附魔系统,然后卖东西太麻烦,有些装备要囤起来,然后因为前缀系统是push的性质,所以背包东西多了会特别卡顿,
所以我的玩家向我提出了需要一个仓库脚本,我写了很多次,也参考了很多东西,还是觉得有问题……写不下去了……

还有我改了游戏的默认分辨率,现在是800*600 但是全屏以后下面的画面会丢失,请问有没有全屏的脚本?

Lv3.寻梦者

梦石
0
星屑
1017
在线时间
43 小时
注册时间
2020-10-28
帖子
25
2
 楼主| 发表于 2021-10-28 21:41:43 | 只看该作者
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1017
在线时间
43 小时
注册时间
2020-10-28
帖子
25
3
 楼主| 发表于 2021-10-28 22:53:00 | 只看该作者
{:4_113:}
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7946
在线时间
1182 小时
注册时间
2007-7-29
帖子
2055
4
发表于 2021-10-28 23:01:19 | 只看该作者
不要顶贴了……
仓库脚本你要是稍微往下滚就会看到:https://rpg.blue/thread-486514-1-1.html
至于全屏的使用搜索应该还是搜得到得,这玩意不是什么稀有脚本。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1017
在线时间
43 小时
注册时间
2020-10-28
帖子
25
5
 楼主| 发表于 2021-10-28 23:18:06 | 只看该作者
enghao_lim 发表于 2021-10-28 23:01
不要顶贴了……
仓库脚本你要是稍微往下滚就会看到:https://rpg.blue/thread-486514-1-1.html
至于全屏的 ...

亲,改了分辨率,全屏的脚本用了很多下面都无法显示呢 ,默认是640*480的 全屏以后也就显示了640*480的区域呢

点评

OoO 抱歉没看清楚。我没记错那个要改exe了……><  发表于 2021-10-30 23:24
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1017
在线时间
43 小时
注册时间
2020-10-28
帖子
25
6
 楼主| 发表于 2021-11-2 21:50:03 | 只看该作者
enghao_lim 发表于 2021-10-28 23:01
不要顶贴了……
仓库脚本你要是稍微往下滚就会看到:https://rpg.blue/thread-486514-1-1.html
至于全屏的 ...

亲亲,那么怎么才能改EXE呢

点评

改exe和调用DLL对我来说是一样的,因为都不会……。说实话DLL是什么都不知道……至于win32,是ruby本来就有的。  发表于 2021-11-4 17:43
相比脱壳修改exe,DLL就只是一个被调用的库,当然如果能够有大毅力把DLL里集成内容搬到脚本里头没有太大差别。  发表于 2021-11-4 14:38
我蹩脚的英文……应该不是纯脚本吧,好像用到了作者写的DLL  发表于 2021-11-4 14:15
我稍微找了一下你的需求,有个纯脚本的,但是估计你得花时间研究下,而且原脚本时英文:https://save-point.org/thread-3407.html  发表于 2021-11-2 22:56
我也没改过 ==|||,我记得以前也有这需求,不过最后答案牵涉到破解手段所以解答者和提问者都是私下解决。  发表于 2021-11-2 22:55
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1017
在线时间
43 小时
注册时间
2020-10-28
帖子
25
7
 楼主| 发表于 2021-11-2 23:24:06 | 只看该作者
enghao_lim 发表于 2021-10-28 23:01
不要顶贴了……
仓库脚本你要是稍微往下滚就会看到:https://rpg.blue/thread-486514-1-1.html
至于全屏的 ...

感谢感谢,我查了很多,主要是要反编译game.exe那个执行程序才行,
设计到VB和C语言,那个不懂,没办法拉
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
8
发表于 2021-11-4 14:23:52 | 只看该作者
本帖最后由 RPGzh500223 于 2021-11-4 14:32 编辑

全屏……很早以前游戏是直接修改显示器的分辨率来全屏,现在的话,没玩过什么游戏,反正我试了RMVA,直接修改该游戏窗口的分辨率即可。
说明:以下脚本是修改显示器分辨率的,按F5全屏切换。(如果和ALT+ENTER混用造成显示不正常,连按2次F5或ALT+ENTER)
BUG:全屏后,万一其他程序弹窗什么的,效果……。其他程序的窗口分辨率会被限制成此时显示器的分辨率大小(比如浏览器1000*1000,用了该脚本全屏后,浏览器只有800*600了)

如果能找人改exe或找到有关的dll,请勿使用此脚本。这是我不得己的办法,因为前2个我不会……

  1. module RGSS_PLAYER
  2.   GetForegroundWindow = Win32API.new('user32', 'GetForegroundWindow', 'V', 'L')
  3.   GetWndThrProID = Win32API.new('user32', 'GetWindowThreadProcessId', 'LP','L')
  4.   GetCurrentThreadID = Win32API.new('kernel32', 'GetCurrentThreadId', 'V', 'L')  
  5.   FindWindowEx = Win32API.new('user32', 'FindWindowEx', 'LLPP', 'L')
  6.   
  7.   ThreadID = GetCurrentThreadID.call()
  8.   hwnd = GetForegroundWindow.call()
  9.   while GetWndThrProID.call(hwnd, nil) != ThreadID
  10.     hwnd = FindWindowEx.call(0, hwnd, "RGSS Player", nil)
  11.   end
  12.   HWnd = hwnd
  13. end

  14. module FullScreen

  15.   # 必须得设备支持,比如 800 * 600,1024 * 768 ……
  16.   FullScreen_W = 800
  17.   FullScreen_H = 600
  18.   #--------------------------------------------------------------------------
  19.   # ● API
  20.   #--------------------------------------------------------------------------
  21.   GetSystemMetrics = Win32API.new('user32', 'GetSystemMetrics', 'I', 'I')
  22.   GetWindowLongA = Win32API.new('user32', 'GetWindowLongA', 'LI', 'L')
  23.   SetWindowLongA = Win32API.new('user32', 'SetWindowLongA', 'LIL', 'L')
  24.   EnumDS = Win32API.new('user32', 'EnumDisplaySettings', 'PLP', 'I')
  25.   ChangeDS = Win32API.new('user32', 'ChangeDisplaySettings', 'PL', 'L')
  26.   GetWndPlacement = Win32API.new('user32', 'GetWindowPlacement', 'LP', 'I')
  27.   SetWndPlacement = Win32API.new('user32', 'SetWindowPlacement', 'LP', 'I')
  28.   #--------------------------------------------------------------------------
  29.   # ● 常量
  30.   #--------------------------------------------------------------------------
  31.   SM_CXSCREEN = 0
  32.   SM_CYSCREEN = 1
  33.   
  34.   WS_BORDER = 0x800_000
  35.   WS_DLGFRAME = 0x400_000
  36.   WS_SYSMENU = 0x80_000
  37.   
  38.   GWL_STYLE = -16
  39.   
  40.   ENUM_CURRENT_SETTINGS = -1
  41.   
  42.   # 个人自定义的常量
  43.   DEVOMODE_FLAG = "A32S4L5s5A32SL*"
  44.   
  45.   DM_PW_INDEX = 18
  46.   DM_PH_INDEX = 19
  47.   
  48.   ScreenW = GetSystemMetrics.call(SM_CXSCREEN)
  49.   ScreenH = GetSystemMetrics.call(SM_CYSCREEN)
  50.   buf = "\0" * 220
  51.   EnumDS.call(nil, ENUM_CURRENT_SETTINGS, buf)
  52.   CurrentDS = buf.unpack(DEVOMODE_FLAG)

  53.   ChangeWS = WS_BORDER | WS_SYSMENU | WS_DLGFRAME
  54.   HWnd = RGSS_PLAYER::HWnd
  55.   BaseWS = GetWindowLongA.call(HWnd, GWL_STYLE)
  56.   
  57.   W_Sub = ScreenW - FullScreen_W
  58.   H_Sub = ScreenH - FullScreen_H
  59.   
  60.   # 记录全屏状态的变量
  61.   @@full = 0
  62.   @@wndpt = "\0" * 44
  63.   #--------------------------------------------------------------------------
  64.   # ● 全屏化切换
  65.   #    bWork: (0 => 表示退出; 1 => 表示运行) 保证退出游戏时,屏幕分辨率正确
  66.   #--------------------------------------------------------------------------
  67.   def self.turn(bWork = 1)
  68.     @@full = (@@full - 1) & bWork
  69.     CurrentDS[DM_PW_INDEX] = ScreenW - W_Sub * @@full
  70.     CurrentDS[DM_PH_INDEX] = ScreenH - H_Sub * @@full   
  71.     ChangeDS.call(CurrentDS.pack(DEVOMODE_FLAG), 0)
  72.     SetWindowLongA.call(HWnd, GWL_STYLE, BaseWS ^ (ChangeWS * @@full))
  73.     if @@full == 1
  74.       GetWndPlacement.call(HWnd, @@wndpt)
  75.       wndpt = @@wndpt.unpack('I3l8')
  76.       wndpt[1], wndpt[2] = 2, 3
  77.       SetWndPlacement.call(HWnd, wndpt.pack('I3l8'))
  78.       return
  79.     end
  80.     SetWndPlacement.call(HWnd, @@wndpt)
  81.   end
  82. end

  83. module Input
  84.   class << self
  85.     alias ori_update update unless method_defined?(:ori_update)
  86.     def update
  87.       ori_update
  88.       if self.trigger?(F5)
  89.         FullScreen.turn
  90.         return
  91.       end
  92.     end
  93.   end
  94. end

  95. #==============================================================================
  96. # ■ Main
  97. #------------------------------------------------------------------------------
  98. #  各定义结束后、从这里开始实际处理。
  99. #==============================================================================

  100. begin
  101.   # 准备过渡
  102.   # 设置系统默认字体
  103.   Font.default_name = (["黑体"])
  104.   Graphics.freeze
  105.   # 生成场景对像 (标题画面)
  106.   $scene = Scene_Title.new
  107.   # $scene 为有效的情况下调用 main 过程
  108.   while $scene != nil
  109.     $scene.main
  110.   end
  111.   # 淡入淡出
  112.   Graphics.transition(20)
  113. rescue Errno::ENOENT
  114.   # 补充 Errno::ENOENT 以外错误
  115.   # 无法打开文件的情况下、显示信息后结束
  116.   filename = $!.message.sub("No such file or directory - ", "")
  117.   print("找不到文件 #{filename}。 ")
  118. ensure
  119.   FullScreen.turn(0)
  120. end
复制代码

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7946
在线时间
1182 小时
注册时间
2007-7-29
帖子
2055
9
发表于 2021-11-4 19:24:44 | 只看该作者
RPGzh500223 发表于 2021-11-4 14:23
全屏……很早以前游戏是直接修改显示器的分辨率来全屏,现在的话,没玩过什么游戏,反正我试了RMVA,直接修 ...

我回复在这里好了……
Win32Api就是在调用DLL……只是user32, kernel都是window自带,如果用了自己的DLL,换成该dll名字就行了……

点评

我想表达的意思是Win32有大量教程及实例,个人写的DLL就没有了  发表于 2021-11-5 09:11
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1017
在线时间
43 小时
注册时间
2020-10-28
帖子
25
10
 楼主| 发表于 2021-11-4 19:53:05 | 只看该作者
enghao_lim 发表于 2021-11-4 19:24
我回复在这里好了……
Win32Api就是在调用DLL……只是user32, kernel都是window自带,如果用了自 ...

我用了那个获取句柄的,还是不能全屏呢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 14:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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