Ниче я менять не собираюсь, если Слава не поменяет никто не поменяет!
Beavis_seattle
18 Aug 2005, 09:51
Вот несколько идей:
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;
мне кажется что это полезная штука...
кажись на данный момент это всё
Неплохо бы расширить кол-во z переменных и v до 30000 как функций
Solmyr2000
18 Aug 2005, 10:19
Да и заодно количество подключаемых скриптов+в меню их выбора сообщения по правой кнопке сделать с полосами прокрутки, а то у некоторых скриптов уезжает окно за пределы монитора.
gamecreator
02 Sep 2006, 02:00
Цитата(Cupo]l[a @ 02 Sep 2006, 02:53)
если данная команда удалена
Ага. И причину сам назвал:
Цитата(Cupo]l[a @ 02 Sep 2006, 02:53)
В этом есть потенциальная уязвимость
зы. чето я про чернобыль не понял
[офтоп]Чернобыль - вирус такой был свинский...[/офтоп]
Cupo]l[a
02 Sep 2006, 05:06
Извините туплю: ночь понимаете ли. Про UN:C уже писали.
http://forum.df2.ru/index.php?showtopic=150&st=480P.S. Когда ж я героев то обновлю.
professornova
09 Sep 2006, 18:42
*Хочу много переменных, особенно w, также сильно хочу массивы переменных.
*Также мне нужна поддержка большинства окон, например книга заклинаний, окошко покупки существ (а не только окно героя, замка, карты или битвы), а именно:
1) Тригеры, срабатывающие при вызове/выходе/клике мышкой в этом окне.
2) Возможность вызывать/показывать эти окна (напимер вызвать окно своисв командира или героя из экрана города)
*Возможность колдовать заклинания рессивером BM:C на несколько целей одновременно (или хотя-бы показывать одновременно несколько анимации для разных стеков)
*Возможность подключения не только ЛОДов и ДЕФов, а еще внешних скриптов.
*Возможность создания новых/своих артефактов/существ/героев/коммандиров/замков и вообще всего, что только можно.
*Возможность получения значений из вызываемой функции:
!!FU9006:Pv3/?v7;
Надо чтобы в переменную v7 записалось значение x2 после завершения работы функции.
*Деббагер
*Возможность ЗАГРУЗКИ игры из БИТВЫ
*Нормальная работа с файлами, в которые можно записывать/читать какую либо информацию
*Убрать ограничение на максимальный размер пути для используемого внешнего файла
*Возможность запаковывать ВСЕ внешние подключаемые файлы в ОДИН файл с картой (Ведь файл карты сам представляет из себя архив)
*Возможность возможность изменять знаначения всех текстов, используеммых в игре ("Базовый", "Уровень", "Сопряжение") например, чтобы эти строки представляли из себя некие стандартные переменные.
*Тригер наведения мыши в экране героя
*Возможность УБРАТЬ все стандартные своиства присущие монстрам (например гарпия возвращатся после атаки)
*Возможность по-нормальному убрать по-нормальному убрать все своиства, присуще артефактам/навыкам (А то запретить увеличивать радиус обзора подзорной трубе нельзя)
*Возможность изменения всех игровых констант (напримеи урон увеличивается на 5% за каждое дополнительное очко атаки)
И много чего еще...
Цитата(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
09 Sep 2006, 22:16
Работает. С !!DO не пробовал, но думаю, результат будет считываться с последнего круга функции.
Demiurg
17 Oct 2006, 20:54
Хотелось бы снять ограничение на количество городов и разрешить создавать города во время игры. При попытке присвоить камню знаний свойства города получается всякая фигня. По идее такого быть не должно. Использовалось:
...
!!UN:U100/-1/1/40;
!!OBv40/v41/v42:T98/0;
После этого при заходе в первый камень знаний - игра вылетает
gamecreator
17 Oct 2006, 20:57
а не легче просто ставить город на карту?
сама по себе команда не очень эффективна, юзай UN:I
!!OBv40/v41/v42:T98/0;
Demiurg
18 Oct 2006, 05:19
Цитата(gamecreator @ 17 Oct 2006, 21:57)
а не легче просто ставить город на карту?
В том то и дело, что интересно, чтобы на карте стоял камень, а при заходе в него открывался город. Камень номер один я привел для примера. Можно заменить случайный камень на город или вообще не камень, а другой объект. Точнее заменить здесь не очень подходит, приведенная команда заменяет только свойства объекта, сам объект остается неизменным. На карте как был камень, так и стоял. А еще точнее не заменяет свойства, а должна заменять, потому как работает она на данный момент некорректно.
Цитата(professornova)
*Деббагер
*Возможность ЗАГРУЗКИ игры из БИТВЫ
Насчёт второго, тут на форуме подобную идею предлагали. А скрипто-делы и кул хацкеры, сказали, мол зачем да и некуда кнопку всунуть.
А я вот тоже выступаю за возможность прерывания битвы, путём... тут надо консилиум провести насчёт способа, а в итоге чтоб выкидывало в глав. меню игры. Ведь просто [ALT]+[F4] согласитесь, уж больно долго (всё конечно относительно) - лишние 10 сек. тратить - это тоже время да и не удобно.
А можно я не предложу что-то добавить, а наоборот, убрать - спросил Bes.Давай, мы тебя слушаем! - крикнули хором умы нашего форума.Так вот, предлагаю убрать сообщение, выскакивающее при нажатии п.к.м. на Журнале. Ну нахрена, прямо раздражает, если я знаю что при этом мне предложат возможность исправления log-файла и скриптов. Да ещё и спрашивают-"Вы хотите, да или нет". Если я нажал, значит я хочу, а если не хочу то и не нажимал бы. ИМХО
DracoLich
16 Nov 2006, 16:14
А если ты зеленый новичок, первый раз видишь героев, захотел узнать, шо такое этот свиток???
Alt-F4 - что долгого?? :bkink:
gamecreator
16 Nov 2006, 22:22
Цитата(Bes @ 16 Nov 2006, 14:41)
А скрипто-делы и кул хацкеры, сказали, мол зачем да и некуда кнопку всунуть.
Не присваивай другим собственное мнение. Это насчет "сказали". Насчет "некуда" - правый клик по системным настройкам.
Darhark
20 Nov 2006, 11:43
gamecreator
20 Nov 2006, 21:51
а хто ж их не хочет?
Добавлено ([mergetime]1164048663[/mergetime]):
я вот например хочу чтобы функции были неограничены и назывались своими именами
gamecreator
21 Nov 2006, 08:54
где?
DracoLich
21 Nov 2006, 11:30
Может, макросы???
Berserker
21 Nov 2006, 13:03
Массивы. Подобие сделать можно и через ЕРМ. Только медленное. Я, например, считаю, что от ЕРМ вообще уходить надо. От Славы можно оставить найденные адреса функций и переменных, а также его личные функции. Но конструкцию ЕРМ - даже интерпритатором не назовёшь. Очень узко. Реквизит добивается увеличения возможностей путём добавления команд. Неплохо! Ещё бы 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
21 Nov 2006, 14:45
Хм... ну от ерма вог не уйдет. Я как-то не слышал, что в 3.59 будет что-то новое в этом плане.
К тому же, я не совсем понимаю, каким образом можно сделать достаточно низкоуровневый язык для ВОГ. Разве что прямой доступ к памяти - так было вроде такое, только убрали, чтобы не плодить вирусняков (хех, вирусняк на ерме - приятно 8) ).
gamecreator
21 Nov 2006, 17:59
тогда уж лучше сделать одномерные массивы типа m1-10000, и обращаться к ним по принципу языков программирования
!!VRm$1[$2]:XXXX;
где $1 - номер массива, $2 - номер ячейки, XXXX - стандартные команды VR.
Berserker
21 Nov 2006, 19:03
Язык пониже уровня сделать можно. Я над ним сейчас и работаю. А насчёт вирусов - глупости. Слава мне тоже сказал, что если ввести загрузку своих ДЛЛ, то вирусы будут. Они всегда будут. Выход - пользоваться проверенными скриптами, или теми, которые вылаживаются официально, или от друзей. Да и антивирусник иметь. И всё же Язык дал бы доступ и ко всей памяти и ко всем функциям API и многочисленные возможности. Более того, согласитесь, ЕРМ очень тормозит игру. А ещё тормозит и safedisk 1.5, навешенный на ехешник. Хотя бы в ЕРМ добавить доступ к памяти или возможность её выделить. Работу с массивами, функции. Переменные наконец. Можно было сделать компилятор, который бы транслировал ЕРМ скрипт в более понятный интерпритатору код. В результате скорость выполнения и многие удобства. Используйте переменные на здоровье.
Не нашел темы об ошибках в ЕРМ, решил, что эта подойдет лучше всего.

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

