その後、Virtual Bytes が危険領域に入ったときにクライアントを終了させて再度起動し直せば問題ない事がわかったので、それを事前にチェックして、声で教えてくれるスクリプトを作ってみました。
3つのファイルで構成されています。3つとも C:\Alert に入れておきます。
ファイル: Warning.cmd
Code:
echo off
PowerShell C:\Alert\Warning.ps1
ファイル: Warning.ps1
Code:
Import-Module 'C:\Alert\Speech.psm1'
$flag = $true
Start-Sleep -s 115
do {
Start-Sleep -s 5
$data = Get-Counter -Counter "\Process(ffxiv)\Virtual Bytes"
if ($? -eq $false) { "ffxiv が見つかりません。"; $flag = $false; break;}
$data.CounterSamples.CookedValue
if ($data.CounterSamples.CookedValue -gt 2000000000)
{
Out-TextToSpeech -Text "Warning! Virtual Bytes is danger!"
}
} while (1)
ファイル: Speech.psm1
Code:
function Out-TextToSpeech {
param (
[Parameter(Mandatory=$true,
ValueFromPipeline=$true)]
[string]
$Text,
[switch]
$Async=$false
)
[Reflection.Assembly]::LoadWithPartialName('System.Speech') | Out-Null
$synth = New-Object System.Speech.Synthesis.SpeechSynthesizer
if ($Async) {
$synth.SpeakAsync($Text)
} else {
$synth.Speak($Text)
}
}
ffxiv のランチャーを起動し、Warning.cmd を起動すると 2 分待ちの状態になります。
2 分以内にログインして、ffxiv を起動します。
2 分後、スクリプトで 5 秒おきに ffxiv の Virtual Bytes を監視します。
後は普通に遊んでいる時に、Virtual Bytes が 2000000000 を越えると、危険だとしゃべります。
危険だといってもまだすぐに落ちるわけでは無いので(経験的には30分ぐらいは余裕がある)、ゲームを終了して起動し直せば OK です。
ただし、5 秒おきのチェックで毎回越えてくるようになると、結構危険なので、早急に終了する事をおすすめします。
ffxiv がいなくなると、スクリプトは自動的に終了するので、ランチャーを起動するときには同様に Warning.cmd を起動します。
少なくともこのスクリプトで同じ現象に遭遇している人は、危険だとしゃべるのでわかると思います。