» TeamX (Архив Форума)«


Форум TeamX » Тех. поддержка » FAQ по модификации Fallout (Новичкам - обратить внимание)

Переход по темам
<< Пред.
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ] Все собщения

 
Kovarny
Пользователь

Откуда: Руссия, Новосибир ...
Регистрация: Июнь 2003

Всего: 114 сообщений

Внимание новичкам!

Прежде, чем задать свой вопрос обязательно ознакомьтесь с "Концепцией объектов в Fallout2"!

Описания форматов и FAQ для начинающих ищите в "Базе данных".

Утилиты для редактирования Fallout1/2 и FT ищите в разделе утилит.

Различная документация может быть найдена в разделе документации.

---------------------------------------

Fallout Modding Faq For Beginers.


Q:Я собираюсь заняться моддингом Fallout. В этом деле я полный ноль. С чего мне начать?
1)Прежде всего, следует понять, нужно-ли вам это? Для модификации Фола необходима куча времени. Прежде чем делать что-то серьёзное, придётся прочитать кучи документов и научиться пользоваться кучей программ. Кроме того, сам процесс моддинга требует просто огромных затрат времени, не говоря уже о том, что некоторые моменты могут быть очень нудными и надоедливыми. Уясните, что вы хотите сделать? Моды, которые поменяют одно оружие на другое, мягко говоря, не интересны. А интересны сюжетные моды, с новыми городами, персонажами, квестами… Сможете-ли вы создать новый город, прописать новых героев, с их характерами, диалогами, поведением? Подумайте об этом.
2)Даже не пытайтесь что-то делать или задавать вопросы, пока не ознакомитесь со следующими доками: Концепция объектов в Fallout 2, Файловая структура Fallout 2.
Страшно? Нет? Тогда вперёд! То есть вниз, по FAQ!

Q:Какие проги мне нужны?
A:Для комплексного модинга Фола нужны следующие проги:
1)Редактор карт. В этой области существует две программы: Mapper от Dims и Оффициальный Маппер от BIS.
Можно выбрать что-то одно, но лучше использовать обе программы, т.к. у каждой есть свои хорошие и плохие стороны. И они, некоторым образом, дополняют друг друга.
2)Скрипты. Для создания своих скриптов требуются три вещи: голова, блокнот(в смысле Notepad) и компилер. С первым вам никто не поможет. Второе есть у каждого. Что касается компилятора, то тут опять-таки есть выбор между оффициальным/неоффициальным. Оффициальный компилер поставлялся вместе с маппером от BIS, его нужно скачать отдельно вот тут. Так-же скачайте исходники скриптов Fallout здесь. Неоффициальные компилеры представлены компилером IPP и компилером от Noid'a. Компилер от Noid'а я не использовал, IPP - неплохой компилер, но есть в нем досадные глюки. Так что рекомендую использовать оффициальный.
3)Графика. Вся графика в Фаллауте представлена в двух форматах: RIX (заставочные картинки при загрузке) и FRM (вся остальная графика). Вот программы, которые вам помогут: Rix2bmp (by Serge), FRM Converter (by Iceman345), bmp2frm (by ABel и Iceman345). Для работы последней необходима Image Alchemy, которую можно скачать тут.
4)Звук. Тут все программы написаны монополистом Abel'ем . acm2wav, snd2acm.
5)Ресурсы. Все ресурсы Фол держит в .dat-файлах. Для их распаковки нужна прога Dat Explorer (by Dims)

Q:Мне нужно как-то подготовить Fallout к модификации?
Да, стоит провести некоторые операции:
1)Чтобы не лазить за каждым файлом в .dat-архивы давайте их распакуем. В папке с Фаллаутом создадим папки master.dat и critter.dat. Затем, вооружившись DatExplorer'ом Dims'а распакуем архив master.dat в папку master.dat и архив critter.dat в папку critter.dat. Затем архивы можно сносить.
2)Теперь нужно распаковать патч. Тут всё ещё проще. Не надо ничего создавать, просто распакуем patch000.dat в ту-же папку master.dat с заменением файлов и снесём patch000.dat.
Почва готова. Дело за посевом.

