Jump to content
Korean Random

SoprachevAK

User
  • Posts

    203
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by SoprachevAK

  1. Спасибо, но оно явно на кастомных флешках. Видимо буду решать свою задачу по другому
  2. Подскажите пожалуйста, есть ли в игре возможность запросить у пользователя ввести текст. Раньше были такие всплывающие окна при продаже танков и демобилизации экипажей, с просьбой ввести их цену, но сейчас их переделали под кастомные флешки для каждой задачи Хочется что то по типу стандартного диалога, но с полоской для ввода текста Если такого нет, то какие ещё есть способы запросить у пользователя текст? Желательно без создания своих флешек
  3. Сервер отстаёт от действий пользователя на один ping Серверный прицел отстаёт от сервера на один ping => Серверный прицел отстаёт от действий пользователя на два пинга Клиентский прицел старается "предугадывать" состояние сервера и реагировать на действия пользователя мгновенно И дальше вопрос что хуже: двойной пинг или ошибки предугадывания WotStat показывает, что в среднем, по клиентскому летит точнее (это для натиска. В рандоме тоже точнее, но там разница намного меньше)
  4. Ну вообще, так то совсем не круг, оно очень вверх сдвинуто Я вот ещё вспомнил, что надо арту исключать И я да, я всегда смотрю на клиентском, тк он точнее Разброс это сведение или то куда полетел снаряд (ballisticResultClient_r)? Я попробовал, и в идеальных условиях, и там и то и то прямо идеальный круг PS. Если брать выстрелы в движении, то там тоже другое получается, не круг, но другое. Да и это логично, как ты сам писал, горизонтальные рассинхроны чаще with abs(2 * pi() + ballisticResultClient_theta) as t, degrees(t) as deg select round(deg / 5) * 5 as d, avg(clientShotDispersion), avg(ballisticResultClient_r) from Event_OnShot where battleMode = 'REGULAR' and tankType != 'SPG' -- and clientShotDispersion / gunDispersion between 0.9999 and 1.00001 and clientMarkerDistance between 100 and 500 -- and abs(vehicleRotationSpeed) < 0.01 -- and abs(vehicleSpeed) < 0.01 -- and abs(turretSpeed) < 0.01 and ballisticResultClient_r between 0.2 and 1 group by d order by d;
  5. @KPOT2338 Нашел как визуализировать ещё более наглядно По всем выстрелам: С полным сведением, дистанция 100+: С полным сведением, дистанция 100+, нулевая скорость, пинг менее 30: И тоже самое, но обрезанное снизу не по 0, а по минимальному значению, чтоб нагляднее были видны перепады: Тоже самое, но дистанция от центра между 0.4 и 1
  6. Я тут чего то решил потыкаться в браузер, kr открылся У них там Chrome/73.0.3683.75, так что надо билдить сайт под старые браузеры Способ немного незаконный Как я понял, whitelist по url проверяется в нативном BigWorld.createWebView, скорее всего, его можно найти как dll (я не нашел), и наверняка там тупо стрингами хранится список вайтлиста НО, если переходить по сайтам внутри браузера, всё работает. Я в hosts подменил ip для igb-trading-caravan-ru.tanki.su, а он в вайтлисте. По ip хожу на свой сервер, откуда можно уже куда угодно хоть в гугл. К сожалению, я не нашел как выполнить на сайте произвольный JS, чтоб изнутри браузера перейти на другой url. (ну как, нашел, WebBrowser.executeJavascript, но кажется его выпилили: AttributeError: 'WebRender.WebBrowserProvider' object has no attribute 'executeJavascript') В теории, можно в прод пустить используя поддомен, например wotstat.igb-trading-caravan-ru.tanki.su, и в хостс соответственно тоже поддомен, и оно работет, однако редачить пользовательский hosts звучит не очень правильно. Может можно как то подменить dns изнутри игры, но как то я хз как оно в винде, чатгпт говорит нельзя. Если кто то захочет повторить, вот код: from helpers import dependency from adisp import adisp_process from skeletons.gui.game_control import IBrowserController class Demo(): browserCtrl = dependency.descriptor(IBrowserController) @adisp_process def __init__(self): yield self.browserCtrl.load('http://wotstat.igb-trading-caravan-ru.tanki.su') Demo() C:\Windows\System32\drivers\etc\hosts 84.38.183.104 wotstat.igb-trading-caravan-ru.tanki.su
  7. Выглядит красиво, но какие из этого сделать выводы, я не знаю Но оно как минимум не очень симметрично
  8. Да, действительно. Видимо всё таки стоит все эти вычисления проводить только для выстрелов с полным клиентским сведением, они автоматически неподвижны Тоже построил подобные графики, если расстояние близкое к центру ещё можно списать на погрешность вычислений, то вот график для длины плеча > 0.2, и это уже не вычислительная погрешность Я бы мог предположить, что это может как то быть связано с дальномером, когда маркер вроде бы вблизи, а снаряд берёт сильно вверх, чтоб по параболе полететь очень далеко, но вообще снаряд всегда летит по маркеру, а мод который это исправляет, делает это в противоположную сторону. select floor(ballisticResultClient_theta * 20) / 20 as ugol, count() from Event_OnShot where battleMode = 'REGULAR' and tankType != 'SPG' and ballisticResultClient_r > 0.2 and clientShotDispersion / gunDispersion between 0.99999 and 1.00001 group by ugol order by ugol;
  9. Сделал возможность отключить это копирование в конфиге мода. Кроме того, папка 2.0.0.0 создаваться теперь не будет. Если папка 2.0.0.0 уже существует, и в ней только мой мод, папка будет удалена. Из папок на будущие версии будут удалятся старые неактуальные версии мода. Например у меня в папке 1.26.0.0 лежало пять разных версий wotstat'a, каждый себя когда то скопировал. Теперь старые удалятся и будет лежать только одна актуальная. Из текущей версии, к сожалению, удалять нельзя, тк они все используются процессом танков По пути /mods/configs/wot_stat поместить текстовый файл config.cfg со следующим содержимым: { "disableAutoUpdate": true }
  10. На самом деле, сам факт того, что распределение угла неравномерно – это немного странно Я как то ожидал другого select floor(ballisticResultClient_theta * 10) / 10 as ugol, count() from Event_OnShot where battleMode = 'REGULAR' group by ugol; Окружность классическая тригонометрическая, 0 и 180 на горизонтали, 90 и -90 на вертикали. Получается, что вверх/вниз летит на 30% реже. Думаю это где нибудь ошибка в расчетах, но странно конечно
  11. Эх, если бы) Но на самом деле, возможно ничего страшного не случится. Мод либо не запустится и ничего не хукнет, либо хукнет, но внутренний код будет обёрнут в try catch, что в любом случае не остановит логику игры. Циклов которые могут бесконечно зациклиться тоже нет.
  12. А нужно? Как минимум нужно убрать версию 2.0.0.0, это я конечно был слишком оптимистичным) Ещё можно на будущие версии не добавлять, а перезаписывать мод, чтоб не было кучи разных версий мода в папке 1.26.0.0 но прямо полностью отключать не знаю, оно же нужно чтоб при апдейтах просадок по пользователям/статистики не было, а мод сейчас уже так написан, что он не будет влиять на игру, даже если апдейт его сломает
  13. это round(ballisticResultServer_r * 500) / 500 расстояние от центра круга сведения, до места где снаряд его пересёк
  14. А вот график плотности распределения выстрелов по кругу сведения, интересно откуда эта ступенчатость
  15. Взялся значит я за 2к исключений в час на сервере, посмотреть что вообще и откуда Оказалось, что проблема в моём баллистическом калькуляторе, который за скорость снаряда брал длину вектора скорости трассера, а оказывается, скорость трассера не постоянна по его траектории (кинетическая энергия переходит в потенциальную с повышением высоты -> скорость понижается), а снаряд в танках появляется на прямо из дула, а где то по траектории, у арты вот например обычно в середине траектории (там где он должен попасть в камеру игрока) Получается, что мой баллистический калькулятор работал неправильно всё это время. Я его исправил, и пересчитал все 160 миллионов старых выстрелов Жёлтое – до, красное – после. На арте. В общем то, сказ о потерянном времени) На обычных танках там вообще разницы нет. Зато теперь на душе спокойно и есть навык обновления 160 миллионов строк.
  16. Добавил на сайт соответствующий раздел Выглядит немного перегруженным, но оно хорошо структурировано, а главное есть процентики всего, и даже нормализированные https://wotstat.info/session/lootbox Шанс на Барона 0.039% это 2.5к коробок на танк, а открывать их можно только по 10, прикиньте как это запарно
  17. Такс, готово. В новой версии мода добавил сбор инфы о контейнерах. Постарался по максимуму распарсить что из них падает, но всё равно осталось несколько проигнорированных (dogtags, Enhancements, Tankmen, Entitlements). Всё кроме Tankmen я вообще хз что это такое. Всё основное распаршено Полный список, пока только SQL. В ближайшее время добавлю в инфографику Кроме того есть raw поле, куда сохраняется исходный json
  18. Тут поступило предложение собирать инфу о том, что выпадает из контейнеров. Методом тыка я сходу попал в нужную функцию https://github.com/StranikS-Scan/WorldOfTanks-Decompiled/blob/a073ff6fab4bdb9a915560cb3c774e645ea9ed64/source/res/scripts/client/gui/shared/gui_items/processors/loot_boxes.py#L25 И она в ctx имеет следующий результат для получения другого контейнера и 40к кредитов { 'bonus': [ { 'tokens': { 'lootBox:310032': { 'count': -1, 'expires': {} }, 'lootBox:310031': { 'count': 1, 'expires': { 'at': 2524608000L } } }, 'credits': 40000 } ], 'extData': {} } Вот результат для кофе с выпечкой { 'bonus': [ { 'tokens': { 'lootBox:310032': { 'count': -1, 'expires': {} } }, 'items': { 16123: 3 } } ], 'extData': {} } Подскажите, как превратить 16123 в кофе с выпечкой? Скорее всего это опять какой нибудь дескриптор который надо как то кастануть к описанию И ещё вопрос, как по id контейнера получить его описание? Вроде бы можно через itemsCache = dependency.descriptor(IItemsCache) itemsCache.items.tokens.getLootBoxes()['lootBox:310031']['category'] Но насколько можно быть уверенным что они есть в кеше, и может у кого то уже есть готовая реализация) ___________ Ну судя по всему я нашел все интересующие меня ответы тут https://github.com/StranikS-Scan/WorldOfTanks-Decompiled/blob/a073ff6fab4bdb9a915560cb3c774e645ea9ed64/source/res/scripts/client/messenger/formatters/service_channel.py#L2691 и мне надо просто реализовать такую же парсер функцию, но не в стринги, а в свой словарь Но хранить исходные результаты всё равно буду отдельно как JSON прямо в бд
  19. Спасибо за наводку, как то думал что форум мёртв, а он жив) Создал там тоже отдельную тему Вообще должен работать, просадок по игрокам не наблюдал, скорее всего у него индивидуальная проблема
  20. Спасибо, получилось. Если последним параметром передать CommonMarkerType.LOCATION, то там можно ещё много других классных маркеров Интересно, что упоминание 'eye' в проекте в принципе не встречается, кроме пары автосгенерированных мест) canvas.markerSetSticky ещё добавляет в UI стрелочку до маркера, если он не на экране, а markerSetMarkerObjectInFocus автоматически рассчитывает и отображает дистанцию В рандоме тоже работает. Есть идеи куда копать для пунктирной обводки на земле? Кажется я слишком сильно парюсь для потенциально временного решения, но почему бы и не сделать хорошо, если это не сложно
  21. Проверял ещё на старых маркерах, динамически двигаются раз в 5 секунд 1к – вообще никакой разницы 2к – фризов нет, но фпс уже начинает понижаться 10к – фпс падает до 15, появляются микрофризы, но скорее всего не от отрисовки, а от того что я там в цикле 10к раз invoke вызываю Учитывая, что я тестирую через виртуалку, как будто бы без видеокарты, думаю более чем пойдет. Само собой, нативно рисовать в спрайт внутри флеша будет оптимальнее, но это уже потом
  22. Вот этого я не учёл, спасибо Да, действительно перепутал когда писал, имел ввиду эти два SHOOTING_POINT_MARKER NAVIGATION_POINT_MARKER, в обычных боях работают Точечки тоже получились, я понял в чём проблема была, там name это не имя, а название вида точечки. В рандоме работает settings.ENTRY_SYMBOL_NAME.VEHICLE settings.CONTAINER_NAME.ALIVE_VEHICLES minimap.invoke(handle, 'setVehicleInfo', 777, 'mediumTank', '', 'enemy', '') minimap.invoke(handle, 'setVehicleInfo', 777, 'mediumTank', '', 'ally', '') А там где можно рисовать точечки, можно ими закрашивать области) К тому же, если их пуллить, очень даже оптимально
  23. Благодарю, всё получилось, там есть ещё много разных интересных маркеров, например NAVIGATION_MARKER и SHOOTING_MARKER, которые из топографии как раз для указания позиции куда ехать _____ Есть пара вопросов. В топографии есть вот такие вот красные точечки, судя по всему это VEHICLE_MARKER для пропавшей из засвета техники с пустым названием, но создать что то подобное у меня не получилось, может есть пример. Вопрос 2. В топографии есть два вот таких вот 3д маркера, как делать их? Искал по maps training, но чего то простого не нашел. Я понимаю, что скорее всего можно вручную через добавление модельки, но наверняка есть готовый механизм, так же как и с миникартой
  24. Скорее всего это действительно так, но этому есть объяснение – в натиске сражения очень близко и часто люди заходят в борта друг другу. Там в принципе и процент пробитий выше. Вот график % пожаров (красным) и взрывов бк (синим) по категориям боёв, но я брал только ББ. Пожаров почти в 2 раза больше
  25. Даа, я так и подумал, что оно точку входа в UI имеет. Спасибо за разъяснение)
×
×
  • Create New...