Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросник
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
gamecreator
Цитата(Aleee @ 10 Jan 2009, 15:45)
Все-таки надо пойти в ту тему про удобство ЕРМ и переголосовать.

не в удобстве дело. простейшие языковые конструкции в ерм уже есть, так что простейшие алгоритмы на нем реализовывать можно. а алгоритм выбора абсолютно случайного максимального длинный сам по себе.
MasterOfPuppets
О скорости: длинные скрипты игру не убивают. Я вот, например, не вижу никакой разницы в скорости ERM, если давать какой-то скилл всем героям лично или круговой функцией. Просто последней намного компактнее - вот и всё преимущество.)
Когда идёт только проверка на условия - то тем более ERM быстр. Тормозит он только тогда, когда применяет какие-то действия.
Хмм..
Автор поста: Berserker.
ЕРМ медленен, можете в это поверить. И то, что в одном месте на глаз незаметно, при увеличении скриптов или при большей частоте событий (шаг героя) превращается в тормоза. Пример, на гигагерцовом проце скрипт случайные ресы при разведке подтормаживает нереально при каждом шаге героя. Просто мощь компа не даёт вам глянуть, какой ценой всё идёт.

Что касается развёрнутого кода или функции, то развёрнутый код быстрее. Удивлены? Ничего удивительного. Расходы на иниициализацию переменных для функции и некоторые дополнительные действия, а обычный текст выполняется без расходов.

Цитата
Когда идёт только проверка на условия - то тем более ERM быстр.

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

Для Алеее:

Как я понял, есть v1..v4. Нужно выбрать наибольшее в v5 (индекс наибольшего), если наибольших несколько, то случайное.
Поехали:

Код
; Поиск максимального значения
!!VRy1:Sv1;
!!VRy1&v2>y1:Sv2;
!!VRy1&v3>y1:Sv3;
!!VRy1&v4>y1:Sv4;
; Создание массива индексов максимальных значений
!!VRy7:S2;
!!VRyy7&v1=y1:S1;
!!VRy7&v1=y1:+1;
!!VRyy7&v2=y1:S2;
!!VRy7&v2=y1:+1;
!!VRyy7&v3=y1:S3;
!!VRy7&v3=y1:+1;
!!VRyy7&v4=y1:S4;
!!VRy7&v4=y1:+1;
; Получаем кол-во максимальных значений
!!VRy7:-2;
; Генерируем случайное число в этом диапазоне
!!VRy1:S1 Ry7;
; Получаем результат
!!VRv5:Syy1;


При работе над Фениксом мне приходилось решать и посложнее задачки smile.gif
gamecreator
а там точно номер v-переменной с наибольшим значением будет?
Хмм..
Автор поста: Berserker.
Последнюю строчку я пропустил, извиняюсь.

Добавлено ([mergetime]1231601213[/mergetime]):
Обновил скрипт, протестировал.
MasterOfPuppets
Было ощущение, что длинные коды быстрее, чем функции, но сам себе не верил.)
sergroj
Дак это всегда так. Но в ЕРМ они несравнимо быстрее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.