Собственно меня давно разбирает любопытство, сколько же раз поломали кораблик в бою…
В общем вот…
VBA-код макроса Microsoft WORD для получения информации о количестве потерянных ** корабликов**
который я накалякал, пока не было света на работе (на ноуте :fedcrazy: )
Выводит в ворде инфу о том:
- Сколько раз сбили Вас
- Сколько сбили Вы кораблей и других игровых объектов (дроны)
- Общее число асистов (Как отображающиеся в игре за помощь при уничтожении, так и те, которые пошли в эффективность при этой помощи) - не разделял их между собой, поэтому не удивляйтесь, что асистов окажется больше, чем отражено в статистике игры.
В самой игре включите расширенные логи http://forum.star-conflict.ru/index.php?/topic/33033-kak-sdelat-rasshirennye-logi/
З.Ы. Кто захочет модифицировать и напихать FSO, массивов и т.п. …да пожалуйста :fedp:
Результат легкого шаманства:
Под спойлером сам код который надо вставить и мануал :fedlol:
Код который надо вставить (для тех у кого кракозябры в VBA-редакторе вместо текста. Вставьте сначала на сам лист WORD-а данный код, там он вставится с нормальным русским текстом,а оттуда уже скопируйте и вставьте в редактор VBA):
Dim LOCATION_LOG_P As String
Dim Name_P As String
Sub LOG_SK()
Dim LOCATION_LOG As String
Dim Time_loc As String
Dim Name As String
Dim fileNumber As Integer
Dim Stroka As String
Dim Peremen As String
Dim Peremen2 As String
Dim Peremen3 As String
Dim Peremen4 As String
Dim Number_battle As Integer
Dim Player_Destroyed As Integer
Dim Player_Destroy As Integer
Dim Player_Destroy_other As Integer
Dim Player_Asst As Integer
Dim Player_Destroyed_oll As Integer
Dim Player_Destroy_oll As Integer
Dim Player_Asst_oll As Integer
‘----------------------------------------’
'Name = “ARTGUK”
'LOCATION_LOG = “C:\Users\ART\Documents\My Games\StarConflict\logs\2014.06.25 19.29.07\combat.log”
On Error GoTo 2
Name_P = ActiveDocument.Paragraphs(1).Range
On Error GoTo 2
LOCATION_LOG_P = ActiveDocument.Paragraphs(2).Range
On Error GoTo 2
Name = Mid(ActiveDocument.Paragraphs(1).Range, 1, Len(ActiveDocument.Paragraphs(1).Range) - 1)
On Error GoTo 2
LOCATION_LOG = Mid(ActiveDocument.Paragraphs(2).Range, 1, Len(ActiveDocument.Paragraphs(2).Range) - 1) & “\combat.log”
‘---------------------------------------------------’
fileNumber = FreeFile()
Number_battle = 0
Player_Destroyed = 0
Player_Destroyed_oll = 0
Player_Destroy = 0
Player_Destroy_oll = 0
Player_Asst = 0
Player_Asst_oll = 0
Player_Destroy_other = 0
Player_Ship = “”
Peremen = "Killed " & Name
Peremen2 = "killer " & Name
Peremen3 = “Participant”
Peremen4 = “Ship_”
Number_battle = -1
Selection.Font.Bold = wdToggle
Selection.TypeText Text:="СТАТИСТИКА УНИЧТОЖЕННЫХ КОРАБЛЕЙ ИГРОКА/КОЛ-ВО УНИЧТОЖЕННЫХ ОБЪЕКТОВ И КОРАБЛЕЙ)/ПОДКЛЮЧАЛСЯ К УНИЧТОЖЕНИЮ И ПОМОГ (ВСЕ АССИСТЫ+БАФЫ+ДЕБАФЫ): " & Name
Selection.Font.Bold = wdToggle
Selection.TypeParagraph
On Error GoTo 2
Open LOCATION_LOG For Input As #fileNumber
Do While Not EOF(fileNumber)
Input #fileNumber, Stroka
If InStr(1, Stroka, “Start gameplay”) > 0 Then
Number_battle = Number_battle + 1
If Number_battle < 1 Then GoTo 1
Selection.Font.Bold = wdToggle
Selection.TypeText Text:="<----------------" & “БИТВА №:” & Number_battle & “--------------->”
Selection.TypeText Text:=Time_loc
Selection.Font.Bold = wdToggle
Selection.TypeParagraph
Selection.TypeText Text:=“Кораблей потеряно в бою:” & Chr$(32) & Chr$(32) & Player_Destroyed
Selection.TypeParagraph
Selection.TypeText Text:=“Кораблей уничтожено в бою:” & Chr$(32) & Chr$(32) & Player_Destroy
Selection.TypeParagraph
Selection.TypeText Text:=“Кол-во уничтоженных объектов без учёта кораблей:” & Chr$(32) & Chr$(32) & Player_Destroy_other
Selection.TypeParagraph
Selection.TypeText Text:=“Подключался к уничтожению и помог (все ассисты + бафы + дебафы):” & Chr$(32) & Chr$(32) & Player_Asst
Selection.TypeParagraph
Player_Destroyed_oll = Player_Destroyed_oll + Player_Destroyed
Player_Destroy_oll = Player_Destroy_oll + Player_Destroy
Player_Asst_oll = Player_Asst_oll + Player_Asst
If Player_Destroyed < 1 Then Player_Destroyed = 1
Selection.TypeText Text:=“KD. Отношение сбил/сбит:” & Chr$(32) & Chr$(32) & Player_Destroy / Player_Destroyed
Selection.TypeParagraph
If Player_Destroyed < 1 Then Player_Destroyed = 1
Selection.TypeText Text:=“KDA. По формуле (сбил + ассистировал)/был сбит:” & Chr$(32) & Chr$(32) & (Player_Destroy + Player_Asst) / Player_Destroyed
Selection.TypeParagraph
Player_Ship = “”
Player_Destroyed = 0
Player_Destroy = 0
Player_Asst = 0
Player_Destroy_other = 0
Selection.TypeParagraph
1 End If
If InStr(1, Stroka, Peremen) > 0 Then
Player_Destroyed = Player_Destroyed + 1
End If
If InStr(1, Stroka, Peremen2) > 0 And InStr(1, Stroka, Peremen4) > 0 Then
Player_Destroy = Player_Destroy + 1
End If
If InStr(1, Stroka, Peremen2) > 0 And InStr(1, Stroka, Peremen4) < 1 Then
Player_Destroy_other = Player_Destroy_other + 1
End If
If InStr(1, Stroka, Peremen3) > 0 And InStr(1, Stroka, Name) > 0 Then
Player_Asst = Player_Asst + 1
End If
If InStr(1, Stroka, “Start gameplay”) > 0 Then
Time_loc = Stroka
If InStr(1, Stroka, “‘CaptureTheBase’”) > 0 Then Time_loc = Replace(Time_loc, “CaptureTheBase”, “Захват маяков”)
If InStr(1, Stroka, “‘Control’”) > 0 Then Time_loc = Replace(Time_loc, “Control”, “Контроль”)
If InStr(1, Stroka, “‘KingOfTheHill’”) > 0 Then Time_loc = Replace(Time_loc, “KingOfTheHill”, “Охота на маяк”)
If InStr(1, Stroka, “‘BombTheBase’”) > 0 Then Time_loc = Replace(Time_loc, “BombTheBase”, “Детонация”)
If InStr(1, Stroka, “‘Sentinel’”) > 0 Then Time_loc = Replace(Time_loc, “Sentinel”, “Разведка боем”)
If InStr(1, Stroka, “‘TeamDeathMatch’”) > 0 Then Time_loc = Replace(Time_loc, “TeamDeathMatch”, “Командный бой”)
If InStr(1, Stroka, “‘ClanShip’”) > 0 Then Time_loc = Replace(Time_loc, “ClanShip”, “БЗС”)
End If
Loop
Close #fileNumber
Number_battle = Number_battle + 1
Selection.Font.Bold = wdToggle
Selection.TypeText Text:="<----------------" & “БИТВА №:” & Number_battle & “--------------->”
Selection.TypeText Text:=Time_loc
Selection.Font.Bold = wdToggle
Selection.TypeParagraph
Selection.TypeText Text:=“Кораблей потеряно в бою:” & Chr$(32) & Chr$(32) & Player_Destroyed
Selection.TypeParagraph
Selection.TypeText Text:=“Кораблей уничтожено в бою:” & Chr$(32) & Chr$(32) & Player_Destroy
Selection.TypeParagraph
Selection.TypeText Text:=“Кол-во уничтоженных объектов без учёта кораблей:” & Chr$(32) & Chr$(32) & Player_Destroy_other
Selection.TypeParagraph
Selection.TypeText Text:=“Подключался к уничтожению и помог (все ассисты + бафы + дебафы):” & Chr$(32) & Chr$(32) & Player_Asst
Selection.TypeParagraph
Player_Destroyed_oll = Player_Destroyed_oll + Player_Destroyed
Player_Destroy_oll = Player_Destroy_oll + Player_Destroy
Player_Asst_oll = Player_Asst_oll + Player_Asst
Selection.TypeText Text:=“KD. Отношение сбил/сбит:” & Chr$(32) & Chr$(32) & Player_Destroy / Player_Destroyed
Selection.TypeParagraph
Selection.TypeText Text:=“KDA. По формуле (сбил + ассистировал)/был сбит:” & Chr$(32) & Chr$(32) & (Player_Destroy + Player_Asst) / Player_Destroyed
Selection.TypeParagraph
Time_loc = “”
2 Selection.TypeParagraph
Selection.Font.Bold = wdToggle
Selection.TypeText Text:="<–" & “Общий KD за всю игровую сессию. Отношение сбил/сбит:” & “–>”
Selection.TypeParagraph
If Player_Destroyed_oll < 1 Then Player_Destroyed_oll = 1
Selection.TypeText Text:="KD = " & Player_Destroy_oll / Player_Destroyed_oll
Selection.TypeParagraph
If Player_Destroyed_oll < 1 Then Player_Destroyed_oll = 1
Selection.TypeText Text:="<–" & “Общий KDA за всю игровую сессию. По формуле (сбил + ассистировал)/был сбит:” & “–>”
Selection.TypeParagraph
Selection.TypeText Text:="KDA = " & (Player_Destroy_oll + Player_Asst_oll) / Player_Destroyed_oll
End Sub
Sub Dell_oll()
Selection.WholeStory
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.TypeText Text:=Name_P
'Selection.TypeParagraph
Selection.TypeText Text:=LOCATION_LOG_P
Selection.TypeParagraph
Name_P = “”
LOCATION_LOG_P = “”
End Sub
Мануал
-
в самом документе первой строкой указываем свой игровой ник …или Того, кто интересует… :fed):
-
в самом документе второй строкой указываем путь к файлу лога битв в виде C:\Users\ART\Documents\My Games\StarConflict\logs\2014.06.26
Примерно Логи хранятся в “документы” - “My Games” - “StarConflict” - “logs”…и там папки по дате и времени вашей игровой сессии названы.
Можно читать лог прямо во время игровой сессии. т.е. провели битву, свернули игру, запустили макрос и получили данную статистику по всем проведенным боям.
-
Ну и жмякаем ENTER, чтобы курсор установить на новую строку =)
-
пользуемся вордом и макросом в любое время, хоть сразу после битвы :fed):
N.B. У вас будет два макроса. Один запускает скрипт считывающий логи (LOG_SK), а второй (Dell_oll) предназначен для очистки документа от результатов.
В картинках, что и куда в Word-e вставлять (если кто не знает :fed): )
и собственно вставить скопированный код удалив перед этим всё в данном редакторе, после чего закрыть окно редактора VBA :fedlol:
У вас будет два макроса. Один запускает скрипт считывающий логи (LOG_SK), а второй (Dell_oll) предназначен для очистки документа от результатов