練習ページ/18

Last-modified: 2016-12-07 (水) 11:59:01

出撃中の損傷状態確認方法

手順(@Chrome ほかのブラウザもだいたい同じ。)

  1. 「その他のツール」→「デベロッパーツール」を起動。
  2. 「Network」をクリック。
  3. 「Filter」ボックス下の「All」か「Other」をクリック。
  4. 「Filter」ボックスに「mime-type:text/plain」と入力。
  5. 「Name」のリスト中の以下をクリック。
    • 「port」:母港に戻ったときに生成。全艦艇の現在値。
    • 「ship_deck」:「進撃」すると生成。出撃艦艇の状態。
  6. 「Response」をクリック。
  7. 「Response」下のウィンドウに表示された文字列を全選択してコピー。
  8. 後述のスクリプト実行。
    1. メモ帳が立ち上がるので、ペースト。
    2. 上書き保存。
    3. メモ帳を閉じる。
  9. 現在の損傷状態を表示。
  10. 大破なら「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