出撃中の損傷状態確認方法
手順(@Chrome ほかのブラウザもだいたい同じ。)
- 「その他のツール」→「デベロッパーツール」を起動。
- 「Network」をクリック。
- 「Filter」ボックス下の「All」か「Other」をクリック。
- 「Filter」ボックスに「mime-type:text/plain」と入力。
- 「Name」のリスト中の以下をクリック。
- 「port」:母港に戻ったときに生成。全艦艇の現在値。
- 「ship_deck」:「進撃」すると生成。出撃艦艇の状態。
- 「Response」をクリック。
- 「Response」下のウィンドウに表示された文字列を全選択してコピー。
- 後述のスクリプト実行。
- メモ帳が立ち上がるので、ペースト。
- 上書き保存。
- メモ帳を閉じる。
- 現在の損傷状態を表示。
- 大破なら「F5」を押せ。
備考
- Windows専用。
- デベロッパーツールは起動しておかないと役に立たない。
- 順番はソートモード「New」の順番。
- 艦艇の個々の名前はIDと名前のデータベースをリレーションしないと無理。
大破が判れば良いってコトで。
スクリプト
以下をメモ帳に貼り付けて、ファイル名を「~.vbs」とする。
Option Explicit
Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8
Call fnc_CheckFleetCondition
Sub fnc_CheckFleetCondition() Dim obj_FSO 'As Object Dim obj_RE 'As Object Dim obj_WshShell 'As Object Dim obj_Ships 'As Object Dim obj_Ship 'As Object Dim str_msg 'As String Dim str_List 'As String Dim dbl_Damage 'As Double Dim str_Judge 'As String
Set obj_FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set obj_RE = WScript.CreateObject("VBScript.RegExp")
obj_RE.Global = True
obj_RE.IgnoreCase = False
Set obj_WshShell = WScript.CreateObject("WScript.Shell")
str_msg = fnc_str_TargetStrings()
obj_RE.Pattern = """api_id"":(-?\d+\.?\d*?),""api_sortno"":(-?\d+\.?\d*?),""api_ship_id"":(-?\d+\.?\d*?),""api_lv"":(-?\d+\.?\d*?),""api_exp"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_nowhp"":(-?\d+\.?\d*?),""api_maxhp"":(-?\d+\.?\d*?),""api_leng"":(-?\d+\.?\d*?),""api_slot"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_onslot"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_slot_ex"":(-?\d+\.?\d*?),""api_kyouka"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_backs"":(-?\d+\.?\d*?),""api_fuel"":(-?\d+\.?\d*?),""api_bull"":(-?\d+\.?\d*?),""api_slotnum"":(-?\d+\.?\d*?),""api_ndock_time"":(-?\d+\.?\d*?),""api_ndock_item"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_srate"":(-?\d+\.?\d*?),""api_cond"":(-?\d+\.?\d*?),""api_karyoku"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_raisou"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_taiku"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_soukou"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_kaihi"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_taisen"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_sakuteki"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_lucky"":\[(-?\d+\.?\d*?),(-?\d+\.?\d*?)\],""api_locked"":(-?\d+\.?\d*?),""api_locked_equip"":(-?\d+\.?\d*?)"
Set obj_Ships = obj_RE.Execute(str_msg)
If obj_RE.test(str_msg) Then
str_List = ""
For Each obj_Ship In obj_Ships
dbl_Damage = 1 - CDbl(obj_Ship.SubMatches(7)) / CDbl(obj_Ship.SubMatches(8))
If dbl_Damage >= 0.75 Then
str_Judge = "大破"
ElseIf dbl_Damage < 0.75 And dbl_Damage >= 0.5 Then
str_Judge = "中破"
ElseIf dbl_Damage < 0.5 And dbl_Damage >= 0.25 Then
str_Judge = "小破"
Else
str_Judge = "--"
End If
str_List = str_List & obj_Ship.SubMatches(0) & vbTab & "(" & obj_Ship.SubMatches(2) & "):" & vbTab & "【" & str_Judge & "】 HP:" & vbTab & obj_Ship.SubMatches(7) & vbTab & "/" & vbTab & obj_Ship.SubMatches(8) & vbCrLf
Next
MsgBox (str_List)
Else
MsgBox ("判別不能")
End If
End Sub
Function fnc_str_TargetStrings() 'As String
Dim obj_WshShell 'As Object
Dim obj_FSO 'As Object
Dim obj_ReadFile 'As Object
Dim str_APCommand 'As String
Dim str_TargetStrings 'As String
Dim str_TempTextFilePath 'As String
Set obj_FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set obj_WshShell = WScript.CreateObject("WScript.Shell")
str_TempTextFilePath = obj_FSO.GetParentFolderName(WScript.ScriptFullName) & "\" & "SubstituteTextBox_" & obj_FSO.GetTempName
str_APCommand = """C:\Windows\notepad.exe""" & " """ & str_TempTextFilePath & """"
obj_FSO.CreateTextFile str_TempTextFilePath, True, False
obj_WshShell.Run str_APCommand, 1, True
Set obj_ReadFile = obj_FSO.OpenTextFile(str_TempTextFilePath, ForReading)
Do Until obj_ReadFile.AtEndOfStream
str_TargetStrings = obj_ReadFile.ReadLine
Loop
Set obj_ReadFile = Nothing
obj_FSO.DeleteFile str_TempTextFilePath, True
If str_TargetStrings = "" Then
MsgBox ("APIコマンドの文字列" & "を指定してください。" & vbCrLf & "終了します。")
WScript.Quit
ElseIf IsEmpty(str_TargetStrings) Then
MsgBox ("キャンセル処理。" & vbCrLf & "終了します。")
WScript.Quit
Else
End If
fnc_str_TargetStrings = str_TargetStrings
End Function