Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Идеи по расширению ERM
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4
bomw
Ниче я менять не собираюсь, если Слава не поменяет никто не поменяет!
Beavis_seattle
Вот несколько идей:

1. Установка новых существ для каждого города в отдельности

!!CAx/y/l:XXXX;
!!CA#:XXXX;
!!CA0/#:XXXX;
!!CA-1:XXXX;

С#1/#2/#3/$;

Set a type of monster to hire in towns.
#1 - Type of a town (0...8) (Format T)
#2 - Dwelling level (0...6)
#3 - Basic (0) or upgraded (1)
$ - Type of monster to hire (Format C)

2. Сделать возможность переименовывать строения в каждом городе

проще бы было не использовать при этом z-переменные, т.е как диалог !!if:m^...^;

3. Изменять опыт монстрам в стеке

через !!bm#-ресивер

4. для картостроителей (да может и не только для них) сделать возможность указывать путь для файлов используемых игрой (txt, bmp, pcx, def и другие) например: я делаю карту с ерм скриптами и мне надо изменить один файл txt из лодов. Я изменяю его и для его работы его нужно положить в папку data а я переношу его например в data\txt и в скрипте пишу следующие:

!#vr:z1^data\txt^;
!#un:j11/z1;

мне кажется что это полезная штука... yes.gif

кажись на данный момент это всё spiteful.gif
Bourn
Неплохо бы расширить кол-во z переменных и v до 30000 как функций biggrin.gif
Solmyr2000
Цитата(Bourn @ 18 Aug 2005, 10:15)
Неплохо бы расширить кол-во z переменных

yes.gif yes.gif yes.gif yes.gif yes.gif yes.gif
Bourn
Да и заодно количество подключаемых скриптов+в меню их выбора сообщения по правой кнопке сделать с полосами прокрутки, а то у некоторых скриптов уезжает окно за пределы монитора.
gamecreator
Цитата(Cupo]l[a @ 02 Sep 2006, 02:53)
если данная команда удалена
Ага. И причину сам назвал:
Цитата(Cupo]l[a @ 02 Sep 2006, 02:53)
В этом есть потенциальная уязвимость


зы. чето я про чернобыль не понял idontno.gif
Druin
[офтоп]Чернобыль - вирус такой был свинский...[/офтоп]
Cupo]l[a
Извините туплю: ночь понимаете ли. Про UN:C уже писали.
http://forum.df2.ru/index.php?showtopic=150&st=480
P.S. Когда ж я героев то обновлю.
professornova
*Хочу много переменных, особенно w, также сильно хочу массивы переменных.

*Также мне нужна поддержка большинства окон, например книга заклинаний, окошко покупки существ (а не только окно героя, замка, карты или битвы), а именно:
1) Тригеры, срабатывающие при вызове/выходе/клике мышкой в этом окне.
2) Возможность вызывать/показывать эти окна (напимер вызвать окно своисв командира или героя из экрана города)

*Возможность колдовать заклинания рессивером BM:C на несколько целей одновременно (или хотя-бы показывать одновременно несколько анимации для разных стеков)

*Возможность подключения не только ЛОДов и ДЕФов, а еще внешних скриптов.

*Возможность создания новых/своих артефактов/существ/героев/коммандиров/замков и вообще всего, что только можно.

*Возможность получения значений из вызываемой функции:
!!FU9006:Pv3/?v7;
Надо чтобы в переменную v7 записалось значение x2 после завершения работы функции.

*Деббагер

*Возможность ЗАГРУЗКИ игры из БИТВЫ

*Нормальная работа с файлами, в которые можно записывать/читать какую либо информацию

*Убрать ограничение на максимальный размер пути для используемого внешнего файла

*Возможность запаковывать ВСЕ внешние подключаемые файлы в ОДИН файл с картой (Ведь файл карты сам представляет из себя архив)

*Возможность возможность изменять знаначения всех текстов, используеммых в игре ("Базовый", "Уровень", "Сопряжение") например, чтобы эти строки представляли из себя некие стандартные переменные.

*Тригер наведения мыши в экране героя

*Возможность УБРАТЬ все стандартные своиства присущие монстрам (например гарпия возвращатся после атаки)

*Возможность по-нормальному убрать по-нормальному убрать все своиства, присуще артефактам/навыкам (А то запретить увеличивать радиус обзора подзорной трубе нельзя)

*Возможность изменения всех игровых констант (напримеи урон увеличивается на 5% за каждое дополнительное очко атаки)

И много чего еще...
Horn
Цитата(professornova @ 09 Sep 2006, 18:42)
*Возможность получения значений из вызываемой функции:
!!FU9006:Pv3/?v7;
Надо чтобы в переменную v7 записалось значение x2 после завершения работы функции.


Читаю в хелпе:
Цитата
FU and DO Receivers have extended syntax to provide return values.
  Now you may use "?var" syntax to return values from the call.
  You can use a v, y- or y variable to store the return value.
  Say:
!!FU...:Pv1/v2/v3/?v4;
  Now if you change x4 value inside of the function, say:
!!VRx4:Sx1;
  it will be copied to v4 after function return.

Сам, правда, еще не пробовал юзать эту фишку, поэтому не знаю, работает ли она корректно.
DracoLich
Работает. С !!DO не пробовал, но думаю, результат будет считываться с последнего круга функции. yes.gif
Demiurg
Хотелось бы снять ограничение на количество городов и разрешить создавать города во время игры. При попытке присвоить камню знаний свойства города получается всякая фигня. По идее такого быть не должно. Использовалось:
...
!!UN:U100/-1/1/40;
!!OBv40/v41/v42:T98/0;
После этого при заходе в первый камень знаний - игра вылетает
gamecreator
а не легче просто ставить город на карту?
Bourn
сама по себе команда не очень эффективна, юзай UN:I
!!OBv40/v41/v42:T98/0;
Demiurg
Цитата(gamecreator @ 17 Oct 2006, 21:57)
а не легче просто ставить город на карту?

В том то и дело, что интересно, чтобы на карте стоял камень, а при заходе в него открывался город. Камень номер один я привел для примера. Можно заменить случайный камень на город или вообще не камень, а другой объект. Точнее заменить здесь не очень подходит, приведенная команда заменяет только свойства объекта, сам объект остается неизменным. На карте как был камень, так и стоял. А еще точнее не заменяет свойства, а должна заменять, потому как работает она на данный момент некорректно.
Bes
Цитата(professornova)
*Деббагер

*Возможность ЗАГРУЗКИ игры из БИТВЫ


Насчёт второго, тут на форуме подобную идею предлагали. А скрипто-делы и кул хацкеры, сказали, мол зачем да и некуда кнопку всунуть.
А я вот тоже выступаю за возможность прерывания битвы, путём... тут надо консилиум провести насчёт способа, а в итоге чтоб выкидывало в глав. меню игры. Ведь просто [ALT]+[F4] согласитесь, уж больно долго (всё конечно относительно) - лишние 10 сек. тратить - это тоже время да и не удобно.

А можно я не предложу что-то добавить, а наоборот, убрать - спросил Bes.
Давай, мы тебя слушаем! - крикнули хором умы нашего форума.

Так вот, предлагаю убрать сообщение, выскакивающее при нажатии п.к.м. на Журнале. Ну нахрена, прямо раздражает, если я знаю что при этом мне предложат возможность исправления log-файла и скриптов. Да ещё и спрашивают-"Вы хотите, да или нет". Если я нажал, значит я хочу, а если не хочу то и не нажимал бы. ИМХО
DracoLich
А если ты зеленый новичок, первый раз видишь героев, захотел узнать, шо такое этот свиток???
Alt-F4 - что долгого?? :bkink:
gamecreator
Цитата(Bes @ 16 Nov 2006, 14:41)
А скрипто-делы и кул хацкеры, сказали, мол зачем да и некуда кнопку всунуть.
Не присваивай другим собственное мнение. Это насчет "сказали". Насчет "некуда" - правый клик по системным настройкам.
Darhark
Хочу МАССИВЫ banghead.gif kap.gif crazy.gif alcoholic.gif
gamecreator
а хто ж их не хочет? smile.gif

Добавлено ([mergetime]1164048663[/mergetime]):
я вот например хочу чтобы функции были неограничены и назывались своими именами
Bourn
почему ж нет, есть...
gamecreator
где?
DracoLich
Может, макросы???
Berserker
Массивы. Подобие сделать можно и через ЕРМ. Только медленное. Я, например, считаю, что от ЕРМ вообще уходить надо. От Славы можно оставить найденные адреса функций и переменных, а также его личные функции. Но конструкцию ЕРМ - даже интерпритатором не назовёшь. Очень узко. Реквизит добивается увеличения возможностей путём добавления команд. Неплохо! Ещё бы 3333 команд и подобие языка программирования. Нужен диалект более низкого уровня и богатыми возможностями. Но я отвлекаюсь:

Допустим у вас переменные v1005-v1019 - под массив. (3х5 - двумерный), учитывая, что массив имеет в основных индексах 1.

У меня есть функции для упаковки переменных. Так вот, создавая массив его начальный индекс упаковывается в первые два байта v-переменной, величина по х в 3-ей, по у в 4-ой. Массив на нулевой основе.

Тогда можно сделать 2 функции для изъятия элемента из массива и установки.

Приведу функции упаковки и самого управления массивом. Неудобно несколько, но тем не менее. Можно "создать" массив, сохранив инфу о нём в всего 1 переменную. А затем использовать. Пусть и не прямым путём.

!?FU3;Pack four bytes into one v-var
;*x1*-*x4* - four bytes
;*x5* - index of v-var to store the result
!!VRx2:*256;
!!VRx3:*65536;
!!if&x4<=127:;
!!VRx4:*16777216;
!!VRvx5:Sx1+x2+x3+x4;
!!VRy1:Svx5;
!!FU:E;
!!en:;
!!VRvx5:Sx1+x2+x3;
!!VRvx5:*-1;
!!VRx4:*-1;
!!VRx6:S128+x4*16777216;
!!VRvx5:+x6;

!?FU4;UnPack var into four bytes
;*x1* - variable
;*x2* - index of first v-var to store the result
!!IF:V2/0;
!!if&x1<0:;
!!IF:V2/1;
!!VRx1:*-1;
!!en:;
!!VRvx2:Sx1%256;
!!VRx2:+1;
!!VRx1::256;
!!VRvx2:Sx1%256;
!!VRx2:+1;
!!VRx1::256;
!!VRvx2:Sx1%256;
!!VRx2:+1;
!!VRx1::256;
!!VRvx2:Sx1%256;
!!VRy1:Svx2;
!!VRvx2&2:+128;

!?FU5;Pack two words (two-byte vars) into one v-var
;*x1* - first var
;*x2* - second var
;*x3* - index of v-var to store the result
!!if&x2<=32767:;
!!VRx2:Sx2*65536;
!!VRvx3:Sx1+x2;
!!FU:E;
!!en:;
!!VRvx3:Sx1*-1;
!!VRx2:*-1;
!!VRx4:S32768+x2*65536;
!!VRvx3:+x4;
!!VRy1:Svx3;

!?FU6;UnPack variable into two words
;*x1* - variable
;*x2* - index of first v-var to store the result
!!if&x1>=0:;
!!VRvx2:Sx1%65536;
!!VRx2:+1;
!!VRvx2:Sx1:65536;
!!FU:E;
!!en:;
!!VRx1:*-1;
!!VRvx2:Sx1%65536;
!!VRx2:+1;
!!VRvx2:Sx1:65536+32768;

!?FU7;Create 2D array
;*x1* - inex of v-var to store handle
;*x2* - index of start var in the array
;*x3* - maxX (max is 255)
;*x4* - maxY (max is 255)
!!FU3:P0/0/x3/x4/1;
!!VRv1:+x2;
!!VRvx1:Sv1;

!?FU8;Set item of 2D array
;*x1* - handle of array
;*x2* - x
;*x3* - y
;*x4* - new value
!!VRy1:Sx1%65536;
!!FU4:Px1/1;
;y1 - start index v3,v4 - x and y
!!VRy2:Sx3*v3+x2+y1;
!!VRvy2:Sx4;

!?FU9;Get item from 2D array
;*x1* - handle of array
;*x2* - x
;*x3* - y
;*x4* - index of v-var to store the result
!!VRy1:Sx1%65536;
!!FU4:Px1/1;
;y1 - start index v3,v4 - x and y
!!VRy2:Sx3*v3+x2+y1;
!!VRvx4:Svy2;

Вот пожалуй и всё. Разумеется метод не очень удобный, но таков уж ЕРМ. И всё же работать с массивами легче.
Darhark
Хм... ну от ерма вог не уйдет. Я как-то не слышал, что в 3.59 будет что-то новое в этом плане.
К тому же, я не совсем понимаю, каким образом можно сделать достаточно низкоуровневый язык для ВОГ. Разве что прямой доступ к памяти - так было вроде такое, только убрали, чтобы не плодить вирусняков (хех, вирусняк на ерме - приятно 8) ).
gamecreator
тогда уж лучше сделать одномерные массивы типа m1-10000, и обращаться к ним по принципу языков программирования
!!VRm$1[$2]:XXXX;
где $1 - номер массива, $2 - номер ячейки, XXXX - стандартные команды VR.
Berserker
Язык пониже уровня сделать можно. Я над ним сейчас и работаю. А насчёт вирусов - глупости. Слава мне тоже сказал, что если ввести загрузку своих ДЛЛ, то вирусы будут. Они всегда будут. Выход - пользоваться проверенными скриптами, или теми, которые вылаживаются официально, или от друзей. Да и антивирусник иметь. И всё же Язык дал бы доступ и ко всей памяти и ко всем функциям API и многочисленные возможности. Более того, согласитесь, ЕРМ очень тормозит игру. А ещё тормозит и safedisk 1.5, навешенный на ехешник. Хотя бы в ЕРМ добавить доступ к памяти или возможность её выделить. Работу с массивами, функции. Переменные наконец. Можно было сделать компилятор, который бы транслировал ЕРМ скрипт в более понятный интерпритатору код. В результате скорость выполнения и многие удобства. Используйте переменные на здоровье.
Horn
Не нашел темы об ошибках в ЕРМ, решил, что эта подойдет лучше всего. smile.gif

В процессе отлаживания скрипта перестройки гильдии магов выяснилась такая штука - определение того, разрешен ли спелл на данной карте или нет (UN:J0), некорректно работает в сетевой игре. А именно - забывает всю информацию на любом переходе хода. То есть уже на первом ходу второго игрока все заклинания считаются разрешенными (т.к. значению 0 соответствует именно 'enabled'). Соответственно, ошибочно могут работать все скрипты, использующие эту команду позже 1го хода 1го игрока.
Поскольку багфиксов еще неизвестно сколько ждать, unsure.gif в ТЕ я справился так - выделил три v-переменных, и на первый день сохранил в них все разрешения/запрещения.
Druin
LordOfDragons, ты забыл уточнить что твой пример в 3.58 не работает, а работает пока только в ТЕ...

gamecreator, ну скока можно говорить, что прежде чем ляпнуть подумать надо... это не про последний твой пост а про предыдущие два...
Darhark
2LOD:
Согласен насчет вирусняков. Волков бояться - в лес не ходить. Этак надо инет отменить...

"Более того, согласитесь, ЕРМ очень тормозит игру."

?
Пока не видел скрипта, что так уж критично ее тормозил бы, хотя комп у меня далеко не топовый.

"Можно было сделать компилятор, который бы транслировал ЕРМ скрипт в более понятный интерпритатору код"

Ну не знаю. Хорошо бы, конечно, но отладка станет намного проблематичней. Лично у меня и сейчас этот процесс занимает 80% времени работы над скриптом. Хотя я, конечно, в ерм новичок.

К тому же, боюсь, замена ерму увидит свет как раз к выходу Героев номер эдак семь-восемь. Ну и кому она тогда будет нужна?
Хотя, может быть, я и ошибаюсь. Если получится - первый буду рад, и компилятор нарисую высокоуровневый, и респектами афтора завалю по самое черезчур.
Bourn
2 LordOfDragons
интересно каких тебе команд не хватает?
Berserker
Поймите Bourn, я ведь не сколько не поливаю грязью творение Славы или ещё кого-нибудь. Вовсе нет. ЕРМ-скрипты - это оптимальный вариант для людей, не сведующих в программировании. Но если мы например, хочем коренным образом поменять игру, то предполагается, что кода будет много, он должен быть оптимальным и разносторонним. Нужны:

1) Полная поддержка АПИ-функций

2) Полный доступ к памяти

3) Максимально сжатый и быстрый код

4) Различные типы данных (Планируются простые, строки, массивы, записи, стёки, словари, картели, списки)

5) Возможность прыжка в какую-нибудь часть кода. В ЕРМ при вызове функции, бусть даже самой маленькой происходит обнуление кучи переменных (1кб), хотя нам, например, нужно просто поменять значение элемента массива.

6) Что насчёт циклов? В ЕРМ такая возможность отсутствует, что очень обедняет игру

7) Динамическое выделение памяти, доступ к файлам

8) Возможность записи в определённую часть памяти. (Так как я планирую делать компилятор, то имена - вещь символическая)

9) Совместимость типов данных.

Одним словом, если бы был языкоподобный диалект, то МОЖНО ПИСАТЬ ИГРУ!!! Можно сделать упрощённые функции для новичков, библиотеки функций. Зарезервировать например имена v[1]-v[10000], считая это переменными. Чтобы можно было писать так:

For i in (1..10000) do v[i]=0; Одна строка для обнуления, и быстрый код.

Я никого убеждать не собираюсь, это бесполезно и оскорбляет чуства тех, кто работал над Проектом ВоГ. Но циклы и доступ к памяти, а также подгрузку своих ДЛЛ в ЕРМ ввести необходимо. Впрочем, нужды у нас разные...
sergroj
Цитата(professornova @ 09 Sep 2006, 22:42)
*Возможность запаковывать ВСЕ внешние подключаемые файлы в ОДИН файл с картой (Ведь файл карты сам представляет из себя архив)

Это массив со строго 1 файлом. Карту, вроде, можно класть в MAPS и вообще в разархивированном виде.

Цитата(professornova @ 09 Sep 2006, 22:42)
*Возможность изменения всех игровых констант (напримеи урон увеличивается на 5% за каждое дополнительное очко атаки)

Все сделать по определению нериально, какие конкретно нужны константы? Эта из примера не особо полезна, т.к. можно менять урон в каком-то триггере.

Цитата(LordOfDragons @ 21 Nov 2006, 23:03)
А ещё тормозит и safedisk 1.5, навешенный на ехешник.

А что это? (посмотрел в Яндексе - что-то не то)

Цитата(LordOfDragons @ 22 Nov 2006, 15:43)
6) Что насчёт циклов? В ЕРМ такая возможность отсутствует, что очень обедняет игру

А как же DO?

Цитата(LordOfDragons @ 22 Nov 2006, 15:43)
Одним словом, если бы был языкоподобный диалект, то МОЖНО ПИСАТЬ ИГРУ!!! Можно сделать упрощённые функции для новичков, библиотеки функций. Зарезервировать например имена v[1]-v[10000], считая это переменными. Чтобы можно было писать так:

For i in (1..10000) do v[i]=0; Одна строка для обнуления, и быстрый код.

Библиотеки функций будут, имена функций - тоже. Chertos-2 делает язык Heroes Script - надстройка над ЕРМ с С-подобным синтаксисом. Хотя, ИМХО, это лишнее - придется делать редактор, уйдет куча усилий, а результат - более быстрое освоение и не более того.
Darhark
"Chertos-2 делает язык Heroes Script - надстройка над ЕРМ с С-подобным синтаксисом. Хотя, ИМХО, это лишнее - придется делать редактор, уйдет куча усилий, а результат - более быстрое освоение и не более того."

А вот и не лишнее. Если HS сможет самостоятельно присваивать номера переменным и функциям, то ИМХО, цены ему не будет. По крайней мере, хоть в этом отношении скрипты между собой конфликтовать перестанут. Да и создание скриптов будет отнимать намного меньше времени. Кроме того, если будет проверка синтаксиса, исчезнет пресловутое ахчтоженетакчеоннепашетоймлятьзабылкомандузакрытьахопятьнепашетблиношибсябуковко
й!!!

Добавлено ([mergetime]1164197990[/mergetime]):
К тому же, делать редактор совсем не обязательно. Ведь скрипт можно будет писать в простом текстовом файле, который потом компилируется в .ерм, я правильно понимаю? Ну тогда можно взять любой универсальный программерский блокнот и настроить там синтаксис, верно?

Добавлено ([mergetime]1164198214[/mergetime]):
ХМ... Другое дело, что стоило бы, наверное, подождать 3.59 - посмотреть, что там будет, и уже потом писать нечто подобное. Все-таки, написание компилятора - процесс довольно трудоемкий, и будет обидно, если с новым ВОГом его забросят.
Berserker
Цитата
А что это? (посмотрел в Яндексе - что-то не то)


Информации в Яндексе мало, но по идее это навесная защита на ехешник. Есть специальные тулзы, которые это определяют. А вы не знали, что файл защищён?

Цитата
А как же DO?


Я ведь сказал, это неудобнейший способ. Мало того, что при вызове ЕРМ функции выполняется куча действий, вы должны ещё занять номер этой функции, если функция ещё содержит циклы то...

Например:

For i:=50 to 255 do
For j:=1 to 3 do
begin
...
end;
........
end;

Как это будет выглядеть в ЕРМ? А если просто надо стам переменным поставить знчение 1, сколько нужно всего, вместо одной строчки, которая и выполняется то раза в 2 быстрее?
DracoLich
!!DO1/1/100/1:P;
!?FU1;
!!VRx16:S1; - три строчки...
Bourn
2 LordOfDragons
ты хочешь создать язык круче lua нет в этом смысла

2 Darhark
Написать редактор это не проблема...
Darhark
Псессно не проблема.
Тока не надо ЛОДа отговаривать от хорошего дела! Ра-бо-та-йте, товарищч, не слушайте искусателей!
ИМХО, если чел хочет что-то сделать, что у него отнимет кучу времени, лишит сна и покоя, а между тем делать это его никто не заставляет - значит, делать это ему по меньшей мере интересно, и, возможно, сам процесс для него даже важнее результата. А в таком случае, даже если ничего не получится - разве можно сказать, будто "нет в этом смысла"?
А если все-таки получится, то третьи герои переживут все коммерческие сиквелы лет на 10 вперед! Надеюсь, по крайней мере.
gamecreator
ЛОД, лучше уж вместо begin и end ставить { и }. Быстрей будет.

Добавлено ([mergetime]1164211183[/mergetime]):
надо что-то среднее между паскалем и С++ чтобы всем было понятно
Berserker
Gamecreator, ты угадал. Begin and End будут только вначале и конце а фигурными скобками будут отделяться блоки.

Добавлено ([mergetime]1164211970[/mergetime]):
Цитата
ты хочешь создать язык круче lua нет в этом смысла


Если ты встроишь в игру lua, то создавать ничего не надо будет smile.gif

Цитата
!!DO1/1/100/1:P;
!?FU1;
!!VRx16:S1; - три строчки...


Драколич, а сколько времени уйдёт на выполнение этих команд?

1) Очистить 100 локальных переменных, 10 строк, 15 х-переменных. Далее идёт анализирование строк преобразование "1" в число, нахождение функции и...Если измерить время выполнение, то оно будет раз в 5 меньше оптимального. Не говоря уже о том, что от простого ассемблерского кода это медленне в раз ...

Но я не против. Вы ведь не подумайте, что я "наезжаю" на ЕРМ. Просто до скриптового языка ему далеко...А вечная боязнь вирусов приводит к убогости возможностей. Нельзя использовать АПИ и ДЛЛ, нет контроля памяти...

А насчёт скорости я не зря сказал. Я пробовал запрограммировать ИИ при помощи ЕРМ, но хотя у меня процессор и на 3 гигабайта, тормоза были большие, и ходил комп...Только на первых порах хватало терпения его ждать.
Ennin
Код
ERMS_ScriptDate=14.7(July).2006

