|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.06.2011, 17:20 | #1 |
Форумчанин
Регистрация: 01.12.2010
Сообщений: 140
|
Простешая система скриптов. Нужна оценка и критика
Код:
Код:
Код:
Код:
В целом, думаю, что понятно, как использовать такую систему. Хотелось бы услышать советы, критику, недовольства, одобрения, в общем всё, насчёт такой системы =). Спасибо. Последний раз редактировалось Asker13; 12.06.2011 в 19:33. |
12.06.2011, 19:04 | #2 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Все равно имеется case по ID и все равно будет цикл перебора триггеров в массиве. С таким же успехом можно использовать просто массив считанных триггеров с параметрами из файла в виде кода, а в цикле проверять состояние каждого и тот же case по ID будет в нем.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
12.06.2011, 19:19 | #3 |
Форумчанин
Регистрация: 01.12.2010
Сообщений: 140
|
Может ты не совсем понял. В таймере никакого case нет. Есть тупо вызов функции, например:
Actions[0].Trigger[0].Proc; Вместо 0 - текущее событие, вместо второго 0 - текущий триггер. Proc уже ссылается на процедуру, которую мы определили в начале чтения (ссылается либо на загрузку карты, либо на установку жизней игроку, либо на показ сообщения и т.д.) |
12.06.2011, 19:56 | #4 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Asker13, я прекрасно понял что в коде. Дело в том, что триггер это не только статические процедуры, но и функции, условия. Если вдруг понадобился триггер типа: если у персонажа параметр меньше числа, то выполнить одну процедуру, а если больше - другую, ...как ты будешь себя вести в этом случае? ...снова будешь переписывать триггер, помещая в массив то одну процедуру/функцию, то другую, и с разными параметрами.
Лучше в цикле прогонять через скрипт-движок, он распределит параметры "влет".
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
18.07.2011, 19:34 | #5 |
Форумчанин
Регистрация: 01.12.2010
Сообщений: 140
|
Beermonza, можешь чуть подробней тогда рассказать про скрипт-движок? Не совсем пойму тебя.
|
18.07.2011, 19:53 | #6 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Код:
А то кто знает, что там попадётся? |
18.07.2011, 20:02 | #7 |
Форумчанин
Регистрация: 01.12.2010
Сообщений: 140
|
Просто Variant - универсальный тип. Параметр может быть и строкой и числом. Например триггер будет представлять из себя показ игрового сообщения, тогда одним из параметров будет строка. Есть альтернатива? Или вообще так не делается в принципе? =)
|
18.07.2011, 20:04 | #8 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Asker13, я знаю что такое Variant. Но, видите ли, использование Variant - плохой стиль(в вашем случае), да и..не рекомендуется. Не для этих целей он предназначается.
|
18.07.2011, 20:11 | #9 |
Форумчанин
Регистрация: 01.12.2010
Сообщений: 140
|
Я знаю, что ты знаешь :D... и предчувствовал кстати, что так начнёшь сообщение . Если не с помощью массива Variant, то как тогда параметры триггеров сохранять? На ум приходит запоминать их с помощью строки, а потом научить программу распознавать, какого типа этот параметр. например:"num:2221; float:22.112; string:there is no string;"
|
18.07.2011, 22:53 | #10 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
Перебирая массив по ячейкам можно переключаться между строками скрипта. В программе всегда перед всеми преобразованиями идет цикл по числу строк в скрипте, или двойной цикл по числу объектов, у которых собственные массивы скрипта. Движок скрипта всегда смотрит текущие строчки в массиве, и на основании логики, записанной в них переключается между строками, или отсчитывает таймеры, или выполняет процедуры. Суть в том, что скрипт-движок всегда в программе, и зацеплять процедуры без скрипт-языка нецелесообразно. Сначала придумай язык, потом создашь движок, который читает твой код так же, как компилятор Delphi читает код программы. Создай ключевые слова: загрузка карты, обновление, создать объект, удалить объект, изменить параметры и пр., ...это касается и счетчиков. Если в строке скрипта числится, например "If" - значит это триггер условия, далее нужно считывать параметр условия, следующий за его командой, потом искать "then" и тело условия, в котором набор команд. Двигайся в этом направлении.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна ваша оценка проги на делфи | Rustam_Hacker | Софт | 20 | 09.04.2011 08:02 |
Нужна оценка стоймости работы | Simply-Art | Фриланс | 4 | 30.01.2010 17:16 |
Простешая база | Умелец | БД в Delphi | 5 | 20.03.2007 10:54 |