出撃中の損傷状態確認方法
手順(@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