Jump to content
Korean Random

SoprachevAK

User
  • Posts

    415
  • Joined

  • Last visited

  • Days Won

    31

Everything posted by SoprachevAK

  1. Yes, its still blocked, but also, everyone bypasses these blocks, and most likely, if a person knows what Discord is, then he knows how to bypass the blocking
  2. Какая из? Проверил на основном wotstat и снизу на сайте позиций, обе активны и работают https://discord.gg/7K8W9JE6xU
  3. Привет, удивительно что из всех мест ты написал именно сюда Напиши на почту [email protected] и разберёмся с твоей ситуацией. Вообще ключи всем приходят, они доступны сразу после покупки, дублируются на указанную почту, а ещё, можно через почту войти в личный кабинет и там найти историю покупок
  4. Ну в общем ответ на мой первоначальный вопрос как добавить слой на миникарту 1. Спавним AbstractView 2. Находим BaseBattlePage 3. Берём BaseBattlePage.minimap 4. Если это Minimap то кладём наш слой в minimap.entriesContainer и сдвигаем на minimap.entriesContainer.flags.width/2, если EpicMinimap то в epicMinimap.background и не сдивгаем 5. Размер миникарты в поинтах не зависит от зума и получить его можно их minimap.entriesContainer.flags и epicMinimap.background.originalWidth соответственно AS3 public class MinimapOverlay extends AbstractView { private var demo:Sprite = new Sprite(); override protected function configUI():void { super.configUI(); var battlePage:BaseBattlePage = getBattlePage(); if (battlePage == null) return; if (battlePage.minimap is Minimap) { var minimap:Minimap = battlePage.minimap as Minimap; var index:int = minimap.entriesContainer.getChildIndex(minimap.entriesContainer.flags); minimap.entriesContainer.addChildAt(demo, index); overlayWidth = minimap.entriesContainer.flags.width; overlayHeight = minimap.entriesContainer.flags.width; demo.x = -overlayWidth / 2; demo.y = -overlayHeight / 2; } else if (battlePage.minimap is EpicMinimap) { var epicMinimap:EpicMinimap = battlePage.minimap as EpicMinimap; epicMinimap.background.addChild(demo); overlayWidth = epicMinimap.background.originalWidth; overlayHeight = epicMinimap.background.originalHeight; } } private function getBattlePage():BaseBattlePage { var viewContainer:MainViewContainer = App.containerMgr.getContainer(LAYER_NAMES.LAYER_ORDER.indexOf(LAYER_NAMES.VIEWS)) as MainViewContainer; if (viewContainer == null) return null; for (var i:int = 0; i < viewContainer.numChildren; ++i) { var child:DisplayObject = viewContainer.getChildAt(i); if (child is BaseBattlePage) return child as BaseBattlePage; } return null; } } Python OVERLAY_VIEW = "WOTSTAT_POSITIONS_MINIMAP_OVERLAY_VIEW" def setup(): mainViewSettings = ViewSettings( OVERLAY_VIEW, MinimapOverlay, "wotstat.positions.minimapOverlay.swf", WindowLayer.WINDOW, None, ScopeTemplates.GLOBAL_SCOPE, ) g_entitiesFactories.addSettings(mainViewSettings) def onAppInitialized(event): if event.ns != APP_NAME_SPACE.SF_BATTLE: return app = ServicesLocator.appLoader.getApp(event.ns) # type: AppEntry if not app: return app.loadView(SFViewLoadParams(OVERLAY_VIEW)) g_eventBus.addListener(events.AppLifeCycleEvent.INITIALIZED, onAppInitialized, EVENT_BUS_SCOPE.GLOBAL) Но есть нюанс, XVM удаляет инстанс battlePage.minimap вместе с нашим слоем, и создаёт свою миникарту но уже без. Так что инжектить наш слой надо не на configUI, а на COMPONENT_REGISTERED и подчищать на COMPONENT_UNREGISTERED def onComponentRegistered(event): if event.alias == BATTLE_VIEW_ALIASES.MINIMAP: setup() def onComponentUnregistered(event): if event.alias == BATTLE_VIEW_ALIASES.MINIMAP: unSetup() g_eventBus.addListener(events.ComponentEvent.COMPONENT_REGISTERED, onComponentRegistered, scope=EVENT_BUS_SCOPE.GLOBAL) g_eventBus.addListener(events.ComponentEvent.COMPONENT_UNREGISTERED, onComponentUnregistered, scope=EVENT_BUS_SCOPE.GLOBAL) После всех этих манипуляций можно смело рисовать внутри нашего спрайта всё что захочется. Рисует оно векторно, так что проблем быть не должно. (скрин стального зашакален, других нет)
  5. Да, смотрел, но там нет подходящей комбинации Как я понял тут два выхода 1. Писать свой шейдер для ScaleForm (но они где то там в движке живут) 2. Вручную процессить bitmap после отрисовки и обратно делить на прозрачность, но флеш слишком медленный, чтоб это было оптимально. Как вариант можно наверное разбить картинку на чанки, и обрабатывать по одному чанку в кадр, но как то конечно костыльненько и я уже не запаривался
  6. Ага Реально я дурачок, повёлся года два назад на пример симлинка в win32 и всё это время искренне верил, что с x64 не работает А оно работает) Тогда проблем нет, всем спасибо)
  7. А я видимо чего то не знаю Меня интересует REPL к клиенту. Его можно с x64 подружить? Тут же вроде бы и в шапке написано про x86, да и костыли с симлинками в x32
  8. У меня есть Sprite, в который я через graphics.drawRect рисую кучу всего, настолько кучу, что она приводит к падению fps (не в момент отрисовки, а просто так). Потому что через graphics рисуются векторные фигуры, которые потом каждый кадр рендерятся на монитор. Я хотел оптимизировать это, и закешировать в BitMap Пробую так: _batchContainer = new Sprite(); bmpData = new BitmapData(width, height, true, 0x00000000); bmpData.draw(_batchContainer); И вот этот bmpData.draw рисует в premultiplied формате. То есть RGB каналы уже умножены на прозрачность. После чего, я кладу BitmapData в Bitmap, которые рендерится на монитор в unpremultiplied, то есть ещё раз домножает на прозрачность. Я конечно не надеюсь, но может быть кто нибудь знает, как закешировать векторную графику спрайта в прозрачную битмапу? Белый полупрозрачный квадрат (FFFFFF / 50%) - справа – векторный спрайт - слева – векторный спрайт отрисованный в BitMap Если взять его по bitmapData.getPixel32, получаю 0x7F7F7F7F Что как раз и есть premultiplied
  9. Ну я не видел( Там пока не сделают модлоадер для JS, ничего и не появится
  10. @StranikS_Scan есть ощущение, что Леста в 1.33 похерила x32 клиент. Установил тест с нуля, и win32 тупо нет. Может оно теперь по умному качает как то, типа х32 клиент только на х32 винде, но чёт сомнительно
  11. Ссылка верная, никаких вирусов нет, там у самого мода открытый исходный код, так что потенциальные вирусы и стиллеры были бы видны
  12. А что такое 3D настройки? Есть просто настройки, есть маркеры в 3д, но маркеры всегда есть Чтоб настройки в ангаре были, надо два дополнительных модика поставить, там в инструкции есть на сайте
  13. Для серебра пока нет Для опыта есть универсальная прогрессия, там можно много чего настроить, так ещё и взводом соревноваться. Но можно и соло
  14. Ого ну да, думаю это причина Но у меня есть для тебя решение – напиши свой ключ одной строчкой в текстовый файл и сохрание его в /mods/wotstat.positions.license (без версии игры, wotstat.positions.license это сам файл, без .txt)
  15. Инфографика -> Виджеты -> Прогрессия -> Нанесённый урон https://wotstat.info/session/widgets/efficiency/sum/solo/damage Там можно даже обратный отсчёт сделать, например от 100к сколько осталось. А можно и вперёд тоже
  16. Попробуй в настройках винды поменять браузер по умолчанию. Скорее всего у тебя там не установлен никакой. Надо установить.
  17. Всё что у меня есть на текущий момент. Ну точно меньше трёх дней, тк за 3 дня этот сервер в принципе собрали с нуля и установили в ДЦ.
  18. True. But i still want continue use it. Probability of failure is low, and 8 TB is worth the risk. But in this case I'm out of luck. Fortunately, db backups were made every day.
  19. Пофиксили этот баг в 1.32 К сожалению я потерял табличку, а теперь ещё и запрос, но успел проверить в первый день после патча
  20. Сразу мод будет как будто бы запарно Возможно тебя устроит мод на добавление любых виджетов и собственно сам виджет https://wotstat.info/session/widgets/competitive/universal Это если что прямо в игру добавляется Ну и там если поискать, то есть SDK чтоб на js писать свои любые видежты
  21. Yes. Add this cote to end of Games\WOT\res\packages\gui-partX.pkg\gui\gameface\js\index.js window.engine.on('Ready', () => { const style = document.createElement('style'); style.innerHTML = ` .highlight-rect { box-sizing: border-box; position: absolute; border: 2px solid cyan; pointer-events: none; z-index: 100000; display: none; } .info-div { box-sizing: border-box; position: absolute; background-color: rgba(0, 0, 0, 0.7); color: #fff; padding: 10px 10px; border-radius: 10px; pointer-events: none; font-size: 1em; transform: translate(0, -100%); z-index: 100000; line-height: 1.2; } .info-div p { margin: 0; } .target-point { position: absolute; width: 5px; height: 5px; background-color: #ff000059; border-radius: 50%; pointer-events: none; z-index: 100000; } `; document.head.appendChild(style); const highlightRect = document.createElement('div'); highlightRect.className = 'highlight-rect'; document.body.appendChild(highlightRect); const infoDiv = document.createElement('div'); infoDiv.className = 'info-div'; document.body.appendChild(infoDiv); const targetPoint = document.createElement('div'); targetPoint.className = 'target-point'; document.body.appendChild(targetPoint); document.body.addEventListener('mousemove', (event) => { const element = document.elementFromPoint(event.clientX - 15, event.clientY - 30); targetPoint.style.left = `${event.clientX - 15}px`; targetPoint.style.top = `${event.clientY - 30}px`; if (element) { infoDiv.style.left = `${event.clientX + 20}px`; infoDiv.style.top = `${event.clientY - 30}px`; infoDiv.innerHTML = ''; let parent = element; while (parent) { const parentInfo = document.createElement('p'); parentInfo.textContent = `${parent.tagName} > ${parent.className} #${parent.id}`; infoDiv.appendChild(parentInfo); parent = parent.parentElement; } } if (element && element !== document.body && element !== document.documentElement) { const rect = element.getBoundingClientRect(); highlightRect.style.left = `${rect.left}px`; highlightRect.style.top = `${rect.top}px`; highlightRect.style.width = `${rect.width}px`; highlightRect.style.height = `${rect.height}px`; highlightRect.style.display = 'block'; } else { highlightRect.style.display = 'none'; } }); }); gui-partX.pkg is regular zip archive, you can open it using 7zip index.js can be located randomly in gui-part1.pkg or gui-part2.pkg or gui-part3.pkg Html picker is 20px above cursor (small red dot) to prevent hovering
×
×
  • Create New...