NordStar
17 Feb 2005, 08:55
Вот такая идея:
если ввести тригер на изменение значения определенной (заданной) переменной, то можно было бы формировать то, что в объектно-ориентированном програмировании называется свойством. Тригер запускался бы сразу при попытке изменить значение, и в него как параметр передавалось бы новое значение. Фактически изменить значение переменной можно было бы только внутри такого тригера.
Это помогло бы во многих случаях, например-
есть глобальная переменная, значение которой должно быть идентичным у всех игроках в мультиплеере. Сейчас приходится все время, как только такая переменная изменяется, вызывать команды по передачи данных, что естественно путает структуру скрипта, делает его трудным в отладке. Если же изменив переменную автоматически мы тем самым запустили бы функцию обработчик (тригер), с условием возврата управления обратно, то все необходимое можно было бы описать только в ней, и не перегружать содержание скрипта.
Естественно есть еще десятки случаев, когда такая схема была бы очень полезной (контроль значений переменной, отрисовка чего-либо и т.д.)
NordStar
08 Mar 2005, 13:17
Я думал тема актуальной будет. Ан нет.
Я не ахти какой скриптописатель, но в свое время попраграмировал в насыть. Совершенно необходим нормальный отладчик, с отслеживанием значений переменных и пошаговым выполнением.
В 3.59 планируется и триггер на изменение переменных и real-time отладчик ERM кода.
Вот бы только сил на все хватило...
Цитата(ZVS @ 11 Mar 2005, 13:38)
В 3.59 планируется и триггер на изменение переменных и real-time отладчик ERM кода.
Вот бы только сил на все хватило...
А мне кажется что от ERM надо уходить. Слишком уж он заморочный, очень легко ошибится - 99% проблем со скриптами из-за этого. Вариантов, ИМХО два - либо сделать транслятор с какого-нибудь высокоуровнего языка на ERM, либо прикрутить простенький интерпретатор вроде Small или Luna плюс набор функций для WoG-фич.
PS:
Как-то давно начал делать транслятор с подмножества С, но уж больно вычурно даже вложенный if зафигачить, а уж циклы...
NordStar
27 May 2005, 09:47
Цитата(Arez @ 27 May 2005, 07:17)
А мне кажется что от ERM надо уходить. Слишком уж он заморочный, очень легко ошибится - 99% проблем со скриптами из-за этого. Вариантов, ИМХО два - либо сделать транслятор с какого-нибудь высокоуровнего языка на ERM, либо прикрутить простенький интерпретатор вроде Small или Luna плюс набор функций для WoG-фич.
PS:
Как-то давно начал делать транслятор с подмножества С, но уж больно вычурно даже вложенный if зафигачить, а уж циклы...
Это стандартная проблема того, кто привык к одному языку при переходе на другой. Перейти на что-то с ERM невыполнимая задача да и не нужная - кто перетранслировать будет существующие скрипты? Другое дело, придать ERM большее удобство и структурность, но расширяя синтаксис а не сужая его, так чтобы новые более широкие конструкции были, но и старые работоспособными оставались.
КРоме того, объявлено, что 3.59 будет последней версией WOG и думать о чем то грандиозном уже не приходится более.
Для меня лично важен тригер на изменение переменной, что резко упростит структуру скриптов, сделает их читабельнее и уменьшит количество ошибок. Ратовал бы я и за толковый хелп, написанный таким образом, чтобы были рассмотрены примеры стандартных алгоритмических структур на ERM - цикл, ветвление, множественный выбор, реализация типов данных, функция и процедура, с введение тригера на изменение переменной даже свойства.
Все это есть в ERM но имеет весьма непривычный и не слишком удобный вид, так что примеры были бы весьма кстати.
Чёртос-2 (Chortos-2)
27 May 2005, 11:00
Нельзя ли ввести в ERM побитовые (логические) операции - логическое И, ИЛИ, НЕ, XOR (как он по-русски?) и т.д.? Иначе очень трудно делать скрипты, оперирующие многими флагами, к тому же совместимые с другими WoG-скриптами, которые многие флаги уже заняли.
Цитата(Chortos-2 @ 27 May 2005, 11:00)
Нельзя ли ввести в ERM побитовые (логические) операции - логическое И, ИЛИ, НЕ, XOR (как он по-русски?) и т.д.? Иначе очень трудно делать скрипты, оперирующие многими флагами, к тому же совместимые с другими WoG-скриптами, которые многие флаги уже заняли.

