(16.02.2020 00:47)Berserker Wrote: [ -> ]ЕРМ 2.0 (прекомпиляция для локальных именованных переменных и, при возможности, ограниченная поддержка глобальных именованных в командах и условиях).
Наконец-то в скриптах можно будет поддержка констант? Например вместо 0 можно написать CR_Копейщик?
В качестве не самого скоростного варианта да, но как и в множестве динамически языков, реально в роли констант выступают переменные:
Переписан ещё кусок ядра ЕРМ интерпретатора. Прекрасно работают оригинальные макросы $...$ везде, где ранее не работали. Где-то синтаксис строже в интерпретации переменных и значений, где-то универсальнее. Сбылась и мечта Алгора. Осталась битва за ?i^...^ в параметрах ресиверов.
Вот как бы мне передать WoG Scripts мод в цепкие лапы сообщества? professornova появился с идеей и сразу исчез.
(17.02.2020 11:27)Algor Wrote: [ -> ]Berserker, еще вопрос:
При открытии окна героя надо подменить ресурс.
Делаю
Но b.def появляется только после 2го открытия окна героя, а при первом открытии отображается a.def.
Такое чувство, что либо не успевает обновиться, либо на этапе OnLoadHeroScreen уже все закэшировано.
Есть вариант решения?
Algor, может, OnOpenHeroScreen, или нужен другой функционал?
(17.02.2020 11:27)Algor Wrote: [ -> ]Такое чувство, что либо не успевает обновиться, либо на этапе OnLoadHeroScreen уже все закэшировано.
Немного теории. В отрисовке любого окна происходит 3 стадии:
1. Грузятся все элементы окна с данными, дефами и прочим. Создаётся готовый диалог.
2. Что-нибудь проверяется игрой и вызывается функция рендера готового диалога.
3. Выгрузка диалога и уничтожение его данных в памяти игры.
OnLoadHeroScreen установлен на вторую стадию, т.е. на непосредственное открытие окна. Т.е. подмену ресурса нужно делать где-то ранее (т.е. установкой перехвата первой стадии - подготовительной), а восстановление оригинального ресурса - после 3-й стадии.
(17.02.2020 05:37)Berserker Wrote: [ -> ]Осталась битва за ?i^...^ в параметрах ресиверов.
триггеров
За ресиверы уже спасибо
&s^...^=^bla-bla^, надо понимать, тоже работает?
ЗЫ а в оригинальных макросах сейчас вообще есть смысл?
(17.02.2020 11:38)igrik Wrote: [ -> ]Если хоть как то поможет, то определение языка (английский или русский) можно использовать так (Подробнее):
Если нет и не будет штатного функционала, то поможет, спасибо.
А так хотелось бы иметь не только ru/en, но и прочие языки, если это технически возможно. В идеале, чтобы это стандартно устанавливалось в какой-нить предопределенный s^Lang^, чтобы все во всех модах могли на него ссылаться.
(17.02.2020 11:38)igrik Wrote: [ -> ]Примеров то и нет. Во всяком случае я таких не видел.
Но вообще конечно же можно. Чуть позже опишу как.
ES 1.42 подождет
XEPOMAHT Wrote:OnLoadHeroScreen установлен на вторую стадию, т.е. на непосредственное открытие окна. Т.е. подмену ресурса нужно делать где-то ранее.
Спасибо, за теорию.
Нужен хук (
Берс, или On
BeforeLoadHeroScreen).
(17.02.2020 11:27)Algor Wrote: [ -> ]...можно ли, получив id-кнопки как-то управлять ее параметрами (положение/подсказки/активность)? Че-то не нашел инфы/примеров.
Algor, я опишу только те параметры, с которыми ERM по нормальному сможет работать.
Для DL нижеприведенный код актуален (например в DL нет способа отобразить картинку или деф зеркально)
Code:
; параметры любого элемента диалога
; текст, картинки, кнопки и т.д.
+20 (2 байта) флаги;
+22 (2 байта) состояние;
+24 (2 байта) x;
+26 (2 байта) y;
+28 (2 байта) ширина;
+30 (2 байта) высота;
+32 (4 байта) указатель на текст в статус_баре;
+36 (4 байта) указатель на текст по ПКМ;
; только для дефов и кнопок
+48 (4 байта) указатель на структуру defа;
+52 (4 байта) номер кадра дефа;
+56 (4 байта) номер кадра дефа при нажатии (если кнопка);
+60 (4 байта) отобразить зеркально: 0-нет, 1-да;
+68 (2 байта) закрывает ли диалог: 0-нет, 1-да;
Добавил в тему по
UN:C
igrik, спасибище! А если в стандартный диалог добавлена btn-кнопка, её id полученные через !!SN:F^GetButtonID^/^имя_кнопки^; можно использовать как id_элемента указанные выше способом?
Точно не скажу - не проверял, но думаю что можно.
(17.02.2020 11:27)Algor Wrote: [ -> ]Berserker, еще вопрос:
При открытии окна героя надо подменить ресурс.
Делаю
Но b.def появляется только после 2го открытия окна героя, а при первом открытии отображается a.def.
Такое чувство, что либо не успевает обновиться, либо на этапе OnLoadHeroScreen уже все закэшировано.
Есть вариант решения?
Подменять нужно в OnOpenHeroScreen, иначе основные ресурсы будут загружены.
(17.02.2020 11:27)Algor Wrote: [ -> ]И можно ли, получив id-кнопки как-то управлять ее параметрами (положение/подсказки/активность)? Че-то не нашел инфы/примеров.
Кнопка — просто элемент чужого диалога. С ходу не подскажу. Нужно вызывать обычные методы, которые в !!DL-командах используются, но самостоятельно через SN:E и от объекта диалога.
(17.02.2020 13:34)Algor Wrote: [ -> ]&s^...^=^bla-bla^, надо понимать, тоже работает?
ЗЫ а в оригинальных макросах сейчас вообще есть смысл?
Algor, нет, только числовые переменные. Поддержку s^^ пока нет, ЕРМ везде со строками работает методом копипасты обработки стандартных типов z, z-, z/ert.
В условиях триггеров — да, уже работает.
(17.02.2020 15:47)Berserker Wrote: [ -> ]Подменять нужно в OnOpenHeroScreen, иначе основные ресурсы будут загружены.
OnOpenHeroScreen не вызывается при переключении между героями из окна героя. Попробую обойтись.