Jump to content
Korean Random

StranikS_Scan

Premium Member
  • Posts

    7,885
  • Joined

  • Last visited

  • Days Won

    267

Everything posted by StranikS_Scan

  1. Это всё хорошо, только пока что пользы нуль. Мозгуйте дальше, нужно искать реальный выхлоп
  2. Ну так эти 99,99% игроков - потому и не побеждают. Они все думают, что от того куда они едут и где стоят в бою зависит их процент побед или урон. Однако, корреляции нет от слова совсем. Это классический миф в танках. Потому и качают и ставят моды, показывающие им куда ехать. Аля карты, ведущие к Эльдорадо. А нужны не позиции, а приёмы игры. Это совершенно разные вещи. Например, когда я играл на хэлкате я всегда делал выстрел в видимого противника из-за двойного куста. Для чего всё время приходилось быть на ходу и менять позиции по сто раз - подсветить, переехать, выстрелить с уроном, переехать, подсветить, выстрелить и т.д.. Огромное число раз я таким способом разбирал других игроков, когда оставался один против двух, трёх и даже пяти противников, и завершал катку своей победой, намотав за бой несколько километров. Приём и его реализация - вот причина урона и побед, а не места и кусты, которые я занимал.
  3. Не даёт. В игре сильно большой рандом, из-за чего % побед у игроков коррелирует только с их средним уроном за бой. Фиолетовый средний урон за бой? Значит и процент побед тоже будет под 70-80%. И наоборот, нет фиолетового урона за бой, тогда и % побед будет в районе 50%. Поэтому всё решает умение игрока делать сверхтоповый урон за каждый бой. Такие игроки не опираются ни на стратегию, ни на тактику. Они катают везде по полю меняя фланги по сто раз за бой, используют имбовую технику с топовым начинкой и применяют, на 200% отработанные и отточенные, игровые приёмы, которые преследуют только одну цель - сверхтоповый урон. А запредельный процент побед - это следствие. Я знаю, как это работает, т.к. когда-то давно смог в фиолет на старом хэлкате. Так что все эти идеи (давно устаревшие) о том, чтобы там предсказать фланг, процент побед, итог боя или еще чего - выкидывай из головы. Это всё не работает. Для 99,99% игроков ответ всегда будет один ~50%.
  4. Осталось самое сложное - найти практическое применение всем эти данным.
  5. А кривую идеального распределения наложить можно?
  6. Не получится, не пайтановский объект. Тут только скопировать код функции PlayerAvatar.shoot(), продублировать как пользовательскую, вписать в неё свой код перед и/или после self.cell.vehicle_shoot() и затем прописать её как хук PlayerAvatar.shoot()
  7. Все верно, если хукнуть self.cell.vehicle_shoot() и в хуке запоминать time = BigWorld.time(), то в PlayerAvatar.updateGunMarker() можно посчитать реальный тайумаут сервера timeout = BigWorld.time() - time и он будет по факту складываться из времени формирования пакета на ПК, времени отсылки, времени работы сервера, времени отправки ответа и времени расшифровки пакета клиентом игры. А если еще хукнуть __doShot() из vehicle_extras и туда тоже вставить код выше, то можно аналогично вычислять таймаут клиента игры.
  8. Вышло обновление программы 2.2.0 1. Оптимизированы и ускорены алгоритмы обработки файлов и создания wotmod-пакетов 2. Обновлен формат cfg-файлов, введены маски с поддержкой звездочки, файлы проверены и актуализированы под клиент игры 1.24.0.0 3. Внесены правки и улучшения в GUI-версию программы, добавлено окно выбора клиента игры из тех, что установлены на ПК, доработано окно выбора цвета, исправлены ошибки и вылеты при выборе цвета, исправлены опечатки в текстах 4. Файл 7z.dll вынесен из ресурсов exe-файла в папку с программой, при отсутствии файла он будет автоматически скачен с сайта программы 5. Убран код на передачу статистики автору программы, соответственно убран ключ --no-send-statistic 6. Убран ключ --split-2gb-parts, теперь все пакеты объемом более 2 Гб делятся программой на части автоматически 7. Если нет файлов для обработки, то пустые wotmod-пакеты не создаются 8. Добавлена вставка файла properties.xml в wotmod-пакеты, он содержит информацию о версии пакета, мода, игры и опциях, с которыми мод был создан 9. Добавлен ключ --downsizing-ratio для уменьшения размеров текстур камуфляжей и ускорения их обработки, поддерживаются коэффициенты сжатия 2, 4 и 8 10. Добавлен ключ --rewrite-log, для перезаписи лог-файла
  9. Клиентское сведение живет своей жизнью и синхронизируется с сервером только, когда прилетает вызов PlayerAvatar.updateGunMarker(). Потому лучше его хукать, так надежнее, а не VehicleGunRotator.setShotPosition(). Сервер присылает в updateGunMarker() реальную величину тангенса угла разброса dispersionAngle, которая вписывается в первую ячейку переменной-массива VehicleGunRotator.__dispersionAngles[0] и тем самым заменяет клиентский тангенс угла разброса на серверный с последующим вызовом перерисовки сведения через PlayerAvatar.inputHandler.updateClientGunMarker(). Все остальное время клиент перерисовывает сведение путем периодического вызова функций VehicleGunRotator.__rotate() и за ней VehicleGunRotator.__updateGunMarker() в цикле VehicleGunRotator.__onTick c общим тиком 0.1 сек. При этом первая функция нужна для пересчета значения переменной VehicleGunRotator.__dispersionAngles с учетом динамики танка, а вторая - для непосредственной отрисовки сведения. Пересчет VehicleGunRotator.__dispersionAngles выполняется путем вызова функции PlayerAvatar.getOwnVehicleShotDispersionAngle(). В ней с помощью коэффициентов-модификаторов разброса и клиентских значения скоростей вращения башни и движения и вращения корпуса танка высчитывается текущее значение клиентского тангенса угла разброса. У этой функции есть входящий аргумент withShot, принимающий два значения либо "0", либо "1". Если вызов с единицей, то разброс будет пересчитан, как для выстрелившего орудия, т.е. будет применен соответствующий модификатор. Еще есть значение "2", что соответствует модификатору разброса при серии выстрелов. Вызов PlayerAvatar.getOwnVehicleShotDispersionAngle() с ненулевым withShot прописан только в одном месте клиента игры, это функция __doShot() в модуле vehicle_extras. Срабатывает эта функция при вызове функции showShooting() в модуле Vehicle. А его делает функция PlayerAvatar.__showTimedOutShooting() таймера-колбэка, который запускается через функцию PlayerAvatar.__startWaitingForShot(), которая вызывается внутри функции PlayerAvatar.shoot(), срабатывающей, когда юзвер жмет на кнопку выстрела. Задержка у таймера-колбэка задается вот таким образом: timeout = BigWorld.LatencyInfo().value[3] * 0.5 timeout = min(_SHOT_WAITING_MAX_TIMEOUT, timeout) timeout = max(_SHOT_WAITING_MIN_TIMEOUT, timeout) берется половина значения сглаженного пинга Ping/2 и накладывается ограничение в виде диапазона [0,12...0,2] сек (границы прописаны как константы прямо в модуле). Так как у большинства игроков пинг явно меньше 240 мс, то получаем таймер на 120 мс. Что же касается сервера, то команда выстрела на сервер уходит внутри функции PlayerAvatar.shoot() через нативный вызов self.cell.vehicle_shoot(), расположенный перед вызовом функции __startWaitingForShot() ---------------------------- Таким образом, при нажатии кнопки выстрела на сервер улетает команда выстрела, сервер обрабатывает её, делает выстрел и присылает новый тангенс угла разброса уже с учетом выстрела и на всё это у него уходит T1 = 2*Ping+ServerTime времени, а клиент с момента нажатия кнопки выстрела ждет T2 = 120 мс и затем сам пересчитывает тангенс угла разброса и перерисовывает сведение с учетом выстрела. Как результат, если окажется, что T1<<T2, то серверный разброс отреагирует раньше на выстрел чем клиентский, а если Т1>>T2, то клиентский разброс отреагирует на выстрел раньше серверного. Классическая проблема синхронизации клиент-сервер.
  10. Я так понимаю должно быть кэширование, чтоб прямые запросы, коих мульоны могут быть как юзверов, не задолбали базу данных?
  11. Не понял, ты про api лесты? Всё есть как и у ВГ и работает. Заходи в личный кабинет и внизу ссылка на кабинет разработчика И там создаешь аккаунт доступа для своего приложения/сервера и получаешь ключ XXXX для запросов к https://api.tanki.su/wgn/servers/info/?application_id=XXXX&game=wot Если у тебя сервер, то указываешь его IP-адреса и доступ будет разрешен только с них. Так XVM данные получает. У ВГ на сайте такой же механизм сделан, только у него свой api сервис https://api.worldoftanks.eu/wgn/servers/info/?application_id=XXXX&game=wot ================================================== А я максимум вот такое смог сделать https://straniks.ru/pub/api/v2/wot_online.php?online=all. Штатная БД, какая была из коробки, и ПХП. На ПХП мне понравилось писать. А вот фронтэнд я до сих пор не осилил, всё хочу прикрутить график реального времени и всё руки не доходят разобраться как это делается.
  12. Можешь убирать их, у них нет своей механики, они выделены только на уровне интерфейсной части клиента игры. ARMOR_PIERCING_HE это ARMOR_PIERCING, а FLAME это HIGH_EXPLOSIVE
  13. Гугли моды на парсинг результатов боя - https://github.com/chipsi007/wotstat/blob/c822afd7de938e846a0c84afdfd2e123aa509254/src/stat.py#L172
  14. Обновление программы 1.3.5 Список изменений: Исправлена проблема с редактированием значений в таблице параметров на некоторых компьютерах В окне выбора цвета исправлены ошибки при завершении работы окна, возникающие на некоторых компьютерах Обновлен список кластеров, добавлены адреса для тестовых серверов
  15. Если файлы с танками поменялись - то с этими танками могут быть в игре проблемы: вылеты, зависания, не отображения, пропадания частей, кривое отображение моделей и и.д. и т.п. А правки в модели танков разработчики вносят почти каждый микропатч.
  16. Потому что это общедоступная инфа и предоставляется разработчиками. Чтобы её не было видно нужно вкл. анонимайзер в настройках клиента игры.
  17. Покажи код мода чтобы увидеть как и где хочешь угол посчитать.
  18. Ну логично, поэтому я ничего не писал про PlayerAvatar Давай учи матчасть, декомпилы игры тебе в помощь.
  19. Вышло обновление программы 1.2.0 --------------------------------------------- [Fix] Внесены правки в интерфейс главного меню, добавлены диалоги при вызове некоторых команд [Fix] Исправлено самопроизвольное смещение редактора и вертикальной полосы вправо на пару пикселей при первом редактировании текста [Upd] При загрузке конфига первый в списке редактор автоматически становится активным и получает фокус ввода [Upd] Доработан код распознавания относительных путей в ссылках на файлы [Add] Добавлена опция для задания кодировки по умолчанию для открываемых файлов [Add] Добавлена опция для автоматического определения кодировки файлов при их открытии (включена по умолчанию) [Add] Добавлена возможность поменять вид кодировки для открытого файла через контекстное меню в строке состояния [Add] В выпадающем меню добавлены варианты логических констант с заглавной первой буквой True и False [Upd] Обновлен функционал валидации текста на соответствие формату файла и изменены соответствующие пункты в главном меню [Add] Добавлен выбор нотации при валидации JSON формата: классическая или расширенная (выбрана по умолчанию), в расширенной нотации распознаются в тексте файла комментарии и ссылки на файлы, записанные в XVM-стиле, в классической нотации комментарии и ссылки воспринимаются как ошибки синтаксиса, а также считаются ошибкой имена полей не обрамленные кавычками '...' или "..." [Add] Добавлено распознавание следующих ошибок синтаксиса: если стоит символ "," или "}" или "]" после двоеточия, например {key:}; если имя поля потеряло кавычку слева или справа от себя, например {"key: value}; если стоит запятая "," перед скобкой "]" или "}", например {key: value,} [Add] Реализована валидация *.xml и *.ini файлов и добавлены соответствующие опции в главном меню
  20. Вышло обновление программы 1.1.5 --------------------------------------------- [Upd] Внесены правки и улучшения в интерфейс и главное меню программы [Fix] Исправлены опечатки в названиях и в текстах интерфейса [Upd] Файл 7z.dll убран их ресурсов программы, при необходимости он автоматически скачивается с сервера [Add] В строке состояния добавлено отображение числа выделенных строк и выделенных символов [Fix] В окне выбора цвета исправлены ошибки при завершении работы окна, возникающие на некоторых компьютерах [Add] В окне выбора цвета добавлены кнопки отмены и повторения выбора цвета и всплывающие подсказки, возникающие при наведении мышки на образцы цвета [Add] Добавлено окно выбора клиента игры из тех, что установлены на ПК, окно вызывается из главного меню "Файл - Найти и выбрать клиент из списка" [Add] Добавлен пункт в меню "Анализ - Распознавать в тексте - Ссылки на файлы" [Add] Расширение *.sample добавлено в перечень расширений, поддерживаемых программой и регистрируемых ею в системном реестре
×
×
  • Create New...