Перейти к содержимому
Для публикации в этом разделе необходимо провести 1 боёв.
MedvedevTD

[UB2] Практический пример работы с элементом "Компас"

В этой теме 11 комментариев

Рекомендуемые комментарии

16 857
Разработчик
6 959 публикаций
8 248 боёв

Всем привет.

Время идёт, меняются старые решения, оптимизируются, улучшаются.
Это нормальный процесс для большого проекта, но иногда подобные процессы затрагивают привычные методы модифицирования клиента игры.

 

В данной теме я опубликую решение которое поможет работать с элементом "Компас" и его отдельными частями в текущих реалиях.


Вообще есть два решения. 

Первое решение, это частичная работа с файлом battle_layout.xml и редакция файла compass.unbound

Оно вполне подходит для быстрого воплощения, но имеет некоторые минусы (проблемы с скалированием, отсутствие гибкости по разрешению экрана пользователя, лишний багаж файлов).

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

 

Второе решение, это работа с Unbound 2.

Собственно само решение выглядит так:
Создаём файл Mod_compass.unbound
И вносим туда следующий код

  Показать содержимое

Оригинальный кусок кода в файле compass.unbound выглядит так (это просто для сравнения!):

  Показать содержимое

 

В файле unbound_settings.xml добавляем строку:

<file>./gui/unbound2/pc/battle/Mod_compass.unbound</file>

ВНИМАНИЕ!!! данная строка обрабатывается по правилу сортировки алфавита!
Первыми обрабатываются спецсимволы, например (!)
Затем заглавные буквы (A, B, C, D) в алфавитном порядке
Затем строчные буквы (a, b, c, d) в алфавитном порядке

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

  Показать содержимое

 


 

Настройки размещения элемента.

 

(var compassScaleRatio:number = "0.6") - переменная отвечает за скалирование объекта, где 1.0 является 100% размером объекта

(var leftOffset:number = "stageWidth / 2 - COMPASS_SIZE * compassScaleRatio / 2 - 20") - переменная для размещения по горизонтали, где 20 это компенсация отступа объекта указанная в файле battle_layout и в текущем виде выставляет элемент по центру 

(var bottomOffset:number = "stageHeight / 2 - COMPASS_SIZE * compassScaleRatio / 2 - 250") - переменная для размещения по вертикали, где 250  это смещение от центра экрана

 


 

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

  Показать содержимое

 

и в итоге получаем такую картину:

  Показать содержимое

 

 


 

Чуть не забыл :)
Здесь прикреплю архивчик с готовым решением в качестве образца gui.zip
Верю в вас, что вы понимаете что файл unbound_settings.xml может иногда изменятся и вы конечно будете сверять с оригинальным файлом из каждого патча (ну строку то вписывать надо же), это не сложно :)
Поможет вам в этом, размечтательная тулза по извлечению файлов клиента игры из пэкэджей, вот из этой темы: [ALL] WOWS Unpack Tool: распаковка ресурсов клиента игры.

 

А, вспомнил!

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

 

С уважением,

  • Плюс 18
  • Круто 3

Рассказать о публикации


Ссылка на публикацию
Участник
2 806 публикаций

Ой какой же большой респект Тимуру, но пытаюсь смотреть стрим, а тут такая инфа, выйду из клиента и начну эксперименты!!!

Стрим буду смотреть на 2 монике

ПыСы я не мододел, я просто играю и хочу играть комфортно

А тут Тимур подогнал образцы - вообще кайф :Smile_honoring:

Изменено пользователем anonym_lT9bDHIGBwkW
  • Плюс 3
  • Круто 1

Рассказать о публикации


Ссылка на публикацию
1 630
[RUSI4]
Мододел, Участник, Коллекционер
2 612 публикации
25 108 боёв

Благо дарю.

Только не усе вЪед:cap_yes:ут в сию премудрость и пойдёть волна словестная

  • Плюс 2

Рассказать о публикации


Ссылка на публикацию
Участник
2 806 публикаций

Тимур @MedvedevTD, ты кросаВА!!! Угадал с масштабом и я совместил это с угломером :Smile_honoring:

:Smile_medal::Smile_medal:

Тимуру медаль на всю спину из золота!!!!!!!!

Но тонким слоем, дабы по офису её мог носить и хвастаться полезностью для игроков:Smile_medal:

Изменено пользователем anonym_lT9bDHIGBwkW
  • Плюс 2
  • Ха-Ха 3

Рассказать о публикации


Ссылка на публикацию
1 630
[RUSI4]
Мододел, Участник, Коллекционер
2 612 публикации
25 108 боёв