Полезные ссылки
1)Коллекция прог для модификации Fallout: http://www.teamx.ru/rus/files/utils/index.shtml
2)Коллекция документов по этой-же теме: http://www.teamx.ru/rus/files/docs/index.shtml
3)Fallout Opcode Playground - база данных по опкодам. Незаменимая вещь для тех, кто использует компилятор IPP. Располагается здесь: http://www.teamx.ru/fop/
4)Но всё-таки величайшая кладезь знаний по заданной тематике - это форум TeamX. Прежде чем задавать свой вопрос, воспользуйтесь поиском по форуму, возможно на этот вопрос уже кто-то ответил. Страница поиска:  http://www.teamx.ru/cgi-bin/ikonboard/search.cgi

Вопросы по картам.


Q:У меня не работает/глючит маппер от Димса.
По мапперу Димса все вопросы задаются и обсуждаются вот здесь.

Q:У меня проблемы с маппером от BIS.
По мапперу от БИС существует отличная дока. Берётся тут.

Q:Как организовать переход с локации на локацию, с 1 уровня на другой в одной и той же локации, на карту мира?
Для маппера от BIS:
а) В меню Tools выбираешь Set Exit Grid Data и вписываешь
- Exit Grid Dest Map - на какую карту надо переместить чузена (-1 - на карту мира). Указывается порядковым номером, который можно достать из master.dat\data\maps.txt.
- Exit Grid Dest Tile - координаты на которых появится чузен. (-1 - в стартовой точке карты. Она или вбита намертво в файл .map, или задана для данного entrance в city.тхт, или "перегружена" функцией override_map_start из скрипта карты.)
- Exit Grid Dest Elevation - уровень карты, на котором появится чузен.
- Exit Grid Dest Rotation - куда чузен будет повёрнут лицом.
б) Включаешь гексы и, выбрав в категории misc зелёную решётку расставляешь её там, где хочешь. ВНИМАНИЕ! Когда будешь это делать заметь, что там где был курсор, гекс обводится синим. Так вот, надо сделать так, чтобы чузен, когда хочет перейти на другую карту, по-любому прошёл- бы хотя-бы через один такой синий гекс.
в) В меню tools выбери toggle block object view. Затем из категории Scenery выбери объект номер 48. И поставь его в нескольких местах на территории зоны перехода, гексов через 3 каждый. Он должен выглядеть, как гекс с буквами "EG".
г)В меню tools выбери Mark Exit Grid. В этом режиме щелкни на каждом гексе внутри твоей зоны перехода. Затем жми на ESC.
Для маппера от Dims:
выбираешь-выделяешь на карте зеленый блок выхода и заходишь в его св-ва. меняешь след. параметры:
0х58 здесь указываешь номер карты на какую игрок должен перейти (номера карт указаны в maps.txt)
0х5С пишешь номер тайла на которм должен появиться игрок в той карте
0х60 пишешь номер уровня карты (их всего 3 начинается от 0 до 2, из них 0 самый верхний уровень карты)
0х64 куда лицом должен стоять игрок када появится (варианты от 0 до 5)

