Новое на сайте:
Новости:
Файлы:
Статьи:
Топ пользователей:
Обновления сайта:
Группа "Гости" не имеет право просмотра модуля
Модератор форума: romale |
Форум » S.T.A.L.K.E.R. - Моддинг » Разбираем S.T.A.L.K.E.R. » Поиск по теме "Разборочная комната ТЧ" |
Разборочная комната ТЧ |
Дата: Суббота, 08.12.2012, 23:40
Сообщение #1
1andrei9,
Quote (1andrei9) не договорил до конца с Костей при здачи тайника.И теперь нет задания на тайник в Х-10. Quote (1andrei9) как правильно прописать Волку на АС диалог Костика о тайнике в Х-10.Я прописал, а диалога нет. И не будет, раз у Кости не было. Вообще не понятно, как такая ситуация могла произойти, что "не договорил".. Может тут "автосейв" глюканул и какой-то поршень не успел отработать? Бывает с ним такое.. Короче, не парься с прописками диалогов, это вряд ли уже поможет.. Пиши подробный состав своей сборки, начиная с патча ТЧ (1.0004/5/6) и выкладывай сюда сохранку рядом с Костей, сделаем что нибудь. Или переигрывай с сохранки ПЕРЕД сдачей Косте предыдущего тайника. Вы ленивы, следовательно вы изобретательны.. (Граф Де Гиш) Сообщение отредактировал romale - Суббота, 08.12.2012, 23:41 |
Дата: Воскресенье, 09.12.2012, 07:43
Сообщение #2
Quote (1andrei9) А если не переигрывать Попробовал повторить твою ситуацию на своей сборке.. Костя действительно не хочет продолжать разговор и выдавать задание на тайник, если прервать диалог по сдаче ему предыдущего (только вот зачем тебе нужно было прерывать - я так и не понял).. Короче, делай так - открывай файл: \gamedata\scripts\bind_stalker.script , там найди строку: function actor_binder:update(delta) Сразу под ней вставь эту: db.actor:disable_info_portion("kostya_radar_taynik_done") чтоб получилось так: -- malandrinus scopeUsed = false function actor_binder:update(delta) db.actor:disable_info_portion("kostya_radar_taynik_done") -- malandrinus -- watch_value = game.time() Сохраняешь изменения, загружаешь сохранение рядом с Костей и вызываешь меню диалога с ним, там должна снова появиться строка: "Все, Костя, последний ПДА найден!" Если появилась - на нее не нажимать и диалог не продолжать!!! Сохраняешься(!), выходишь из игры и удаляешь (обязательно!) строку которую ранее добавил. Опять сохраняешь изменения в файле и загружаешь игру с ранее сделанной сохранки. Говоришь с Костей и получаешь наводку на тайник в х10, все. ЗЫ. Можно конечно и сразу запустить поршень на выдачу задания по тайнику в х10, вставив такую строку: db.actor:give_info_portion("kostya_x10_taynik_start") Отработает нормально, но уже без участия Кости, а это, какбэ, не интересно Вы ленивы, следовательно вы изобретательны.. (Граф Де Гиш) Сообщение отредактировал romale - Воскресенье, 09.12.2012, 08:15 |
Дата: Понедельник, 29.04.2013, 21:52
Сообщение #3
TA-06, это как вешки в лесу, по которым идут охотники...
Представьте - у вас есть миллион долларов. Узнали об этом бандиты и начали на вас охоту. А что если у вас нет этого миллиона? Правильно - ничего. Также и с инфопоршенами. Надо нам выдать квест - выдаем игроку поршень. Надо нам его обновить - выдаем еще один. Пример реализации на простом квесте - найти и принести: Код <game_task id="naiti_taynik"> <title>Найти тайник в лаборатории</title> <objective> <text>Найти тайник</text> <icon>ui_iconsTotal_find_item</icon> <article>naiti_taynik_task</article> <infoportion_complete>taynik_nayti_done</infoportion_complete> </objective> <objective> <text>Найти тайник</text> <icon>ui_iconsTotal_find_item</icon> <function_complete>dialog.check</function_complete> <infoportion_complete>taynik_nayti_have</infoportion_complete> </objective> <objective> <text>Вернутся к сталкеру</text> <icon>ui_iconsTotal_find_item</icon> <infoportion_complete>taynik_nayti_done</infoportion_complete> </objective> </game_task> И сам поршень, который активирует квест: Код <info_portion id="taynik_nayti_start"><task>naiti_taynik</task></info_portion> Выдаем ГГ поршень taynik_nayti_start, поршень активирует в ПДА квест с id naiti_taynik. Код <function_complete>dialog.check</function_complete> --- Проверка условия. Тут может быть что угодно, зависит от задумки и фантазии. В итоге ф-ия выдает ГГ поршень taynik_nayti_have. <infoportion_complete>taynik_nayti_have</infoportion_complete> -- стадия квеста, при получении этого поршня, квест перейдет на новую стадию (если она прописана, т.о можно создать сколько угодно длинный квест со своим блекджеком и ...). <infoportion_complete>taynik_nayti_done</infoportion_complete> --- схлопывает наш квест при наличии данного поршня. Т.е квест становится завершенным. ЗЫ: Прописывание конструкции вида: Код <infoportion_fail>fail</infoportion_fail> Приведет к тому, что квест провалится. Применимо как ко всему квесту - так и для стадий. |
Дата: Вторник, 30.04.2013, 21:10
Сообщение #4
TA-06,
<has_info> - ставится для проверки, после которой диалог станет доступен. <dont_has_info> - ставится в начале диалога для того, чтобы диалог после прочтения исчез из списка доступных. Т.е был одноразовым. При желании - эти 2 параметра можно поменять местами, будет наоборот. ЗЫ: Например: Код <dont_has_info> бла бла бла <give_info> В <give_info> выдается поршень, который проверяется в <dont_has_info> и если он выдан - то диалог исчезает. Т.е проверяемый и выдаваемый поршни должны быть одинаковыми. точно также и с <has_info>. Если есть проверяемый поршень - то диалог появится. |
Дата: Четверг, 02.05.2013, 16:46
Сообщение #6
Цитата (volazar) Секция on_death в логике. Сама выдача через on_info. Да, я этот вариант рассматривал, конкретно у меня надо выдать инфопоршень о том что убиты 5 НПС, у них у всех в логике одна одинаковая секция на смерть Код on_death = death@killer Код [death@killers] on_info = %+esc_open_lager_fire +esc_open_killer_fire% Сообщение отредактировал Graff46 - Четверг, 02.05.2013, 16:47 |
Дата: Четверг, 02.05.2013, 16:50
Сообщение #7
Graff46, Если просто схематично, то действия примерно такие:
Есть несколько НПС(для примера возьмем троих) с какой либо логикой, и еще у них в логике должны быть например такие блоки: у первого НПС Код [logic] on_death = death [death] on_info = %+pomer1% у второго НПС Код [logic] on_death = death [death] on_info = %+pomer2% у третьего НПС Код [logic] on_death = death [death] on_info = %+pomer3% т.е. здесь мы видим, что при смерти первого НПС выдается инфопоршень pomer1, при смерти второго выдается инфопоршень pomer2, при смерти третьего выдается инфопрошень pomer3. Необходимо, чтобы они были зарегестрированы в файле info_локация.xml в таком виде: Код <info_portion id="pomer1"> </info_portion> <info_portion id="pomer2"> </info_portion> <info_portion id="pomer3"> </info_portion> <info_portion id="pomerli_vse"> </info_portion> затем нам надо отследить эти инфопоршни, для этого создаем функцию: Код function kto_u_nas_pomer(task, info) if db.actor and db.actor:has_info("pomer1") and db.actor:has_info("pomer2") and db.actor:has_info("pomer3")then return db.actor:give_info_portion("pomerli_vse") end return false end В принципе подготовительная часть закончена. При смерти этих НПС будут выданы нужные инфопоршни, функция отследит их и выдаст "общий" инфопоршень pomerli_vse на котором уже можно "привязать" завершение задания, появление нужного диалога ну и т.д. |
Дата: Четверг, 02.05.2013, 16:57
Сообщение #8
и вот
Код [logic@esc_killer3_raid] active = walker@esc_killer3_raid on_hit = hit@killers on_death = death@killers combat_ignore = combat_ignore и так все киллер 1, киллер2, киллер3 и тд до 5го Добавлено (02.05.2013, 16:52) --------------------------------------------- Цитата (Frankenshtayn) Если просто схематично, то действия примерно такие: Так же в туторах написано, но не хотелось трогать логику нпсов Добавлено (02.05.2013, 16:57) Сообщение отредактировал Graff46 - Четверг, 02.05.2013, 16:57 |
Дата: Четверг, 02.05.2013, 17:37
Сообщение #9
Graff46, А задание то выдано? Значит где то нестыковка. Задание обновляет 1 поршень, а при смерти выдается другой. Пропишите свои и проверьте.
Цитата (Graff46) но не хотелось трогать логику нпсов Если нужно, что бы все было хорошо - без логики не обойтись. |
Дата: Воскресенье, 05.05.2013, 14:10
Сообщение #10
Цитата (Graff46) Подскажите как можно вызвать ф-ию при старте новой игры? Вариантов - море. Как пример в bind_stalker.script в тело функции actor_binder:update(delta) пишите: Код if not has_alife_info("info") then ...... db.actor:give_info_portion("info") end Вместо многоточия вставляете что нужно. Поршень info надо не забыть зарегистрировать в info_***.xml Цитата (Graff46) где лежит модель ноутбука \gamedata\meshes\equipments\item_notebook.ogf |
Дата: Воскресенье, 05.05.2013, 17:41
Сообщение #11
Не работает, я похоже так же делал. Ну её в пень! Я потом через аллСпавн сделаю.
Проверте пожалуйста ф-цию - она должна переводить нпс в оффлайн, выдавать инф.поршень Код fan_1 Код function fan_v_off(actor, npc) local npc = alife():story_object(022) if npc then alife():set_switch_online (npc:id (), false) alife():set_switch_offline (npc:id (), true) end if npc and level.name() == "alife_l07_military" then alife():set_switch_online (npc:id (), true) alife():set_switch_offline (npc:id (), false) end db.actor:give_info_portion("fan_1") end |
Дата: Воскресенье, 05.05.2013, 18:54
Сообщение #12
Ещё вопрос. Если сделать так:
Код [smart_terrains] esc_lager = {-fan_1} mil_lager = {+fan_1} А если нпс перевести в оффлайн, а потом уже дать поршень на перемещение, то он "мгновенно" туда переместиться или будет также "идти"?? Сообщение отредактировал Graff46 - Воскресенье, 05.05.2013, 18:54 |
Дата: Понедельник, 13.05.2013, 20:34
Сообщение #14
TA-06, по второму вопросу:
По поводу получения инфопоршня при взятии предмета. Открываем bind_stalker.script и ищем такую функцию: Код function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) if xrs_ai then xrs_ai.actor_item_take(obj) end --game_stats.update_take_item (obj, self.object) inventory.on_item_take(obj) end И вносим в нее такие изменения: Код function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) if obj and obj:section() == "взяли_предмет" then db.actor:give_info_portion("получили инфопоршень") end if xrs_ai then xrs_ai.actor_item_take(obj) end --game_stats.update_take_item (obj, self.object) inventory.on_item_take(obj) end Здесь, при взятии ГГ предмета с именем "взяли предмет"(ну например wpn_vintorez) получаем инфопоршень "получили инфопоршень"(например vzjali_vinto) Или, если нужно отследить несколько предметов, то приводим эту функцию к такому виду: Код local my_info_table = { предмет1 = "инфопоршень1", предмет2 = "инфопоршень2" } function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) --game_stats.update_take_item (obj, self.object) if my_info_table[obj:section()] then db.actor:give_info_portion( my_info_table[obj:section()]) end end В данном случае, таблицу можно заполнять практически бесконечно. А уж при получении инфопоршня, можно произвести великое множество действий, от запуска эффектов и озвучки, до спавна НПС и монстров, и до... В общем, куда фантазия заведет. ЗЫ. Естественно свои инфопоршни нужно регестрировать в info_локация.xml |
Дата: Вторник, 14.05.2013, 01:04
Сообщение #15
TA-06, начнем по порядку.
Для начала - активная схема "ремарк" в общем не используется... Но если уж нет возможности распаковать аллспавн, и если данный НПС "просто одноразовое мясо", то ладно, можно попробовать. Код [logic] active = remark@zombied danger = danger_condition meet = meet Хорошо, должно работать...(если этого НПС не "спугнут", если его монстр "не потревожит", ну и т.д.) Далее: Код [remark@zombied] anim = trans_zombied no_move = true target = actor on_timer = 60000 meet = meet@zombied danger = danger_condition И что это означает:? Код on_timer = 60000 Т.е. через 60 секунд у тебя происходит непонятно что... В данном случае эта строка не нужна. Код meet_dialog = escape_lager_guard_start_dialog Хорошо, это уникальный диалог для данного НПС, есть такое в логике. Код on_actor_dist_ge = 30| %+talk_with_crazy% здесь - если ГГ отошел на 30 метров от данного НПС, получаем инфопоршень talk_with_crazy - это работает, если он нужен вообще. Код on_info = {+talk_with_crazy} remark@suicide |
Дата: Вторник, 25.06.2013, 14:05
Сообщение #16
Цитата (KADAR) Почему в скате сообщение один раз приходит? Для начала разберись, что вызывает СМС - функция или поршень. Функция может отрабатываться бесконечно, как уже озвучено было, а поршень имеет, грубо говоря, "свойство" одноразовости, его надо "обновлять" , например: db.actor:disable_info_portion("твой поршень") Это "пример для думок", т.к. он фактически из "хелпов по Луа". Как его применять - дело мододела, тем более не всегда срабатывает, если есть завязка на ИД. Сообщение отредактировал Korpus - Вторник, 25.06.2013, 14:05 |
Дата: Воскресенье, 30.06.2013, 10:46
Сообщение #17
Graff46, Осваивайте таймеры. Пример:
Код local time_1000, time_5000 function any_update() local time = time_global() --/ текущее время if not time_1000 then --/ предустановка таймеров time_1000 = time + 1000 time_5000 = time + 5000 + time_1000/2 end if time_1000 < time then time_100 = time + 1000 --- Действия, которые надо производить с частотой раз в 1 сек end if time_5000 < time then time_5000 = time + 5000 --- Действия, которые надо производить с частотой раз в 5 сек end end Вам остается только разделить свою функцию и поставить ее на "отложенный" апдейт. Время можно изменить как заблагорассудится. Если вызываете из диалога и т.д то есть загвоздка - ф-ия срабатывает 1 раз всего, ставить туда таймер - бессмысленно, нужен постоянный апдейт. Как решение - проверять в функции и выдавать поршень в таймере, после чего он будеет срабатывать. |
Дата: Четверг, 01.08.2013, 20:48
Сообщение #18
Доброго всем времени суток !
Возникла проблема в прохождении мода Альтернатива - надо поговорить с Анархистом для продолжения квеста " Легенда", но в дверях "забуксовала" Зоя ( дверь в квартиру , где Анархист находится)... Около суток пытаюсь пройти , что только не делал : сейвился - перезаходил , спал , переходил на другую локацию ... Подскажите пожалуйста , как можно протолкнуть инфопоршень с разговором или переписать диалог с ним на другого НПС ? P.S. я рядовой геймер , поэтому просьба как можно подробнее расписать процесс Сталкер , помни - мы тебя любим ! Но наши СВД нас постоянно ревнуют ... С уважением Братство Монолита ( S.T.A.L.K.E.R_SNIPER ) Сообщение отредактировал Xeonc - Четверг, 01.08.2013, 21:25 |
Дата: Вторник, 27.08.2013, 20:28
Сообщение #19
Друзья, всем привет. Вопрос: добавил локацию darcscape. Добавил файл профилей и диалогов, прписал эти файлы в sistem.ltx все в порядке, файлы работают. А вот где прописывается файл диалога rus/stable_dialog_darcscape? А то приходится нагружать файл русских диалогов кордона.
И еще, может кто сталкивался с таким вылетом Какой-то инфопоршень. Вроде как не хватает какого-то предмета? Вылет на локации, которую мне дали. Происходит на окраине, почти на выходе. Я там еще не успел напортачить, потому не знаю в каком направлении искать. В аллспавне вроде ничего не соответствующего не заметил. |
Дата: Вторник, 27.08.2013, 20:48
Сообщение #20
butrikA, Вылет из-за того, что нет инфопоршня - ds_delete_changer. Добавь его в любой из файлов info_***.xml
Возможно где то стоит рестриктор, раз именно на окраине такой вылет. При попадании в рестриктор выдается поршень и т.д Посмотри поиском по алл спавну этот поршень. Если нет, тогда в заданиях, если и там нет - осмотри файлы логики. Проще всего в тотал коммандере сделать поиск по фразе в нужной папке. По поводу диалогов, новый файл добавляется в system.ltx, секция [dialogs]. Там думаю поймешь как прописать, живой пример есть |
| |||