Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2009, 21:08   #1
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию Реализация скриптов в игре.

Хочу сделать простое подобие скриптов в космической стрелялке. Это вообще реально?
Нужно чтобы они были в отдельных файлах и описывали простейшие манипуляции с игрой.
Я себе так это представляю: в файле должны быть условия и события описания которых заложены в exe, но их чередование должно быть в самом файле. Для начала хотел бы узнать как разбирать строки в файлах?
Например программа может разобрать строку??:
''GiveVeapon(1)'' или ''GiveVeapon 1'', гдеGiveVeapon - комманда которая должна быть известна программе , а 1 - число
Если да, то как это сделать?

Последний раз редактировалось Вадим Буренков; 26.06.2009 в 21:13.
Вадим Буренков вне форума Ответить с цитированием
Старый 27.06.2009, 00:14   #2
Gigabit
Пользователь
 
Аватар для Gigabit
 
Регистрация: 28.04.2009
Сообщений: 31
По умолчанию

На счет скриптов, я не чего не могу сказать а вот на счет, строк -
это легко.
я не знаю хорошо работаете вы с файлами, сегодня я уже устал поэтому опишу логику-
записываем файл например таким образом
одна строка - одно действие (условие, значение)

Geteapon_1
ShowKwest_3
.....
....
...
и т.д

считываем первую строку до коца, (пока не наткнёмся на каретку - опред. символ обозначает конец строки), номер не помню.

ставим условие если встречаем нижние тире)) записываем след. знаки в другое место напр WeaponNumer
за тем пропускаем считанную строку через Case оператор выбора
Код:
Case (строка) of
'showmethemoney': begin ...(здесь чтото делаем, какую-нибудь процедуру)... end;
'thegatrhering':       begin ...... end;
'getveapon':           begin  case weaponNumer of
                                    '1': mashingan
                                    '2': uzi
                                     .....
                                     ....
                                     ....
                                     '25': akm
                                     end;
'getlive': begin ..... end;
end;
здесь как вы заметели два кейса первый дает выбор из всех фозможных функций
а второй выбирает из оружия
Чтобы наделать ошибок надо для начала уметь хоть что то делать!

Последний раз редактировалось Gigabit; 27.06.2009 в 00:18.
Gigabit вне форума Ответить с цитированием
Старый 29.06.2009, 13:47   #3
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

А не лучше ли использовать Луа для этих целей? В моих играх разные скрипты есть, если нужно - обращайся.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 29.06.2009, 14:26   #4
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

Case (строка) of - не понял. Я вместо (строка) пишу (Intro) где переменная Intro:string; и он выдает ошибку Ordinal type required.
Shadow_1329 вне форума Ответить с цитированием
Старый 29.06.2009, 15:22   #5
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Shadow_1329 Посмотреть сообщение
Case (строка) of - не понял. Я вместо (строка) пишу (Intro) где переменная Intro:string; и он выдает ошибку Ordinal type required.
Так делать нельзя, нужен перечисляемый тип Лучше в даном примере использовать if.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 29.06.2009, 16:02   #6
Djem1991
Форумчанин
 
Аватар для Djem1991
 
Регистрация: 05.01.2009
Сообщений: 130
По умолчанию

Может я не прав,но...
если вы не знаете как работать со строками и как писать скрипты... не проще написать модуль? В него загнать функции,процедуры... и т.д. а в коде игры подключить этот модуль?
В жизни нет reset'а, а жаль...
Djem1991 вне форума Ответить с цитированием
Старый 29.06.2009, 18:12   #7
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

Для меня нет. А apromoxу спасибо!
Shadow_1329 вне форума Ответить с цитированием
Старый 29.06.2009, 19:26   #8
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

Все я понял! А как поставить условие конца строки?
Shadow_1329 вне форума Ответить с цитированием
Старый 29.06.2009, 19:47   #9
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Если строки с файла читаются через ReadLn, то длина строки автоматом в Length('строка'); ...делаем условия на соответствие Copy('строка', i, len). Думаю, команд будет не много, первые символы строки - одна из команд, после перебора и определения оператора - case, ...в нем по правилам выдергиваются аргументы.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 29.06.2009, 20:10   #10
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

Понял. А если у меня несколькр строк например

Меч Феникса//имя меча
10000//стоимость
120//атака
100//состояние
0//в инвенторе или нет

Меч Паладина//имя меча
5000//стоимость
70//атака
100//состояние
1//в инвенторе или нет

Как сделать чтобы он различал начало новой записи от имени?
Shadow_1329 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с выполнением скриптов в IE rom@nыч JavaScript, Ajax 7 17.08.2008 18:56
Проблема с отображением джава скриптов LSDkltn HTML и CSS 2 01.04.2008 10:38