(23.08.2024 01:34)Berserker Wrote: А проверка на невыход из максимального размера массива.
Если считать максимальный размер массива на структуры городов, то получится 360*48 = 17280 байт. Скрипт же проверяет адрес памяти 43200000, что выглядит... странно. Автор скрипта никакого комментария по этому поводу не оставил, т.к. теоретически, игра может записать структуры городов куда угодно в выделенной виндовозом памяти.
(23.08.2024 01:34)Berserker Wrote: Конечно, оптимально считывать поле Length вектора, если там вектор, но на худой конец наличие проверки лучше её отсутствия.
Оптимально - да, но в скрипте этого нет.
(23.08.2024 10:09)igrik Wrote: ты нормально прочитал и понял код функции прежде чем в сотый раз жаловаться на неясное для тебя решение.
В том то и дело, что человек, который знает как получить структуру города из номера на карте, не может понять соотвествующий ERM-скрипт. Чёрная магия какая-то.
(23.08.2024 10:09)igrik Wrote: Второе - Если скриптер будет пытаться получать номер несуществующего города, то по правилам программирования нужно выкидывать исключение, а не возвращать структуру первого города. Как ты потом будешь отлаживать приложение? Как обнаружить такую ошибку? Ее нереально найти в большом приложении. За такие ходы тупо увольняют с работы, потому что это очень, очень подлый поступок!
Если проверки на получение структуры города провалены, то функция возвращает 0 (по крайней мере в ВоГ-е так). В вышеприведённом примере на ERM фукция вернёт молоко, т.к. расчёт города по несуществующему индексу всё равно произойдёт и процесс выполнения ERM при этом остановлен не будет, хотя без проблем можно добавить новую ERM-команду, которая принудительно сбросит игру, например, в главное меню или на рабочий стол. Ну или вызывать собственно окно ERM-ошибки. В скрипте же используется обычный игровой ERM-Message (или опять ничего не понял я в ERM) без аварийного завершения игры.
(23.08.2024 10:09)igrik Wrote: Третье, под ERA+ ты сам должен подстраивать существующие скрипты, потому что ты очень много где сам модифицирует базовый код игры, поэтому будь добр и модифицируй скрипты тоже. Все твои новые плюшки невозможно прогнозировать, чтобы написать универсальный скрипт, который будет работать всегда и везде. Для этого ты слишком глубоко модифицирует логику игры
Всё так, именно по-этому я отказался от поддерки всех существующих ERM-опций. Под ERA+ переписаны только самые любимые, многие встроены прямо в игру по примеру опций Славы Сальникова. Именно по-этому ERA+ никто не любит, т.к. под неё не работают моды от обычной ЭРЫ. В рамках ERA+ мною сделана максимальная совместимость с компонентами платформы ЭРА, точнее там где у меня получилось это сделать, но из-за использования команды UN:C многие эровские скрипты являются несовместимыми, т.к. UN:C часто будет выдавать неверный результат в глобальных модификациях с изменённым кодом игры. Меня одного не хватает, чтобы хотя бы довести ERA+ до финальной версии, не говоря о переписывании всех ERM-скриптов (их проще по-человечески переписать с 0 на lua, чем бесконечно латать, т.к. многие написаны криво).
(23.08.2024 10:09)igrik Wrote: Берите, и переписывайте скрипты как сочтёте нужным сами. Все исходники и ресурсы у вас для этого есть
Увы, давно не пишу я на ERM, уже стал плохо понимать этот язык. Напреное пришла деменция ко мне.