История SC

Только что, Igroman787 сказал:

Мои заметки - это поле, где каждый для себя может оставить запись, чтобы не забыть ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”) 
И никто другой, кроме вас его увидеть не сможет (хранится локально на вашем компьютере)  ![:002j:](<fileStore.core_Emoticons>/emoticons/002j.png “:002j:”)

Понял, спасибо ![:):](<fileStore.core_Emoticons>/emoticons/).png “:):”).

HistorySC.PNG.ac56616f7bbf858e24ea651bd5fb0eb3.PNG

@[MountainMan](< base_url >/index.php?/profile/379530-mountainman/ “Перейти в профиль MountainMan”), сочувствую  ![:alien3:](<fileStore.core_Emoticons>/emoticons/alien3.png “:alien3:”)
На счет проверки сайта на вирусы: https://www.virustotal.com/ru/url/b83b402cc26c3b8b9c020c7135915c98657f7eed5ec2489f000fb89ff4358f60/analysis/1495449523/

Дошли руки для того, чтобы разобраться с никнеймами, которые скинул [weegee](< base_url >/index.php?/profile/1092265-weegee/ “Перейти в профиль weegee”), спасибо ему за это. В результате получилась база ~7,5k живых пользователей (игравших в период с 15 по 22 мая), большая часть из которых уже занесена в БД Истории SC. Сама база живых никнеймов: [nicknames.log](< base_url >/applications/core/interface/file/attachment.php?id=175686)

В итоге БД увеличилась с 9,5k до 12,5k пользователей ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)

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

Что-то тут не так.

Дык добавь себя, по идее есть функция “добавить юзверя к наблюдениям”

Привет!
Во первых, конечно же, огромный + за инструмент, большое спасибо.

Ну и пару вопросов:

  1. Каков ожидаемый срок жизни/поддержки этого инструмента? (Всеж всегда упирается в финансы - хостинг, дата, время и тд)

  2. Судя по дизайну, база данных будет постепенно нарщаиваться, и как и в любой другой ММО игроки приходят и уходять, допустим к концу года в базе данных будет 50 000 (конечно же цифры с потолка, и пальцы крестиком, в игре будет намного больше игроков), еще через год 100 000+ ну так далле. Этож каждую запись надо через API прогонять ежедневно, а так же место для ведения статистики и истории.
    Вообщем интерестны планы на будующее.

  3. Присутствует ли Защита от “SQL Injection”? - Очень не хотелось бы, чтобы кто-то под пивко по фану взял и нафиг стер всю базу данных.

Еще раз спасибо.

З.Ы. Есть ли возможность, что когда идет поиск по тегу корпорации, итоговый лист с никами игроков (или отдельной колонкой) были представлены как линки на поиск истории по этому нику, чтобы в ручную не перетаскивать в отдельные окошки, было бы очень удобно.

З.Ы.2. Хорошо бы перевести все руские надписи на английский и выставить инструмент на английском форуме.

Sharing is caring. Therefore i thought you could use this https://github.com/MightyEnki/sc-thingie/blob/master/names_dump.txt

В 24.05.2017 в 20:52, xKostyan_ сказал:

Привет!
Во первых, конечно же, огромный + за инструмент, большое спасибо.

Ну и пару вопросов:

  1. Каков ожидаемый срок жизни/поддержки этого инструмента? (Всеж всегда упирается в финансы - хостинг, дата, время и тд)

  2. Судя по дизайну, база данных будет постепенно нарщаиваться, и как и в любой другой ММО игроки приходят и уходять, допустим к концу года в базе данных будет 50 000 (конечно же цифры с потолка, и пальцы крестиком, в игре будет намного больше игроков), еще через год 100 000+ ну так далле. Этож каждую запись надо через API прогонять ежедневно, а так же место для ведения статистики и истории.
    Вообщем интерестны планы на будующее.

  3. Присутствует ли Защита от “SQL Injection”? - Очень не хотелось бы, чтобы кто-то под пивко по фану взял и нафиг стер всю базу данных.

Еще раз спасибо.

З.Ы. Есть ли возможность, что когда идет поиск по тегу корпорации, итоговый лист с никами игроков (или отдельной колонкой) были представлены как линки на поиск истории по этому нику, чтобы в ручную не перетаскивать в отдельные окошки, было бы очень удобно.

