Darhark
24 Nov 2006, 17:09
Чтобы получить адрес через макрос, например.
Berserker
24 Nov 2006, 17:45
Через макрос? Согласен, можно. Просто у меня ещё никогда не возникало желания и необходимости это сделать. Значит функция нужная...
Darhark
24 Nov 2006, 17:58
Ну я использую макросы, чтобы можно было подкорректировать используемые переменные. Т.е. если у меня имеется "массив" на 84 элемента, и он вдруг законфликтует с каким-нибудь хорошим скриптом из-за этой области, я смогу просто изменить макрос и перетащить "массив" на другой адрес.
Darhark
25 Nov 2006, 14:18
Господа, а теперь я вынужден сообщить, что маленькая и полезная функция не работает. Потому что ?$макрос$ передает нуль. В чем раскрывается один из главных недостатков ERM - отсутствие единства синтаксиса. В связи с этим рухнули мои надежды на Heroes Script, ибо написать хорошо работающий компилятор при таком раскладе будет КРАЙНЕ сложно.
А пока я жду творения Лорда и меняю все свои макросы на v????
-------------------------------------------
Виноват, кажется. Похоже, ошибка у меня в скрипте была, хотя еще не проверял
sergroj
01 Dec 2006, 18:11
Цитата(Darhark @ 22 Nov 2006, 19:23)
К тому же, делать редактор совсем не обязательно. Ведь скрипт можно будет писать в простом текстовом файле, который потом компилируется в .ерм, я правильно понимаю? Ну тогда можно взять любой универсальный программерский блокнот и настроить там синтаксис, верно?
Да
Цитата(Berserker @ 22 Nov 2006, 20:33)
Информации в Яндексе мало, но по идее это навесная защита на ехешник. Есть специальные тулзы, которые это определяют. А вы не знали, что файл защищён?
Нет. А он точно защищен?
Цитата(Berserker @ 23 Nov 2006, 15:13)
Странно, что такого очень удобного момента не включили в хелп
Да, а как работает система макросов? Производится поиск по документу, затем выясняется, что под макросом скрывается, а затем только используется. Или же при загрузке формируется таблица, макрос - тип переменной. В любом случае, команды с макросами всегда медленнее, почему их и не рекомендуется ставить на всех переменных. Иначе каждую пометили бы именем

