Recommended Posts

программа делает из файла combat.log табличку. типичное расположение файла C:\Users\bla-bla-bla\Documents\My Games\StarConflict\logs

 

http://rgho.st/8ZSWLqmTs

  • Лайк 2
  • Вверх 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

удобненько...но мне знаний английского языка не хватает =D

Изменено пользователем BaaKo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно ли сделать счетчик побед за сессию/день ?

Интерестная программа)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

О случайно узнал о этой проге ;) Может кто дать скрин таблицы вывода этой проги ?

А то может она нормальная и нужно такую же написать ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Скрытый текст

 

10RF8.png

10RFE.png

10RFM.png

 

Жесть все подозрительные стали. Не хром ругается, а антивирус, скорее всего. РГХО.СТ - обычный файлообменник, смею заметить - очень удобный. 

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

Изменено пользователем Dive_r

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 26.09.2016 в 13:34, Dive_r сказал:
  Показать содержимое

 

10RF8.png

10RFE.png

10RFM.png

 

Жесть все подозрительные стали. Не хром ругается, а антивирус, скорее всего. РГХО.СТ - обычный файлообменник, смею заметить - очень удобный. 

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

Fake.png

Сам понимаешь желания дальше переходить нет. А я не подозрительный пока у меня на весь экран красная картинка не вылетит. :fed015:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У тебя левый редирект стоит. Проверяйся на вирусы. Правильная ссылка - http://rgho.st/8ZSWLqmTs, без всяких meson. Опять же, проблема не в сайте. 

Если надо - залью программу на ЯД, т.к. автор не появляется в теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Dive_r сказал:

У тебя левый редирект стоит. Проверяйся на вирусы. Правильная ссылка - http://rgho.st/8ZSWLqmTs, без всяких meson. Опять же, проблема не в сайте. 

Если надо - залью программу на ЯД, т.к. автор не появляется в теме.

на гит или че аналогичное сразу кидай)

Изменено пользователем Vector_Armado

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скинул в свою темку ссылку на эту программу ЯД.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

<html>
<body>
<script>
combat_log=new String                                //файл лога log's file    
len_combat=new Number                                //размер лога байт log's size bytes
combat=new Array                                    //массив строк
separates=new Array('| Apply aura','| Cancel aura','| Spell ','|    Participant','| Damage','| Rocket','| Heal','| AddStack','| Set','| Teleporting','| Reward','| Secondary','| PVE_Mission')                                         //ключевые слова для ненужных строк
tables=new Array
tbl=new Array
p_tags=new Array
games_list=new Array
games_list[0]={
    game_number : 0,    //номер по-порядку
    game_begin : 0,        //начальная строка
    game_end : 0,        //конечная строка
    game_type : '',        //тип игры
    map_name : ''}        //название карты
date_=new String(' Date:')
connect_to_game=new String('Connect to game')
start_game_play=new String('= Start')
game_play_finished=new String('Gameplay finished.')
spawn_spaceShip=new String('Spawn SpaceShip')
killed=new String('Killed')
killer=new String('killer')
reward=new String('| reward')
for_victory=new String('for victory')
for_defeat=new String('for defeat')
experience_=new String('experience')
credits_=new String('credits')

function start_()
{
    combat_log=document.all.combatlog_text.value    //храним первоначальный файл на всякий случай
    document.all.count1.value='Size: '+combat_log.length+' B'
    delete_false_strings()                            //удаляем ненужные строки
    get_battle_date()                                //получаем дату
    get_games_list()                                //список игр в файле
}

