Всем привет! ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)
Торжественно открываю ивент на перепись населения Star Conflict: ts2.scorpclub.ru ![:015j:](<fileStore.core_Emoticons>/emoticons/015j.png “:015j:”) Надеюсь на вашу помощь и поддержку в данном треше ![:012j:](<fileStore.core_Emoticons>/emoticons/012j.png “:012j:”)
Распаковать содержимое архива в отдельную папку (а это аж целых два файла activscan.exe и Newtonsoft.Json.dll).
Запустить и войти в игру Star conflict. (если игра уже запущена, то лучше перезапустить, что бы прога не читала лишние логи)
Открыть игровой чат и установить ввод в поле ввода чата (должен мигать индикатор ввода текста)
Запустить activscan.exe.
Выбрать пункт SC population census.
Нажать кнопку Start.
Теперь дайте программе спокойно поработать)
Примечания:
При запуске модуля SC population census программа будет запрашивать с сервера пачку uid (10шт) и искать их никнеймы методом ping-pong (или просто по человечески - пинговать). После того, как он пропингует пачку этих никнеймов, он отправит найденные 10 никнеймов на сервер. После чего цикл повторяется.
Сервер выдает пачку никнеймов, основываясь на том, у которых uid еще нет никнеймов. Поэтому может возникнуть дубль проверки некоторых uid (одну и ту же пачку могут взять несколько activscan.exe клиентов). Защита от данного казуса встроена, но отключена, так как очень сильно начинает загружать ЦП (слишком много нужно проверять записей в таблице - какие uid были взяты, а какие еще нет). Пришлось включить.
При движении мышкой, программа приостанавливает свою работу на 3 сек.
По идее можно добавить возможность регистрировать кто сколько никнеймов перебрал (добавил опрос)
UPD : В скором времени перенесу ~57к никнеймов с schistory.space.
Первый подводный камень - обнаружил странный баг с uid 81.
В игре по uid=81 проживает никнейм UnDeadMoroz. Но! если смотреть uid данного никнейма через публичный апи SC, получаем соверешшно другую картуну (uid=89080). Как так то? ![:015j:](<fileStore.core_Emoticons>/emoticons/015j.png “:015j:”)
Что бы не пинговать данного пилота снова и снова пришлось включить на стороне сервера режим распределения вывода uid.
Там очень просто расписано как использовать многопоточность - ускоришь процесс еще в несколько раз.
Многопоточность это конечно хорошо) Оно даже там используется, например для одновременного чтения логов и выполнеия самого скрипта) Кстати, логи читаются через потоковый читатель StreamReader, что позволяет не перечитывать логи каждый раз целиком, а читать только новые сточки) Так же есть дополнительный поток, который удерживает игру в активном состоянии - это конечно уже на грани автоматизации и читерства, но все же во благо)
Но вот СК не любит, когда в его чат пишешь чаще, чем нормальный человек - выкидывает из игры, а потом вообще начинает банить через несколько таких попыток)
Добавил возможность записывать никнейм того, кто первый нашел пару uid-nickname. Для этого нужно скачать новую версию activscan.exe по ссылке: https://yadi.sk/d/jcVr7YOd3UvhXX И вписать свой никнейм в поле Searcher nickname (optional). По умолчанию данное поле пустое и на сервере воспринимается как НЛО ![:015j:](<fileStore.core_Emoticons>/emoticons/015j.png “:015j:”) 100 лучших никнеймов будут висеть в таблице на главной странице ts2.scorpclub.ru ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)
UPD: Кому интересна вся эта тема с программированием, выкладываю скрипт на python3 для перебора никнеймов через открытую API SC:
Простой перебор никнеймов, содержащие латински буквы и цифры:
import urllib.request
import itertools
import os
def Check(nickname):
buffer = GetWeb("http://gmt.star-conflict.com/pubapi/v1/userinfo.php?nickname=" + nickname)
if '"result": "error"' in buffer:
return
else:
print(nickname)
buffer = GetWeb("http://ts2.scorpclub.ru/api/v1/addnickname.php?nickname=" + nickname)
#end define
def GetWeb(url):
fp = urllib.request.urlopen(url)
mybytes = fp.read()
mystr = mybytes.decode("utf8")
fp.close()
return mystr
#end define
###
### Start program
###
file = open("list.txt")
for line in file:
line = line.replace('\r', '')
line = line.replace('\n', '')
Check(line)
file.close()
Так же теперь можно посмотреть все никнеймы определенной длины, которые есть в базе: http://ts2.scorpclub.ru/api/v1/getnicknames.php?length=15, где 15 - это длина никнейма ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)
Скрипты конечно же написаны на коленке и есть что дорабатывать ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)
Это даа ![:D](<fileStore.core_Emoticons>/emoticons/005j.png “:D”) PS : Спасибо за участие в данном треше ![:012j:](<fileStore.core_Emoticons>/emoticons/012j.png “:012j:”) Может найду на складе что нибудь полезное для тебя ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)
сервер неожиданно умер ![:D](<fileStore.core_Emoticons>/emoticons/005j.png “:D”)
UPD : Сервер заработал. Причина смерти - отключено администрацией из за высокой нагрузки на CPU ![:006j:](<fileStore.core_Emoticons>/emoticons/006j.png “:006j:”) Пришлось искусственно ограничить мощность сервера, что бы админы не ругались ![:004j:](<fileStore.core_Emoticons>/emoticons/004j.png “:004j:”)
сервер неожиданно умер ![:D](<fileStore.core_Emoticons>/emoticons/005j.png “:D”)
UPD : Сервер заработал. Причина смерти - отключено администрацией из за высокой нагрузки на CPU ![:006j:](<fileStore.core_Emoticons>/emoticons/006j.png “:006j:”) Пришлось искусственно ограничить мощность сервера, что бы админы не ругались ![:004j:](<fileStore.core_Emoticons>/emoticons/004j.png “:004j:”)
Просто информация по ходу развития проекта ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)
Всего найдено 192344 никнеймов, что примерно составляет 5,7% от общего количества.
К сожалению разработчики не хотят не могут нам предоставить весь список игроков SC, сослав на открытую api SC. Поэтому было решено разработать новое тяжелое вооружение: Python скрипт, перебирающий все возможные комбинации никнеймов через открытую api SC, способный перебирать до 50000 никнеймов в секунду через разные прокси, найденные в сети. В данный момент скрипт проходит бетатест.
И спасибо всем вам за поддержку проекта! ![:fed012:](<fileStore.core_Emoticons>/emoticons/fed012.png “:fed012:”)
UPD: Надеюсь меня не забанят за такое ![:D](<fileStore.core_Emoticons>/emoticons/005j.png “:D”)
Вот и подошел к концу проект “перепись населения SC” ![:fed001:](<fileStore.core_Emoticons>/emoticons/fed001.png “:fed001:”) Всего найдено 3 313 203 никнейма ![:fed006:](<fileStore.core_Emoticons>/emoticons/fed006.png “:fed006:”)
В скором времени начну дорабатывать серверную часть для работы с мертвыми никнеймами и перенесу все найденные никнеймы на сервер schistory.space ![](<fileStore.core_Emoticons>/emoticons/santa.gif “”)
Фрагмент видео, когда запустил программу со старыми игровыми логами ![:shturm_light:](<fileStore.core_Emoticons>/emoticons/shturm_light.gif “:shturm_light:”)
И всем большое спасибо за участие в данном треше! Особенно [Notip](< base_url >/index.php?/profile/1100115-notip/ “Перейти в профиль Notip”) ![:fed012:](<fileStore.core_Emoticons>/emoticons/fed012.png “:fed012:”)