Наверняка поска по документу не делается, просто выполняется команда установки макроса, когда до нее доходит дело.
>Нет. А он точно защищен?
нет, не защищен, хотя PEID так не считает
Berserker
02 Dec 2006, 01:01
Тогда почему там всё перемешано: данные, код? И почему PEID ошибается? Даже версию пишет. Впрочем, раз пишет - значит навешена. А вообще, не плохо было бы, если бы Слава честно ответил, чтобы мы не гадали.
sergroj
02 Dec 2006, 20:32
Цитата(Berserker @ 02 Dec 2006, 05:01)
Тогда почему там всё перемешано: данные, код? И почему PEID ошибается? Даже версию пишет. Впрочем, раз пишет - значит навешена.
Там "дописан" еще один exe-шник. Я проверил - дебаггится нормально. Да и он не может быть защищен, т.к. Славин код при запуске правит изначальный код Героев в ряде мест.
Цитата(Berserker @ 02 Dec 2006, 05:01)
А вообще, не плохо было бы, если бы Слава честно ответил, чтобы мы не гадали.
Слава здесь редкий гость.
Berserker
02 Dec 2006, 22:35
Согласен. Дебаггить и я пробовал. Значит PEID как обычно ошибся, обнаружив код в коде и посчитал это за защиту.
Darhark
04 Dec 2006, 18:05
По поводу ифзена.
Вог тим не реализовала лэйблы, и я их могу понять. Правда, официально причиной этого является "метки не нужны, раз есть ДУ", но, ИМХО, не одному только for они нужны. Да и for было бы намного удобнее делать через метки. Ну, то есть, не удобнее, конечно, однако логичнее. Хотя бы не нужно было бы каждый раз, когда требуется цикл, создавать отдельную функцию.
Мне кажется, причина несколько в другом. Дело в том, что метки было бы логично (с точки зрения логики ЕРМ) обьявлять через !? (!?LB). Но тут есть одна проблемка. Я не видел исходников и не копался в экзешнике, однако прекрасно понимаю: если интерпретатор замечает !?, то он завершает функцию и дальше не смотрит. !! используется для вызова, !# - та же история, что и с !?. То есть для меток требуется новый указатель. Нет, это фигня, конечно. Всего лишь одна из причин, да и не уверен я, что это действительно проблема (ведь ее можно обойти, сделав, например, !!LB2;!?LB1;!!;!!;!!;!!;!?LB2;). Другая причина - использование лишней памяти. Вог тим очень неохотно идет на увеличение числа переменных, функций и тд. Видимо, тому есть свои причины. А на лэйблы, я уверен, спрос был бы чуть ли не больше, чем на те же функции. Это же каждый if, for, while и так далее. Ведь как было бы удобно:
!!LB1&1;
!!LB2&-1;
!?LB1;
!!инструкция
!!инструкция
!!инструкция
!!инструкция
!!инструкция
!!инструкция
!!LB3;
!?LB2;
!!инструкция
!!инструкция
!!инструкция
!!инструкция
!!инструкция
!!инструкция
!?LB3;
!!инструкция
!!инструкция
!!инструкция
!!инструкция
!!инструкция
!!инструкция
или
!!VRi:S0;
!?LB1;
!!VRi:+1;
!!IF:M^%I^;
!!LB1&i<=10;
Кстати, никто не знает, как в ЕРМ дела с рекурсией обстоят?
sergroj
04 Dec 2006, 19:48
У меня такая идея про goto - переход на последнюю !?, т.е. так:
!?FU255; // 1
....
!?FU255; // 2
....
!!FU:G0; // попадаем на 2
Если !!FU:G-1; //, то попадаем на 1
Если !!FU:G1; //, то то же самое, что !!FU:E
Цикл тогда будет выглядеть так:
!?FU255;
!!VRy1:S100;
!?FU255&y1>0;
(тут можно что-то делать)
!!VRy1:-1;
!!FU:G0;
Эквивалентно while y1>0 do (...) y1:=y1 - 1;
А, используя еще G-2 можно будет цикл в цикле делать.
Как Слава вернется к работе, я ему много идей накину...
С рекурсией есть ограничение, помнится.
Berserker
09 Dec 2006, 15:37
Этот пост не о том, что я хочу увидеть в ЕРМ, а просто из элементарного уважения к автору. Я смотрю, многие хвалят карты и их создателей, но мало кто говорит спасибо тому (в частности тем), кто создал Инструмент. Не обсуждая его достоинств и недостатков, моно лишь выразить огромную благодарность Славе и тем, кто ему помогал в создании этого инструмента. Именно познакомившись с миром ВоГ я пришёл на этот форум...Спасибо вам, за инструмент, с помощью которого люди могут создавать шедевры, и благодаря которому, Герои 3 не умерли печальной смертью...
DracoLich
10 Dec 2006, 11:15
Точно не знаю, может, уже было, но хотель бы ресейвер для Хижин провидцев..
Цитата(DracoLich @ 10 Dec 2006, 11:15)
Точно не знаю, может, уже было, но хотель бы ресейвер для Хижин провидцев..
Хижина провида - это что такое? Seer Hut, где приносишь шнягу и получаешь приз? Если так, то зачем для него ресивер? Просто при посещении дизаблишь стандартную мессагу, а свою выдаешь. И всю функциональность заново прописываешь. Хочешь - стандартную, а хочешь - экзотическую.
Вот примеры Seer Hut'ов с некоторых ТЕшных карт:
Guardians - дает взрыв за любых 5 существ 7 уровня, цепную молнию за 10 6х монстров и инферно за 15 5-х. Причем квест можно выполнять сколько угодно раз, и войска можно разношерстные жертвовать (типа 2 гиганта + 3 бегемота).
Mirror Planes - за определенную плату (1000 монет вначале и далее сумма удваивается каждую неделю) мудрец натренирует армию героя, повысив всем отрядам ранг на 1 (квест работает для монстров по тому же принципу, что и Древо Знаний для героев). Каждую хижину можно посещать не чаще раза в неделю.
Lands of Magic (оффлайн, игра на опыт героя) - один раз за игру зашедшему герою дают опыт, по 10000 за каждое выученное им заклинание 5 уровня и по 5000 за каждый спелл 4 уровня.
Есть еще несколько более простых примеров, скажем, квест, в котором дают ходы герою.
И все это пишется по одному шаблону со стандартным диалогом. Но вот "запихнуть" все мыслимые варианты в ресивер, каким бы продвинутым он не был, все равно не удастся.
DracoLich
12 Dec 2006, 03:19
Ну, я хотел бы просто узнавать квест и награду, более не нуно..
saladin
30 May 2007, 15:44
продублируйте команды на человеческий синтаксис
Demiurg
31 May 2007, 14:48
Переместил из темы идеи для ВОГ свой пост сюда:
Идея
Объектные переменные
Каждый объект получает новое свойство - количество собственных переменных. У разных объектов - разное. Может редактироваться в ZEOBJTS.txt Собственные переменные объекта можно настраивать в редакторе карт и тогда объект получит эти значения на старте игры. Пусть будут какие-либо значения по умолчанию для каждого объекта.
Внутри объекта (после вызова триггера !?OB и до его окончания) можно к его собственным переменным обращаться просто:
!!VRo4 - четвертая o - переменная текущего объекта.
Снаружи объекта можно обращаться к его переменным например с помощью ресивера !!OV (object variable)
!!OV<type>/<subtype>/<object number>/<variable number>:
Суть нововведения: для объектов новых и старых практически всегда нужны переменные и не только временные. В итоге разные объекты забивают кучу v-переменных. Но гораздо логичнее было бы хранить постоянные объектные переменные вместе с объектом. Кроме того логично настраивать часть объектных переменных в редакторе в свойствах объекта напрямую, не пользуясь скриптами.
Д'якон
19 Jun 2007, 23:13
Раз уже if then ввели так может ицикл
for i и т.д. - одним словом Паскаль. Не знаю но мне кажеться пригодилось бы.
Чёртос-2 (Chortos-2)
19 Jun 2007, 23:51
Так есть уже (правда, только на вызов функции), !!DO<номер функции>/<начальное значение>/<конечное значение>/<шаг>:P<аргументы>. Счетчиком является шестнадцатый аргумент функции — к слову, его можно менять и внутри нее.
Д'якон
20 Jun 2007, 18:14
Не спорю. Тогда такая задача. Подсчитать кол-во существ одного типа в гарнизоне замка? Желательно при помощи !!DO
gamecreator
20 Jun 2007, 21:06
!?FU1;
!!VRy3&x16=0:S0;
!!CAx1/x2/x3:M2/x16/?y1/?y2;
!!VRy3&y1=x4:dy2;
!!VRx5&x16=6:Sy3;
теперь пишешь
!!DO1/0/6/1:x/y/l/t/?n; где
x, y, l - координаты замка
t - тип существа
n - количество существ типа в гарнизоне
Из наболевшего...
- Было бы удобно, если бы везде, где надо указывать координаты через три переменные, достаточно указать только индекс первой переменной...
А имею ввиду не только такие !!ZZx/y/z:###;, но и к примеру чтобы вместо !!HE#:Tv998/v999/v1000/69/4 писать просто !!HE#:T998/69/4. И таких примеров навалом...
Сколько места можно съэкономить