function delete_false_strings()                        //убираем ненужные строки
{
    var short_array=new Array
    var b=true
    var k=new Number
    var k1=new Number
    //short_array=document.all.combatlog_text.value.split('\n')                    //делим на строки/split for strings
    short_array=combat_log.split('\n')
    document.all.combatlog_text.value=''
    
    for (var i=0; i<=short_array.length-1; i++)                                    //ищем строки с for victory и for defeat и защищаем их
    {
        k=short_array.indexOf(for_victory)
        if (k>=0)
        {
            k=short_array.indexOf('Reward')
            if (k>=0)
            {
                short_array=short_array.substring(0,k)+'r'+short_array.substring(k+1,short_array.length)
            }
        }
        k=short_array.indexOf(for_defeat)
        if (k>=0)
        {
            k=short_array.indexOf('Reward')
            if (k>=0)
            {
                short_array=short_array.substring(0,k)+'r'+short_array.substring(k+1,short_array.length)
            }
        }
    }
    for (var i=0; i<=short_array.length-1; i++)                                    //игнорируем строки с ключевыми словами и пишем в окно
    {    
        for (var j=0; j<=separates.length-1; j++)
        {
            k=short_array.indexOf(separates[j])
            if (k>=0)
            {
                b=false
                break
            }
        }
        if (b==true) 
        {
            if (short_array!='')
            {
                document.all.combatlog_text.value+=short_array+'\n'
            }
        }
        else
        {
            b=true
        }
    }
    combat=document.all.combatlog_text.value.split('\n')    //получаем укороченный массив
    document.all.count1.value='Size: '+document.all.combatlog_text.value.length+' B'
}

function find_string(search_world, index_start, index_end)        //поиск строки с ключевым словом. номер строки в combat
{
    if (index_end==0)
    {
        index_end=combat.length-1
    }
    for (var i=index_start; i<=index_end; i++)
    {
        if (combat.indexOf(search_world)>=0)
        {
            return i
        }
    }
    return -1
}

function get_battle_date()
{
    var i=new String
    i=find_string(date_, 0, 0)
    if (i!=-1)
    {
        document.all.date_text.value=combat.substring(combat.indexOf(date_)+1, combat.length)
    }
    else
    {
        document.all.date_text.value=''
    }
}

function get_games_list()
{
    var i_begin=0
    var i_start=0
    var i_end=0
    var j=0
    while (i_begin!=-1)
    {
        i_begin=find_string(connect_to_game, i_end, 0)
        if (i_begin==-1)
        {
            break
        }
        i_start=find_string(start_game_play, i_begin+1, 0)
        i_end=find_string(connect_to_game, i_start+1, 0)
        if (i_end==-1)
        {
            i_end=combat.length-1
        }
        i_end--
        
        games_list[j]={game_number : 0,    game_begin : 0,    game_end : 0, game_type : '', map_name : ''}
        games_list[j].game_begin=i_begin
        games_list[j].game_type=combat[i_start]
        games_list[j].game_end=i_end
        games_list[j].game_number=j
        document.all.cnsl.value+=games_list[j].game_number+': '+games_list[j].game_type+games_list[j].game_begin+'-'+games_list[j].game_end+'\n'
        j++
    }
}

function find_col(col_head)
{
    for (var i=0; i<=tbl[0].length-1; i++)
    {
        if (col_head==tbl[0])
        {
            return i
        }
    }
    return -1
}

function find_row(row_head)
{
    for (var i=0; i<=tbl.length-1; i++)
    {
        if (row_head==tbl[0])
        {
            return i
        }
    }
    return -1
}

function date_to_table(table_number)
{
    var i_correct=-1
    for (var i=0; i<=tbl.length-1; i++)
    {
        i_correct++
        if ((document.all.check_simple.checked)&&(tbl[1]==undefined))        //пропускаем строки с объектами, если флажок включен
        {
            i_correct--
            continue
        }
        var j_correct=-1
        var k=tables[table_number].insertRow(i_correct)
        for (var j=0; j<=tbl[0].length-1; j++)
        {
            j_correct++
            var ss=tbl[0][j]
            var i_row2=find_row(ss)
            if (i_row2>0)
            {
                if (tbl[i_row2][1]==undefined)
                {
                    j_correct--
                    continue
                }
            }
            var c=k.insertCell(j_correct)
            if (tbl[j]==undefined)
            {
                if (j==1)
                {
                    c.innerText='Object'
                }
                else
                {
                    c.innerText=''
                }
            }
            else
            {
                c.innerText=tbl[j]
            }
        }
    }
}