** FOR function
**  causes one more loop so you do not have to use
**  own function just for loop. if earlier to do
**  for(i=0;i<10;i++) for(j=0;j<10;j++) echo(i,j);
**  you had to write smth like this:
**   !!DO1/0/9/1:P;
**   !?FU1;
**   !!DO2/0/9:Px16;
**   !?FU2;
**   !!IF:M^%X1,%X16^;
**  now you can write only
**   !!DO$for$/0/9/1:P2/0/9/1;
**   !?FU2;
**   !!IF:M^%X1,%X16^;
**  so you have not use one more function. of course, you can just
**  do 10 FU calls of FU2 but what if you have to do 100 loops? 1000?
**  function-reactor receives current state of counter in x1
**  and 11 parameters
**  FOR function usage:
**  x1 - number of function-reactor
**  x2 - starting loop value
**  x3 - ending loop value
**  x4 - step
**  x5-x15 - parameters (will be received as x2-x12
**
!#MCv890:S@for@;
!#VRv890:S10;
!?FU10;
!!DOx1/x2/x3/x4:Px16/x5/x6/x7/x8/x9/x10/x11/x12/x13/x14/x15;
Demiurg
2Ennin Это какая версия? И где ее такую взять?
gamecreator
Это ВоГ 3.59
Berserker
Рад слышать, что ЕРМ расширяется. Только пусть Слава идёт до конца. Более того, мой диалект будет симбиозен ЕРМ, а значит часть скриптов можно и на ЕРМ писать, а часть на RunPL. Только, вроде 3.59 сейчас не стабильна, или я не прав?

Добавлено ([mergetime]1164229057[/mergetime]):
И всё же через функцию smile.gif
Ennin
это Вог начиная в принципе от 3.57. использовать можно такой макрос как угодно, все 4 строчки делают всю стандартную работу для двух циклов.
да, через функцию. ибо удобно. можно ввести еще макрос и будет все вообще хорошо
Berserker
Странно, что такого очень удобного момента не включили в хелп idontno.gif
Да, а как работает система макросов? Производится поиск по документу, затем выясняется, что под макросом скрывается, а затем только используется. Или же при загрузке формируется таблица, макрос - тип переменной. В любом случае, команды с макросами всегда медленнее, почему их и не рекомендуется ставить на всех переменных. Иначе каждую пометили бы именем smile.gif
Ennin
естественно, это будет медленнее. потому что везде есть такая тенденция - чем удобнее, тем медленнее. посмотри к примеру тему с++ или нет. дельфа со стандартным дебаггером даже с билдером не сравнится. но удобно, блин

Добавлено ([mergetime]1164270158[/mergetime]):
Цитата
Странно, что такого очень удобного момента не включили в хелп
какого? эту феню я писал пять минут и никаких знаний сверх того, что описано в хэлпе, для этого не требуется
Berserker
Что ж. Тогда язык будет использоваться только для моих интересов и интересов нашей команды. Всё равно написание компилятора - вещь интересная, хотя и рутинная. Хотя бы и из-за невозможности откладки. Так как код будет содержаться в библиотеке, а та вклиниться новым тредом в Героев. А так как Героев стало невозможно дебагить, то и проверка очень усложняется. И тем не менее. Насчёт скорости. Удобно - вещь хорошая...для программиста. Но не для геймера. Я вообще не играю в Пятых. Жаль, но не могу...ждать пока кома за 5-7 минут ход сделает. Почему так медленно ходит? Спросите разрабртчиков, и честно говоря, мне даже не интересно почему, главное - играть из-за этого я не могу.
Darhark
"Почему так медленно ходит? Спросите разрабртчиков, и честно говоря, мне даже не интересно почему, главное - играть из-за этого я не могу."

Закон такой. Оптимизированность АИ обратно пропорционально году его написания. Сравните 5-й и 2-х героев. Разница в 10 лет, игрушки по количеству возможностей практически идентичны, уровень ИИ одинаковый, а тормозит он одинаково что во 2-х в 95м(или когда там дело было), что в 5-х в 2006. Несмотря на разницу в скорости машин.

---
Так, вот небольшая функция для получения "адреса" переменной

!?FU@маленькая и полезная@;
!!VRx2:Sx1;

вызываем так:
!!FU$маленькая и полезная$:P?$переменная, адрес которой хотим получить$/?$куда помещаем адрес$;
Berserker
Прости меня, Darhark, но честно говоря на первый взгляд функция кажется бессмысленной. Зачем на передавать всё это через функцию? Ведь можно просто

!!VRv33:S45; Вот тебе переменной 33 передаём адрес 45-ой

Честно говоря, так и не понял зачем idontno.gif

Если что, объясни пожалуйста.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.