Здравия желаю

Тимур, что то поламалося. Нать заново "Создаём файл Mod_compass.unbound.И вносим туда следующий код" ?

  Показать содержимое

Усё исправил и подправил

  Показать содержимое

 

Рассказать о публикации


Ссылка на публикацию
1 630
[RUSI4]
Мододел, Участник, Коллекционер
2 612 публикации
25 108 боёв

Здравия желаю, Тимур.

Кукла категорически не желает перемещаться в центр.

В чём может быть проблема, файлы извлёк новые усё переделал shot-19_10.16_13_58.12-0223.thumb.jpg.426d0f4af1c7872196d4a764c71b75ae.jpg

(def element CompassContainer () layout=true dispatch_size_change=true
    (scope
        (var selfAvatarEntity:gfx =  "$datahub.getSingleEntity(CC.playerAvatar)")
        (var isAlive:bool = "selfAvatarEntity.health.isAlive"  (event "selfAvatarEntity.health.evIsAliveChanged"))
        
        (var stageComponent:gfx = "$datahub.getSingleEntity(CC.stage).stage")
        (var stageWidth:number = "stageComponent.width" (event "stageComponent.evStageSizeChanged"))
        (var stageHeight:number = "stageComponent.height" (event "stageComponent.evStageSizeChanged"))
        (var compassScaleRatio:number = "0.6")
        (var leftOffset:number = "stageWidth / 2 - COMPASS_SIZE * compassScaleRatio / 2 - 20")
        (var bottomOffset:number = "stageHeight / 2 - COMPASS_SIZE * compassScaleRatio / 2 - 250")
    )
    (style
        (position = "absolute")
        (bind width "COMPASS_SIZE")
        (bind height "COMPASS_SIZE")
    )

    (controller $Instance renderer='CompassContainerInstance'
        (bind enabled "isAlive")
        (exprs
            (bind scaleX "compassScaleRatio")
            (bind scaleY "compassScaleRatio")
            (style
                (bind left "leftOffset")
                (bind bottom "bottomOffset")
            )
        )
    )
)

(def element CompassContainerInstance () layout=true

Изменено пользователем SELEZEH1961

Рассказать о публикации


Ссылка на публикацию
1 630
[RUSI4]
Мододел, Участник, Коллекционер
2 612 публикации
25 108 боёв

Здравия желаю.

Файл unbound_settings.xml теперь выглядит так 1491673555_2020-10-28095429.thumb.png.d4ac9b0d3935e5f9de8e714295bf4f7e.png 

Спасибо Тимуру за подсказку :cap_like:

  • Плюс 1
  • Скучно 1

Рассказать о публикации


Ссылка на публикацию
Участник
905 публикаций
  В 30.10.2020 в 08:37:19 пользователь SELEZEH1961 сказал:

Файл unbound_settings.xml теперь выглядит так

єтот файл теперь в модах не нужен.
вовсе
 

а в таком виде он будет вредить другим модам
практика критерий истиньі - файла нет, а компас есть
индикаторьі - тоже есть

  Показать содержимое
Изменено пользователем anonym_XHeXr4GJYV0a
  • Плюс 1
  • Скучно 1

Рассказать о публикации


Ссылка на публикацию
1 630
[RUSI4]
Мододел, Участник, Коллекционер
2 612 публикации
25 108 боёв
  В 30.10.2020 в 11:48:59 пользователь Stiv372 сказал:

єтот файл теперь в модах не нужен.
вовсе
 

а в таком виде он будет вредить другим модам
практика критерий истиньі - файла нет, а компас есть
индикаторьі - тоже есть

  Показать содержимое

Это частичная работа с файлом battle_layout.xml и редакция файла compass.unbound?

Вот моЁphoto_2020-10-28_10-04-59.thumb.jpg.979a175e320017788faa3d6c54f4fc9b.jpg

Изменено пользователем SELEZEH1961
  • Плюс 1

Рассказать о публикации


Ссылка на публикацию
1 630
[RUSI4]
Мододел, Участник, Коллекционер
2 612 публикации
25 108 боёв

 

  Показать содержимое

Здравия желаю.

Тимур, оригинальный файл "compass"  изменился. Теперь надо переписывать и "Mod_compass". Ежели править как и где да чем:cap_haloween:. Так то мод работает НО увидев файл призадумался.

 

 

  Показать содержимое

 

Изменено пользователем SELEZEH1961

Рассказать о публикации


Ссылка на публикацию
Гость
Эта тема закрыта для публикации новых ответов.

×