function calc_statistic()                                //рассчитаем статистику
{
    var kill_col=3
    var die_col=4
    var kill_die_col=5
    var i_obj_sub=1
//считаем убийства
    for (var i=1; i<=tbl.length-1; i++)
    {
        var i_name=tbl[0]
        tbl[kill_col]=0
        for (j=8; j<=tbl.length-1; j++)
        {
            {
                if (tbl[i_obj_sub]==undefined)
                {
                    if (tbl[j]!=undefined)
                    {
                        if (isNaN(parseInt(tbl[j]))==false)
                        {
                            tbl[kill_col]=parseInt(tbl[kill_col])+parseInt(tbl[j])
                        }
                    }
                }
                else
                {
                    if (tbl[j]!=undefined)
                    {
                        var i_name_in_head=tbl[0][j]
                        i_row_name_in_head=find_row(i_name_in_head)
                        if (tbl[i_row_name_in_head][1]=='Human')
                        {
                            if (isNaN(parseInt(tbl[j]))==false)
                            {
                                tbl[kill_col]=parseInt(tbl[kill_col])+parseInt(tbl[j])
                            }
                        }
                    }
                }
            }
        }
    }
//считаем смерти
    for (var i=1; i<=tbl.length-1; i++)
    {
        var i_name=tbl[0]
        var i_name_col=find_col(i_name)
        tbl[die_col]=0
        if (i_name_col>=0)
        {
            for (j=1; j<=tbl.length-1; j++)
            {
                if (tbl[1]!=undefined)
                {
                    if (isNaN(parseInt(tbl[j][i_name_col]))==false)
                    {
                        tbl[die_col]=parseInt(tbl[die_col])+parseInt(tbl[j][i_name_col])
                    }
                }
            }
        }
    }
//считаем kill/die
    for (var i=1; i<=tbl.length-1; i++)
    {
        if (tbl[die_col]=='0')
        {
            if (tbl[1]!=undefined)
            {
                tbl[kill_die_col]='Undeath'
            }
        }
        else
        {
            tbl[kill_die_col]=Math.trunc(Math.round(parseInt(tbl[kill_col])/parseInt(tbl[die_col])*100))
        }
    }
}

