Сколько раз меня подбили (макрос на VBA под Microsoft WORD)

1%20(12).jpg

Собственно меня давно разбирает любопытство, сколько же раз поломали кораблик в бою…

В общем вот… 

VBA-код макроса Microsoft WORD для получения информации о количестве потерянных ** корабликов**

 

который я накалякал, пока не было света на работе (на ноуте :fedcrazy: )

Выводит в ворде инфу о том:

  • Сколько раз сбили Вас 
  • Сколько сбили Вы кораблей и других игровых объектов (дроны)
  • Общее число асистов (Как отображающиеся в игре за помощь при уничтожении, так и те, которые пошли в эффективность при этой помощи) - не разделял их между собой, поэтому не удивляйтесь, что асистов окажется больше, чем отражено в статистике игры. 
    В самой игре включите расширенные логи  http://forum.star-conflict.ru/index.php?/topic/33033-kak-sdelat-rasshirennye-logi/

З.Ы. Кто захочет модифицировать и напихать FSO, массивов и т.п. …да пожалуйста  :fedp:

 

Результат легкого шаманства:

zMiDJLWB.png

Под спойлером сам код который надо вставить и мануал  :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

 

 


Мануал

 

  1. в самом документе первой строкой указываем свой игровой ник …или Того, кто интересует…  :fed):

  2. в самом документе второй строкой указываем  путь к файлу лога битв в виде C:\Users\ART\Documents\My Games\StarConflict\logs\2014.06.26

Примерно Логи хранятся в “документы” - “My Games” - “StarConflict” - “logs”…и там папки по дате и времени вашей игровой сессии названы.

Можно читать лог прямо  во время игровой сессии. т.е. провели битву, свернули игру, запустили макрос и получили данную статистику по всем проведенным боям.

  1. Ну и жмякаем ENTER, чтобы курсор установить на новую строку =)

  2. пользуемся вордом и макросом в любое время, хоть сразу после битвы  :fed):

 

N.B. У вас будет два макроса. Один запускает скрипт считывающий логи (LOG_SK), а второй (Dell_oll) предназначен для очистки документа от результатов.


В картинках, что и куда в Word-e вставлять (если кто не знает :fed): )

s2.PNG

s3.PNG

s4.PNG

 

s5.PNG

и собственно вставить скопированный код удалив перед этим всё в данном редакторе, после чего закрыть окно редактора VBA    :fedlol:

s6.PNG

 

У вас будет два макроса. Один запускает скрипт считывающий логи (LOG_SK), а второй (Dell_oll) предназначен для очистки документа от результатов

Разработчики настолько долго нереагируют на предложение о счетчике сбитых, что человек самолично написал прогу, освободив оных от работы. Осталось только модифицировать и на пост. основе вживить в клиент…

Разработчики настолько долго нереагируют на предложение о счетчике сбитых, что человек самолично написал прогу, освободив оных от работы. Осталось только модифицировать и на пост. основе вживить в клиент…

plus_odin_3.png

 

 

:jerlol:   :santa:  я даже не знаю что еще написать…спс…ржунимагу :fedlol:

Разработчики настолько долго нереагируют на предложение о счетчике сбитых, что человек самолично написал прогу, освободив оных от работы. Осталось только модифицировать и на пост. основе вживить в клиент…

 

Ага, Б-г настолько долго не реагирует на предложение отрастить отрезанную ногу, что люди самолично придумали костыли, освободив его от работы. Осталось только модифицировать человека и на постоянной основе вживить костыли в человека.

 

Разработчики настолько долго нереагируют на предложение о счетчике сбитых, что человек самолично написал прогу, освободив оных от работы. Осталось только модифицировать и на пост. основе вживить в клиент…

 

Ага, Б-г настолько долго не реагирует на предложение отрастить отрезанную ногу, что люди самолично придумали костыли, освободив его от работы. Осталось только модифицировать человека и на постоянной основе вживить костыли в человека.

 

Человеки на этой почве даже выдумали б-гомерзкую медицину  :fedcrazy:

И за что Savelui-у минус влипили? :fedmud: Он по делу съязвил  

 

Давно можно было в статистику боя влепить кол-во потерянных кораблей игроком за бой

вот сюда …

screenshot-140627-020842.jpg

  1. Рад видеть, что народ делает всякие приблуды для логов

  2. Уже есть 2е вот такие проги, одна оффлайн а другая через браузер

http://forum.star-conflict.com/index.php?/topic/21314-snibs-star-conflict-log-analyzer/  (Offline tool)

http://forum.star-conflict.com/index.php?/topic/22926-etas-star-conflict-web-log-analyzer/ (Online tool)

(надо обязательно вклучить полные логи через консоль команду в игре)

она сортирует логи в разние окошки (правда только на английском, но там все просто):

ПвП/БзС/ПвЕ/Вторжение и выдает результаты вот таким макаром:

 

9D3ZTnB.png

 

Программы проверенны и одобрены Антибусом на английском форуме

 

  1. Рад видеть, что народ делает всякие приблуды для логов

  2. Уже есть 2е вот такие проги, одна оффлайн а другая через браузер

http://forum.star-conflict.com/index.php?/topic/21314-snibs-star-conflict-log-analyzer/  (Offline tool)

http://forum.star-conflict.com/index.php?/topic/22926-etas-star-conflict-web-log-analyzer/ (Online tool)

(надо обязательно вклучить полные логи через консоль команду в игре)

она сортирует логи в разние окошки (правда только на английском, но там все просто):

ПвП/БзС/ПвЕ/Вторжение и выдает результаты вот таким макаром:

 

9D3ZTnB.png

 

Программы проверенны и одобрены Антибусом на английском форуме

 

ууу жирненько :angry: . Ну у меня нет столько времени, чтобы так усердно перелопачивать логи :fedlol:

Просто банально интересовало, сколько раз меня разобрали за бой  и видеть это “почти штатными” средствами без инсталяшек или вэб :fed):

:santa:  Но человек конечно провел колоссальный разбор логов. Молодчага :fedlol:

Чёт лайков ему мало поставили…добавил :fedp:

Это было 2 года ОБТ, мы модифицировали как могли

Немного обновил код. Добавил КД и КДА после каждой битвы и в конце общий, за всю игровую сессию, по шутерным формулам.

КД (убил/умер) K/D

КДА (убил+ассист/умер): (K+A)/D

![:angry:](<fileStore.core_Emoticons>/emoticons/angry.png)