wifyxf
27 May 2013 | 21:16
Скачал UltraEdition, как посоветовали в докуметации теамХ для открытия и написания, редактирования скриптов!! Но он открылся в каком-то нечитаемом тексте похожим 16-ричный код и еще какие-то точки с символами!?!!!!!
Что-то не хватает!?! можете подсказать, начсет текстового редактора
Nordan
27 May 2013 | 21:42
Исходники скриптов это обычные текстовые файлы, так что можешь использовать любой текстовый редактор, который тебе больше нравится. Главное чтоб расширение у файлов было *.ssl.
А вообще, я бы тебе посоветовал использовать специальные программы для написания скриптов к Ф2. В них есть все для работы, в том числе и компилятор, так что не нужно возиться с батниками. Лично я использую FSE (Fallout Script Editor), очень удобный в работе. Есть еще FGECK, с помощью него можно легко составлять скрипты, т.к. все команды вынесены в отдельное место, остается только найти нужную и перетащить.
QUOTE |
Но он открылся в каком-то нечитаемом тексте |
По ходу, ты открываешь не исходники, а сами скрипты. Файлы *.int это готовые, скомпилированные скрипты; *.ssl исходники скриптов, т.е. то что нужно редактировать, а только потом компилировать в *.int.
wifyxf
27 May 2013 | 21:52
QUOTE |
Исходники скриптов это обычные текстовые файлы, так что можешь использовать любой текстовый редактор, который тебе больше нравится. Главное чтоб расширение у файлов было *.ssl.
А вообще, я бы тебе посоветовал использовать специальные программы для написания скриптов к Ф2. В них есть все для работы, в том числе и компилятор, так что не нужно возиться с батниками. Лично я использую FSE (Fallout Script Editor), очень удобный в работе. Есть еще FGECK, с помощью него можно легко составлять скрипты, т.к. все команды вынесены в отдельное место, остается только найти нужную и перетащить. |
В таемХ вот, что было написано, относительно этого редактора:
Если вы используете редактор Ultra Edit (рекомендую), то можно сделать так, чтобы описание команды появлялось автоматически при выделении команды и нажатии определённой кнопки.
Жмём Help->Add help files. Выбираем местонахождение funcbis.hlp, вводим имя. Далее Advanced->Configuration, закладка Key Mapping. Выбираем UserHelpFile1, в строке Press New Key давим нужную кнопку (F2 или что-нибудь другое. F1 лучше не переназначать). Все.
Попробуйте написать, например display_msg, выделить команду даблкликом и нажать F2. Должно появится её описание.
поэтому решил скачать!!
QUOTE |
По ходу, ты открываешь не исходники, а сами скрипты. Файлы *.int это готовые, скомпилированные скрипты; *.ssl исходники скриптов, т.е. то что нужно редактировать, а только потом компилировать в *.int. |
да в int открываю, а их значит нужно переконвентировать и тогда нормально запустится!?
Nordan
27 May 2013 | 22:05
Опять же говорю: "можешь использовать любой текстовый редактор, который тебе больше нравится".
QUOTE |
да в int открываю, а их значит нужно переконвентировать и тогда нормально запустится!? |
Не нужно их
декомпилировать, исходники и так есть, скачай их на Team X.
Официальные исходники.Исходники для версии 1.02d.Сначала качаешь официальные, потом
на них ставишь исходники для версии 1.02d.
wifyxf
27 May 2013 | 22:11
QUOTE |
Не нужно их декомпилировать, исходники и так есть, скачай их на Team X. Официальные исходники. Исходники для версии 1.02d. Сначала качаешь официальные, потом на них ставишь исходники для версии 1.02d. |
спасибо за ссылки а почему там скрипты по локациям распределены в папке самой игры ведь не так!? там точно все скрипты!?
Отправлено: 27 мая 13 22:19
а в файле command дан весь список скриптов Фоллаута с описанием!?
Nordan
27 May 2013 | 22:21
QUOTE |
а почему там скрипты по локациям распределены |
Сам не знаю, может "кому-то" так удобней ориентироваться? :)
QUOTE |
там точно все скрипты или только относящиеся к картам!?!! |
Там все скрипты, и не только к локациям, в папке "MAIN" находится скрипт самого Чуза и главных НПС.
В процессе скриптинга тебе еще понадобятся т.н. заголовочные файлы (HEADERS), они тоже там есть, под одноименной папкой.
QUOTE |
а в файле command дан весь список скриптов Фоллаута с описанием!? |
wifyxf
27 May 2013 | 22:36
Спасибо за ссылки!!!! а файлы MC-DOS в каждой папке исходников что означают!? это типа файлов lst в папках игры?!
Nordan
27 May 2013 | 23:02
Те что в корне(compile.exe, DOS4GW.exe, P.bat) это компилятор. Остальные батники (*.bat) это что-то вроде рудиментов. Может они использовались когда-то для чего-то, но сейчас они не нужны. По крайней мере я их не для чего еще не использовал.
Wasteland Ghost
28 May 2013 | 09:47
Это не рудименты, это
бат-файлы для быстрой компиляции всех скриптов в папке.
Nordan
28 May 2013 | 12:26
QUOTE |
Это не рудименты, это бат-файлы для быстрой компиляции всех скриптов в папке. |
Ах, ну да, точно, че то я не посмотрел в них... :)
CODE |
call ..\p ACBRAHMN call ..\p ACDOG call ..\p ACERIC call ..\p ACFIST call ..\p ACGECKO ... |
Кстати о пакетных файлах.
wifyxf, иногда в процессе создания мода приходится выпонять массу однообразных действий (например: чтоб сделать картинку в фоле нужно сначала исходное изображение копировать в конвертор, потом переконвертированное изображение копировать в арты, потом все это дело еще записать в *.lst файл; и так множество раз...). В таких случаях имеет смысл сделать бат-файл, который все это будет делать за тебя.
Вот в этой статейке хорошо описана работа с бат-файлами (да и вообще с командной строкой).
Конечно, синтаксис командной строки и синтаксис фоловских скриптов достаточно сильно отличаются друг от друга, но, как и в любых языках программирования, там есть общие характерные черты. Так что создание бат-файлов будет только поднимать скилл скриптора. :)
wifyxf
28 May 2013 | 17:37
Спасибо!
jordan
29 May 2013 | 14:01
Мне кажется FSE, слишком нафичёвана. Проще в блокноте написать, чем разбираться, в этих окошках. Это моё ИМХО.
Советую для работы со скриптами, использовать Fgeck за авторством Технократа.
http://www.teamx.ru/site_arc/utils/fgeck.7zИли NotePad, в меню можно выбрать синтаксис. Выбирайте pascal.
И удачи, а так же терпения, в освоении моддинга. Я лично работал только со скриптами. Ну и чуть карты правил.
Отправлено: 29 мая 13 14:06 wifyxf у вас получилось откомпилировать скрипт? Когда я только изучал скрипты, для меня было камнем преткновения, чёрное окошко под названием консоль.
wifyxf
29 May 2013 | 18:10
QUOTE |
wifyxf у вас получилось откомпилировать скрипт? Когда я только изучал скрипты, для меня было камнем преткновения, чёрное окошко под названием консоль. |
честно говоря, не хвастаясь я "вроде" как не компилировал ведь компилирование это проверка правильности написания скрипта!?!! но как я его мог компилировать, если даже не писал!?! Я кажется "конвертировал" скрипт с формата int в ssl.. ну вообщем результат был такой или это называется компилирование, а что же тогда первое!?
Nordan
29 May 2013 | 18:30
Компиляция перевод текстовой информации (исходного кода, который понятен человеку, но не понятен компу) в машинный код (который понятен компу, но непонятен человеку).
Декомпиляция "де" указывает на обратность процедуры, т.е. перевод из машинного кода в исходный.
Язык программирования (ЯП) это только "оболочка". Под каждым словом написанным в исходном коде подразумевается определенный "кусочек" кода. Задача ЯП: упростить процесс написания кода и наиболее наглядно показать "картину" того, что происходит. Ну или как то так, если не так извиняйте, я не проггер. :)
QUOTE |
Проще в блокноте написать, чем разбираться, в этих окошках. |
Интерфейс FSE такой же как и в FGECK, только нет окна со списком функций. Вместо этого FSE сам анализирует вводимый текст и пытается "угадать" какая функция вводится (появляется окошко под курсором со списком всех подходящих под введенный текст функций). Мне этого достаточно. А вообще это все вопрос вкуса, попробовать стоит все редакторы.
А на счет блокнота: лучше скачать Notepad++. Он бесплатный и функционал радует.
wifyxf
30 May 2013 | 12:09
И насчет компилирования!! не получается скомпилировать исходник обратно с INT и SSL в каком-то компиляторе-декомпиляторе делал, а вот в INT не выходит ни в BIS, ни где!?!
Как компилировать, кто знает.. насчет "доки"
Там написано:
Проверим его работу. Для начала нам нужно откомпилировать скрипт (перевести его из текстового формата, понимаемого человеком, в двоичный формат, понимаемый игрой). Для это нам нужны две программы (вообще говоря, три. Но пока две): dos4gw.exe и compile.exe. Они постовляются с Мапером от БИС и должны у вас быть. Найти их можно в папке Mapper\Scripts. Скопируйте туда сохранённый скрипт.
Теперь нам нужно автоматизировать процесс компиляции. Создайте новый файл и пишите туда:
@echo off
dos4gw compile myscript.ssl
Сохраните в Mapper\Scripts как comp.bat. Всё, запускайте comp.bat. У вас должен появится файлик myscript.int это и есть готовый для использования скрипт.
не понятно у меня и в маппере таких папок нет и такой функции не предвижу и в самом Фоллауте нет папки Mapper/Scripts, да и если бы они были что с этого!?!!
BIS пишет что файл отсутствует!, но он был!
кажется ни один компилятор "не находит" этих файлов-исходников!
Nordan
30 May 2013 | 18:23
QUOTE |
не понятно у меня и в маппере таких папок нет |
Это маленькая путаница. Дело в том, что изначально исходники шли в комплекте с мэппером, и находились как раз в папка Scripts в корне мэппера. Расположение компилятора роли никакой не играет (правда, если не умеешь работать с бат-файлами, то лучше делай по примеру, батник нужно создавать в корне исходников (там где лежит сам компилятор и папки с названиями городов)).
Теперь разберемся с бат-файлом:
CODE |
@echo off dos4gw compile myscript.ssl |
Это означает то, что компилироваться должен файл myscript.ssl. Причем только он. Если имя будет другое ничего не произойдет.
Вдобавок, такой командой можно компилировать только те скрипты, которые написаны на "исконно" фолловском языке. В большенстве случаев (да во всех, в принципе) помимо основного кода также используются директивы препроцессора (#define, #include и т.д.). С их момощь можно упростить процесс написания кода (например, можно делать макросы), но перед компиляцией такого кода, его (код) сначала нужно обработать препроцессором, а уж потом только компилировать. Так что скомпилировать какой-нибудь БИСовский исходник с помощью выше указанного бат-файла не получится.
Все, о чем повествуется в предыдущем абзаце, есть в этой "доке" (FScripts HOWTO). Просто читай внимательно и все поймешь.
wifyxf
30 May 2013 | 19:01
QUOTE |
Это означает то, что компилироваться должен файл myscript.ssl. Причем только он. Если имя будет другое ничего не произойдет.
Вдобавок, такой командой можно компилировать только те скрипты, которые написаны на "исконно" фолловском языке. В большенстве случаев (да во всех, в принципе) помимо основного кода также используются директивы препроцессора (#define, #include и т.д.). С их момощь можно упростить процесс написания кода (например, можно делать макросы), но перед компиляцией такого кода, его (код) сначала нужно обработать препроцессором, а уж потом только компилировать. Так что скомпилировать какой-нибудь БИСовский исходник с помощью выше указанного бат-файла не получится.
Все, о чем повествуется в предыдущем абзаце, есть в этой "доке" (FScripts HOWTO). Просто читай внимательно и все поймешь. |
я не нахожу ничего, чтобы мне могло помочь в компиляции по поводу препроцессоров!! я должен скачать какую-то программу!? или написать в каждом файле include и defaine, чтобы он скомпилировался!?! или нужно перевести написанное в блокноте с помощью программы "в фоловский шрифт"? или может еще что-то!
Nordan
30 May 2013 | 19:04
QUOTE |
я не нахожу ничего, тобы мне могло помочь в компиляции |
Читай и делай все по примеру, не беги вперед. Информация дается по шагам: сначала общие принципы, потом частные.
Wasteland Ghost
30 May 2013 | 19:10
wifyxf, ты хочешь всё и сразу. Так не выйдет. С нулевыми знаниями в области программирования изучать скриптинг придётся долго. Туториал по скриптам написан от элементарного к простому и далее к чуть более сложному. Простейшие скрипты не требуют препроцессора, не беги впереди паровоза, читай каждую строчку и каждую букву, каждый документ по ссылке. До препроцессора там дело дойдёт.
Подготовь Фол к модификации, разложи все файлы по папкам, как это сказано в FAQ и туториале по скриптам. И медленно и вдумчиво выполняй задания из туториала.
Препроцессор, когда он понадобится, можно взять в
файловом архиве TeamX.
jordan
30 May 2013 | 19:16
http://yadi.sk/d/-OdJs2gC5KvnEРаспакуйте этот архив в любую папку, в архиве уже есть скрипты, препроцессор и компилятор. Для компиляции зайдите в папку COMPILE и запустите 1.bat. В папке появится файл .int, его скопируйте в папку игры data\scripts
Просто копирeте в эту папку скрипты и запускайте 1.bat
Позже сделаю батник, для компиляции всех скриптов.
wifyxf
30 May 2013 | 19:24
QUOTE |
wifyxf, ты хочешь всё и сразу. Так не выйдет. С нулевыми знаниями в области программирования изучать скриптинг придётся долго. Туториал по скриптам написан от элементарного к простому и далее к чуть более сложному. Простейшие скрипты не требуют препроцессора, не беги впереди паровоза, читай каждую строчку и каждую букву, каждый документ по ссылке. До препроцессора там дело дойдёт.
Подготовь Фол к модификации, разложи все файлы по папкам, как это сказано в FAQ и туториале по скриптам. И медленно и вдумчиво выполняй задания из туториала.
Препроцессор, когда он понадобится, можно взять в файловом архиве TeamX. |
в том-то и дело, что не "все и сразу" у меня не компилировались даже простые скрипты! Фол к модификации я уже подготовил..
Отправлено: 30 мая 13 19:28
QUOTE |
Распакуйте этот архив в любую папку, в архиве уже есть скрипты, препроцессор и компилятор. Для компиляции зайдите в папку COMPILE и запустите 1.bat. В папке появится файл .int, его скопируйте в папку игры data\scripts
Просто копирeте в эту папку скрипты и запускайте 1.bat
Позже сделаю батник, для компиляции всех скриптов. |
Спасибо!! компилирует
jordan
30 May 2013 | 19:35
Для обучения хватит скрипта acklint.ssl, так как этот скрипт клинта.
Пока не забивайте голову настройками, просто изучайте скрипты + доки. Изменили скрипт скомпилируйте, запустите игру, посмотрите изменения.
Отправлено: 30 мая 13 19:57
Откройте файл p.bat и удалите -P.
QUOTE |
bin\mcpp %1.ssl %1.i bin\sslc %1.i del %1.i pause
|
Wasteland Ghost
30 May 2013 | 21:00
QUOTE |
Фол к модификации я уже подготовил.. |
Тогда откуда вопросы про папки? Пройдись по ресурсной базе Фола, прочти соответствующий
документ. Разберись, что где лежит. Чтобы знать вот тут скрипты, вот тут диалоги, тут картинки... Жить станет на порядок проще. :)
wifyxf
30 May 2013 | 21:28
QUOTE |
Тогда откуда вопросы про папки? Пройдись по ресурсной базе Фола, прочти соответствующий документ. Разберись, что где лежит. Чтобы знать вот тут скрипты, вот тут диалоги, тут картинки... Жить станет на порядок проще. :) |
я уже про структуру Фоллаута(где в общем что лежит....) вроде и не спрашивал..
jordan
7 June 2013 | 11:49
Как успехи в освоении скриптов?
Wasteland Ghost
7 June 2013 | 14:38
jordan, для личных вопросов существует личная почта.
The Master
10 June 2013 | 15:39
x32 совместимый компилятор, допиленный для работы на современных ОС.
С исходниками. Автор доработки
Hexxx.
wifyxf
14 June 2013 | 21:40
Насчет скриптов попытался сделать все как по схеме в документации, т.е.
Первый скрипт
Ваше терпение вознаграждено. Пишем первый скрипт.
Итак, что он будет делать? Что выбрать в качестве точки входа? Помните, я говорил, что точками входа могут служить не только действия игрока но и некие внутриигровые события. Эти события связаны с действиями игрока, но не так явно, как например попытка заговорить. К таким событиям относятся, например, заход игрока на карту, прошествие определённого временного интервала и т.д.
Пусть наш объект поприветствует Избранного, как только тот появится в локации.
Обрабатывается это событие с помощью процедуры map_enter_p_proc.
Пишем код:
procedure start begin
end
procedure map_enter_p_proc begin
display_msg("Hello");
end
Сохраняйте как myscript.ssl
скомпиллировал, поместил в папку со скриптами, прописал и в lst файле, но никакого эффекта нет надписи "Привет" нигде не появляется
Почему!? что не так!? или скрипт неправильный!?!
The Master
14 June 2013 | 21:53
А ты его повесил? В маппере это делается.
Можно на NPC, можно к карте.
display_msg пишет сообщение в окошко слева внизу, там высматривай.
Блин, я не знаю, там же всё просто, я 4-5 лет назад сначала просто очень много читал. Доков оказалось мало, интырнета своего не было, ходил к знакомым, быстро-быстро сохранял страницы форума на флешку, а потом дома с упоением читал.
На 3 день освоил интерфейсные функции и анимацию, делал прикольные интерактивные ролики на движке. Как правило, там всех разрывало в мясо и убивало, но ведь были и диалоги, и фразы цветные над головами! И никакого красноглазия, язык чуть сложнее Паскаля.
wifyxf
14 June 2013 | 22:22
Да, действительно! Получилось а я то все думал как этот скрипт может работать, если там не слово о Клинте.. Но возник другой вопрос myscript заменил другой скрипт и теперь это уже не клинт!?! А что в маппере нельзя привязать более 1 скрипта!? то есть если я хочу сделать Клинта говорящим "Привет!", то мне нужно прописывать это в его скрипт, а не делать отдельный, так как второй скрипт нельзя привязать к одному нпс!?
Nordan
14 June 2013 | 22:29
QUOTE |
то есть если я хочу сделать Клинта говорящим "Привет!", то мне нужно прописывать это в его скрипт, а не делать отдельный, так как второй скрипт нельзя привязать к одному нпс!? |
Именно. Просто берешь исходник скрипта Клинта и дописываешь его. Никакие "вторые" скрипты не нужны.
wifyxf
15 June 2013 | 00:55
Насчет скриптов! хотел сделать скрипт перемещения в виде ходьбы для криттера в одном направлении и обратно, но не понял как и вообще с чего начать, ну судя по документации написал:
procedure start begin
end
потом вставил команду перемещения на указанный гекс
int move_to(ObjectPtr obj, int 19898, int 0)
- не знаю правильно или нет
потом
потом назад
int move_to(ObjectPtr obj, int 18573, int 0)
НО еще когда вводил, так и не понял куда и как вставлять анимацию ходьбы
#define ANIM_walk(1)
вроде эта!?!
НО что с ней делать и с помощью какой команды применять и вообще про весь скрипт!?!
Но этот скрипт не скомпиллировался, видимо составлен не верно!?
The Master
15 June 2013 | 01:08
Щас убью.
Не копипасти код НИКОГДА, всё пиши самостоятельно.
Что такое ObjectPtr? Что такое int перед числом?
procedure move_to(self_obj, 19898, 0)
за 0 я ничего не скажу, не помню что там должно быть, но надеюсь, суть ты понял. Доку по прежнему ты читаешь по диагонали.
QUOTE |
#define ANIM_walk(1) |
Чтобы использовать директивы и замещения, нужен препроцессор, но учитывая уровень твоих знаний, обходись пока без него, вбивая имена и циферки ручками.
В animcomd.h все индексы анимаций написаны, можно взять оттуда.
Открывать блокнотом.
Nordan
15 June 2013 | 02:00
Ребята, че-та-вы-мудрите... :)
QUOTE |
int move_to(ObjectPtr obj, int tile_num, int elev) переместить объект Аргументы: obj указатель на объект tile_num номер гекса (связь с координатами x, y: hex = 200 * y + x) elev уровень (0, 1 или 2) Возвращаемое значение: 0 Примечания: обновляет экран |
Это не анимация, это прямое перемещение объекта.
Для того, чтобы заставить криттера идти к гексу есть функция:
QUOTE |
void animate_move_obj_to_tile(ObjectPtr who, int tile, int speed) анимация перемещения объекта на заданный гекс Аргументы: who указатель на объект tile номер гекса (связь с координатами x, y: hex = 200 * y + x) speed скорость: ANIMATE_WALK (0) идти ANIMATE_RUN (1) бежать ANIMATE_INTERRUPT (16) флаг "прервать текущую анимацию" (если установлен, то данная команда прервёт текущую анимацию) Возвращаемое значение: нет Макросы: animate_move_to_tile, animate_run_to_tile, animate_move_to_tile_force, animate_run_to_tile_force |
К примеру, заставить криттера ходить по попытке заговорить с ним можно вот так:
CODE |
variable start_hex; //объявляем переменную со стартовым гексом
procedure start begin end
procedure talk_p_proc begin //попытка заговорить с криттером start_hex:=tile_num(Self_obj); //записываем стартовый гекс animate_move_obj_to_tile(self_obj,19898,0); //заставляем идти на гекс 19898 end
procedure critter_p_proc begin //процедура обновления if tile_contains_obj_pid(19898,0,obj_pid(self_obj)) then begin //проверяем, дошел ли криттор до гекса display_msg("должен идти обратно"); // это не обязательно писать animate_move_obj_to_tile(self_obj,start_hex,0); //заставляем идти обратно end
end |
Wasteland Ghost
15 June 2013 | 08:15
wifyxf, для новых вопросов заводи новые темы. А ещё лучше сначала воспользуйся поиском и поищи старые. Ещё одна попытка свалить всё в одну кучу закончится жирным минусом в карме.
Разговор про прототипы вынесен в отдельную тему.
wifyxf
15 June 2013 | 16:11
Спасибо Nordan проверю.....
а разве достаточно одной команды анимации для передвижения объекта!7 и зачем же нужа тогда команда int move_to!?!
да.. и куда записывать сам код анимации у тебя в примереи не нашел и как записывать ANIMATE_WALK (0) полностью или просто (0)
что идет после команды кода анимации и end
procedure critter_p_proc begin //процедура обновления
if tile_contains_obj_pid(19898,0,obj_pid(self_obj)) then begin //проверяем, дошел ли криттор до гекса
display_msg("должен идти обратно"); // это не обязательно писать
animate_move_obj_to_tile(self_obj,start_hex,0); //заставляем идти обратно
end
end
проверка или нет!?
а зачем display_msg!?
и variable start_hex; пишется ДО procedure critter_p_proc begin!?
что вообще пишется до этой команды!?
Что записано за "/" и между "/" не читается командой, а нужно лишь для скриптера, т.е. вообще не обязательно!?!
Nordan
15 June 2013 | 18:38
Что-то ты не внимательно доки читаешь...
QUOTE |
у тебя в примереи не нашел и как записывать ANIMATE_WALK (0) |
ANIMATE_WALK можно писать только когда используешь препроцессор. Это обычная замена. Просто не удобно держать в голове значения всех циферок. Для таких вещей и существуют header файлы, в них храняться как раз все эти замены . После обработки препроцессором "ANIMATE_WALK" заменится "0".
QUOTE |
а зачем display_msg!? |
Как я уже говорил, эту строчку можно не писать. Она сообщает, что условие выполнилось и криттер должен идти назад. Просто перестраховка, мало ли чего. :)
QUOTE |
и variable start_hex; пишется ДО procedure critter_p_proc begin!? |
Читай раздел "переменные" в доке, там все подробно расписано. Кратко могу сказать, что переменные объявленные вне процедур действуют во всех процедурах скрипта. А переменные объявленные в процедуре, действуют только в этой конкретной процедуре (где они объявлены).
QUOTE |
что вообще пишется до этой команды!? |
Вначале скрипта указываются директивы препроцессора, содержание процедур, ну и собственно переменные. Но в данном конкретном случае препроцессор не используется, поэтому и директивы не нужны. Обработчики (ака точки входа) все стандартные, поэтому и содержание тоже не нужно. Так что перед "variable start_hex;" в данном случае писать ничего не нужно, скрипт то элементарный.
QUOTE |
Что записано за "/" и между "/" не читается командой, а нужно лишь для скриптера, т.е. вообще не обязательно!?! |
Это просто коментарии, они стираются при компиляции.
QUOTE |
что идет после команды кода анимации и end |
Не понял тебя. Ну, ничего там не идет. Но если это означает "почему там два end", то есть простое правило "Сколько begin'ов, столько и end'ов". :) Там же после условия идут несколько функций, в таких случаях (когда эти функции относятся к этому условию) их нужно записывать в отдельный блок (begin...end).
wifyxf
15 June 2013 | 18:59
что идет после команды кода анимации и end я вот это имел ввиду!
procedure critter_p_proc begin //процедура обновления
if tile_contains_obj_pid(19898,0,obj_pid(self_obj)) then begin //проверяем, дошел ли криттор до гекса
display_msg("должен идти обратно"); // это не обязательно писать
animate_move_obj_to_tile(self_obj,start_hex,0); //заставляем идти обратно
end
- что это!? и предположил, что это проверка не обязательная процедура!?!
честно говоря не совсем понял что такое препроцессор и как пользоваться head-файлами и что это поточнее.. их в исходниках смотреть!? там переменные!?! а что еще!?
Nordan
15 June 2013 | 19:28
QUOTE |
честно говоря не совсем понял что такое препроцессор |
Препроцессор просто заменяет/подставляет функции и значения (грубо говоря), использовать его не обязательно, но с ним легче писать скрипты.
Вот например #define ANIMATE_WALK (0). Означает просто что выражение "ANIMATE_WALK" должно замениться на "0". Т.е. изначально написанная функция "animate_move_obj_to_tile(self_obj,start_hex,ANIMATE_WALK);" после препроцессора будет выглядеть "animate_move_obj_to_tile(self_obj,start_hex,0);", только и всего. Компилятор БИС "не знает" что такое "ANIMATE_WALK", поэтому если не задействовать препроцессор, то такой скрипт просто не скомпилируется.
QUOTE |
что идет после команды кода анимации и end |
Ну это часть скрипта. Нельзя просто сказать криттеру "сходи туда и вернись", его можно направить к одному гексу, он дойдет до него и будет тупо стоять. Его надо направить назад. В этой процедуре стоит проверка на содержание конкретно этого криттера на конкретном гексе. Как только условие проходиться (т.е. криттер дошел до этого гекса), срабатывает функция, которая заставляет его идти в тот гекс где он находился сначала (его мы записывали в "start_hex").
wifyxf
15 June 2013 | 19:36
Насчет препроцессора!? так а нельзя ли самому поставить "0" вместо animate_walk!?!!
Так коды анимации подставляются прямо в "скобки" после команды!?
Nordan
15 June 2013 | 20:24
QUOTE |
так а нельзя ли самому поставить "0" вместо animate_walk!?!! |
Если ты не заметил, в этом примере я так и сделал.
QUOTE |
Так коды анимации подставляются прямо в "скобки" после команды!? |
В скобках пишутся вообще аргументы к функции. Не только коды анимации.
The Master
15 June 2013 | 20:36
Ему нужны азы программирования и хоть какое-то представление о структуре тела программы и синтаксисе. Блок-схемы нарисуйте, чтоль :D
Nordan
15 June 2013 | 21:38
QUOTE |
Ему нужны азы программирования и хоть какое-то представление о структуре тела программы и синтаксисе. |
Ну это и есть самое сложное :) понять логику работы скрипта. Как только ты понимаешь что и зачем нужно и как это использовать половина дела уже сделана. Вторая половина это научиться представлять задачу как набор последовательно выполняемых команд, операторов и переменных. Все остальное уже фигня, приходящая с опытом. Все это не требует каких-то сверх знаний в области программирования,достаточно иметь желание этому научиться (по крайней мере это в моем случае :)). Наличие математического склада ума сильно упрощает задачу.
А вообще, скриптинг похож на конструктор. Вот тебе детальки: функции и операторы. Ты представляешь что должно получиться в конце. Ну и собираешь все воедино. :)
wifyxf
15 June 2013 | 21:52
variable start_hex; //объявляем переменную со стартовым гексом
procedure start begin
end
procedure talk_p_proc begin //попытка заговорить с криттером
start_hex:=tile_num(Self_obj); //записываем стартовый гекс
animate_move_obj_to_tile(self_obj,19898,0); //заставляем идти на гекс 19898
end
procedure critter_p_proc begin //процедура обновления
if tile_contains_obj_pid(19898,0,obj_pid(self_obj)) then begin //проверяем, дошел ли криттор до гекса
display_msg("должен идти обратно"); // это не обязательно писать
animate_move_obj_to_tile(self_obj,start_hex,0); //заставляем идти обратно
end
end
Попробовал выполнить этот скрипт но он не скомпилировался.. значит что-то не так!?!
я не записывал только то, что было написано после "/", то есть по-русски
Nordan
15 June 2013 | 22:02
Хм... Странно, у меня все компилируется. И через встроенный компилятор в FSE, и через тот что тебе давал jordan.
wifyxf
15 June 2013 | 22:14
Хм... Странно, у меня все компилируется. И через встроенный компилятор в FSE, и через тот что тебе давал jordan.
постой... скомпилировался просто я первый раз в "стартовый гекс" решил написать его значение!?!
А оказывается не надо!?!?!?
сейчас проверю его работу..
Отправлено: 15 июн 13 22:27
Работает! Спасибо за подсказку, только я хотел еще, чтобы он ходил всегда туда и обратно и начинал действия без моего участия наверное мне нужно найти команду "при заходе на карту", т.е. , когда я захожу на эту карту тот криттер начинает ходить постоянно, НО чтобы ходил постоянно нужно ввести еще одну команду может "цикл" или что-то вроде этого!? Кстати, а разве нужно опираться от чего-то, что бы нпс выполнял какие-то действия можно его сделать изначально гуляющим с одного гекса на другой!? а вот конечно не постоянно гуляющим, а по прошествию определенного количества времени(я так понял тиков или можно минут или секунд но там свои!?!) это кажется временные "команды", НО там, кажется, все-равно идет привязка к чему-то к тому же самому заходу игрока на данную карту с какого момента будут считаться минуты!?!?
кстати насчет времени в Фоллаут как оно соотносится с реальным, либо с определенными действиями в игре, может зависит от перемещения по гексам, либо еще чего-то, но наверное все-таки приявязывается к "обычному времени" в каком-то соотношении!?!
Nordan
15 June 2013 | 22:51
QUOTE |
кстати насчет времени в Фоллаут как оно соотносится с реальным |
1 секунда это 10 игровых тиков.
QUOTE |
наверное мне нужно найти команду "при заходе на карту" |
Именно. Обработчик map_enter_p_proc.
QUOTE |
Кстати, а разве нужно опираться от чего-то, что бы нпс выполнял какие-то действия можно его сделать изначально гуляющим с одного гекса на другой!? |
Всегда должно быть какое то действие, провоцирующие выполнение команд, "просто так" ничего не делается. Хотя обработчик start выполняет записанные в него функции сразу, как только загружается карта. Это и может послужить "пинком". :)
Wasteland Ghost
15 June 2013 | 23:13
QUOTE |
Ему нужны азы программирования и хоть какое-то представление о структуре тела программы и синтаксисе. Блок-схемы нарисуйте, чтоль :D |
Мы тут что, сильно похожи на камикадзе? :) Если человек не желает разбираться в базовых вещах, а кидается делать всё и сразу, блок-схемами тут не поможешь.
wifyxf, ответы на все заданные вопросы есть в доках по скриптам и туториалах. Не беги впереди паровоза, изучай материал последовательно. И обязательно ходи по ссылкам на дополнительные доки. И читай.
wifyxf
15 June 2013 | 23:15
1 секунда это 10 игровых тиков.
а в Фоллауте же вроде есть и минуты и часы и дни в них определенное количество тиков!?
Хотя обработчик start выполняет записанные в него функции сразу, как только загружается карта. Это и может послужить "пинком". :)
так значит все-таки в командах можно ни на что не опираться!?
Wasteland Ghost
15 June 2013 | 23:17
QUOTE |
а в Фоллауте же вроде есть и минуты и часы и дни в них определенное количество тиков!? |
Умножь же. :)
1 секунда = 10 тиков
1 минута = 60 секунд = 600 тиков
1 час = 60 минут = 3600 секунд = 36000 тиков
1 день = 24 часа = 1440 минут = 86400 секунд = 864000 тиков
QUOTE |
так значит все-таки в командах можно ни на что не опираться!? |