function calc_()
{
    var ind=new Number
    var ind1=new Number
    var ind2=new Number
    var ind3=new Number
    var s=new String
    var i_row=new Number
    var i_row2=new Number
    var i_col2=new Number
    var i_col=new Number
    var number_table=new Number
    var number_string_in_combat=new Number
    var games_numbers=new Array
//обрабатываем строку с номерами игр    
    s=document.all.choice_games.value
    if (s=='')                                                                                        //если номера не введены, то обрабатываем все игры
    {
        s=''
        for (var i=0; i<=games_list.length-1; i++)
        {
            s=s+i+' '
        }
        s.length--
    }
    s=s.trim()
    games_numbers=s.split(' ')                                                                        //получаем массив с номерами игр
    document.all.cnsl.value+=games_numbers.join()+' choiced\n'
//---------------------------------    
    for (number_table=0; number_table<=games_numbers.length-1; number_table++)                        //цикл по номерам игр
    {
        i_row=0
        i_col=0
        p_tags[number_table]=document.createElement("p")
        p_tags[number_table].innerText=games_list[games_numbers[number_table]].game_type+'\n'
        document.all.results_block.appendChild(p_tags[number_table])
        tables[number_table]=document.createElement("table")
        tables[number_table].setAttribute("border", "2")
        document.all.results_block.appendChild(tables[number_table])
        tbl[0]=new Array        //шапка таблицы
        tbl.length=1
        tbl[0].length=1
        tbl[0]=['','Obj/Sub','Win/Lose','Kill','Die','Kill/Die%','Experience','Commerce']
        for (number_string_in_combat=games_list[games_numbers[number_table]].game_begin+1; number_string_in_combat<=games_list[games_numbers[number_table]].game_end; number_string_in_combat++)    //цикл по строкам combat от начала до конца игры с номером games_numbers[number_table]
        {
            ind=combat[number_string_in_combat].indexOf(start_game_play)
            if (ind>=0)
            {
                ind1=combat[number_string_in_combat].indexOf("'", ind)
                ind2=combat[number_string_in_combat].indexOf("'", ind1+1)
                s=combat[number_string_in_combat].substring(ind1+1, ind2)
                s.trim()
                tbl[0][0]=s
                continue
            }
            ind=combat[number_string_in_combat].indexOf(game_play_finished)
            if (ind>=0)
            {
                continue
            }
            ind=combat[number_string_in_combat].indexOf(spawn_spaceShip)        //строка со спауном
            if (ind>=0)
            {
                ind1=combat[number_string_in_combat].indexOf("(", ind)
                ind2=combat[number_string_in_combat].indexOf(",", ind1+1)
                s=combat[number_string_in_combat].substring(ind1+1, ind2)        //это имя

                i_col=find_col(s)                                                //ищем его в шапке
                if (i_col==-1)                                                    //если его ещё нет
                {
                    tbl[0].push(s)                                                //добавляем его в шапку
                    tbl[tbl.length]=new Array(s)                                //создаём новую строку 
                    tbl[tbl.length-1].push('Human')                                //и назначаем его человеком
                }
                continue
                
            }
            
            ind=combat[number_string_in_combat].indexOf(killed)                    //строка с убийством
            if (ind>=0)
            {
                ind1=combat[number_string_in_combat].indexOf(" ", ind+7)-1        //ищем имя убитого
                ind2=combat[number_string_in_combat].indexOf("|", ind+7)
                if (ind1>ind2)
                {
                    ind1=ind2
                }
                s=combat[number_string_in_combat].substring(ind+7, ind1)
                s.trim()                                                        //имя убитого
                i_col=find_col(s)                                                //ищем столбец с именем убитого
                if (i_col==-1)                                                    //если этого имени ещё нет, то
                {
                    tbl[0].push(s)                                                //то добавим такой столбец
                    i_col=tbl[0].length-1                                        //определяем номер столбца.он последний
                }
                i_row=find_row(s)                                                //определяем, есть ли это имя в строках
                if (i_row==-1)                                                    //если нет, то
                {
                    tbl[tbl.length]=new Array(s)                                //создадим ещё одню строку
                }
                            
                ind=combat[number_string_in_combat].indexOf(killer)                //дальше ищем слово killer
                if (ind>=0)
                {
                    ind1=combat[number_string_in_combat].indexOf(" ", ind)+1
                    ind2=combat[number_string_in_combat].indexOf("|", ind1)        
                    s=combat[number_string_in_combat].substring(ind1, ind2)
                    s.trim()
                    i_col2=find_col(s)                                            //ищем столбец с именем убийцы
                    if (i_col==-1)                                                //если этого имени ещё нет, то
                    {
                        tbl[0].push(s)                                            //то добавим такой столбец
                    }
                    i_row=find_row(s)                                            //ищем строку убийцы
                    if (i_row==-1)                                                //и если её нет
                    {
                        tbl[tbl.length]=new Array(s)                            //то сделаем новую
                        i_row=tbl.length-1                                        //и запомним
                    }
                    
                }
                if (tbl[i_row][i_col]!=undefined)
                {
                    tbl[i_row][i_col]=1+parseInt(tbl[i_row][i_col])
                }
                else
                {
                    tbl[i_row][i_col]=1
                }
            }
            
            ind=combat[number_string_in_combat].indexOf(for_victory)    //строка с victory
            if (ind>=0)
            {
                ind=combat[number_string_in_combat].indexOf(reward)        //ищем в ней reward
                if (ind>=0)
                {
                    i_begin=ind=ind+8
                    while (combat[number_string_in_combat][i_begin]==' ')            //отсчитываем пробелы до начала имени
                    {
                        i_begin++
                    }
                    i_end=i_begin+1
                    while (combat[number_string_in_combat].charCodeAt(i_end)!=9)    //находим конец имени знак tab
                    {
                        i_end++
                    }
                    s=combat[number_string_in_combat].substring(i_begin, i_end)        //получаем имя
                    i_row=find_row(s)
                    if (i_row>0)                                                    
                    {
                        tbl[i_row][2]='Win'                                            //записываем его в победители
                        i_begin=i_end+1                                                //где-то здесь после tab начинается число
                        i_end=combat[number_string_in_combat].indexOf(experience_)    //ищем слово expirience
                        if (i_end>0)                                                //если оно есть
                        {
                            i_col=6
                        }
                        else                                                        //если его нет, то
                        {
                            i_col=7
                            i_end=combat[number_string_in_combat].indexOf(credits_)    //ищем credits
                        }
                        if (i_end>0)                                                //ищем число перед этим словом
                        {
                            var n=combat[number_string_in_combat].substring(i_begin, i_end-1)    //но возможно, что там в начале пробелы
                            n=n.trim()                                                            //на всякий случай попробуем отрезать их
                            tbl[i_row][i_col]=n
                        }
                    }
                    
                }
                continue
            }
            
            ind=combat[number_string_in_combat].indexOf(for_defeat)        //ищем строку с проигравшим
            if (ind>=0)
            {
                ind=combat[number_string_in_combat].indexOf(reward)        //ищем в ней reward
                if (ind>=0)
                {
                    i_begin=ind=ind+8
                    while (combat[number_string_in_combat][i_begin]==' ')            //отсчитываем пробелы до начала имени
                    {
                        i_begin++
                    }
                    i_end=i_begin+1
                    while (combat[number_string_in_combat].charCodeAt(i_end)!=9)    //находим конец имени знак tab
                    {
                        i_end++
                    }
                    s=combat[number_string_in_combat].substring(i_begin, i_end)        //получаем имя
                    i_row=find_row(s)
                    if (i_row>0)                                                    
                    {
                        tbl[i_row][2]='Lose'                                        //записываем его в лузеры
                        i_begin=i_end+1                                                //где-то здесь после tab начинается число
                        i_end=combat[number_string_in_combat].indexOf(experience_)    //ищем слово expirience
                        if (i_end>0)                                                //если оно есть
                        {
                            i_col=6
                        }
                        else                                                        //если его нет, то
                        {
                            i_col=7
                            i_end=combat[number_string_in_combat].indexOf(credits_)    //ищем credits
                        }
                        if (i_end>0)                                                //ищем число перед этим словом
                        {
                            var n=combat[number_string_in_combat].substring(i_begin, i_end-1)    //но возможно, что там в начале пробелы
                            n=n.trim()                                                            //на всякий случай попробуем отрезать их
                            tbl[i_row][i_col]=n
                        }
                    }
                    
                }
                continue
            }
        }
        calc_statistic()
        date_to_table(number_table)
    }
}

</script>
<br>
<p>Open file combat.log and copy-past to window (wait sometime abt 1-3 minute)</p>
<br>
<textarea id=combatlog_text rows=16 cols=200></textarea>
<hr>
<p>Press button "log's analysis" for getting games' list</p>
<button onclick=start_()>log's analysis</button>
<br>
<textarea rows=16 cols=200 id=cnsl></textarea>
<hr>
<p>Input numbers of games' or/and press button "calc"</p>
<input type=text id=choice_games></input>
<input type=checkbox checked id=check_simple>Simple table</input>
<br>
<button onclick='calc_()'>calc</button>
<hr>
<input type=text size=10 id=count1><input type=text size=40 id=date_text>
<hr>
<div id=results_block></div>
</body>
</html>

  • Благодарю 1
  • Вверх 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу