|
Raven
Пользователь
Откуда: Владик Регистрация: Февр. 2004
Всего: 408 сообщений
|
Я снова в деле. К доке за это время добавилось две главы.
|
Отправлено: 11:13 - 21 Авг., 2004
|
|
YikxX
Пользователь
Откуда: NCR :) Регистрация: Февр. 2004
Всего: 304 сообщения
|
Народ, объясните плиз новичку, как компилировать скрипты. Скачал компилятор с этого сайта, а скомпилить им ничего не могу - все время какие-то ошибки выдает. Пробую компилить так - ipp.exe имя_скрипта.ipp Я так пологаю, что чего-то не хватает? Подскажите плиз. И еще - Процедура смерти (любыми способами) НПС прописана в его скрипте, я полагаю? Имеет ли она какое-нибудь стандартное название для всех? Можно ли туда вписать присвоение значения какой либо переменной во время смерти? И последнее Есть ли какая-нибудь GVAR, которая ставится в 1 если жители Арройо похищены Анклавом? В какой момент она устанавливается в 1?
----- Обломись! Я подложил туда носок...
|
Отправлено: 9:31 - 23 Авг., 2004
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Kovarny в своем FAQ ответил на вопрос: "Q:Как из скрипта одного объекта обратиться к другому? Можно воспользоваться экспортированием переменных (так оно и сделано в большинстве скриптов). В скрипте карты объявляется переменная: export variable my_obj; Далее в скрипте объекта объявляется другая переменная: import variable my_obj; Ей присваивается значение указателя "на себя", например, так: procedure start begin my_obj := self_obj; end Потом в другом скрипте её можно использовать, объявив как "импортную": import variable my_obj;" Я считаю, что ввиду изначальной специфичности вопроса, ответ был именно такой, каким ему и надлежало быть дабы не растягиваться на несколько страниц. Но лично я не понял ни вопроса ни ответа на него и, так как здесь обсуждению скриптов самое место.. : Какова цель обращения из одного скрипта к другому: вызов процедуры чужого скрипта или запрос значений? Что конкретно указывают export и import? Зачем нужно задействовать скрипт карты? Почему бы тогда просто не использовать MVAR? Что означает "присваивается значение указателя "на себя""? Что должно получится в итоге: общая внутренняя переменная двух скриптов? Ну и так далее.. Дайте плиз кто-нибудь развернутый ответ.
----- hit me, nail me, make me god
|
Отправлено: 22:31 - 23 Авг., 2004
|
|
Perceptron
Модератор
Откуда: Ivanovo Регистрация: Май 2003
Всего: 502 сообщения
|
>Скачал компилятор с этого сайта, а скомпилить им ничего не могу - все время какие-то ошибки выдает. Вопрос прямо в ФАК. IPP включает в скрипт при компиляции стандартные переменные. Если ты используешь декомпилированный скрипт, то там эти переменные уже есть. Это источник ошибок. Если хочешь простой жизни, используй другие компиляторы. Или удали эти переменные - смотри файл new_scr.ipp. >И еще - Процедура смерти (любыми способами) НПС прописана в его скрипте, я полагаю? Обработчик destroy_p_proc. Переменную, конечно, можно. См. доки по скриптам.И последнее >Есть ли какая-нибудь GVAR, которая ставится в 1 если жители Арройо похищены Анклавом? Предполагаю, что есть. Надо декомпилировать скрипты (возможно, obj_dude.int). >Какова цель обращения из одного скрипта к другому: вызов процедуры чужого скрипта или запрос значений? Никаких процедур из другого скрипта не вызывается. Это нужно для обмена инфой. >Что конкретно указывают export и import? export - видимо то, что эта переменная может использоваться вне скрипта, import - то, что эта переменная внешняя, другого скрипта. >Зачем нужно задействовать скрипт карты? Не знаю, но БИСовцы так делали. >Что означает "присваивается значение указателя "на себя""? Нет никакого присваивания на себя. Есть пример, в котором переменной присваивается значение (вызовом функции). >Что должно получится в итоге: общая внутренняя переменная двух скриптов? Переменная, кот. могут пользоваться оба скрипта. Посмотри скрипт Нагора (ACNagor.int) и его пса Смока (ACDog.int). Это пример использования скрипта. Еще посмотри скрипт карты (ArVillag.int, по-моему) - там должна быть объявлена экспортная переменная. Просто все обычно делается по образу и подобию БИС.
----- Into The New Year - With A New Vision! Документация по скриптам, туториал по скриптам, вопросы по скриптам, FAQ по моддингу, "Утилиты", fallmods-tutor.
|
Отправлено: 2:06 - 24 Авг., 2004
|
|
Raven
Пользователь
Откуда: Владик Регистрация: Февр. 2004
Всего: 408 сообщений
|
>>Какова цель обращения из одного скрипта к другому: вызов процедуры чужого скрипта или запрос значений? Никакого "обращения" не происходит. Объясняю. Переменная, прописанная в скрипте карты с ключевым словом export будет доступна ВСЕМ скриптам на карте - как на чтение, так и на запись. Хранить в этой переменной можно всё, что угодно - PID, указатель, число денег, причитающихся Чузу - в общем, всё. Пример: по результатам разговора с одним персонажем Чуз должен получить некоторое количество денег от другого. Число денег генерируется автоматически в скрипте первого НПС. Как второму узнать сколько денег выдавать? Используем импорт/экспорт. В скрипте карты пишем: export variable money_to_give; Теперь переменная money_to_give потенциально доступна всем объектам на этой карте. В скрипте первого НПС (генератора числа денег) пишем: --------------------------- <...> //Импортируем переменную, т.е. делаем её доступной для этого скрипта import variable money_to_give; <...> //Какая-то процедура генерации денег procedure generate_amount begin <...> //Присваиваем экспортной переменной сгенерированную сумму money_to_give:=generated_cash; end <...> --------------------------- Всё, теперь переменная money_to_give хранит подлежащую выдаче сумму денег. В скрипте НПС2 (выдающий) пишем: --------------------------- <...> import variable money_to_give; <...> procedure give_money begin <...> //Передаём Чузу сгенерированную сумму item_caps_adjust(dude_obj,money_to_give); <...> end <...> --------------------------- Пример2 (передача указателя): Карта: --------------------------- export variable ptr_npc1; --------------------------- НПС1: --------------------------- <...> import variable npc1; procedure start begin //Присваиваем экспортной варе указатель "на себя" npc1:=self_obj; end <...> --------------------------- НПС2: --------------------------- import variable ptr_npc1; <...> display_msg("NPC1 tile="+tile_num(npc1)); display_msg("NPC1 meelee skill="+has_skill(npc1,SKILL_MEELEE)); --------------------------- НПС3: --------------------------- import variable ptr_npc1; <...> display_msg("NPC1 elev="+elevation(npc1)); display_msg("NPC1 doctor skill="+has_skill(npc1,SKILL_DOCTOR)); --------------------------- Теперь вместо денег мы сделали общедоступным указатель на НПС1. Теперь любой объект может импортировать эту переменную и использовать хранящейся в ней указатель для получения необходимой информации о НПС1 - номер тайла, уровень, предметы в инвентаре, скилы, характеристики - всё что угодно, любая информация об объекте может быть получена, если мы знаем указатель на него. Как видишь, "импортёров" вары может быть сколько угодно. Надеюсь, теперь понятно. >>Почему бы тогда просто не использовать MVAR? Да, можно использовать MVAR. В этом случае скрипт карты можно не править, в скрипте одного НПС пишем: --------------------------- //обычно пользуют start, но можно и m_e procedure map_enter_p_proc set_map_var(MVAR_var,self_obj); end --------------------------- Для остальных НПС: --------------------------- //пользуемся импортной переменной variable var; var:=map_var(MVAR_var); --------------------------- Но это плохой стиль. MVAR-ы запоминаются в сейвах. Зачем хранить на жёстком диске какой-то указатель на объект, тем более, указатель каждый раз разный. Проще импорт/экспорт. >>Что должно получится в итоге: общая внутренняя переменная двух скриптов? Общая внутренняя глобальная переменная всех скриптов на карте, которые эту переменную импортировали. (Добавление от 5:43 - 24 Авг., 2004.) >>Народ, объясните плиз новичку, как компилировать скрипты. Ну ты даёш, Икс. Новичок, блин :-) Сто лет в комьюнити уже :-) Бум обучать. >>Скачал компилятор с этого сайта, а скомпилить им ничего не могу - все время какие-то ошибки выдает. Во-первых: лучше переходи на БИС, ты же скрещиванием модов занимаешся, тут всё скрипты под BIS compiler обычно пишутся. Во-вторых: что компилишь? Запейсти кусок. >>Я так пологаю, что чего-то не хватает? Подскажите плиз. Скрипт с багами, вестимо. Или умный человек использовал препроцессорные директивы (обычно, ИППсты этого не делают). Проверь скрипт на наличие строчек #define, #include, #ifndef. >>И еще - Процедура смерти (любыми способами) НПС прописана в его скрипте, я полагаю? Никакой "процедуры смерти" нет. Анимация смерти выбирается/отрисовывается движком, скрипты здесь не при чём. Но в момент смерти персонажа срабатывает обработчик destroy_p_proc, во время получения повреждений (любых, из любого источника) - damage_p_proc и в ряде случаев срабатывает combat_p_proc >>Можно ли туда вписать присвоение значения какой либо переменной во время смерти? Да, следующим образом: ----------------------------- procedure destroy_p_proc begin //обычный стафф - inc_good/bad_critter и т.п. <...> //ставим переменную set_global_var(GVAR_pogib_smertyu_hrabrih,1); end ----------------------------- >>И последнее Есть ли какая-нибудь GVAR, которая ставится в 1 если жители Арройо похищены Анклавом? Да, под прогресс по основной сюжетной линии существует вара GVAR_FALLOUT_2 и макросы: set_f2, force_f2, get_f2, f2_flag_any. Флаги, хранящиеся в этой ГВАРЕ (точнее, их названия, сами флаги цифровые, от 0 до 8): f2_state_v13_looking f2_state_v13_known f2_state_v13_found f2_state_v13_entered f2_state_tribe_kidnapped f2_state_fix_tanker //возможно, не используется f2_state_tanker_fix_known f2_state_tanker_fixed f2_state_enclave_destroyed Тебя, видимо, интересует f2_state_tribe_kidnapped. >>В какой момент она устанавливается в 1? При первом заходе в ardead.map (разбитая деревня). Устанавливается из скрипта Хакунина (типа, умирающего). Попутно на карте открывается локация Наварро. Отследить момент смены "Живое Арройо - мёртвое Арройо". Мне пока не удалось. Ну, я не особо-то и пытался, если честно :-)
|
Отправлено: 5:11 - 24 Авг., 2004
|
|
YikxX
Пользователь
Откуда: NCR :) Регистрация: Февр. 2004
Всего: 304 сообщения
|
Ну, в скриптинге Фола то я новичок Я счас перешел на Нойдовский компайлер/декомпайлер - проблем пока нет. Ясно. То есть после смерти Хакунина GVAR_FALLOUT_2 == 4 так я понимаю? > f2_state_fix_tanker //возможно, не используется Похоже, это действительно так. В скрипте капитана Рона Майерса (который рассказывает, как починить танкер и как им управлять) устанавливаются только флаги 6 и 7. Да и еще. Что это за команда/оператор - op_metarule? еще я встречал - op_metarule3 Что сие такое?
----- Обломись! Я подложил туда носок...
|
Отправлено: 9:23 - 24 Авг., 2004
|
|
Raven
Пользователь
Откуда: Владик Регистрация: Февр. 2004
Всего: 408 сообщений
|
>>Ясно. То есть после смерти Хакунина GVAR_FALLOUT_2 == 4 так я понимаю? Да. >>Да и еще. Что это за команда/оператор - op_metarule? еще я встречал - op_metarule3 Что сие такое? См. доку от WG. В BIS это соответственно metarule и metarule3 - комплексные многогранные команды с огромным числом параметров.
|
Отправлено: 11:15 - 24 Авг., 2004
|
|
YikxX
Пользователь
Откуда: NCR :) Регистрация: Февр. 2004
Всего: 304 сообщения
|
Новый вопрос на засыпку. Как и где прописывается взятие какого-либо квеста? Я полагаю, что в скрипте того, у кого квест берешь? И закрытие его наверное там же? Для этого какая-нибудь специальная команда существует? А то счас заметил прикол - когда сдаешь Бекки первый квест (про Фрэда и его долг), сразу же в ПИП-бое прописывается квест на Дерека и книгу, хотя я Бекки об этой работе еще и не спрашивал. Хотел исправить, лазил, лазил в скрипте Бекки - так и не разобрался в чем там косяк. Help!
----- Обломись! Я подложил туда носок...
|
Отправлено: 14:16 - 2 Сент., 2004
|
|
izuk3n
Deleted Регистрация: N/A
Всего: N/A сообщений
|
посмотри master.dat//data/quests.txt там всё разъяснено
|
Отправлено: 14:23 - 2 Сент., 2004
|
|
escapist
Пользователь
Откуда: В. Новгород Регистрация: Авг. 2004
Всего: 34 сообщения
|
Появилась у меня тут пара вопросиков: -Что такое AI Packet у криттера? -Как я понял float_msg предназначена для отображения реплик криттеров, которые появляются над их головами? Тогда правильно ли я написал для этого процедуру и когда она должна вызываться? procedure QQQ begin float_msg(self_obj,127,1); end -И еще: какая еще может быть реакция, кроме нейтральной, и на что она влияет? giQ_Option(4,NAME,114,Node003,NEUTRAL_REACTION); (Отредактировал(а) escapist - 11:20 - 20 Сент., 2004)
|
Отправлено: 19:58 - 19 Сент., 2004
|
|
|
|