- А ещё, почему бы ресиверу !!PM не дать способность работать со всеми имеющимися объектами в Героях III, а не только с Пирамидами

(имеется ввиду, управление флагом посещаемости). Или же, всем объектным ресиверам добавить (где он уместен, конечно) параметр управляемости посещением (V), ведь у некоторых же он есть?!
И почему
!!VR#:C работает только с v-переменными?

Было бы не лишним расширить полномочия параметра "С", чтобы работать также с "w","f..t", "e"
Очень, очень бы хотелось в новом ЕРМ увидеть поддержку следующего:
!!EA$1/$2:####
$1 - номер героя
$2 - номер слота в армии

Ну или добавить работу с линиями опыта в ресивер !!EX
Надеюсь, в эту тему Слава заглядывает, а если нет, то передайте ему наказ, чтобы он всё же иногда её смотрел
gamecreator
02 Nov 2007, 13:09
а ЕХ не подходит?
hippocamus
09 Nov 2007, 00:58
Цитата(Bes @ 23 Aug 2007, 17:45)
чтобы вместо !!HE#:Tv998/v999/v1000/69/4 писать просто !!HE#:T998/69/4
Эта форма могла бы обозначать, что идёт обращение к 998-му

герою.
Можно сделать триггер, который бы вместо таймера срабатывал:
!?NP0; / начался новый день?
!?NP1; / началась новая неделя?
!?NP2; / начался новый месяц?
Чтоб таймер не занимать, да и стандартными инициализациями место не занимать.
Д'якон
09 Nov 2007, 01:39
Просто у таймера возможностей больше.
Тем более, хотя я не уверен, можно для всех трех целей использовать один таймер:
!?TM#&условие;
И если даже использовать уже существующий таймер, мне кажется ничего страшного в этом нет. Просто не используй одинаковые переменные, либо обнуляй их перед использованием.
DracoLich
09 Nov 2007, 06:18
Д'якон, все правильно, один таймер рулит все дни/недели/месяцы. К примеру, глобальный таймер 1, на котором основаны множество WoG-скриптов, и день проверяет, и неделю, и месяц, и т.п. мелочи. Так что необходимости в других триггерах такого типа нет; а насчет номера - если пишешь под WoGификацию, то просто посмотри в этом script1 принцип проверок, и используй его.
hippocamus
10 Nov 2007, 00:02
Тогда вот что.
Обрабатывать экран "Книга магии" (щёлчок на "Перевернуть страницу"), щелчок на Картинке магии #4 (к примеру). И добавить возможность отображения в книге магии внешних картинок. Тогда это будет эмуляция новых заклинаний. Если постараться, можно сделать так, что никто ничего и не заподозрит.
gamecreator
10 Nov 2007, 09:18
если сделать рисивер подгрузки лодов, то еще и не такое можно сделать
чего не хватает?
1. простого и понятного управления ВСЕМИ свойствами монстров
2. Возможности заменить/перестроить замок с управлением деревом построек, своими зданиями, хоть с пятью уровнями апгрейда и десятью магической гильдии. Ну и пятью уровнями замка, естессно

3. всё, что под пунктом два, должно быть сделано
МОДУЛЬНО. Т.е. не выкачиваешь десять версий вога от разных производителей, а копируешь в папку "modules" папку со своим аддоном и через меню выбираешь, какой модуль. Вообще шикарно будет, если замки можно будет из разных модулей выбирать. Пусть в игре одновременно их будет по прежнему девять, всё равно лучше так.
------------------------------------------------------------------------------------
технические детали:
4. нормальных переменных с именами, не ахти какая проблема запрограммить. Хотя бы пусть будет ограничение на число символов - 6-8, например, и номер двузначный(лучше трёхзначный). лень возиться с типизацией - пусть будет первая буква тип строчная, остальные заглавные. Весь синтаксис при такой системе работает, вплоть до косвенной адресации типа
!!VRzENCHANTeD_MONSTERSvENCHANTeD_MONSTERS251:S15;
-записывает 15 переменную zENCHANTeD_MONSTERS за номером, указанным в переменной vENCHANTeD_MONSTERS251
Ну, можно разделитель ввести для читаемости
!!VRzENCHANTeD_MONSTERS|vENCHANTeD_MONSTERS251:S15;
сразу решается проблема с совместимостью скриптов
5. ЧРЕЗВЫЧАЙНО узкое место - z переменные. Многие функции возможно реализовать, только занимая их - например, задание имени юнита, специализации, описания. Не то что 200 переменных подряд для подобного массива не найдёшь, а проблема 20 подряд найти, да и вообще всего свободных осталось всего ничего. Но пункт четыре решил бы эту проблему

)
ShadowDF2
23 Mar 2009, 18:27
4) Макросы
А безлимитное кол-во переменных имхо мечты
Цитата(ShadowDF2 @ 23 Mar 2009, 19:27)
4) Макросы
А безлимитное кол-во переменных имхо мечты
Ты видел эти макросы? Пользовался ими? Да? не говори ерунды. Нет? не говори чего не знаешь.
А что именно тебе не нравится в макросах?
Цитата(major @ 23 Mar 2009, 22:29)
А что именно тебе не нравится в макросах?
Баловство
ShadowDF2
25 Mar 2009, 12:50
Цитата
Ты видел эти макросы? Пользовался ими? Да? не говори ерунды. Нет? не говори чего не знаешь.
Видел. Пользовался. Не ерунда, а присвоение переменной какого-то имени, пусть переменная все равно и не становится уникальной. Пиши на С чтобы все было уникально
Цитата(ShadowDF2 @ 25 Mar 2009, 13:50)
Видел. Пользовался. Не ерунда, а присвоение переменной какого-то имени, пусть переменная все равно и не становится уникальной. Пиши на С чтобы все было уникально
Макросы даже для z переменных не работают

Горе, да и только. Просто насмешка.
sergroj
25 Mar 2009, 20:26
Цитата(G.I. @ 23 Mar 2009, 02:26)
1. простого и понятного управления ВСЕМИ свойствами монстров
Думаю, будет.
Цитата(G.I. @ 23 Mar 2009, 02:26)
2. Возможности заменить/перестроить замок с управлением деревом построек, своими зданиями, хоть с пятью уровнями апгрейда и десятью магической гильдии. Ну и пятью уровнями замка, естессно

Будет, может без полной свободы, но как-то будет.
Цитата(G.I. @ 23 Mar 2009, 02:26)
3. всё, что под пунктом два, должно быть сделано МОДУЛЬНО.
Будет.
4, 5. Будет и уже реализовано - Lua. Еще макросы для любых чисел (хоть номеров z-переменных, хоть функций) будут и уже реализованы.
Цитата(sergroj @ 25 Mar 2009, 21:26)
Цитата(G.I. @ 23 Mar 2009, 02:26)
1. простого и понятного управления ВСЕМИ свойствами монстров
Думаю, будет.
Цитата(G.I. @ 23 Mar 2009, 02:26)
2. Возможности заменить/перестроить замок с управлением деревом построек, своими зданиями, хоть с пятью уровнями апгрейда и десятью магической гильдии. Ну и пятью уровнями замка, естессно

Будет, может без полной свободы, но как-то будет.
Цитата(G.I. @ 23 Mar 2009, 02:26)
3. всё, что под пунктом два, должно быть сделано МОДУЛЬНО.
Будет.
4, 5. Будет и уже реализовано - Lua. Еще макросы для любых чисел (хоть номеров z-переменных, хоть функций) будут и уже реализованы.
вкусно. Когда доступ?
hippocamus
26 Mar 2009, 00:29
Что все говорят про этот Lua?
Ну и чем он удобнее чем ЕРМ?
gamecreator
30 Mar 2009, 23:38
Цитата(G.I. @ 22 Mar 2009, 23:26)
2. Возможности заменить/перестроить замок с управлением деревом построек
3. всё, что под пунктом два, должно быть сделано
МОДУЛЬНО4. нормальных переменных с именами
5. Не то что 200 переменных подряд для подобного массива не найдёшь, а проблема 20 подряд найти, да и вообще всего свободных осталось всего ничего. Но пункт четыре решил бы эту проблему

)
2) есть такое. в главном форуме вога лежит тема про здания
3) уже есть попытки совместить разные версии. хотя бы вог свичер. а если не нравится, то напиши сам.
4) scvs
5) zv... а вот массив v-переменных найти несложно. или используй ert
Цитата(hippocamus @ 26 Mar 2009, 00:29)
Что все говорят про этот Lua?
Ну и чем он удобнее чем ЕРМ?
в википедии почитай
Цитата(gamecreator @ 31 Mar 2009, 00:38)
Цитата(G.I. @ 22 Mar 2009, 23:26)
2. Возможности заменить/перестроить замок с управлением деревом построек
2) есть такое. в главном форуме вога лежит тема про здания
Эээ... У меня сомнения, что мы друг друга правильно поняли. Можно ссылку на тему?
Цитата(gamecreator @ 31 Mar 2009, 00:38)
Цитата(G.I. @ 22 Mar 2009, 23:26)
2. Возможности заменить/перестроить замок с управлением деревом построек
3. всё, что под пунктом два, должно быть сделано МОДУЛЬНО
3) уже есть попытки совместить разные версии. хотя бы вог свичер. а если не нравится, то напиши сам.
Ну, согласись, это не модульность. что касается перетасовки скриптов - это возможно и интересно сделать, если допустить запуск екзешников из скрипта
Цитата(gamecreator @ 31 Mar 2009, 00:38)
5) zv... а вот массив v-переменных найти несложно. или используй ert
У меня проблемы не с ИНДЕКСАЦИЕЙ, а с наличием самих z- переменных, а ТЕМ БОЛЕЕ - больших свободных диапазонов (200 переменных подряд и больше) в адресном пространстве z0-z1000 (только эти переменные можно использовать для многих действий)
Цитата(gamecreator @ 31 Mar 2009, 00:38)
4) scvs
Вот из ит? можно по-подробнее?
gamecreator
31 Mar 2009, 18:55
Цитата(G.I. @ 31 Mar 2009, 18:11)
Эээ... У меня сомнения, что мы друг друга правильно поняли. Можно ссылку на тему?
ты же сам ее и создал. и получил там ответ. в названии что-то про условия постройки. первая на второй странице.
Цитата(G.I. @ 31 Mar 2009, 18:11)
а ТЕМ БОЛЕЕ - больших свободных диапазонов
так я подсказываю как решить проблему. забей свободные номера в массив из v и вызывай как zv
Цитата(G.I. @ 31 Mar 2009, 18:11)
Вот из ит? можно по-подробнее?
позволяет задавать имена переменных и константы. к сожалению, ссылки нет
gamecreator
01 Apr 2009, 00:18
SCVS есть в Фениксе
hippocamus
01 Apr 2009, 00:59
> ты же сам ее и создал. и получил там ответ.
> ты же сам ее и создал. и получил там ответ.
Для екзешника ТЕ
gamecreator
01 Apr 2009, 17:28
заруби себе на носу: что есть в ТЕ, то есть и в Вог3.59
Цитата(gamecreator @ 01 Apr 2009, 18:28)
заруби себе на носу: что есть в ТЕ, то есть и в Вог3.59
Не в этом дело: TE не стандарт, а 3.58f- стандарт. Вот выйдет 3-59, тогда 3-59 будет стандартом. Только когда оно выйдет...
hippocamus
03 Apr 2009, 00:53
Ж.И.
ТЕ - стандарт. Уже давно среди всех скриптёров.
Дело в том, что можно поставить экзешник ТЕ, а пользоваться всеми скриптами Вог, и новыми возможностями в скриптописании (особенно интересны рессиверы DL и SS).
Добавлено ([mergetime]1238709190[/mergetime]):
Стандартом становится то, что вошло в ERM-help. ТЕ туда вошёл.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.