З.Ы.2. Хорошо бы перевести все руские надписи на английский и выставить инструмент на английском форуме.

  1. Ожидаемый срок жизни проекта пока бессрочен. Точнее пока я смогу за ним смотреть. С финансами пока проблем нету, веду несколько проектов, и пока они друг друга поддерживают. В будущем могу пропасть на годик, либо этим летом, либо через 2 года. На время моего отсутствия оставлю смотрящего.

  2. Да, развитие как дизайна так и функционала будет развиваться. Пока еще не решил что делать с теми игроками, которые не играют. Скорее всего напишу сервис, который будет упаковывать базу на Яндекс Диск, благо у них 32Gb свободного пространства на аккаунт. На счет количества запросов на сервер SC - думаю придется поговорить с разработчиками SC, если честно пока не знаю что делать с этим.

  3. Плохо разбираюсь в SQL инъекциях, поэтому вряд ли там есть такая защита, однако постарался правильно разделить права - с сайта никак корректировать базу невозможно, только считывать. Ядро сервиса, редактирующая БД находится на отдельном хостинге, на всякий случай)

  4. Да, дело пяти минут, может как нибудь прикручу, как будет настроение ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)

UPD : Прикрутил ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)

  1. На счет версии на английском - идея мне нравится, но сам я этим вряд ли буду заниматься (плохо у меня с другими языками). Но изначально писал код так, чтобы можно было внедрить мультиязычность.

 

В 24.05.2017 в 22:40, Tillowaty сказал:

Sharing is caring. Therefore i thought you could use this https://github.com/MightyEnki/sc-thingie/blob/master/names_dump.txt

Thanks for the base of nicknames. Unfortunately I can not add them all, because the server is not rubber. Therefore, I will add only those who played for the last week
I used an interpreter, I apologize for my bad English ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)

В 24.05.2017 в 23:04, Igroman787 сказал:

Thanks for the base of nicknames. Unfortunately I can not add them all, because the server is not rubber. Therefore, I will add only those who played for the last week
I used an interpreter, I apologize for my bad English ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)

Enjoy ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”) 

Data is ~20mb… and takes ~30min to get from api.

Скрытый текст

import os, json, localefrom datetime import datetimefrom pprint import pprintfrom everything import proper\_statsimport bs4 as bsfrom urllib.request import Request, urlopendef api\_stats(ign): url = 'https://gmt.star-conflict.com/pubapi/v1/userinfo.php?nickname=' req = Request(url+ign, headers={'User-Agent': 'Mozilla/5.0'}) webpage = urlopen(req).read() soup = bs.BeautifulSoup(webpage, 'lxml') keks = soup.findAll('p') string = str(keks).strip('[\</p\>]') data = json.loads(string) data = data['data'] player\_stat = {}for entry in data.keys():if entry == 'pvp':for key in data['pvp'].keys(): value = data['pvp'][key] player\_stat[key] = value elif entry != 'nickName': player\_stat[entry] = data[entry]if entry == 'clan':for key in data['clan'].keys(): value = data['clan'][key] player\_stat[key] = value if 'clan' not in data.keys() and 'name' not in player\_stat.keys(): player\_stat['name'] = 'w/o corp' player\_stat['tag'] = '\>.\<'if 'karma' not in data.keys() or 'prestigeBonus' not in data.keys(): player\_stat['karma'] = 0 player\_stat['prestigeBonus'] = 0return player\_statdef stats(players): data = {} amount = len(players) num = [x for x in range(len(players))] starting = datetime.now()def multi(player, i): start = datetime.now() kek = str(i).zfill(4)try:#data[player] = proper\_stats(player) data[player] = api\_stats(player)except:print(f'{kek} kurwa nie działa')pass end = datetime.now()print(f'{kek} out of {amount} which took {end-start}') pool = ThreadPool(16) pool.starmap(multi, zip(players, num)) pool.close() pool.join() finish = datetime.now()print(f'\nGot all data in {finish-starting}')return datadef chat\_parser(players):for dir in dirs: proper\_path = f'{path}/{dir}/chat.log'with open(proper\_path, 'r', encoding='ISO-8859-1') as kek:for one in kek:if '\>[' in one: ign = one.split('\>[')[1].split(']')[0].strip(' ') players.append(ign)return playersdef parser(): players = [] num = [x for x in range(len(dirs))]def multi(dir, num): proper\_path = f'{path}/{dir}/game.log'with open(proper\_path, 'r') as f:for line in f:if 'ADD\_' in line: ign = line.split(' (')[1].split(',')[0]if ' ' in ign: ign = ign.split(' ')[0] players.append(ign) pool = ThreadPool(8) pool.starmap(multi, zip(dirs, num)) pool.close() pool.join()return players path = 'C:\Users\YourUserNameThingie\Documents\My Games\StarConflict\logs' players = chat\_parser(parser()) + json.load(open('names\_dump.txt', 'r'))print(f'Players in logs: {len(players)}')players = list(set(players))print(f'Unique players in logs: {len(players)}') data = stats(players)print(f'Players which didn\'t change nick: {len(list(data.keys()))}')json.dump(data, open('lies.txt', 'w', encoding='ISO-8859-1'), default=str)

 

 