Q:Какие типы блокираторов существуют и как с ними работать в маппере BIS?
Всего в Fallout 4 основных типа блокираторов: блокираторы прокрутки (scroll blocker), блокираторы хекса (blocking hex), маркеры (map marker) и источники света (light source). Последние, строго говоря, блокираторами не являются, т.к. они не препятствует перемещению. Источник света всего лишь создаёт вокруг себя световой круг заданной интенсивности, маркер необходим для отображения специальных зон на карте в ПИП- бое. Однако, работать с ними нужно также, как и с остальными блокираторами. Источник света располагается в категории Scenery под номером 140. Маркер всего один - это маркер зоны выхода из локации (exit grid map marker). Им обычно помечают все зоны выхода на карте. Наличие или отсутствие маркера никак не скажется на работе зон выхода, однако сами по себе эти зоны не будут отображаться на карте в ПИП-бое. Маркер находится в категории Scenery и имеет номер 48. Блокираторы прокрутки ограничивают область видимости на карте. Внимание! Работают в обе стороны! Т.е., если игрок вылез за пределы заблокированной области, то попытка прокрутить экран обратно не удастся! Блокиратор прокрутки находится в категории Misc под номером 11. Блокираторы хекса бывают 3 типов: блокираторы стен (wall blocker), блокираторы обстановки (secret blocking hex) и невидимые блокираторы (block hex auto inviso). Все они предназначены для "заделывания дыр" в карте, т.е. ограничения перемещений криттеров. Зачем нужно это разделение? Всё просто: разные объекты (стены, обстановка) отображаются на карте в ПИП-бое по-разному. Поэтому, если заблокировать объект обстановки при помощи блокираторов стен, то на карте в ПИП-бое игрок увидит стену, которой на самом деле нет. Невидимый блокиратор необходим тогда, когда мы вообще не хотим, чтобы он отображался на карте в ПИП-бое. Такие блокираторы (невидимые) чаще всего используют для ограничения карты по периметру, дабы игрок ни при каких обстоятельствах не выбежал за пределы видимой зоны. Блокиратор стен находится в категории Walls под номером 621. Блокиратор обстановки - в категории Scenery под номером 66. Невидимый блокиратор - в категории Scenery под номером 343.
Для работы с блокираторами в маппере БИС необходимо выбрать Tools в строке меню (отображается при позиционировании курсора вверху экрана), затем выбрать элемент Toggle Block Object View - переключение режима отображения блокираторов. После этой операции станут видимы блокираторы отображаемых в данный момент типов (!). Это означает, что если вы выключили отображение объектов Misc, то вы не увидите блокираторов прокрутки! Не поможет и включение отображения объектов Misc после включения отображения блокираторов. Обратное работает, т.е. после включения отображения кнопки включения/отключения отображения разных типов объектов будут показывать/ убирать блокираторы. Ещё один момент: если при включенном отображении, например, объектов Misc включить отображение блокираторов, отключить отображение объектов Misc, отключить отображение блокираторов, а затем снова включить отображение объектов Misc, то блокираторы объявятся во всей красе . Это есть баг. Для корректной работы лучше включать/отключать отображение блокираторов при включенном отображении всех типов объектов, имеющих свои блокираторы (walls, scenery, misc). Кроме того, при работе с блокираторами полезно будет включить отображение сетки. Для выделения блокираторов удобнее использовать курсор в виде указателя, а не хекса (переключается клавишей "M". Ещё следует напомнить, что в режиме отсутствия отображения блокираторов при включенной сетке зона под блокираторами хексов закрашивается в красный цвет, а под остальными имеет синий контур. Удалять/перемещать блокираторы в этом режиме нельзя, но устанавливать можно, хотя это и не совсем удобно.

Q:Как создать лифт?
Вкратце - стандартные лифты зашиты в экзешник. Работают с помощью невидимого обьекта Elevator Stub. Ставишь его на карту, прописываешь ему ID лифта в свойствах в БИС редакторе, в итоге при наступании вылетает окошко с кнопками.
Проблема - лифты прошиты жестко, т.е всего там 14 (кажется) лифтов, каждый работает только под конкретную карту. Хаком можно их использовать, но это порождает много других неприятностей. В общем - стандартный лифт неюзабелен.
В последнее время на горизонте забрезжил свет. Ребята, кажется нашли решение этой проблемы. Как только появится информация, она будет тут-же добавлена сюда.

Вопросы по скриптам.


Q:Где можно достать нормальную документацию для чайников, где обьяснено все о скриптах?
Скриптинг подразумевает определённые познания в области программирования. Поэтому доки "для чайников" не существует. Пока не существует. Raven сейчас кропает документик FScript-HowTo, который и должен стать такой докой. Т.е. от "полного нуля" до "вполне себе ничего". Когда выйдет - он и сам не знает. Но если выйдет, то это тут-же станет известно.

Q:Что такое препроцессор и зачем он нужен?
Для того, чтобы можно было использовать #define и #include нужна прога, называемая "препроцессор". Обычно зовётся cpp.exe, поставляется с любым C или Pascal компилятором. Рекомендуется Watcom. Который можно скачать тут. Вот дока по препроцессору.Подробнее про препроцессор и возможные проблемы с ним можно почитать здесь.

Q:Что такое макросы?
Грубо говоря, есть два типа команд:
1. Встроенные команды
2. Макросы
Встроенные команды прошиты в движке, их не нужно нигде объявлять дефайном или подключать include- ом какие-либо файлы. Если в скрипте используются встроенные команды - то препроцессор не нужен, компилятор обойдётся и без него.
Макросы - это сокращения/дополнения встроенных команд. Например, тебе часто приходитя использовать встроенную команду obj_name(dude_obj) - т.е. выводить Имя Чузена. Вместо этого ты можешь написать
#define pl_name obj_name(dude_obj)
и использовать pl_name, но теперь тебе понадобится препроцессор.

Q:Что такое GVAR, MVAR, LVAR?
Это переменные. Переменные в Fallout делятся на четыре типа:
1)GVAR. Глобальные переменные. Переменная такого типа будет доступна ВСЕМ скриптам. Значения ГВАРов сохраняются в сохраненках. (о, как!). Перед использованием, ГВАРУ надо зарегистрировать в файле fallout2/data/data/vault13.gam. Каждая переменная описывается строчкой вида:
GVAR_PLAYER_REPUTATION :=0; // (0)
Сначала идет название переменной. Оно нигде не светится, нужно, чтобы сами смогли разобраться потом. Затем идет присвоение начального значения переменной. Далее, в скобочках идет номер переменной. По этому номеру вы и будете к ней обращаться из скрипта.
Если вы собираетесь делать мод на базе карт и скриптов фола, т.е. добавляя что-то свое (например, "Новый Взгляд", то стандартные Гвары лучше не трогать. Используйте ГВАРЫ с номерами от 634 до 692.
2)MVAR. Переменные карты. Переменные такого типа будут доступны для всех скриптов карты, которой принадлежат. Значения этих переменных вроде тоже в сохраненках сохраняются. Объявляются МВАРЫ следующим образом:
а)В папку с файлом карты (fallout2/data/maps) нужно положить файл совпадающий с названием файла карты, но с расширением .gam. Т.е. для карты artemple.map это будет artemple.gam.
б)В этом файле для каждой переменной создать строчку вида:
MVAR_Made_Car :=0; // (0)
Принцип то-же самый, что и у GVAR. Т.е. название-->начальное значение-->порядковый номер.
3)LVAR. Локальные переменные скрипта. Доступны только внутри одного скрипта. Значения вроде-бы сохраняются. Объявляются в файле scripts.lst в конце строчки, описывающей скрипт выражением вида local_vars=5. Таким образом у нас будет пять LVAR'ов.
4)Variable. Не сохраняемые переменные скрипта. Доступны только внутри одного скрипта. Значения теряются, как только скрипт перестает работать. Объявляются в тексте скрипта вот такой вот конструкцией: (для компилера от BIS)
variable var_name;