в ТЕ я справился так - выделил три v-переменных, и на первый день сохранил в них все разрешения/запрещения.
LordOfDragons, ты забыл уточнить что твой пример в 3.58 не работает, а работает пока только в ТЕ...
gamecreator, ну скока можно говорить, что прежде чем ляпнуть подумать надо... это не про последний твой пост а про предыдущие два...
Darhark
22 Nov 2006, 00:20
2LOD:
Согласен насчет вирусняков. Волков бояться - в лес не ходить. Этак надо инет отменить...
"Более того, согласитесь, ЕРМ очень тормозит игру."
?
Пока не видел скрипта, что так уж критично ее тормозил бы, хотя комп у меня далеко не топовый.
"Можно было сделать компилятор, который бы транслировал ЕРМ скрипт в более понятный интерпритатору код"
Ну не знаю. Хорошо бы, конечно, но отладка станет намного проблематичней. Лично у меня и сейчас этот процесс занимает 80% времени работы над скриптом. Хотя я, конечно, в ерм новичок.
К тому же, боюсь, замена ерму увидит свет как раз к выходу Героев номер эдак семь-восемь. Ну и кому она тогда будет нужна?
Хотя, может быть, я и ошибаюсь. Если получится - первый буду рад, и компилятор нарисую высокоуровневый, и респектами афтора завалю по самое черезчур.
2 LordOfDragons
интересно каких тебе команд не хватает?
Berserker
22 Nov 2006, 11:43
Поймите 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
22 Nov 2006, 14:28
Цитата(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
22 Nov 2006, 15:23
"Chertos-2 делает язык Heroes Script - надстройка над ЕРМ с С-подобным синтаксисом. Хотя, ИМХО, это лишнее - придется делать редактор, уйдет куча усилий, а результат - более быстрое освоение и не более того."
А вот и не лишнее. Если HS сможет самостоятельно присваивать номера переменным и функциям, то ИМХО, цены ему не будет. По крайней мере, хоть в этом отношении скрипты между собой конфликтовать перестанут. Да и создание скриптов будет отнимать намного меньше времени. Кроме того, если будет проверка синтаксиса, исчезнет пресловутое ахчтоженетакчеоннепашетоймлятьзабылкомандузакрытьахопятьнепашетблиношибсябуковко
й!!!
Добавлено ([mergetime]1164197990[/mergetime]):
К тому же, делать редактор совсем не обязательно. Ведь скрипт можно будет писать в простом текстовом файле, который потом компилируется в .ерм, я правильно понимаю? Ну тогда можно взять любой универсальный программерский блокнот и настроить там синтаксис, верно?
Добавлено ([mergetime]1164198214[/mergetime]):
ХМ... Другое дело, что стоило бы, наверное, подождать 3.59 - посмотреть, что там будет, и уже потом писать нечто подобное. Все-таки, написание компилятора - процесс довольно трудоемкий, и будет обидно, если с новым ВОГом его забросят.
Berserker
22 Nov 2006, 16:33
Цитата
А что это? (посмотрел в Яндексе - что-то не то)
Информации в Яндексе мало, но по идее это навесная защита на ехешник. Есть специальные тулзы, которые это определяют. А вы не знали, что файл защищён?
Цитата
А как же DO?
Я ведь сказал, это неудобнейший способ. Мало того, что при вызове ЕРМ функции выполняется куча действий, вы должны ещё занять номер этой функции, если функция ещё содержит циклы то...
Например:
For i:=50 to 255 do
For j:=1 to 3 do
begin
...
end;
........
end;
Как это будет выглядеть в ЕРМ? А если просто надо стам переменным поставить знчение 1, сколько нужно всего, вместо одной строчки, которая и выполняется то раза в 2 быстрее?
DracoLich
22 Nov 2006, 17:42
!!DO1/1/100/1:P;
!?FU1;
!!VRx16:S1; - три строчки...
2 LordOfDragons
ты хочешь создать язык круче lua нет в этом смысла
2 Darhark
Написать редактор это не проблема...
Darhark
22 Nov 2006, 18:39
Псессно не проблема.
Тока не надо ЛОДа отговаривать от хорошего дела! Ра-бо-та-йте, товарищч, не слушайте искусателей!
ИМХО, если чел хочет что-то сделать, что у него отнимет кучу времени, лишит сна и покоя, а между тем делать это его никто не заставляет - значит, делать это ему по меньшей мере интересно, и, возможно, сам процесс для него даже важнее результата. А в таком случае, даже если ничего не получится - разве можно сказать, будто "нет в этом смысла"?
А если все-таки получится, то третьи герои переживут все коммерческие сиквелы лет на 10 вперед! Надеюсь, по крайней мере.
gamecreator
22 Nov 2006, 18:59
ЛОД, лучше уж вместо begin и end ставить { и }. Быстрей будет.
Добавлено ([mergetime]1164211183[/mergetime]):
надо что-то среднее между паскалем и С++ чтобы всем было понятно
Berserker
22 Nov 2006, 19:12
Gamecreator, ты угадал. Begin and End будут только вначале и конце а фигурными скобками будут отделяться блоки.
Добавлено ([mergetime]1164211970[/mergetime]):
Цитата
ты хочешь создать язык круче lua нет в этом смысла
Если ты встроишь в игру lua, то создавать ничего не надо будет

Цитата
!!DO1/1/100/1:P;
!?FU1;
!!VRx16:S1; - три строчки...
Драколич, а сколько времени уйдёт на выполнение этих команд?
1) Очистить 100 локальных переменных, 10 строк, 15 х-переменных. Далее идёт анализирование строк преобразование "1" в число, нахождение функции и...Если измерить время выполнение, то оно будет раз в 5 меньше оптимального. Не говоря уже о том, что от простого ассемблерского кода это медленне в раз ...
Но я не против. Вы ведь не подумайте, что я "наезжаю" на ЕРМ. Просто до скриптового языка ему далеко...А вечная боязнь вирусов приводит к убогости возможностей. Нельзя использовать АПИ и ДЛЛ, нет контроля памяти...
А насчёт скорости я не зря сказал. Я пробовал запрограммировать ИИ при помощи ЕРМ, но хотя у меня процессор и на 3 гигабайта, тормоза были большие, и ходил комп...Только на первых порах хватало терпения его ждать.
Код
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
22 Nov 2006, 20:51
2Ennin Это какая версия? И где ее такую взять?
gamecreator
22 Nov 2006, 21:11
Это ВоГ 3.59
Berserker
22 Nov 2006, 23:57
Рад слышать, что ЕРМ расширяется. Только пусть Слава идёт до конца. Более того, мой диалект будет симбиозен ЕРМ, а значит часть скриптов можно и на ЕРМ писать, а часть на RunPL. Только, вроде 3.59 сейчас не стабильна, или я не прав?
Добавлено ([mergetime]1164229057[/mergetime]):
И всё же через функцию
это Вог начиная в принципе от 3.57. использовать можно такой макрос как угодно, все 4 строчки делают всю стандартную работу для двух циклов.
да, через функцию. ибо удобно. можно ввести еще макрос и будет все вообще хорошо
Berserker
23 Nov 2006, 11:13
Странно, что такого очень удобного момента не включили в хелп
Да, а как работает система макросов? Производится поиск по документу, затем выясняется, что под макросом скрывается, а затем только используется. Или же при загрузке формируется таблица, макрос - тип переменной. В любом случае, команды с макросами всегда медленнее, почему их и не рекомендуется ставить на всех переменных. Иначе каждую пометили бы именем
естественно, это будет медленнее. потому что везде есть такая тенденция - чем удобнее, тем медленнее. посмотри к примеру тему с++ или нет. дельфа со стандартным дебаггером даже с билдером не сравнится. но удобно, блин
Добавлено ([mergetime]1164270158[/mergetime]):
Цитата
Странно, что такого очень удобного момента не включили в хелп
какого? эту феню я писал пять минут и никаких знаний сверх того, что описано в хэлпе, для этого не требуется
Berserker
23 Nov 2006, 16:54
Что ж. Тогда язык будет использоваться только для моих интересов и интересов нашей команды. Всё равно написание компилятора - вещь интересная, хотя и рутинная. Хотя бы и из-за невозможности откладки. Так как код будет содержаться в библиотеке, а та вклиниться новым тредом в Героев. А так как Героев стало невозможно дебагить, то и проверка очень усложняется. И тем не менее. Насчёт скорости. Удобно - вещь хорошая...для программиста. Но не для геймера. Я вообще не играю в Пятых. Жаль, но не могу...ждать пока кома за 5-7 минут ход сделает. Почему так медленно ходит? Спросите разрабртчиков, и честно говоря, мне даже не интересно почему, главное - играть из-за этого я не могу.
Darhark
24 Nov 2006, 16:29
"Почему так медленно ходит? Спросите разрабртчиков, и честно говоря, мне даже не интересно почему, главное - играть из-за этого я не могу."
Закон такой. Оптимизированность АИ обратно пропорционально году его написания. Сравните 5-й и 2-х героев. Разница в 10 лет, игрушки по количеству возможностей практически идентичны, уровень ИИ одинаковый, а тормозит он одинаково что во 2-х в 95м(или когда там дело было), что в 5-х в 2006. Несмотря на разницу в скорости машин.
---
Так, вот небольшая функция для получения "адреса" переменной
!?FU@маленькая и полезная@;
!!VRx2:Sx1;
вызываем так:
!!FU$маленькая и полезная$:P?$переменная, адрес которой хотим получить$/?$куда помещаем адрес$;
Berserker
24 Nov 2006, 16:57
Прости меня, Darhark, но честно говоря на первый взгляд функция кажется бессмысленной. Зачем на передавать всё это через функцию? Ведь можно просто
!!VRv33:S45; Вот тебе переменной 33 передаём адрес 45-ой
Честно говоря, так и не понял зачем
Если что, объясни пожалуйста.