| 赞 | 1 |
| VIP | |
| 好人卡 | |
| 积分 | 12 |
| 经验 | |
| 最后登录 | 2022-7-14 |
| 在线时间 | 62 小时 |
- 梦石
- 0
- 星屑
- 1158
- 在线时间
- 62 小时
- 注册时间
- 2015-11-7
- 回帖
- 3
|
悬赏20星屑已解决
打开搁置了三年的游戏工程看了一下,发现里面むっくRu的截图脚本无法使用了……
我记得三年前的时候是可以在游戏任意时刻按下PRSC键保存画面截图到特定文件夹的,但现在不行了;
本以为是因为不久前换了电脑,结果打开老电脑试了一下发现也不行;
特地开了一个全新的工程单独测试这个脚本,也还是不能用
明明没有进行过任何改动,脚本突然就失效了,真的很费解其中的原因,难道还能是因为win10更新导致的吗(?)
原脚本如下,想知道如果这个脚本还能正常使用的话我应该怎么办,提前感谢!
PS.我尝试过把PRSC改成其他键(改了66行的VK键值),比如F5和P键之类的,依然无法使用(不是很懂脚本,不知道这样做是否可行,但系统没有报错)
[pre lang="ruby"]# coding: utf-8
#===============================================================================
# ■ 遅延型スクリーンショット撮影さん for RGSS3
#-------------------------------------------------------------------------------
# 2012/06/10 Ru/むっくRu
#-------------------------------------------------------------------------------
# PrintScreenを押すと指定フォルダに
# ゲーム画面のスクリーンショットを保存する機能を追加します
# (処理落ち対策として,押してから数秒後にファイルが生成されます)
#-------------------------------------------------------------------------------
# 【問題点など】
# 保存の際にゲームのフレームレートが少し落ちます(処理落ち)
#-------------------------------------------------------------------------------
# 【更新履歴】
# 2012/06/10 保存中にF12リセットを行うと強制終了する不具合を修正
# 2012/01/07 戦闘中にうまく撮影できないのを修正?
# 2011/12/27 ぶっぱ
#-------------------------------------------------------------------------------
# 【参考:PNG画像生成処理】
# http://d.hatena.ne.jp/ku-ma-me/20091003/p1
#-------------------------------------------------------------------------------
#===============================================================================
# ● 設定項目
#===============================================================================
module HZM_VXA
module ScreenShot
# 保存するフォルダ名(末尾に/は付けない)
DIRNAME = 'screenshot'
# 保存するファイル名.拡張子(.png)は不要
# %Y …… 西暦
# %m …… 月(01-12)
# %d …… 日(01-31)
# %H …… 時(00-23)
# %M …… 分(00-59)
# %S …… 秒(00-59)
FILENAME = "%Y%m%d_%H%M%S"
# スクリーンショットに著作表示を入れる
# true …… 入れる
# false …… 入れない
USE_COPYRIGHT = false
# 著作表示の文字
COPYRIGHT_TEXT = '(C) 鳥小屋.txt'
# 著作表示の色
COPYRIGHT_COLOR = Color.new(255, 255, 255)
# 著作表示の大きさ
COPYRIGHT_SIZE = 16
# 著作表示の位置(0:左寄せ,1:中央寄せ,2:右寄せ)
COPYRIGHT_ALIGN = 2
# 1フレームに処理する回数
# ※この値を増やすとファイルが生成されるまでの時間が短くなりますが,
# 一度にかかる負荷量も増えるため,処理落ちが激しくなります
RUN_SPEED = 3
end
end
#===============================================================================
# ↑ ここまで設定 ↑
# ↓ 以下、スクリプト部 ↓
#===============================================================================
module HZM_VXA
module ScreenShot
VK_SNAPSHOT = 0x2c
GetKeyState = Win32API.new('user32', 'GetKeyState', %w(l), 'i')
#---------------------------------------------------------------------------
# ● 初期化
#---------------------------------------------------------------------------
def self.init
@pressed = false
@list = []
end
#---------------------------------------------------------------------------
# ● 更新
#---------------------------------------------------------------------------
def self.update
add if press?
RUN_SPEED.times { develop }
end
#---------------------------------------------------------------------------
# ● PrintScreen監視
#---------------------------------------------------------------------------
def self.press?
if @pressed
@pressed = (GetKeyState.call(VK_SNAPSHOT) < 0)
false
else
@pressed = (GetKeyState.call(VK_SNAPSHOT) < 0)
end
end
#---------------------------------------------------------------------------
# ● 今の画面を現像待ちに追加
#---------------------------------------------------------------------------
def self.add
bitmap = Graphics.snap_to_bitmap
if USE_COPYRIGHT
bitmap.font.size = COPYRIGHT_SIZE
bitmap.font.color = COPYRIGHT_COLOR
bitmap.draw_text(0, bitmap.height - COPYRIGHT_SIZE, bitmap.width, COPYRIGHT_SIZE, COPYRIGHT_TEXT, COPYRIGHT_ALIGN)
end
filename = "#{Time.now.getlocal.strftime(FILENAME)}"
@list.push({
:bitmap => bitmap,
:filename => filename
})
end
#---------------------------------------------------------------------------
# ● 現像処理
#---------------------------------------------------------------------------
def self.develop
return if @list.empty?
data = @list.first
if data[:line] == nil # 未処理
data[:line] = 0
data[:img] = []
elsif data[:line] < data[:bitmap].height # 解析中
data[:img].push 0
for i in 0...data[:bitmap].width
c = data[:bitmap].get_pixel(i, data[:line])
data[:img].push(c.red, c.green, c.blue)
end
data[:line] += 1
else # 保存処理
Dir.mkdir(DIRNAME) unless File.exist?(DIRNAME)
cnt = Dir.glob("#{DIRNAME}/#{data[:filename]}*.png").size
footer = cnt > 0 ? "_#{cnt}" : ""
File.open("#{DIRNAME}/#{data[:filename]}#{footer}.png", 'wb') do |file|
file.write "\x89PNG\r\n\x1a\n"
file.write createChunk('IHDR', [data[:bitmap].width, data[:bitmap].height, 8, 2, 0, 0, 0].pack('N2C5'))
file.write createChunk('IDAT', Zlib::Deflate.deflate(data[:img].pack('C*')))
file.write createChunk('IEND', '')
end
data[:bitmap].dispose
@list.shift
end
end
#---------------------------------------------------------------------------
# ● PNGチャンク作成
#---------------------------------------------------------------------------
def self.createChunk(type, data)
[data.bytesize, type, data, Zlib.crc32(type + data)].pack('NA4A*N')
end
end
end
class Scene_Base
#-----------------------------------------------------------------------------
# ● フレーム更新(基本)(エイリアス)
#-----------------------------------------------------------------------------
alias hzm_vxa_screenshot_update_basic update_basic
def update_basic
hzm_vxa_screenshot_update_basic
HZM_VXA::ScreenShot.update
end
end
class << SceneManager
#-----------------------------------------------------------------------------
# ● 実行(エイリアス)
#-----------------------------------------------------------------------------
alias hzm_vxa_screenshot_run run
def run
HZM_VXA::ScreenShot.init
hzm_vxa_screenshot_run
end
end[/pre] |
最佳答案
查看完整内容
原脚本的内容是不是霓修改过了呀?那都是很重要的内容,千万注意·一·个·字·都·不·能·改·唷!(雾)
嗯,经过我仔细斟酌,严格校订,终于把这个脚本的bug全部解决啦!~这次可不要再改来改去再弄坏了~♥~(大雾)
在游戏任意时段,按下【F7】,即可在根目录下一个温暖的文件夹里找到心爱的截图
[pre lang="ruby" line="1" file="nssiwi"]# coding: utf-8
#================================================ ...
评分
-
查看全部评分
|