查看: 3995|回复: 8

[已经解决] 求VA退出游戏时自动存档脚本

[复制链接]
梦石
0
星屑
60
在线时间
55 小时
注册时间
2011-10-7
回帖
26
发表于 2013-7-9 01:00:30 | 显示全部楼层 |阅读模式

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

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

×
没找到VA的……
试过VX的不行……
梦石
0
星屑
50
在线时间
95 小时
注册时间
2013-4-10
回帖
74
发表于 2013-7-9 08:30:54 | 显示全部楼层
老实说我没见过哪款游戏有这个强制功能……
就算有,LZ是想防作弊吧?可是,VA这种东西,能防老金么。。。
...
回复

使用道具 举报

梦石
0
星屑
60
在线时间
55 小时
注册时间
2011-10-7
回帖
26
 楼主| 发表于 2013-7-10 15:59:01 | 显示全部楼层
嫉妒の榛子 发表于 2013-7-9 08:30
老实说我没见过哪款游戏有这个强制功能……
就算有,LZ是想防作弊吧?可是,VA这种东西,能防老金么。。。 ...

不是想防作弊……= =,如果用自动存档防作弊的话只要提前把存档备份出来就破了……
只是单纯的想要自动存档而已……
记得以前见用VX的时候有用过……可是现在找不到VA的……
回复

使用道具 举报

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
回帖
638
发表于 2013-7-10 19:30:41 | 显示全部楼层
拦截系统发送给RGSS Player的WM_CLOSE消息,调用RGSSX.dll中的RGSSEval函数使游戏存档。lz没说明白,所以没法弄
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

梦石
0
星屑
50
在线时间
183 小时
注册时间
2010-8-3
回帖
49
发表于 2013-7-10 21:52:59 | 显示全部楼层
嫉妒の榛子 发表于 2013-7-9 08:30
老实说我没见过哪款游戏有这个强制功能……
就算有,LZ是想防作弊吧?可是,VA这种东西,能防老金么。。。 ...

刀剑封魔录退出并保存。。。ARPG游戏

点评

退出游戏时强制自动保存的类型么?好吧。果断我见识少。。。  发表于 2013-7-10 22:10

可怜之人必有可恨!
回复

使用道具 举报

梦石
0
星屑
60
在线时间
55 小时
注册时间
2011-10-7
回帖
26
 楼主| 发表于 2013-7-11 00:19:16 | 显示全部楼层
沙漠点灰 发表于 2013-7-10 19:30
拦截系统发送给RGSS Player的WM_CLOSE消息,调用RGSSX.dll中的RGSSEval函数使游戏存档。lz没说明白,所以没 ...

看不懂……

我哪里没说明白- -?……

点评

存到哪,文件名是什么= =  发表于 2013-7-11 00:57
回复

使用道具 举报

梦石
0
星屑
60
在线时间
55 小时
注册时间
2011-10-7
回帖
26
 楼主| 发表于 2013-7-11 15:14:19 | 显示全部楼层
沙漠点灰 发表于 2013-7-10 19:30
拦截系统发送给RGSS Player的WM_CLOSE消息,调用RGSSX.dll中的RGSSEval函数使游戏存档。lz没说明白,所以没 ...

“存到哪,文件名是什么= =”

= =……就这样吗……?

默认就行了……

存在4号存档

路径应该是
\Save04.rvdata2
回复

使用道具 举报

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
回帖
638
发表于 2013-7-11 17:16:33 | 显示全部楼层
本帖最后由 沙漠点灰 于 2013-7-11 17:56 编辑

把附件的dll文件加到“工程/System”目录下,因为能力有限,所以有bug,打开多个RGSS Player时,即会出现。
在脚本最上面添加
[pre lang="ruby" line="1"]$hookrgss = Win32API.new("System/DllExitSave", "hookrgss", "v", "v")
$hookrgss.call[/pre]
再搜索“save_game",得到下面的
[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 执行存档
  #--------------------------------------------------------------------------
  def self.save_game(index)
    begin
      save_game_without_rescue(index)
    rescue
      delete_save_file(index)
      false
    end
  end[/pre]
修改为:
[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 执行存档
  #--------------------------------------------------------------------------
  def self.save_game(index)
    return if SceneManager.scene.is_a?(Scene_Title)
    begin
      save_game_without_rescue(index)
    rescue
      delete_save_file(index)
      false
    end
  end[/pre]
即加了行,这样能保证在标题退出不会进行存档。
附:dll文件
DllExitSave.7z (3.18 KB, 下载次数: 72)
dll源代码
[pre lang="C" line="1"]#include <windows.h>
#include <stdio.h>

typedef DWORD (*EVALFUNC)(LPCSTR);

LONG oldWndProc;
EVALFUNC eval;
const char buf[] = "DataManager.save_game(3)";

BOOL APIENTRY DllMain( HANDLE hModule,
                                          DWORD  ul_reason_for_call,
                                          LPVOID lpReserved
                                          )
{
        return TRUE;
}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
        switch(uMsg) {
        case WM_CLOSE:
                eval(buf);
        default:
                return CallWindowProc((WNDPROC)oldWndProc, hWnd, uMsg, wParam, lParam);
        }
}

extern "C" void __declspec(dllexport) hookrgss() {
        HMODULE hRGSS;
        oldWndProc = SetWindowLong(FindWindow(TEXT("RGSS Player"), NULL), GWL_WNDPROC, (LONG)WindowProc);
        hRGSS = LoadLibrary(L"RGSS300.dll");
        eval = (EVALFUNC)GetProcAddress(hRGSS, "RGSSEval");
}[/pre]

评分

参与人数 2星屑 +60 梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.
喵呜喵5 + 60 精品文章

查看全部评分

>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部