Побитовые и логические - две большие разницы. Побитовые есть в среди команд !!VR, а логические используются в левой части тригеров и приемников (условное выполнение).
Видимо вы что-то другое имели в виду. Нельзя ли поконкретнее?
Чёртос-2 (Chortos-2)
27 May 2005, 15:30
Можно. Есть два числа, представленных в двоичном виде (из нулей и единиц). Логические операции зададут/сбросят биты в числе-результате, основываясь на этих двух:
- AND — задаст те биты, которые в обоих числах были заданы (равны 1), и сбросит все остальные;
- OR — задаст те биты, которые были заданы хотя бы в одном из чисел;
- XOR — задаст те биты, которые были заданы только в одном из чисел;
- NOT — применяется только к одному числу. Инвертирует все биты в числе.
Больше я, к сожалению, не помню...
А теперь примеры.
Число A = 10010100
Число B = 11010010
AND: 10010000
OR: 11010110
XOR: (0)1000110
NOT (с числом А): (0)1101011
NordStar
27 May 2005, 16:03
Чёртос-2, ты не смеши народ объясняя ZVS что такое логические операции
Он это студентам не бось уже устал объяснять сам.
Т.е. я так понял тебя интересуют просто сами логические операции над числами как таковые.
Чёртос-2 (Chortos-2)
28 May 2005, 16:11
Он не понял (см. его сообщение), какие операции я имею в ввиду. Я и объяснил!

А понял ты правильно
Цитата(ZVS @ 11 Mar 2005, 14:38)
В 3.59 планируется и триггер на изменение переменных и real-time отладчик ERM кода.
Вот бы только сил на все хватило...
Неотлажененость кода особенно заметна в кампаниях, где из-за непоставленной точки с запятой( ; ) неработает скрипт и выдает кучу ошибок, а бывает литит вся игра

.
sergroj
02 Jul 2005, 21:22
Remedy
Внедряя в ERM так званый RZT (REKVIZIT) команды мне удалось ускорить некоторые функции в 10 и больше раз!
А что это?
Мои предложения:
1) Когда герой стоит на строении, OB выдает свойства героя. Хотелось бы и свойства объекта.
2) Изменение Stack Exp у юнитов в городах.
3) Локальные функции и переменные, принадлежащии файлу скрипта - сразу снимет море проблем.
Цитата(sergroj @ 02 Jul 2005, 21:22)
1) Когда герой стоит на строении, OB выдает свойства героя. Хотелось бы и свойства объекта.
Не знал этого, надо запомнить. Спасибо.
Цитата
2) Изменение Stack Exp у юнитов в городах.
Это вроде бы можно сделать с помощью !!EX
Цитата
3) Локальные функции и переменные, принадлежащии файлу скрипта - сразу снимет море проблем.
Ну, с морем проблем это перебор,

