Wake of Gods Forum | Форум Во Имя Богов

Full Version: FunLib
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
(23.04.2020 10:52)igrik Wrote: [ -> ]У меня сразу же вопрос: мы в библиотеке будем поддерживать новый синтаксис (введенный в 2.9.13) HE:Z, BM:Z и UN:C?
Да, я нацеливаюсь на последнюю 2,9,х. Если выйдет 14я - на нее.
igrik, медаль за изобретение !!UN:J0! 148
(не помню про эту команду вообще)

Название для функций с Set/Get синтаксисом лучше давать без Set, Get, Check, Is.

Fun_SpellDisabled (set/get yes/no)
Fun_StackMorale (set/get value)
Fun_StackSummoned (set/get yes/no)
Предлагаю добавить в библиотеку функции, влияющие на экран города:

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

Апи еще не закрыт мне непонятен вопрос с обработкой ошибок, какой способ реализовать? Что делать с существующими функциями которые возвращают статус операции?
Zur13, сделать ничего вредного и по возможности сделать полезное + вызвать !!FU(Fun_ShowError), где первой командой SN:F^GenerateDebugInfo^ сгенерировать отладочную информацию, где в Debug\Era\erm tracking.erm будет виден вызывающий код, а после сразу IF:M с содержимым z1, например.
Правка: удалено неактуальное описание, новая версия в сообщении ниже.

Еще вопрос, по архитектуре. Есть ли способ из ЭРМ кода передавать в ЭРМ функцию имя другой функции и соответственно вызвать функцию по переданному имени? Если можно то я лучше переделал бы реализацию коллбеков. Сейчас, например для нестандартной сортировки функция из библиотеки вызывает функцию с предпопределенным именем и моддер должен сделать у себя реализацию этой функции с проверкой аргумента, чтобы определять вызов ее для своего списка.
Имя — нет, номер — можно.
!!FU(Fun_A):P(Fun_B);

!?FU(Fun_A);
!!FUx1:P; calling callback
По спискам, я думаю функционал и АПИ закрыт вот новая версия скрипта.

Переписал большинство циклов на !!re , осталась пара мест где SN:G просто удобнее и компактнее.
Функция сортировки по натуральному значению использует мой кастомный алгоритм, должно быть быстрее чем пузырьком и скорее всего быстрее сортировки рассческой (comb sort).
Функция сортировки с использованием компаратора реализована алгоритмом сортировки перемешиванием (cocktail sort) с небольшой модификацией (вторая часть алгоритма реализована не пузырьком, а сортировкой рассческой (comb sort) ).
В конце файла расположен тестовый код его 100% нужно удалить или закаментить перед использованием (там неплохой юнит тест написан, который сам по себе может служить подсказкой по использованию).
**
Добавил функции множественного гета, и фильтрации. Добавил в функции где это актуально проверку валидности аргументов и вызов FU(Fun_ShowError) в случае неверных входных аргументов (описание ошибки в z1).
Короткая справка по АПИ (полностью можно посмотреть в файле):
**
Переделал кастомизированные версии функций "сортировки", "поиска", "фильтрации" и "для каждого элемента" так чтобы они получали имя коллбек функции через аргумент вызова (спасибо товарищу Berserker, за подсказку).

В принципе считаю что уже всё готово и достаточно протестировано. Можно использовать. Пока больше не планирую ничего тут менять.

Короткая справка по АПИ:
Как написал в соседней теме, в ближайшие полгода буду появляться тут редко.
Список функций и событий для библиотеки подготовил, но пока не стал пороть горячку и выкладывать сразу модом, ибо может разойтись, а оно еще не обсуждалось.
Все "мои" (используемые в ES) функции и события оформлены отдельными файлами и включены в ES 1.46, можно их взять оттуда для обсуждений и доработки.

Файлы называются Event_<name> и Fun_<name> соответственно.
В каждый файл включен мини-хэлп и/или пример использования, это потом можно (если нужно) будет вынести в общий справочник.

Event_AfterMeeleDamage
Event_AfterRangedDamage
Event_AfterStackObtainsTurn
Event_ArtGoldIncomeCalculation
Event_ArtResIncomeCalculation
Event_BeforeChangeHeroInHeroScreen
Event_BeforeHeroLevelUpDialog
Event_BeforeOnBeforeBattle
Event_OnUpdateHeroScreen
Event_TownGoldIncomeCalculation

Fun_GetHeroPortrait
Fun_GetRandomSpell
Fun_GetSecSkillDescription
Fun_RedrawShadowAfterAction
Fun_SetDescriptionFromERT - думаю, можно будет упразднить, когда Берс допилит SN:H для артефактов
Fun_SetSecSkillValue - пока там только часть навыков, в идеале сделать для всех.
Fun_SpellAnimationOnStacks

Если во время моего отсутствия тема получит активное развитие, прошу выносить стоящие вещи в первый пост, дабы не просеивать потом километры обсуждений в поисках.
Обновил первое сообщение. Добавил Fun_GetTownBuildingInfo.erm
(23.04.2020 11:16)igrik Wrote: [ -> ]
ХЕРОМАНТ Wrote:Это дубликат воговской !!UN:J0. Но зачем???
А разве проверить статус можно?

Тьфу блин! Я не знал, что можно проверить. Нужно указать, чтобы занесли описание в справочник.
так вроде ж в справке есть это...
Quote:J0/#/$
Запретить заклинание
    # – номер заклинания (0..69)
    $ – разрешить/запретить
    0 – разрешить
    1 – запретить
Комментарий:
Этот запрет работает только для гильдий магов и пирамид, но вы можете проверить значение, установленное здесь, для любого ERM-скрипта.
Yes
Fun_SetSecSkillValue с поместьем и мистицизмом некорректно работает? Неясно, зачем там пересчет в проценты, когда очки маны и золото идут в целых числах.
Pages: 1 2 3
Reference URL's