Q:Слышал, что GVAR под номером 633 лучше не трогать. Почему? Она-же вроде Reserved?
Ай-ай-ай! Как нехорошо! Злые дяди из БИС подсунули наивным фанатам старую версию исходников! Не трогай гвару 633, ибо это есть очень и очень важная гвара. Эта гвара отвечает за правильное отображение машины и хранит номер тайла, на котором располагалась машина последний раз. Если ты её подпортишь, начинай считать глюки.

Q:Как из скрипта одного объекта обратиться к другому?
Можно воспользоваться экспортированием переменных (так оно и сделано в большинстве скриптов).
В скрипте карты объявляется переменная:
export variable my_obj;
Далее в скрипте объекта объявляется другая переменная:
import variable my_obj;
Ей присваивается значение указателя "на себя", например, так:
procedure start
begin
my_obj := self_obj;
end

Потом в другом скрипте её можно использовать, объявив как "импортную":
import variable my_obj;

Q:Как в диалоге в реплику Чузена или в реплику NPC вставить имя Чузена?
Допустим, ты хочешь чтобы NPC говорил
"Привет, Имя_Чузена. Как дела?"
В скрипте пишешь:
Reply("Привет, "+obj_name(dude_obj)+". Как дела?";

Q:Как переместить предмет из инвентаря NPC в инвентарь героя?
Кусок кода на примере бутылочных крышек:
variable caps;
variable num_of_caps;
//получаем указатель
caps:=obj_carrying_pid_obj(self_obj,PID_BOTTLE_CAPS);
//получаем число крышек в инвентаре
num_of_caps:=obj_is_carrying_obj_pid(self_obj,PID_BOTTLE_CAPS);
//если caps==0 - значит крышек в кармане нет
if caps !=0 then begin
//добавляем Чузу
add_mult_objs_to_inven(dude_obj,caps,num_of_caps);
//удаляем у себя
rm_mult_objs_from_inven(self_obj,caps,num_of_caps);
end else ...


Q:А если я хочу добавить не крышки, а что-то другое?
Каждый предмет имеет свой номер, то, что называется PID. Для всех одинаковых предметов PID одинаков. Т.е. два 10мм пистолета будут иметь одинаковый PID. PID нужен для добавления/удаления предметов из инвентаря, криттеров и сценери с карты. Все стандартные PID'ы объявлены в хеадерах Critrpid.h(криттеры), Itempid.h(Итемы) и Scenepid.h(сценери). В случае с крышками, значение PID_BOTTLE_CAPS может быть найдено в файле itempid.h и составляет 41.

Q:Как сделать, чтобы после разговора криттер ушел-бы с карты (переместился на другую)?
Реализуется это так: криттер рисуется в маппере в двух местах, к этим двум "копиям" вешаются одинаковые скрипты. Далее заводишь глобальный вар, отвечающий за отображение криттера на той или иной карте и используешь функцию скрыть/показать объект. Так сделано у Дантонов, например.

Q:Заметил, что вместе с маппером от БИС идут исходники скриптов от непатченной версии Фола. Что за фигня?
Так и есть. Но не стоит расстраиваться. Человек по имени Haenlomal подогнал скрипты к версии 1.02d. Скачать их можно тут.

Вопросы по .msg-файлам.


Q:В скриптах ссылки на реплики выглядят типа (751, 110), где 751 - номер *.msg файла, а 110 - номер реплики, так вот, вопрос в том где указано, какому *.msg файлу, какой номер соответствует?
MSG-файлы индексируются по DATA\SCRIPTS\SCRIPTS.LST. Например, у тебя скрипт MYSCRIPT.INT. Ентому скрипту должен соответствовать некий одноименный MSG-файл в DATA\TEXT\ENGLISH\DIALOGS\ - это MYSCRIPT.MSG. Общее имя MYSCRIPT должно фигурировать в SCRIPTS.LST, откуда и получаем общий для скрипта и файла сообщений индекс. Теоритически, можно зарегить в SCRIPTS.LST некое имя, а потом создать с этим именем только MSG-файл без скрипта, но я не пробовал так делать. Также никто тебе не мешает из скрипта вызывать фразы и MSG-файла, соответсвующего не твоему скрипту, а какому нибудь другому. В частности, так сделано в родных скриптах игры, когда нужно высвечивать некие стандартные фразы в блоках настройки персонажа - фразы типа "Убери оружие" или "Держись ко мне ближе".

Q:Как менять .msg-файлы в русскоязычной версии Фола? У меня в блокноте закорючки какие-то.
Блокнот тут не поможет. Нужен более продвинутый редактор типа Bred. Итак, открываем .msg-файл Бредом. Включаем кодировку OEM(866) если она ещё не включена. Если вы видите нормальные русские слова - поздравляем, можете дальше редактировать их в Бреде. Но при создании нового .msg-файла обязательно переключайте кодировку на OEM ещё до начала ввода текста.
Если вы видите половину русских букв, а половину всякой гадости - опять-таки поздравляем, у вас версия от "Левой Корпорации" и гимора с ней будет немного побольше. Тут нам пригодится конвертер Лев.Корп-->866 за авторством COOLer. Скачать можно здесь. С помощью проги преобразуем файл в кодировку OEM(866) и правим его в Бреде. Затем сохраняем и перегоняем из OEM в Лев.Корп.

Прочие вопросы


Q:Когда копирую нужные файлы по нужным папкам в Фалауте в data, то мод работает, а когда непосредственно пытаюсь архивировать их в patch000.dat - ничего не выходит! В чем прикол???
По поводу запаковывания в patch000.dat - дело скорее всего вот в чем. Структура папок патча такая же, как и в master.dat. Так вот, в каждой из этих папок файлы должны находиться в строгой последовательности. Если последовательность нарушена, то игра их не видит. Как правило, последовательность нарушается, когда ты пытаешься одновременно запаковать в папку файлы с разными расширениями. То есть - допустим, выбираешь импорт, и выделяешь картинки с расширением *.frm и файл с расширением *.lst
Тонкости в этом деле такие. Все файлы идут по алфавиту, независимо от расширения. Файлы, начинающиеся с цифр, идут раньше файлов, начинающихся с букв. То есть, допустим в папках proto\items сначала идут протофайлы, а в конце лист-файл. В папке scripts все по алфавиту, то есть scripts.lst находится где-то в середине.
Иногда приходится помучиться, чтобы все запаковалось так как надо. Лучше всего не импортироавть в один прием группу файлов с разными расширениями.

Q:Я внес изменения в карту(скрипт, картинку, звук), а игра все равно грузит старую версию.
Как уже было сказано выше, распакуйте patch000.dat в папку fallout2\master.dat, а затем удалите его(патч). Кроме того, Фол имеет гнусную привычку удалять .pro-файлы из папок proto/critters и proto/items, так что не забывайте ставить на них атрибут Read-only.

Тут типа конец. Подготовил (и продолжает готовить) Kovarny. В факе использованы сентенции господ Raven, Wasteland Ghost, Jochua, pal, AnDroiD и Communist.

Просьба к модераторам - приклеить тему.

(Отредактировал(а) Kovarny - 20:43 - 18 Июля, 2004)

-----
Схватился за стебель я
Чтобы в пропасть мне не упасть
А это была крапива.

Отправлено: 0:45 - 16 Июля, 2004
Anonymous
Пользователь

Откуда: Россия, г.Северск
Регистрация: Июль 2004

Всего: 10 сообщений

Почему про перенос вещей из инвентаря NPC в инвентарь чузена все в примере указывают бутылочные крышки? А как называются другие вещи и где брать их названия(или прямо так и писать:нож, пулемёт,10мм ПП)?

Отправлено: 3:48 - 16 Июля, 2004
Tehnokrat
Модератор

Откуда: Новосибирск
Регистрация: Окт. 2003

Всего: 489 сообщений

Полезно было бы ещё добавить ссылки на разделы с доками, прогами, систему поиска и FOP. Причём где-нибудь впереди. А это сообщение удалить после использования.

(Отредактировал(а) Tehnokrat - 3:51 - 17 Июля, 2004)

-----
Прошлое можно узнать, но нельзя изменить. Будущее можно изменить, но нельзя узнать.

Отправлено: 0:45 - 17 Июля, 2004
Kovarny
Пользователь

Откуда: Руссия, Новосибир ...
Регистрация: Июнь 2003

Всего: 114 сообщений

2Anonymous: Смотри ответ на свой вопрос в разделе "Вопросы по скриптам".

2Tehnokrat: Спасибо за совет.

2Moderatorz: Удалите это сообщение дня через два.

-----
Схватился за стебель я
Чтобы в пропасть мне не упасть
А это была крапива.

Отправлено: 17:46 - 18 Июля, 2004
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

to Kovarny: может быть лучше не править первоначальный пост, а просто добавлять ответы? Всё равно будут просьбы и комментарии, правку можно будет потом сделать...

Поправка:
Q:Мне нужно как-то подготовить Fallout к модификации?
A: Уточню последовательность действий:
1. Убрать из папки Fallout2 файлы master.dat, critter.dat, patch000.dat.
2. Создать в папке Fallout2 папки с именами master.dat и critter.dat.
3. Распаковать DatExplorer'ом Dims'а (например) содержимое файла master.dat в папку Fallout2\master.dat.
4. Аналогично распаковать critter.dat в папку Fallout2\critter.dat.
5. Распаковать patch000.dat в папку Fallout2\master.dat.
6. Поставить на все файлы *.pro атрибут "только чтение".
7. Скопировать музыку в папку Fallout2\master.dat\sound\music\.
8. В файле fallout2.cfg прописать следующие пути:
music_path1=F:\Fallout2\master.dat\sound\music\
music_path2=F:\FALLOUT2\data
critter_dat=F:\Fallout2\critter.dat
critter_patches=F:\Fallout2\data
master_dat=F:\Fallout2\master.dat
master_patches=F:\Fallout2\data
Здесь data - текущая рабочая папка, которую необходимо создать в папке Fallout2. В этой папке и будет весь мод.

Отправлено: 11:21 - 19 Июля, 2004
Anonymous
Пользователь

Откуда: Россия, г.Северск
Регистрация: Июль 2004

Всего: 10 сообщений

2Kovarny

А что такое хеадер и где его найти?
З.Ы.В скриптах я ещё дуб-дубом и ничего незнаю.


(Добавление от 14:46 - 19 Июля, 2004.)


2Kovarny

Не моглибы вы в следующей версии FAQ привести пример какого-либо диалога.

Отправлено: 14:40 - 19 Июля, 2004
Kovarny
Пользователь

Откуда: Руссия, Новосибир ...
Регистрация: Июнь 2003

Всего: 114 сообщений

Хеадеры - это файлы с расширением .h. (прочитай вот это) Лежат там-же, где и исходники скриптов, поставляемые с маппером от BIS. Находятся в папке headers.
Так вот, в файле itempid.h есть строчка:
#define PID_BOTTLE_CAPS                     (41)
Т.е в скрипте ты пишешь PID_BOTTLE_CAPS а при компиляции (точнее при препроцессинге) вместо этого получается 41. Подробнее см. вопрос про препроцессор.

Q:Как сделать диалог?
Теория: диалоги в Fallout устроены так: при попытке заговорить с криттером вызывается процедура talk_p_proc. В простейшем случае эта процедура переключает игру в режим диалога, передаёт управление процедуре, отвечающей за первую фразу диалога, и после завершения диалога переходит обратно в нормальный режим.
Диалог состоит из множества процедур, каждая из которых отвечает за кокретную фразу криттера и варианты ответов на эту фразу, доступные игроку. В оригинальных скриптах фола эти функции носят название NodeXXX.
Например:
procedure talk_p_proc begin
start_gdialog(NAME,self_obj,4,-1,-1);
                          gSay_Start;
                           call Node001;
                          gSay_End;
                          end_dialogue;
end

Процедура открывает окно диалога и передаёт управление процедуре Node001.
Процедуры типа Node строятся следующим образом:
procedure Node001 begin
  Reply(100);
  giQ_Option(4,NAME,120,Node002,NEUTRAL_REACTION);
end

Получился единственный вариант ответа, при выборе которого мы попадём в процедуру Node002. Чтобы добавить ещё один вариант, просто добавьте ещё одну функцию giQ_Option.
Для завершения диалога нужно создать пустую процедуру (обычно это Node999). При выборе варианта ответа, ссылающегося на неё, диалог будет завершён.

Q:Непонятно, какую роль играет та или иная функция/непонятно что значит тот или иной аргумент?
Если используется компилятор от BIS, то вам поможет следующая дока:
Функции компилятора скриптов Fallout от BIS
Люди, использующие компилер IPP идут в Fallout opcode playground.

Q:В скрипте увидел функцию, но не нашёл её в документации?
Возможно это и не функция, а макрос. Поищите её в заголовочных(header) файлах. Чтобы узнать, в каких хеадерах искать прочитайте Краткий обзор заголовков от BIS.

(Отредактировал(а) Kovarny - 0:38 - 22 Июля, 2004)

-----
Схватился за стебель я
Чтобы в пропасть мне не упасть
А это была крапива.

Отправлено: 21:04 - 19 Июля, 2004
Kovarny
Пользователь

Откуда: Руссия, Новосибир ...
Регистрация: Июнь 2003

Всего: 114 сообщений

Q:Что за процедуры такие - Node?
Обычные процедуры. Отвечают за конкретную фразу NPC в диалоге и варианты ответов на неё. Существует заблуждение, что диалоговые процедуры NodeXXX являются стандартными процедурами (вроде use_p_proc или critter_p_proc) с зарезервированными названиями. На самом деле, это БИСовцы придумали такое название, а мы вольны называть их, как хотим, хоть "bebebe" (c)Wasteland Ghost.
Стандартные процедуры имеют жёсткие названия, потому, что их вызывает движок игры. А диалоговые процедуры мы вызываем сами и наше дело как их назвать.

-----
Схватился за стебель я
Чтобы в пропасть мне не упасть
А это была крапива.

Отправлено: 21:34 - 21 Июля, 2004
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Цитата:

Q:Непонятно, какую роль играет та или иная функция/непонятно что значит тот или иной аргумент?


Кстати, в комплекте с докой, кажись, лежал и файлик bis_def.ipp - переопределённые функции для компилера ипп, их имена совпадают с именами БИСовых функций. Для использования просто включить в uses. Для фанатов старых иппшных названий могу посоветовать оный файлик в качестве базы для поиска иппшного аналога БИСовому названию. Правда, кажись, в ФОП эти аналоги есть...

Отправлено: 16:43 - 22 Июля, 2004
Alan Killenger
Пользователь

Откуда: Россия, Ижевск
Регистрация: Июль 2004

Всего: 404 сообщения

Q: Я создал item(weapon), то есть в соответствующих директориях лежат <SomeItem>.frm и <SomeNumber>.pro, прописанные в нужных lst файлах. Доподлинно: где и чем мне создать(изменить) скрипт для того, чтобы эти вещи появились в продаже(в инвентаре) у <SomeCritter>. Что я должен написать в этом скрипте.

P.S. Thanks for FAQ. Rules.

Отправлено: 19:36 - 25 Июля, 2004
 

Переход по темам
<< Пред.
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com