хотя не спорю, вещь весьма полезная.
Beavis_seattle
04 Jul 2005, 19:54
1. чтобы можно было использовать ert-Z переменные
ВЕЗДЕ где используются z-переменные.
2. Сделать таймер реального времени.
3. Увеличить кол-во переменных или чтобы каждый скрипт использовал свои переменные (ну типо как с w-переменными для каждого героя
определённое значение, а тут для каждогог скрипта свои).
4. !#OB63/34:Hz300; - вот такое бы неплохо сделать.
потом ещё чё нить добавлю...
зы. а когда выдет русский ерм-хелп ?
gamecreator
04 Jul 2005, 21:01
Надо сделать проверку на ошибки
Цитата(gamecreator @ 04 Jul 2005, 22:01)
Надо сделать проверку на ошибки
А вот это для кого ZVS писал?
В 3.59 планируется и триггер на изменение переменных и real-time отладчик ERM кода.
Вот бы только сил на все хватило...
deagle
05 Jul 2005, 09:47
Цитата(ZVS @ 11 Mar 2005, 13:38)
В 3.59 планируется и триггер на изменение переменных и real-time отладчик ERM кода.
Вот бы только сил на все хватило...
Еще желательно добавить "молчаливый" обход ошибок. Что б игру по возможности не крэшило, а выполняло действие по умолчанию и не мучало сообщениями (если не включен режим отладки). В идеале было бы и перехватывать все ошибки приложения.
sergroj
06 Jul 2005, 01:03
Еще идея: сделать jump на N-ое кол-во строчек вверх или вниз
NordStar
06 Jul 2005, 09:28
Цитата(sergroj @ 06 Jul 2005, 01:03)
Еще идея: сделать jump на N-ое кол-во строчек вверх или вниз
В рамках одной процедуры, конечно.
2Remedy
уже обсуждаем нечто похожее
2sergroj
ни к чему, когда есть функции
Чёртос-2 (Chortos-2)
07 Jul 2005, 13:21
Цитата(Remedy @ 05 Jul 2005, 20:15)
Ещё желательно провести некую оптимизации ERM языка - а именно более рационально реализовать "условия"
К примеру
!!IF&v1=1/y1<>0:T0; Включить общее условия для кода ниже (T0)
...
... условия распространяется на каждую строку кода ниже
...
!!IF&v1=1:T1;Выключить одно из условий для всего кода ниже (T1)
Ну и !!IF:T2; выгрузить все условия загруженные !!IF:T0;
Обратите на эту идею внимания - очень функциональная вещь, как по мне.
Вещь архиполезная, только непонятно, зачем нужен T1 - это ведь тот же самый T0. Или имеется в виду, что это T2+T0?
sergroj
08 Jul 2005, 19:55
Надо так: T0 - begin, T1 - else, T2 - end.
sergroj
12 Jul 2005, 21:47
Я хотел if, как в других языках программирования.
Хотя, сейчас подумал - не нужно это. Ведь можно сделать так:
!?AA;
... [if]
!?AA&3; [then]
...
!?AA&-3; [else]
...
!?AA; [продолжение функции]
...
Я хотел бы, чтобы при ошибке в ERM он писал то место где она произошла, а не текст ERM после неё. Так легче понять, что же ему не нравится. А с if...then...else вещь ужасно полезная!!!!!!
basileus
25 Jul 2005, 15:28
Я тут подумал -Хорошо бы вставить новые события -на
"копать!"
"Смотреть карту загадки"
С обработчиками вида "копать" где бы присутствовали проверки
переменной, откапывемый бонус, картинки и тексты-удачных/неудачных раскопок.
С обработчиками вида "Смотреть карту загадки" -где
для героя, получившего в квесте(нашедшего), карту клада,
был бы список доступных карт(с начальноым элементом -карта загадки). (идеально- чтобы в качестве карты было либо имя картинки, либо координаты+размер квадрата и смещение крестика)
Вот так, немного сумбурно, но надеюсь, понятно!
ded_Pihto
25 Jul 2005, 16:00
Хорошо бы ещё обработчик нажатия клавиш на клавиатуре, а также post-тригерры, а то только один - !$LE, можно было бы и !$HL, например и ещё что-нибудь похожее...
И хорошо бы ВИЗУАЛЬНЫЙ программатор. То есть, например, не заучивать все эти триггеры, инструкции - а писать словами в программе. Потом эта программа перекодирует в ERM и выдаёт готовый скрипт, проверенный на ошибки.
Только вот писать это... Ладно, забейте, я только выложил идею...
Чёртос-2 (Chortos-2)
25 Jul 2005, 22:19
Цитата(Андер @ 25 Jul 2005, 21:31)
И хорошо бы ВИЗУАЛЬНЫЙ программатор. То есть, например, не заучивать все эти триггеры, инструкции - а писать словами в программе. Потом эта программа перекодирует в ERM и выдаёт готовый скрипт, проверенный на ошибки.
Только вот писать это... Ладно, забейте, я только выложил идею...
Такая идея давно есть и у меня даже есть начало транслятора в ERM... Кстати, язык этот я назвал HeroesScript, ибо решил сделать немного похожим на JavaScript. Как можно догадаться, транслятор сам тоже на JS
Ну, и когда HS выйдет "официально"? Я, конечно, понимаю, что надо много потрудиться, чтобы его написать...
Чёртос-2 (Chortos-2)
26 Jul 2005, 09:23
Есть база, надо только "перевести" все команды из ERM в HS. Плюс я ещё не решил, как сделать if... Есть идеи?
То есть if? Наверное, придётся так же в каждой строчке писать условия...
Чёртос-2 (Chortos-2)
26 Jul 2005, 17:59
В смысле, писать if(v1>v2365/v2<v2365) hero.artifact(25) или ещё как-нибудь...
Ну да, примерно так. Вроде нормально.
sergroj
29 Jul 2005, 00:40
Еще чего бы хотелось WOG'овских заклинаний - отдельную страницу книги (точнее, 2 - на карте и в бою), в которую добавляются скриптовые заклы со своей картинкой, или картинкой любого другого закла.
Цитата(Андер @ 26 Jul 2005, 01:31)
И хорошо бы ВИЗУАЛЬНЫЙ программатор. То есть, например, не заучивать все эти триггеры, инструкции - а писать словами в программе. Потом эта программа перекодирует в ERM и выдаёт готовый скрипт, проверенный на ошибки.
А зачем их заучивать? Взял ERM Help и посмотрел. И большой вопрос: что легче будет заучть - новые названия, или стандартные? К тому же, из-за ограниченности в переманных и функциях, толку с этого транслятора будет маловато. А вот, если появятся локальные функции и переменные в рамках скрипта, тогда можно будет создать вполне нормальный язычек!
Solmyr2000
29 Jul 2005, 09:37
Цитата(sergroj @ 29 Jul 2005, 00:40)
Еще чего бы хотелось WOG'овских заклинаний - отдельную страницу книги (точнее, 2 - на карте и в бою), в которую добавляются скриптовые заклы со своей картинкой, или картинкой любого другого закла.
Цитата(Андер @ 26 Jul 2005, 01:31)
И хорошо бы ВИЗУАЛЬНЫЙ программатор. То есть, например, не заучивать все эти триггеры, инструкции - а писать словами в программе. Потом эта программа перекодирует в ERM и выдаёт готовый скрипт, проверенный на ошибки.
А зачем их заучивать? Взял ERM Help и посмотрел. И большой вопрос: что легче будет заучть - новые названия, или стандартные? К тому же, из-за ограниченности в переманных и функциях, толку с этого транслятора будет маловато. А вот, если появятся локальные функции и переменные в рамках скрипта, тогда можно будет создать вполне нормальный язычек!
КУЧА НОВЫХ ЗАКЛОВ ЕСТЬ У САГАМОСЫ!!!!
sergroj
31 Jul 2005, 03:34
Внутрискриптовые функции и переменные будут, так что транслятор можно сделать очень неплохим.
Цитата(Chortos-2 @ 26 Jul 2005, 13:23)
Есть база, надо только "перевести" все команды из ERM в HS. Плюс я ещё не решил, как сделать if... Есть идеи?
Например, как я писал в посте #27.
Хотелось бы загружать файлы игры, допустим в IF добавить следующие возможности и несного модернизировать:
1)Загружать PCX файл в диалог, при этом каталог загрузки идет из data\, возможность загружать как из папки так и из lod файлов, синтаксис:
1.I$1/$2/#3;
$1 - Имя файла z-переменная(в начаое имени указываеться # если поиск файла производиться вначале в каталоге по умолчанию, % указываеться если файл читаеться сразу из lod файла)
$2 - Имя лод файла z-переменная(по умолчанию каталог data\)
#3 - фон, 1 осатвить без изменений, 0- убрать(в pcx файлах это обычно 00FFFF)
Пример:
!#VRz100:S^#123.pcx^;
!#VRz101:S^%123.pcx^;
!#VRz102:S^h3bitmap.lod^
!!IF:Iz100/z102/1;показывает 123.pcx, производит поиск в начале в папке data\, потом в h3bitmap.lod, фон оставить.
2)Загружать DEF файлы в диалог, при этом каталог загрузки идет из data\, возможность загружать как из папки так и из lod файлов, синтаксис:
1.J$1/$2/#3/#4;
$1 - Имя файла z-переменная(в начаое имени указываеться # если поиск файла производиться вначале в каталоге по умолчанию, % указываеться если файл читаеться сразу из lod файла)
$2 - Имя лод файла z-переменная(по умолчанию каталог data\)
#3 - фон, 1 осатвить без изменений, 0- убрать(в pcx файлах это обычно 00FFFF)
#4 - номер спрайта в def'e, отсчитывать от 0, если он не существует показывать последний, использовать -1 для показа анимации def файла.
Пример:
!#VRz100:S^#123.def^;
!#VRz101:S^%123.def^;
!#VRz102:S^h3sprite.lod^
!!IF:Jz101/z102/1/-1; показывает анимацию 123.def расположенного в h3sprite.lod, с задним фоном
sergroj
13 Aug 2005, 17:42
Хорошая идея, но с синтаксисисом ты явно перемудрил. Лучше просто всюду, где идет настройка диалога сделать возможность такого пути:"Data\h3bitmaps.lod\aaa.pcx" и "Data\h3sprite.lod\aaa.def\1"(т.е. 2-й кадр).
2 sergroj
А как быть с фоном?
basileus
17 Aug 2005, 19:29
Я так понимаю, что расширить возможности диалогов, с указанием
разных файлов и путей до них, это общее устремление картоделателей. А если еще и вставить поддержку BIK(в компаниях то она уже есть), то RPG карты качественно улучшатся.
Добавить возможность добавлять новые артефакты из лежащх дефок. Например, лежит у тебя где-то дефка, а в скрипте ты её подгружаешь из файла, а не из лода. И таким образом можно было бы обойти лимит существ. И добавить арты. Новые.
Вроде ZVS хотел сделать замену монстров, те подгружаешь новый монстр из файла и заменяешь один из существующих.
Ну вот только лимит убрать... И вперёд! Только как?
Solmyr2000
17 Aug 2005, 22:26
Цитата(Андер @ 17 Aug 2005, 21:56)
Только как?
Вот именно.
В ЕХЕ файле нужно значение изменить!
Цитата(bomw @ 18 Aug 2005, 08:32)
В ЕХЕ файле нужно значение изменить!
Я вижу тут все такие умные

, ну что же стоите, вперед, меняйте, а мы посмотрим.
И толку его менять, если в 3.59 будет новый ЕХЕ?
Цитата(bomw @ 18 Aug 2005, 08:42)
И толку его менять, если в 3.59 будет новый ЕХЕ?
В каком смысле новый?
В прямом, в старом много чего измениться и в ЕРМ тоже, а также скорее всего сохранения игр из предыдущих версий не будут роботать!
Цитата(bomw @ 18 Aug 2005, 08:55)
В прямом, в старом много чего измениться и в ЕРМ тоже, а также скорее всего сохранения игр из предыдущих версий не будут роботать!
Ну подождем не переживай, в новой поменяешь.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.