Давно. Думал есть ли в этой игре аналог сайтов со статистикой как в еве. Благодаря тебе теперь есть. Спасибо автору огромное.

 

П.С. А фитилку кораблей сможешь запилить?

8 часов назад, ArchangelARH сказал:

Давно. Думал есть ли в этой игре аналог сайтов со статистикой как в еве. Благодаря тебе теперь есть. Спасибо автору огромное.

П.С. А фитилку кораблей сможешь запилить?

На здоровье ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”) На счет фитилки кораблей - запилить возможно, но пока вдохновения нету  ![:fed003:](<fileStore.core_Emoticons>/emoticons/fed003.png “:fed003:”)

34 минуты назад, Igroman787 сказал:

 На счет фитилки кораблей - запилить возможно, но пока вдохновения нету  ![:fed003:](<fileStore.core_Emoticons>/emoticons/fed003.png “:fed003:”)

Перепроверять и долбить руками кучу параметров модулей и кораблей после каждого патча так себе затейка ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”) 

55 минут назад, weegee сказал:

Перепроверять и долбить руками кучу параметров модулей и кораблей после каждого патча так себе затейка ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”) 

Если уж что то и писать, то только то, что работает и без рук ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”) У меня уже несколько лет как идея есть, написать прогу, эмитирующая поведение игрового клиента и вытаскивающая из игры нужные мне параметры (всякие рейтинги, недоступные через api, аватарки пилотов и корпораций, и характеристики кораблей и модулей). Но разработчикам такая идея не нравится, а просить помощи больше не у кого ![:(](<fileStore.core_Emoticons>/emoticons/003.png “:(”) Пытался сам во всем этом разобраться (расшифровка игровых пакетов), но так и ничего не понял ![:(](<fileStore.core_Emoticons>/emoticons/003.png “:(”)
Но вот если бы кто то мне помог в этом разобраться, и написать такую утилиту - откроется столько возможностей!  ![:fed006:](<fileStore.core_Emoticons>/emoticons/fed006.png “:fed006:”)

4 часа назад, Igroman787 сказал:

Пытался сам во всем этом разобраться (расшифровка игровых пакетов), но так и ничего не понял

Ну тут вообще можно легко перешагнуть тонкую грань отделяющую сервис от взлома игры и автоматизацию. Тем более ковыряться в потрохах игры формально запрещено пользовательским соглашением.

Почтенный автор, а есть возможность в твоей программе отсортировать по рангам или по текам?

Можно ли такое сделать? Или исходный ресурс не дает такой информации?

 открытый api игры давно не обновляется

разделение рангов же появилось относительно недавно

 

http://gmt.star-conflict.com/pubapi/v1/userinfo.php?nickname=MEXAHOTABOP

 

 

22 часа назад, weegee сказал:

Ну тут вообще можно легко перешагнуть тонкую грань отделяющую сервис от взлома игры и автоматизацию. Тем более ковыряться в потрохах игры формально запрещено пользовательским соглашением.

Согласен, если разобраться в потрохах игры, появится сильное искушение автоматизировать игру  ![:fed006:](<fileStore.core_Emoticons>/emoticons/fed006.png “:fed006:”)

 

7 часов назад, ArchangelARH сказал:

Почтенный автор, а есть возможность в твоей программе отсортировать по рангам или по текам?

Можно ли такое сделать? Или исходный ресурс не дает такой информации?

Как сказал [MEXAHOTABOP](< base_url >/index.php?/profile/1087790-mexahotabop/ “Перейти в профиль MEXAHOTABOP”), исходный ресурс не дает такой информации. К сожалению, никто не занимается публичным api ![:(](<fileStore.core_Emoticons>/emoticons/003.png “:(”)

Добавил отображение 100 лучших пилотов (рейтинг K/D) и 100 самых активных пилотов (рейтинг сыгранных игр за сутки) ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)

Спасибо за кликаемый линк игроков в спсике-результате поиска по тэгу корпорации!