iDreD 5 Опубликовано 7 Января 2010 Поделиться Опубликовано 7 Января 2010 Да. Там вся фишка в том что нет "ступенек" квеста как в ТЧ. Там просто меняют текст описания при определённых условиях... Вот за этот хитрый ход уважаю ПЫС. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Rseer 0 Опубликовано 7 Января 2010 Поделиться Опубликовано 7 Января 2010 (изменено) как менять описание задания, и как это прописать? ============================== кровоSTALKER, спасибо за советы. Изменено 7 Января 2010 пользователем Rseer Ссылка на комментарий
iDreD 5 Опубликовано 7 Января 2010 Поделиться Опубликовано 7 Января 2010 (изменено) [zat_chimera_search_lck] icon = ui_inGame2_Put_v_pripyat prior = 106 storyline = false title = {-has_item(lck)}zat_chimera_lck_name_1, {+actor_has_item(lck)}{+has_lck}zat_chimera_lck_name_2 descr = {-has_item(lck)}zat_chimera_lck_text_1, {+actor_has_item(lck)}{+has_lck}zat_chimera_lck_text_2 target = {=actor_has_item(lck)}zat_a2_stalker_barmen condlist_0 = {+drop_lck_to_boroda} complete Если у ГГ нет итема описание и имя не меняются с дефолтных. А там если у ГГ есть поршн и итем (поршн выдаёшь через прикондишн(кстати можно обойтись и без поршна, но так надёжнее)) то описание менятся на другое. Изменено 7 Января 2010 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Artist 0 Опубликовано 9 Января 2010 Поделиться Опубликовано 9 Января 2010 Возможно ли в ЗП сделать повторяющиеся квесты по типу ТЧ (особенно интересуют задания типа защитить/уничтожить лагерь)? Ссылка на комментарий
iDreD 5 Опубликовано 9 Января 2010 Поделиться Опубликовано 9 Января 2010 (изменено) Нет. Генерируемые задания вырезаны в корне. Изменено 9 Января 2010 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
ZeeK 57 Опубликовано 9 Января 2010 Поделиться Опубликовано 9 Января 2010 Artist, кровоSTALKER ну можно сделать повтор одного и того же задания: как писал XMK condlist_1 = {+название_инфопоршня} reversed - если поршень есть, есть возможность повторить задание Добавлено через 1 мин.: И делаем проверку на поршень который как раз активирует данное задание-взяли, можно еще и еще раз только вот как сделать ограничение например и закрытии данного задания на n-количество часов я не предполагаю.. Добавлено через 195 мин.: И будет ли продолжаться тема? Хотелось бы еще посмотреть квесты на устранение неприятных личностей-таких как Умник в ТЧ например... Не соответствует. N6260 Ссылка на комментарий
Виталий Зверь 7 Опубликовано 10 Января 2010 Поделиться Опубликовано 10 Января 2010 (изменено) ZeeK, Ну так ты задавай вопросы по делу и тема будет продолжаться. Как вариант для генерируемых заданий... Рандом + не отключение ветки квеста после прохождения квеста. Вспомнил даже пример... Торговля Бороды... он арты скупает.Вот вам генерируемый квест. Изменено 10 Января 2010 пользователем Виталий Зверь Ссылка на комментарий
ZeeK 57 Опубликовано 10 Января 2010 Поделиться Опубликовано 10 Января 2010 Ну и у меня вопрос по делу: какую функцию нада писать для квестов на убийство левых мужиков? Не соответствует. N6260 Ссылка на комментарий
Artist 0 Опубликовано 10 Января 2010 Поделиться Опубликовано 10 Января 2010 (изменено) В ТЧ как я понимаю логика на выполнение повторяющихся квестов была прописана в task_manager.script. В ЗП task_manager.script содержит лишь задание бороды на артефакты (единственное повторяющиеся задание в ЗП), т.е фактически содержит лишь группу "принести арт" из ТЧ в слегка упрощенном варианте. Остальное тупо убрано из скрипта (убийство левых сталкеров, защита/уничтожение лагеря и т.д.). Возникает вопрос: можно ли вернуть остальные функции? Не думаю, что разрабы всё остальное вырезали и из движка (зачем это делать, когда можно просто этим не пользоваться удалив данные секции из скрипта). Т.е. логика построения данных заданий (проверки гулагов, выдача квестов и т.д.) есть в ТЧ и именно эту логику возможно можно использовать в ЗП. Здесь главное сами скрипты приноровить к новому порядку ЗП. Допустим также как и с бородой (по арту) вернуть скрипт на убийство левых сталкеров - для этого заносим скрипт из ТЧ в task_manager.script ЗП и органично вписываем данное задание, которое будет выполнятся по типу квеста с артами. Возможно где-то что-то я не так понял, возможно все мной написаное бред (я в этой области тот еще профан). Хотелось бы услышать мнения знающих людей. Насчет reversed как возможность повторить задание, тогда допустим с уничтожением лагеря необходимо условие "если гулаг заполнен, то квест повторяется", "если пуст, то квест не выдается". С убийством сталкеров тоже свои приколы: условие появления квеста уже менее важно, т.к. квест тупо может быть всегда, но ведь необходимо, чтоб квест был рандомный, т.е. цель должна быть случайна, а не прописана нами (так?), а вот это в ЗП вроде уже без дополнительных скриптовых функций не выполнить (или я не прав?). Т.е. в любом случае необходима логика из ТЧ для возможности работы повтор. квестов в ЗП. Изменено 10 Января 2010 пользователем Artist Ссылка на комментарий
XMK 24 Опубликовано 15 Января 2010 Автор Поделиться Опубликовано 15 Января 2010 (изменено) И будет ли продолжаться тема? Хотелось бы еще посмотреть квесты на устранение неприятных личностей-таких как Умник в ТЧ например... будет время... Собсна в квестах по устранению нет ничего сложного какую функцию нада писать для квестов на убийство левых мужиков? в детч_каллбек вставлять проверку по ID сталкера Изменено 15 Января 2010 пользователем XMK Ссылка на комментарий
Виталий Зверь 7 Опубликовано 17 Января 2010 Поделиться Опубликовано 17 Января 2010 Для одного человека ну и для себя делал типа справочника по функциям ЗОВа, пригодится для новичков квестописания... ======================================================================= ВЫДАЁМ ПРЕДМЕТ АКТОРУ ======================================================================= function название функции (first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "название предмета", "in") end Размещается в файлах скрипт. Выдача поршня вставляется под строку действия. <action>название скрипта.название функции</action> Примечание, что бы выдать два одинаковых предмета пишем function название функции (first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "название предмета", "in",2) end Если надо больше меняем цифру 2 на нужную нам. ========================================================================= ОТБИРАЕМ ПРЕДМЕТ У АКТОРА. ========================================================================= function название функции(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета") end размещается в файлах скрипт выдача поршня вставляется под строку действия <action>название скрипта.название функции</action> Примечание, что бы отобрать два одинаковых предмета пишем function название функции(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета",2) end Если надо больше меняем цифру 2 на нужную нам. ======================================================================= СПАВНИМ ВЕЩЬ В РЮКЗАК гг ======================================================================= function название функции() local obj = alife():create("ВЕЩЬ", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end В диалог <action>название скрипта.название функции</action> =========================================================================== ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА =========================================================================== Вариант первый function Название функции() if db.actor:object("название предмета") then return true end return false end в диалог <precondition>имя скрипта.название функции</precondition> <---------как вариант(пользуются ПЫС)------------------> function название функции(first_speaker, second_speaker) return first_speaker:object("название предмета") ~= nil end в диалог <precondition>имя скрипта.название функции</precondition> =========================================================================== ПРОВЕРКА ВЕЩЕЙ У ГГ =========================================================================== function Название функции(first_speaker, second_speaker) return first_speaker:object("название предмета") ~= nil or first_speaker:object("название предмета") ~= nil or first_speaker:object("название предмета") ~= nil end в диалог <precondition>имя скрипта.название функции</precondition> описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора ============================================================================ ПРОВЕРКА ДЕНЕГ У ГГ ============================================================================ Вариант первый(используют ПЫС) function название функции(first_speaker, second_speaker) return first_speaker:money() >= 2000 end в диалог <precondition>имя скрипта.название функции</precondition> <-----------Вариант два--------------> Использовал на ТЧ, но и в ЗП работает function название функции() return db.actor:money()>=10000 end в диалог <precondition>имя скрипта.название функции</precondition> ========================================================================= СПАВН ПРЕДМЕТА ========================================================================= function spawn_vintar() alife():create("Название предмета",vector():set(24.725412368774,-3.6072344779968,173.83030700684),993926,210) end В диалог <action>название скрипта.название функции</action> ========================================================================== МГНОВЕННАЯ СМЕРТЬ ГГ ========================================================================== function название функции(npc, actor) npc:kill(actor) end В диалог <action>название скрипта.название функции</action> =========================================================================== ПРОВЕРКА КОЛ_ВА ОДИНАКОВЫХ ПРЕДМЕТОВ =========================================================================== function название функции(first_speaker, second_speaker) local item_sections = {"Предмет"} local needed = количество одинаковых предметов, ставится цифра без знаков local count = 0 local item_section local function calc(temp, item) if item:section() == item_section then count = count + 1 end end for k,v in pairs(item_sections) do item_section = v get_story_object("actor"):iterate_inventory(calc, actor) end return count >= needed end в диалог <precondition>имя скрипта.название функции</precondition> ========================================================================== ЛЕЧЕНИЕ ГГ ========================================================================== Вставим этот актион в диалог <action>dialogs.medic_magic_potion</action> ========================================================================== ВЫДАЧА ДЕНЕГ от НПС ГГ ========================================================================== function название функции(first_speaker, second_speaker) dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000) end В диалог <action>название скрипта.название функции</action> ========================================================================== Всё проверено и работает, надеюсь поможет кому нибудь и кто то может продолжит... Ссылка на комментарий
psevdoгринго 6 Опубликовано 17 Января 2010 Поделиться Опубликовано 17 Января 2010 (изменено) Продолжу. Только функции довольно специфические, так что такого ещё нигде не писали. Начнёмс... Диалог появляется,если: function actor_good(first_speaker, second_speaker) if db.actor.health > 0.75 or --уровень здоровья, при котором диалог уже будет появляться(от 0 до 1) db.actor.radiation < 0.1 or -- уровень радиации,при котором диалог уже будет появляться(от 0 до 1) db.actor.bleeding < 0.1 then --уровень кровотечения, при котором диалог уже будет появляться(от 0 до 1) return true end return false end function if_enemy_to_actor(first_speaker, second_speaker) local npc = dialogs.who_is_npc(first_speaker, second_speaker) local actor = dialogs.who_is_actor(first_speaker, second_speaker) return xr_conditions.is_faction_enemy_to_actor(actor, npc, {"Название группировки"}) end если надо когда группировка не враждебна к актору, то return not если надо когда группировка друзья,то return xr_conditions.is_faction_friend_to_actor(actor, npc, {"Название группировки"}) когда нейтралы, return xr_conditions.is_faction_neutral_to_actor(actor, npc, {"Название группировки"}) Изменено 17 Января 2010 пользователем psevdoгринго Ушёл из модостроения Последний мод http://www.amk-team.ru/forum/index.php?sho...=60#entry351951 Ссылка на комментарий
Виталий Зверь 7 Опубликовано 20 Января 2010 Поделиться Опубликовано 20 Января 2010 (изменено) Решил выложить имена иконок к квестам, думаю понятно без перевода... ui_inGame2_Skat_4 ui_inGame2_Pripasi ui_inGame2_Naezd ui_inGame2_Nedostupniy_taynik ui_inGame2_Artefakti_na_zakaz ui_inGame2_Zamanchiviy_biznes ui_inGame2_kompas ui_inGame2_Temniy_biznes ui_inGame2_Lager_naemnikov ui_inGame2_Put_na_plato ui_inGame2_Tri_tovarisha ui_inGame2_Ohota_na_Himeru ui_inGame2_V_poiskah_Soroki ui_inGame2_Bezopasnoe_mesto ui_inGame2_Put_v_pripyat ui_inGame2_Neizvestnoe_oruzhie ui_inGame2_Propavshaya_razvedgruppa ui_inGame2_Skoplenie_monolita ui_inGame2_Propavshiy_chasovoy ui_inGame2_Razgovor_s_glazu_na_glaz ui_inGame2_Radiopomehi ui_inGame2_Neizvestniy ui_inGame2_Evakuatsiya ui_inGame2_Laboratoriya_X8 ui_inGame2_Odin_vistrel ui_inGame2_Skat_1 ui_inGame2_Pripyat_1 ui_inGame2_Ohota_na_Burerov ui_inGame2_Anomalnoe_rastenie ui_inGame2_Nochnaya_ohota ui_inGame2_Dolgi ui_inGame2_Oazis ui_inGame2_Radiotechnika ui_inGame2_Bespilotniy_razvedchik ui_inGame2_Vizhivshiy_monolit ui_inGame2_Gipoteza ui_inGame2_Peremennoe_psi_izluchenie ui_inGame2_Issledovanie_anomaliy ui_inGame2_Issledovatelskaya_gruppa ui_inGame2_Vozmezdie ui_inGame2_Chuzhie_zaslugi ui_inGame2_Zalozhnik ui_inGame2_Krazha ui_inGame2_Kopachi ui_inGame2_Kontrakt_s_uchenimi ui_inGame2_Sklad_dolga ui_inGame2_Istoriya_dolga ui_inGame2_Instrumenti ui_inGame2_Poslednie_razrabotki ui_inGame2_Ohrana_uchenih ui_inGame2_Ohota_na_Krovososov ui_inGame2_Mesta_evakuatsii ui_inGame2_Skat_2 ui_inGame2_Skat_5 ui_inGame2_Skat_3 ui_inGame2_Strannoe_yavlenie ui_inGame2_Ischeznovenie_stalkerov ui_inGame2_Logovo_krovososov ui_inGame2_Reputatsiya ui_inGame2_Osobiy_zakaz ui_inGame2_Sdelka ui_inGame2_Karti_mestnosti Вроде бы все... Ах да ещё начинающим... ========================================================================== ПОРШЕНЬ НА ОДНОРАЗОВОЕ ПРОЧТЕНИЕ ДИАЛОГА. ========================================================================== прописываем в файле info_какойто.xml <info_portion id="Название поршня"></info_portion> в конце ветки диалога запишем <give_info>Название поршня</give_info> в начале диалога под id квеста запишем <dont_has_info>название поршня</dont_has_info> =========================================================================== ПОРШЕНЬ НА СКРЫТИЕ ДИАЛОГА ДО ПРОЧТЕНИЯ ОПРЕДЕЛЁНОГО ДИАЛОГА. =========================================================================== прописываем в файле info_какойто.xml <info_portion id="Название поршня"></info_portion> В конце диалога после которого должна появиться новая ветка <give_info>название поршня</give_info> в начале новой ветки под id прописываем <has_info>название поршня</has_info> теперь новый диалог недоступен пока мы не прочтём первый ================================================================================ ========== ПОРШЕНЬ НА ЗАПРЕТ ДИАЛОГА ЕСЛИ В ПРЕДИДУЩЕМ МЫ ПОСТАВИЛИ УСЛОВИЕ ПО КОТОРОМУ ЕГО НЕ БУДЕТ ================================================================================ ========== прописываем в файле info_какойто.xml <info_portion id="Название поршня"></info_portion> В конце определяющего диалога ставим <give_info>название поршня</give_info> под id квеста(диалога) который не должен появиться прописываем <dont_has_info>название поршня</dont_has_info> Теперь диалог не появится. =============================================================================== и имена НПС на затоне... zat_b7_bandit_boss_sultan СУЛТАН zat_a2_stalker_barmen БОРОДА zat_a2_stalker_nimble Шустрый jup_a10_bandit_leader Валет zat_a2_stalker_mechanic Шуруп zat_b22_stalker_medic Вампир zat_b30_owl_stalker_trader Сыч zat_b106_stalker_gonta Гонта zat_b106_stalker_garmata Гармата zat_b38_stalker_cop Чувак сьеденый медиком zat_b38_stalker_hunter Охотник??? zat_b33_stalker_snag ???? zat_b42_mayron ????? zat_b28_draper ???????? zat_b28_umerov zat_b28_smoliak zat_b18_noah Ной zat_b215_stalker_guide Проводник???? Изменено 20 Января 2010 пользователем Виталий Зверь Ссылка на комментарий
Halford 21 Опубликовано 28 Января 2010 Поделиться Опубликовано 28 Января 2010 Если прописать on_init =%=труляля%, то это получается действие выполнится при инициализации? Или если действие выполнилось - квест инициализируется? В квестах припяти например есть: on_init = %=send_tip(st_resupply_ready:can_resupply) ... % Хотя в task_objects.script нетути послания типса... Кстати помимо reward_money есть reward_item. Хотя оно юзалось только один раз на Юпитере и то закоменчено. И вот еще вопрос. Как при начале новой игры кинуть типс что мол такой-то такой квест начинаем проходить? Ссылка на комментарий
XMK 24 Опубликовано 28 Января 2010 Автор Поделиться Опубликовано 28 Января 2010 судя по всему, on_init является не условием запуска квеста, а тем что выполняется после выдачи квеста. функция send_tip есть в xr_effect reward_item необходимо протестировать, возможно у меня скоро это получится Как при начале новой игры кинуть типс... найти откуда выдаются квесты на вертолеты, оттуда же вызвать свой квест, типс выдается автоматом ("Новое задание: название"). если нужно доп.типс то там же где выдается квест вбить еще: news_manager.send_tip(db.actor, "текст", timeout, "sender", showtime) timeout - задержка sender - иконка pioneer mutant_hunter detective one_of_the_lads kingpin herald_of_justice seeker battle_systems_master high_tech_master skilled_stalker leader diplomat research_man friend_of_duty friend_of_freedom balance_advocate wealthy keeper_of_secrets marked_by_zone information_dealer friend_of_stalkers got_artefact got_ammo got_medicine got_duty_light_armor got_duty_heavy_armor got_freedom_light_armor got_freedom_heavy_armor can_resupply recent_surge showtime - время показывания Как будет время статью отредактирую и напишу для примера квест по сложней. Ссылка на комментарий
monk 2 846 Опубликовано 28 Января 2010 Поделиться Опубликовано 28 Января 2010 (изменено) [spoiler=Дополнение к посту №53:]zat_b38_stalker_cop Глухарь zat_b38_stalker_hunter Данила zat_b33_stalker_snag Каряга zat_b42_mayron Майрон zat_b215_stalker_guide Лоцман zat_b14_stalker_1 Вобла zat_b7_duty_illicit_dealer торговец Долга zat_b5_stalker_commander Спартак zat_b103_lost_merc_leader Тесак zat_b40_merc_squad_leader_1 наёмник Крюк zat_b40_merc_squad_leader_2 наёмник Хребет zat_b44_stalker_barge Баржа zat_b53_artefact_hunter_1 Петруха zat_b53_artefact_hunter_2 Шило zat_b29_stalker_rival_1 Кувалда zat_b28_draper Драпей zat_b28_umerov Умеров zat_b28_smoliak Смоляк - погибшие на плато десантники zat_b100_army_1 Газда zat_b100_army_2 Фуртес zat_b100_army_3 Швейко - погибшие в Железном лесу десантники Изменено 28 Января 2010 пользователем monk Ссылка на комментарий
Po-meceniy 4 Опубликовано 28 Января 2010 Поделиться Опубликовано 28 Января 2010 Создал свой квест, во время получения - вылет : Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : .... - Зов Припяти\gamedata\scripts\news_manager.script:209: attempt to concatenate local 'news_text' (a nil value) Ссылка на комментарий
Halford 21 Опубликовано 28 Января 2010 Поделиться Опубликовано 28 Января 2010 Po-meceniy, выдавай типс с помощью news_manager.send_tip(db.actor, "текст", timeout, "sender", showtime). У тебя нет самого тектса что послать нужно... Ссылка на комментарий
XMK 24 Опубликовано 28 Января 2010 Автор Поделиться Опубликовано 28 Января 2010 Возможно просто текст указан без ковычек. Po-meceniy лучше давай в таких случаях код квеста, легче будет сказать в чем проблема.... Ссылка на комментарий
Po-meceniy 4 Опубликовано 28 Января 2010 Поделиться Опубликовано 28 Января 2010 Вот код квеста из тм_затон : [quest_zapisi_give] icon = ui_inGame2_Karti_mestnosti prior = 100 storyline = false title = {+zapisi_spawned} find_zapisi descr = {+zapisi_spawned} find_zapisi_descr condlist_0 = {+zapisi_found} complete ЗЫ. А где вообще этот типс выдавать? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти