Автор | Сообщение | |
---|---|---|
Сэр Sector
HoMM IV: Безземельный |
У меня вопрос. Занимается ли гильдия написанием скриптов к четвертым героям. Идей полно, нужны скрипты.
|
|
Сэр Kirinyale
HoMM V: Рыцарь |
Сэр Sector, 27.06.2004 03:42 К сожалению, пока не занимается - не хватает специалистов. Однако, возможно, вам сможет помочь сэр ScorpionSP (если не ошибаюсь, он ранее упоминал, что что-то знает о скриптах для HoMM4). |
|
Сэр Lomis
HoMM IV: Безземельный |
Сэр Duke Kirinyale, у меня к Вам прозьба не могу написать скрипт, что бы когда герой поподал на событее, монстр стоящий в какой либо точке телепортировался в другую точку (предположим перед героем)! Поможешь?
|
|
Сэр Kirinyale
HoMM V: Рыцарь |
В принципе, можно. Первый способ, который приходит в голову - удалить монстра на старом месте и восстановить на новом с теми же настройками. На всё, если не ошибаюсь, уйдёт как раз строчек пять (по устным прикидкам). Если вы ещё снабдите меня координатами события, монстра, и точки, куда его нужно телепортировать, то могу продемонстрировать, как это делается.
|
|
Сэр Lomis
HoMM IV: Безземельный |
Этого монстра нужно телепортировать 5 раз, это гарпия, она типо верный путь указавает герою, а потом улетает, то-есть мочить её ненадо! Ну а кординаты можно 1/1/0 и 2/2/0, предположим!
|
|
Сэр Kirinyale
HoMM V: Рыцарь |
Сэр Romich, 20.07.2004 14:24 А поточнее можно? Что есть что, собственно? 1) Координаты события? 2) Начальные координаты гарпии? 3) Координаты гарпии после телепортации? |
|
Сэр Lomis
HoMM IV: Безземельный |
Да, верно - предположим герой встал на событее в корденате 1/1/0, а гарпия в 5/5/1, телепортнулась в 2/2/0! Вот так.
|
|
Сэр Kirinyale
HoMM V: Рыцарь |
Если я правильно понимаю, что гарпия только одна, и сражаться с ней всё равно не придётся (то есть, ничего, кроме количества, можно при переносе не настраивать), то попробуйте так:
ZVSE !?LE1/1/0&1000; !!UN:O5/5/1/0/1 I2/2/0/54/72; !!MO2/2/0:G1; Скрипт я не испытывал, но, по идее, он должен работать. |
|
Сэр ShadeByte |
Дорогие скриптописатели , посмотрел я на ваш ERM и стало мне страшно (перую неделю аж кошмары снились: восклицательные знаки там всякие вопросительные...) и решил я написать компилятор языка нормального, почти английского, на ERM. И пришел я за ваш столик, и задался вопросом, а нужно ли это людям? А поддержат ли они меня?
|
|
Сэр Gorbik
HoMM V: Барон |
Сэр ShadeByte, 9.08.2004 17:06 А попробуйте связатся с Сэром ZVS Скажите магистр Gorbik послал И он глядишь кампилятор как-то применит и мы глядишь его в сокровищнице выложим. |
Особый статус: |
Сэр ShadeByte |
Пока это только идея. Для ее воплощения нужна ваша поддержка уважаемые скриптописцы. Если это вас заинтересовало, свяжитесь со мной. А с сэром ZVS говорить пока рано - нечего показать .
|
|
Сэр Werky
HoMM IV: Безземельный |
Можноли где нибуть достать справочник на русском языке по написанию скриптов, потомучто у меня эсть английский и с мойм английским написание скриптов превращаеться в кошмар. Ещё вопрос, в Wog есть дополнительные здания можно ли одно из зданий превраитиь в жилище существа. Например мельницу в жилище троглодитов.
|
|
Сэр ShadeByte |
||
Сэр Ennin
HoMM IV: Безземельный |
Сэр ShadeByte, 9.08.2004 17:06то есть? прога, обрабатываюшая текст и преобразующая в скрипты ЕРМ? неплохая идея... только пока я ей не в состоянии заняться -времени нет. после лоаклизации ВоГа можно будет подумать |
Особый статус: |
Сэр Ennin
HoMM IV: Безземельный |
Сэр Gorbik, 9.08.2004 17:38Магистр, может, не будем по каждому поводу к нему посылать? |
Особый статус: |
Сэр Ennin
HoMM IV: Безземельный |
Сэр Werky, 21.08.2004 22:28пока толкового нет. Ещё вопрос, в Wog есть дополнительные здания можно ли одно из зданий превраитиь в жилище существа. Например мельницу в жилище троглодитов.из любого здания можно сделать любое другое |
Особый статус: |
Сэр Ennin
HoMM IV: Безземельный |
Сэр ShadeByte, 9.08.2004 17:53вот это правильно. как уже сказал, мне очень интересно, но потом. посмотрим, что скажет Кириньяль. |
Особый статус: |
Сэр Kirinyale
HoMM V: Рыцарь |
Сэр Ennin, 22.08.2004 18:30Сэр ShadeByte, 9.08.2004 17:53вот это правильно. как уже сказал, мне очень интересно, но потом. посмотрим, что скажет Кириньяль. Идея интересная, можно подумать. Но более конкретно я смогу ответить не раньше среды - как только в Киев вернусь, и связь оплачу. |
|
Сэр ShadeByte |
Сэр Ennin, 22.08.2004 18:26 Да именно так. Я предлагаю использовать синтаксис C (не С++!). Хотя Basic имеет свои преимущества C более популярен. Что она должна делать? В первую очередь я считаю необходимо улчшить слабые места ERM а именно: 1. Добавить возможность использования информативных идентификаторов (например не V10, а SomeVariavle). То же самое с функциями. 2. Толковые if ветвления. (отсюда же и Case - ветвление) 3. Возможно добавить while и for. Хотя с этим сложнее - слишком в ERM с этим мудрено. 4. Автоматическое распределение места для переменных с учетом ранее написанных скриптов. Я где-то видел пост в котором картостроитель, использующий скрипты, признается, что не включает стандартные из-за опасения конфликтов. 5. И наконец самое важное: замена тригеров и ресиверов на привычные функции. (например onHeroMove() {...}) Пожалуйста выскажитесь. Что вы думаете. P.S. Я отправил в магистрат герб и карту. Карту засчитали, а герба еще нет. Так и должно быть или атрибуты не дошли? |
|
Сэр Kirinyale
HoMM V: Рыцарь |
Сэр ShadeByte, 22.08.2004 20:19 Согласен. Естественно, это будет не совсем С, а, скорее, отдельный язык, но ориентироваться на основной его синтаксис лично мне будет и проще, и удобнее. Главное - хорошо продумать основные команды и функции, которые будут в таком языке. 1. Добавить возможность использования информативных идентификаторов (например не V10, а SomeVariavle). То же самое с функциями. На самом деле, в ERM есть такая возможность. Например: !#MCv10:S@SOMEVARIABLE@; ... !?... !!VR$SOMEVARIABLE$:S1; Но, конечно, это действительно можно и нужно сделать более удобным. 2. Толковые if ветвления. (отсюда же и Case - ветвление) Обязательно. 3. Возможно добавить while и for. Хотя с этим сложнее - слишком в ERM с этим мудрено. Не так уж и мудрено - команда !!DO вполне может заменить и for, и while, если ей правильно пользоваться. 4. Автоматическое распределение места для переменных с учетом ранее написанных скриптов. Я где-то видел пост в котором картостроитель, использующий скрипты, признается, что не включает стандартные из-за опасения конфликтов. Уж не мой ли это пост? Нечто подобное я буквально пару дней назад упоминал в WoG-овском форуме у Серого Мага... Впрочем, для меня это далеко не единственная (хотя и значимая) причина. Что касается собственно автораспределения - можно и попробовать, хотя я пока не уверен в необходимости и методах его реализации. Однако что нужно сделать обязательно - так это автоматическое построение логов используемых ресурсов (переменных, функций, таймеров и т.п.). 5. И наконец самое важное: замена тригеров и ресиверов на привычные функции. (например onHeroMove() {...}) Ну это и так очевидно, если уж использовать C-like style. Также, если идея выгорит, я лично предложил бы также дополнить этот "компилятор" небольшой библиотечкой часто используемых функций, которые будут преобразовываться в целые ERM-конструкции. За примерами далеко ходить не надо - те же полноценные if и case вполне наглядно показывают, что я имею в виду. P.S. Магистр Sombreus был в отпуске, поэтому обновления атрибутики вообще не было уже довольно давно. Возможно, скоро этим займутся. |
|
Сэр ShadeByte |
Я очень рад что кого-то ( ) заинтересовал.
Сэр Duke Kirinyale, 22.08.2004 22:15 Вообще я не планирую их особенно много. Не намного больше чем в C. Их по-моему вполне хватает. А особые возможности ERM можно релизовать через Inline ERM (типа Inline ASM ). Например так: inline string* GetHeroName (int HeroIndex) { _erm { !!HE HeroIndex:B1/?ReturnValue; //ReturnValue - это значение возвращаемое функцией. //К сожалению по другому нельзя в силу синтаксиса ERM. } } Подобные функции, как вы вполне разумно предложили, действиптельно можно группировать в некие библиотеки. команда !!DO вполне может заменить и for, и while, если ей правильно пользоваться. Наверное вы правы. Но не подскажите ли вы мне следующее: можно ли добиться вечного кай... цикла если насильственно изменять 16 параметр (текущая итерация) изнутри функции? Что касается логов. Ну тут проще. Использование синтаксиса C дает право требовать заранее объявлять все переменные и функции (таймер кажись тоже функция). Из подобного объявления следует и другая выгода: при объявлении переменной присваивается адрес (индекс ). В этот момент удобно находить для нее свободное место. У меня почему-то такое чувство, что в WOGе используется массив V1 = V[1] . И еще один важный аспект. Хотя ERM поддерживает использование указателей, мне кажется, что их использование следует запретить в целях безопасности. Оставить только массивы. P.S. Итоги на текущий момент: Съедено: пица - 10 кусков Выпито: пиво - 2 банки + 1 (один) пакет молока. Написано: Система преобразования потока символов в тэги и идентификаторы. Определены базовые классы. Продуманы основные аспекты работы. P.P.S Это ничего что я тут нафлудил? Или лучше за другой столик свалить? |
|
Сэр Ennin
HoMM IV: Безземельный |
Я предлагаю использовать синтаксис C (не С++!).а какая разница? если есть возможность сделать так, что скрипт можно написать почти английским предложением? например, " when localevent at x/y/l this.hero.kill " легко трансформируется в !?LEx/y/l; !!HE-1:K; Добавить возможность использования информативных идентификаторов (например не V10, а SomeVariavle). То же самое с функциями.думаю, это можно... Толковые if ветвления. (отсюда же и Case - ветвление)мда... вот это посложнее будет Возможно добавить while и for. Хотя с этим сложнее - слишком в ERM с этим мудрено.это и в самом деле не сложнее чем 1 Автоматическое распределение места для переменных с учетом ранее написанных скриптов.импоссибл, если не вести общей системы логов...но их надо обнулять всякий раз когда пишешь новую серию скриптов. {зачем такие сложности? всё можно например, просто getbio(куда) можно ли добиться вечного кай... цикла если насильственно изменять 16 параметр (текущая итерация) изнутри функции?да У меня почему-то такое чувство, что в WOGе используется массив V1 = V[1]можно считать, что все V переменные - это один большой массив с именем v и типа longint+1 Хотя ERM поддерживает использование указателей, мне кажется, что их использование следует запретить в целях безопасности.яких указателей? Съедено: пица - 10 кусковсъедено и выпито: намного больше *правда, втихаря * написано : нифига... как вообще по вашему это выглядеть-то хоть будет? под Финдовс/ДоС, графический или просто ехе движок который обрабатывает заданный текст (я бы пока на этом вырианте остановился...) |
Особый статус: |
Сэр ShadeByte |
Сэр Ennin, 23.08.2004 17:37Я предлагаю использовать синтаксис C (не С++!).а какая разница? если есть возможность сделать так, что скрипт можно написать почти английским предложением? Да вы правы. Толковые if ветвления. (отсюда же и Case - ветвление.мда... вот это посложнее будет Я бы сделал это так: if (condition) {...} 1. Считаем condition (кстати нужен интерпритатор выражений) 2. Если условие истинно, то включаем некий флаг. 3. Исполняем все команды, которые в кавычках, с учетом этого флага. Т.е. //здесь идет вычисление условия и сохранение результата в V1 !!IF &V1 < >0:V1/1; //если условие истинно включаем флаг1 !!HE-1&1:K; //дальше идут другие операции этого блока зачем такие сложности? всё можно например, просто getbio(куда) Не так не пойдет. По-вашему, функция должна быть известна на момент компиляции, что не есть хорошо, т.к ERM может измениться. (вероятно появятся новые тригеры и ресиверы) Кроме того inline-ERM как мне кажется нужен в любом случае. А это одно из его удобных применений. яких указателей?} !!VR vy1:S1; Можно рассматривать как *(y1) = 1;
Да пока это просто exe движок, работающий в текстовом режиме. Написать красивый интерфейс всегда успеется. |
|
Сэр Ennin
HoMM IV: Безземельный |
Не так не пойдет. По-вашему, функция должна быть известна на момент компиляции, что не есть хорошо, т.к ERM может измениться. (вероятно появятся новые тригеры и ресиверы)Конечн появятся они во сейчас каждый день растут и что? добавиьт кусок кода и перекомпилировать ехе - и всё. как правило, ни одна вариация кода ЕРМ не отменяется. на данный момент всё, что не нужно уже отменено (на данный момент ) Кроме того inline-ERM как мне кажется нужен в любом случае. А это одно из его удобных применений.поподробнее, це шо? !!VR vy1:S1;если рассматривать переменные как массив и указывать индекс в квадр.скобках,, всё ок будет. кстати нужен интерпритатор выражений)зачем? надо так и передавать в скрипт пока это просто exe движок, работающий в текстовом режиме. Написать красивый интерфейс всегда успеется.я думаю вообще так : в одной папке хранятся ехе и файл хранящий субскрипт. при запуске ехе из командной строки берётся имя файла и компилируется файл того же имени, но другого расширения содержащий уже просто ЕРМ сриктп. Это ничего что я тут нафлудил? Или лучше за другой столик свалить?по тому вопросу - да! |
Особый статус: |
Сэр ShadeByte |
Или лучше за другой столик свалить?Сэр Ennin, 23.08.2004 19:28 Это по какому? Итак, за какой пойдем? |
|
Сэр Kirinyale
HoMM V: Рыцарь |
Так, стоп... тарапыцца не нада... Дайте хоть вникнуть немного в суть (три дня отсутствовал, как-никак). В общем, я бы предложил ничего не писать вот так вот сразу, "от балды", а решить сначала чётко, что нужно-то... Составить чёткий концепт-док языка, его синтаксиса, основных функций... БэЭнЭфы, что ли, прописать для всего этого добра... А там уж можно и за дело всерьёз браться.
|
|
Сэр Ascaron
HoMM IV: Безземельный |
Сэр Sector, 27.06.2004 03:42 ИМХО скрипты 4-х эт вам не еерем и там попоиму несложно разобратся. я человек к программированию не имеющий никакого отношения могу вааять коешто. конешно если вы хотите ятото аж аж аж ну тогда да хотя на одном извесном сайте помоему есть хелп по скриптам в 4-х поищите |
|
Сэр ShadeByte |
Сэр Duke Kirinyale, 26.08.2004 00:58 Итак, теперь вы с нами, так что приступим. Концепт-док это хорошо! Но где его писать? Может в этой теме? P.S. ...я бы предложил ничего не писать вот так вот сразу, "от балды", Ой! Извините. Я уже написал систему объявления переменных... (вроде ниче получилось) |
|
Сэр Ennin
HoMM IV: Безземельный |
может лучше захостить где-нить что-нить?
|
Особый статус: |
Сэр ShadeByte |
Я в этом вопросе не разбираюсь так что полностью полагаюсь на вас. Не могли бы вы пожалуйста объяснить подробнее?
|
|