Jump to content
Korean Random

POLIROID

User
  • Content Count

    431
  • Joined

  • Days Won

    2

Posts posted by POLIROID


  1. Ломается рендер экипажа в ангаре, а за ним сыплется весь ангар.

     

    О проблеме чаще всего сообщают пользователи с низким разрешением экрана.

     

    Путь воспроизведения:

    • Проставить carousel.cellType = normal *
    • Сделать два или больше рядов в карусели
    • Уменшить размер окна танков

     

    * Баг не связан с каруселью, просто её настройка помогает его поймать.
     

    Видео пример

     

     

     

    xvm.log python.log


  2. 06.03.2020 в 14:52, Slava7572 сказал:

    Я помню,что если снять эту галку в ангаре,то она в следующий заход так и останется снятой.Что мешает просто поставить галку в родном клиенте и она так же запомнится.

     

    После исправлений @ktulho это так и работает, до исправлений состояние галочки не проставлялось что вызывало некий "дискомфорт"

     

    Баг исправлен в комите @20754939, тему можно закрывать

     

    ваниль / 8.3.2.30 / 8.3.3.1

     


  3. Я не уверен как это должно работать, я просто скачал ночник, не трогал конфиг, и заметил вот такое поведение.

    Было немного нелогично, ведь я проставляю галочку и относительно списка танков видно что она срабатывает но состояние галочки при открытии окна не проставлялось в текущее значение галочки.


  4. Открываем окно Достижения, переходим на вкладку Техника

    Галочка "Есть в ангаре" всегда снята, независимо от реального значения (галочка снята, но на самом дела она стоит и список техники отфильтрован)

     

    image.thumb.png.048436793942ec81b153aa5032f227b3.png

     


  5. 3 минуты назад, Polyacov_Yury сказал:

    Но это не отменяет тот факт, что отрубают моды исключительно ради (из-за) него.

    Конкретно этот микропатч не изза него, но в основном да, это нормальная практика, если говорить об большой аудитории.


  6. @P.vasiliy 

    Описание ошибки довольно таки точное (тот текст на английском)

    Сервер CloudFlare (тот что проксирует) используют SNI для верефикации соеденения

    Ребята с XVM такую верификацию не используют

     

    Воспользуйтесь BigWorld.fetchURL(url, callback, [headers, timeout, method, postData])

    Из бонусов кроме решения проблемы, он асинхронен (можно красиво обернуть в async и process)

    • Upvote 1

  7. 10 часов назад, SkepticalFox сказал:

    Я уверен, что WG адаптировала этот мод, т.к. секции внутри space.bin собраны корректно, а не как у меня =)

    @ribbed интересно узнать про политику работы с мододелами в таком случае, когда вы помогаете им

    WG не адаптировала этот мод, но присоединяюсь к просьбе, @ribbed завези инфы!


  8. 15 минут назад, spoter сказал:

    Юноша, -> туалет там Не нравится когда тебя в лицо вором называют, не воруй. Ты это делаешь не в первый и не в последний, похоже раз.

    Не ну ты серьезно?

     

    Я понимаю у тебя там выстроен свой собственный маня мирок, где все прекрасно, но зачем обращаться ко мне на "Юноша" если пик своей адекватности ты уже показал

    Петь, я когда увидел вот это, то посчитал что ты либо отбитый на голову, либо наглый *** который пытается намахать не разбирающегося человека. *глупым кстати я тебя никогда не считал :D 

     

    22 минуты назад, spoter сказал:

    Когда я первую версию винтика пилил, дай бог памяти, 4 года назад, я его за день запилил. это был мой 2 или 3 мод вообще, с начала изучения языка. И хвастаться скоростью написания кода, тем более имея на руках примеры чужой реализации, ну мягко скажем идиотизмЪ

    Ты реально подумал что я хвастаюсь? omgf это бесполезно

    Ссылку привел, ибо там и код, и GUI и другие штуки, которые не имеют ничего общего (наверное, мне то откуда знать) с твоим творчеством.

    Да и за 6 часов стриминга на сам мод ушло 3-4, остальное это общение, и запил штук которые просят.

     

    7 минут назад, spoter сказал:

    Хотя, в общем, у меня код публикуется под WTFPL лицензией, так что можете делать что хотите.

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

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

     

    За больше чем 4 года я сделал всего три мода, PMOD modsListApi и battleHits, два последних в опенсорсе

    Все остальные вещи которые я делал, не имеют ко мне никакого отношения (кроме как собственно реализации)

     

     

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

    • Upvote 1
    • Downvote 3

  9. В 06.02.2018 в 21:38, spoter сказал:

    единственно, буду считать их мод как форк моего, благо лицензия позволяет, хотя, то что не указали авторство изначальное, плохой тон, но от @POLIROID и @Yusha я другого даже и не ожидал.

    Это ведь такой рофл, да?

     

    Я эту фигню пилил всего 6 часов от сообщения "да сделаю" до отгрузки готового результата.

    Еще и стримил весь процесс на твитч ибо зрители попросили, клик

     

    Всегда удивлялся тому как работает мышление у некоторых индивидуумов, как простое "идея, сама по себе, ничего не стоит, важна реализация" не может уложится в их понимании.

     

     

    Кастую сюда @IzeBerg, как истинного ценителя твоего творчества, хотя он уже наверное перегорел.

     

    • Upvote 1

  10. какой из вариантов правильнее использовать (api.worldoftanks или accountDossier)? Что будет быстрее и лучше в плане оптимизации, например, при тех же 30 запросах в начале боя?

    Само собой используйте PAPI

     

    Правильно собранный запрос выдаст вам информацию обо всех 30 игроках в бою за время меньше секунды.

     

    Используя доссьер вам придется только на запросы 29 доссьров (ваш уже в кеше) потратить 29 * 0.5 - 15 секунд (0.5 это таймаут ибо запрашивая с меньшим интервалом сервер будет отвергать запрос)

    • Upvote 1

  11. меня смущает то, что размеры собранных флешек в Adobe и FD отличаются (в том числе и у Вас на видео) - 2КБ против 3КБ.

    При билде во FlashDevelop я не трогал проект почти, там была выбрана конфигурация Debug, с конфигурацией Release там размер файлов будет одинаковый.

     

    Но вот то что у вас файл собранный с помощью FlashDevelop не работает это странно, должно все работать ибо там нечему не работать =)

     

    PS проверил у себя, оба работают отлично.


  12. В Adobe правда выдает ошибку вывода при компиляции, но в клиенте все работает. Не знаю, нормально это или нет.

    Это определённо не нормально, там проект без зависимостей, полностью готовый (3-4 клика и собрано)

     

     

    переделать под FD пока не получилось. Кажется все правильно собрал, компиляция идет без ошибок, но не работает почему то. В логе тоже без ошибок.

    Но это из за моих ограниченных познаний, набираюсь опыта

    Я бы с радостью дал вам проект под FD но лучше я вам дам видео как он делается за 2 минуты, надеюсь это будет более полезно для вас.

     

    Видео

    • Upvote 3

  13. Можно ли как то получить список элементов, так как тот же _panelListItems из PlayersPanelList закрыт?

    А почему это он закрыт?

     

    Получить этот список можно только пересобрав battle.swf По идее надо менять в VehicleMinimapEntry функции highlight/unhighlight, но для этого надо пересобирать minimap.swf

    Да зачем?

     

     

    Хотя что я как мудак =)

     

    Не согласен — критикуй,

    критикуешь — предлагай,

    предлагаешь — делай,

    делаешь — отвечай

    Королев Сергей Павлович

     

     

    Python

    # Handle Player Panels items MOUSE_OVER/MOUSE_OUT
    # Andruschushun Andrey (P0LIR0ID) 07.06.2017
    # License WTFPL
    
    from debug_utils import LOG_NOTE
    from gui.app_loader.settings import GUI_GLOBAL_SPACE_ID
    from gui.app_loader.loader import g_appLoader
    from gui.Scaleform.framework import g_entitiesFactories, ViewSettings, ViewTypes, ScopeTemplates
    from gui.Scaleform.framework.entities.View import View
    from gui.Scaleform.framework.entities.BaseDAAPIComponent import BaseDAAPIComponent
    
    PP_HANDLER_UI_ALIAS = 'PPHandler'
    PP_HANDLER_UI_INJECTOR_ALIAS = 'PPHandlerInjector'
    
    # View of our component
    class PPHandler(BaseDAAPIComponent):
    	
    	def onItemEventsS(self, eventType, vehicleID):
    		LOG_NOTE('onItemEventsS', {'eventType': eventType, 'vehicleID': int(vehicleID)})
    	
    # add injector and component views to entitiesFactories
    g_entitiesFactories.addSettings(ViewSettings(PP_HANDLER_UI_INJECTOR_ALIAS, View, 'ppHandler.swf', ViewTypes.WINDOW, None, ScopeTemplates.GLOBAL_SCOPE))
    g_entitiesFactories.addSettings(ViewSettings(PP_HANDLER_UI_ALIAS, PPHandler, None, ViewTypes.COMPONENT, None, ScopeTemplates.DEFAULT_SCOPE))
    
    
    # load injector on battlePageShow
    def onGUISpaceEntered(spaceID):
    	if spaceID == GUI_GLOBAL_SPACE_ID.BATTLE:
    		g_appLoader.getDefBattleApp().loadView(PP_HANDLER_UI_INJECTOR_ALIAS)
    g_appLoader.onGUISpaceEntered += onGUISpaceEntered
    
    # unsubscribe on client closing
    def fini():
    	g_appLoader.onGUISpaceEntered -= onGUISpaceEntered
    
    

    Flash (компонент)

    package 
    {
    	
    	import net.wg.infrastructure.base.AbstractView;
    	import net.wg.gui.battle.components.BattleUIDisplayable;
    	import net.wg.gui.battle.random.views.BattlePage;
    	import net.wg.gui.battle.random.views.stats.components.playersPanel.events.PlayersPanelItemEvent;
    	
    	public class PPHandler extends BattleUIDisplayable
    	{
    		private var battlePage:AbstractView = null;
    		
    		public var onItemEventsS:Function = null;
    		
    		public function PPHandler() 
    		{	
    			super();
    		}
    		
    		override protected function configUI() : void
    		{
    			super.configUI();
    			
    			var playersPanel:* = (battlePage as BattlePage).playersPanel;
    			
    			var panelListItem:* = null;
    			
    			for each(panelListItem in playersPanel.listLeft._panelListItems)
    			{
    				panelListItem.addEventListener(PlayersPanelItemEvent.ON_ITEM_OUT, onLeftItemHandler);
    				panelListItem.addEventListener(PlayersPanelItemEvent.ON_ITEM_OVER, onLeftItemHandler);
    			}
    			for each(panelListItem in playersPanel.listRight._panelListItems)
    			{
    				panelListItem.addEventListener(PlayersPanelItemEvent.ON_ITEM_OUT, onRightItemHandler);
    				panelListItem.addEventListener(PlayersPanelItemEvent.ON_ITEM_OVER, onRightItemHandler);
    			}
    		}
    		
    		private function getVehicleID(event:PlayersPanelItemEvent, isRight:Boolean) : Number
    		{
    			var playersPanel:* = (battlePage as BattlePage).playersPanel;
    			if (isRight)
    				return playersPanel.listRight._items[event.holderItemID].vehicleID;
    			else
    				return playersPanel.listLeft._items[event.holderItemID].vehicleID;
    		}
    		
    		private function onLeftItemHandler(event:PlayersPanelItemEvent) : void
    		{
    			onItemEventsS(event.type, getVehicleID(event, false));
    		}
    		
    		private function onRightItemHandler(event:PlayersPanelItemEvent) : void
    		{
    			onItemEventsS(event.type, getVehicleID(event, true));
    		}
    	}
    } 

    python.log

    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872573},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872573},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872571},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872571},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872587},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872587},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872578},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872578},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872590},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872590},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872583},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872583},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872585},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872585},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872568},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872568},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872568},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872568},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872597},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872597},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872581},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872581},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872579},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872579},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872592},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872592},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872584},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872584},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872582},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872582},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872572},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872572},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872572},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872572},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872596},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872596},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872596},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872596},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872576},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872576},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872589},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872589},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872588},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872588},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872586},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872586},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872593},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872593},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872593},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872593},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872591},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872591},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872580},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872580},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872575},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872575},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872594},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872594},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872569},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872569},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872570},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872570},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872574},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872574},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872595},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872595},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872595},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872595},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOver', 'vehicleID': 30872577},)
    onItemEventsS ({'eventType': 'onPlayersPanelItemOut', 'vehicleID': 30872577},)

     

    Ну и дабы на месте собирать src.zip  

    *нужен Animate версии 15.1 либо выше, можно переделать под FlashDevelop

    • Upvote 2

  14. POLIROID Андрей, в шкурках убирающих грязь изменения были? Прогнал несколько реплеев со старыми, багов не ловил.

    Но ссылку на оригинал мода целиком все равно кинь плиз.

    Привет =)

    По поводу текстур убирающих грязь - модик делается для WGL и если во время патча не будет происходить никаких ивентов, то он не обновляется.

    А по моду, последнюю версию прикрепил к соообщению.

    0.9.19.0 Branding - build_player.zip

    • Upvote 1

  15. Поясни.

    А зачем?

     

    Тестовый клиент всегда отличается от  оригинального - на тестовом пашет, на оригинальном подписанный мод бажит.

    Что то из области фантастики.

     

    Ребята, проблемы надо решать по мере поступления.

    • Upvote 1
    • Downvote 1

  16. А это как понять?

    Присоединяюсь к вопросу. Самому интересно, каким таким образом это будет работать, если можно будет писать и запускать локально любые скрипты?

    Три буквы - ST8

    Антон завезёт инфу по мере надобности.


  17. Бл***ь, я в курсе, что колобки выполняются по тикам и доки я читать тоже умею. Смысл в другом! У тебя идет выполнение некоторой последовательности инструкций. Тебе нужно запустить какую-то функцию, и не ждать ее выполнения, а продолжать выполнять свои задачи. С этой точки зрения колобок можно рассматривать как поток, и хотя реальным потоком он не является, это мало кого е***, поскольку в большинстве случаев задача стоит избежать т.н. "блокировки". И в нехилой части случаев, запуск колобка происходит не из колобка, а например из какого-то ивента игры, и зачастую этот ивент и колобки выполняются игрой в разных потоках.

    Если метод отжирает для примера одну секунду выполнения, чисто для примера, то нет совершенно никакой разницы запустишь ты его сразу или через BigWorld.callback ибо этот фриз на одну секунду ты все равно увидишь.

    BigWorld.callback это по сути просто отложенный вызов метода в main потоке, он применяется в контексте параллельности также как и модуль multiprocessing в контексте танков (то есть никак).

    Зачем такое советовать?

     

    Хотя и без этого знания жить можно...

    Потоки оформляйте через threading, и будет вам счастье.

    А для нормального структурированного кода курите как используется модуль adisp в игре.

    • Upvote 2
×
×
  • Create New...