设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 105|回复: 0

[转载发布] F12 Reset Fix

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    9071

    主题

    864

    回帖

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    58883
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    68848

    灌水之王

    发表于 2026-7-31 15:53:36 | 显示全部楼层 |阅读模式

    F12 Reset Fix



             
    Introduction
            F12 reset can sometimes be a pain in the arse. This script fixes that by spawning a new Game.exe. It can also be used if you want to use the editor whilst play-testing it. You can also configure to show the console on test play.


    Features
            - Saves an RM user from death by F12 reset.

    Screenshots
            Not needed.

    Script

    Spoiler                Code:       
    1. #==============================================================================
    2. #   ** F12 Reset Fix
    3. #   Author: Acezon
    4. #   Date: 2 June 2013
    5. #------------------------------------------------------------------------------
    6. #   Version 2.1
    7. #   - Fixed issue where game window is not in focus
    8. #     when Console_on is set to false
    9. #   - Now compatible with Tsuki's Test Edit script
    10. #   Version 2.0
    11. #   - Console option added
    12. #   - Automatically focuses window after pressing F12
    13. #   Version 1.1
    14. #   - Respawning the exe was better
    15. #   Version 1.0
    16. #   - Initial Release
    17. #------------------------------------------------------------------------------
    18. #   Just credit me. Free to use for commercial/non-commercial games.
    19. #   Thanks to Tsukihime and Cidiomar for the console scriptlet
    20. #==============================================================================
    21. $imported = {} if $imported.nil?
    22. $imported["Acezon-F12ResetFix"] = true
    23. #==============================================================================
    24. # ** START Configuration
    25. #==============================================================================
    26. module Config
    27.   Console_on = false       # duh
    28. end
    29. #==============================================================================
    30. # ** END Configuration
    31. #==============================================================================
    32. alias f12_reset_fix rgss_main
    33. def rgss_main(*args, &block)
    34.   f12_reset_fix(*args) do
    35.     if $run_once_f12
    36.       pid = spawn ($TEST ? 'Game.exe test' : 'Game')
    37.       # Tell OS to ignore exit status
    38.       Process.detach(pid)
    39.       sleep(0.01)
    40.       exit
    41.     end
    42.     $run_once_f12 = true
    43.     # Run default rgss_main
    44.     block.call
    45.   end
    46. end
    47. module SceneManager
    48.   class << self
    49.     alias :acezon_f12_first :first_scene_class
    50.   end
    51.   def self.first_scene_class
    52.     focus_game_window
    53.     acezon_f12_first
    54.   end
    55.   def self.focus_game_window
    56.     # Just to prevent re-spawning the console since
    57.     # Tsuki uses this same part in his Test Edit script
    58.     if !$imported["TH_TestEdit"]
    59.       # Get game window text
    60.       console_w = Win32API.new('user32','GetForegroundWindow', 'V', 'L').call
    61.       buf_len = Win32API.new('user32','GetWindowTextLength', 'L', 'I').call(console_w)
    62.       str = ' ' * (buf_len + 1)
    63.       Win32API.new('user32', 'GetWindowText', 'LPI', 'I').call(console_w , str, str.length)
    64.       if Config::Console_on
    65.         # Initiate console
    66.         Win32API.new('kernel32.dll', 'AllocConsole', '', '').call
    67.         Win32API.new('kernel32.dll', 'SetConsoleTitle', 'P', '').call('RGSS3 Console')
    68.         $stdout.reopen('CONOUT$')
    69.       end
    70.       # Sometimes pressing F12 will put the editor in focus first,
    71.       # so we have to remove the program's name
    72.       game_title = str.strip
    73.       game_title.sub! ' - RPG Maker VX Ace', ''
    74.       # Set game window to be foreground
    75.       hwnd = Win32API.new('user32.dll', 'FindWindow', 'PP','N').call(0, game_title)
    76.       Win32API.new('user32.dll', 'SetForegroundWindow', 'P', '').call(hwnd)
    77.     end
    78.   end
    79. end
    复制代码








    Log


            Version 2.1


            - Fixed issue where game window is not in focus
            when Console_on is set to false
            - Now compatible with Tsuki's Test Edit script
            Version 2.0
            - Console option added
            - Automatically focuses window after pressing F12
            Version 1.1
            - Respawning the exe was better
            Version 1.0
            - Initial Release


    Credit and Thanks


            - Read the script header


    本贴来自国际rpgmaker官方论坛作者:nthcat处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/f12-reset-fix.8000/
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-8-17 18:08 , Processed in 0.136992 second(s), 54 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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