iDreD 5 Опубликовано 7 Января 2010 Поделиться Опубликовано 7 Января 2010 Да. Там вся фишка в том что нет "ступенек" квеста как в ТЧ. Там просто меняют текст описания при определённых условиях... Вот за этот хитрый ход уважаю ПЫС. Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-357536
Rseer 0 Опубликовано 7 Января 2010 Поделиться Опубликовано 7 Января 2010 (изменено) как менять описание задания, и как это прописать? ============================== кровоSTALKER, спасибо за советы. Изменено 7 Января 2010 пользователем Rseer Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-357539
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-357542
Artist 0 Опубликовано 9 Января 2010 Поделиться Опубликовано 9 Января 2010 Возможно ли в ЗП сделать повторяющиеся квесты по типу ТЧ (особенно интересуют задания типа защитить/уничтожить лагерь)? Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-358533
iDreD 5 Опубликовано 9 Января 2010 Поделиться Опубликовано 9 Января 2010 (изменено) Нет. Генерируемые задания вырезаны в корне. Изменено 9 Января 2010 пользователем кровоSTALKER Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-358774
ZeeK 62 Опубликовано 9 Января 2010 Поделиться Опубликовано 9 Января 2010 Artist, кровоSTALKER ну можно сделать повтор одного и того же задания: как писал XMK condlist_1 = {+название_инфопоршня} reversed - если поршень есть, есть возможность повторить задание Добавлено через 1 мин.: И делаем проверку на поршень который как раз активирует данное задание-взяли, можно еще и еще раз только вот как сделать ограничение например и закрытии данного задания на n-количество часов я не предполагаю.. Добавлено через 195 мин.: И будет ли продолжаться тема? Хотелось бы еще посмотреть квесты на устранение неприятных личностей-таких как Умник в ТЧ например... Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-358780
Виталий Зверь 7 Опубликовано 10 Января 2010 Поделиться Опубликовано 10 Января 2010 (изменено) ZeeK, Ну так ты задавай вопросы по делу и тема будет продолжаться. Как вариант для генерируемых заданий... Рандом + не отключение ветки квеста после прохождения квеста. Вспомнил даже пример... Торговля Бороды... он арты скупает.Вот вам генерируемый квест. Изменено 10 Января 2010 пользователем Виталий Зверь Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-359075
ZeeK 62 Опубликовано 10 Января 2010 Поделиться Опубликовано 10 Января 2010 Ну и у меня вопрос по делу: какую функцию нада писать для квестов на убийство левых мужиков? Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-359126
Artist 0 Опубликовано 10 Января 2010 Поделиться Опубликовано 10 Января 2010 (изменено) В ТЧ как я понимаю логика на выполнение повторяющихся квестов была прописана в task_manager.script. В ЗП task_manager.script содержит лишь задание бороды на артефакты (единственное повторяющиеся задание в ЗП), т.е фактически содержит лишь группу "принести арт" из ТЧ в слегка упрощенном варианте. Остальное тупо убрано из скрипта (убийство левых сталкеров, защита/уничтожение лагеря и т.д.). Возникает вопрос: можно ли вернуть остальные функции? Не думаю, что разрабы всё остальное вырезали и из движка (зачем это делать, когда можно просто этим не пользоваться удалив данные секции из скрипта). Т.е. логика построения данных заданий (проверки гулагов, выдача квестов и т.д.) есть в ТЧ и именно эту логику возможно можно использовать в ЗП. Здесь главное сами скрипты приноровить к новому порядку ЗП. Допустим также как и с бородой (по арту) вернуть скрипт на убийство левых сталкеров - для этого заносим скрипт из ТЧ в task_manager.script ЗП и органично вписываем данное задание, которое будет выполнятся по типу квеста с артами. Возможно где-то что-то я не так понял, возможно все мной написаное бред (я в этой области тот еще профан). Хотелось бы услышать мнения знающих людей. Насчет reversed как возможность повторить задание, тогда допустим с уничтожением лагеря необходимо условие "если гулаг заполнен, то квест повторяется", "если пуст, то квест не выдается". С убийством сталкеров тоже свои приколы: условие появления квеста уже менее важно, т.к. квест тупо может быть всегда, но ведь необходимо, чтоб квест был рандомный, т.е. цель должна быть случайна, а не прописана нами (так?), а вот это в ЗП вроде уже без дополнительных скриптовых функций не выполнить (или я не прав?). Т.е. в любом случае необходима логика из ТЧ для возможности работы повтор. квестов в ЗП. Изменено 10 Января 2010 пользователем Artist Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-359239
XMK 24 Опубликовано 15 Января 2010 Автор Поделиться Опубликовано 15 Января 2010 (изменено) И будет ли продолжаться тема? Хотелось бы еще посмотреть квесты на устранение неприятных личностей-таких как Умник в ТЧ например... будет время... Собсна в квестах по устранению нет ничего сложного какую функцию нада писать для квестов на убийство левых мужиков? в детч_каллбек вставлять проверку по ID сталкера Изменено 15 Января 2010 пользователем XMK Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-361818
Виталий Зверь 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> ========================================================================== Всё проверено и работает, надеюсь поможет кому нибудь и кто то может продолжит... Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-363220
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гринго Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-363549
Виталий Зверь 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 пользователем Виталий Зверь Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-364922
Halford 21 Опубликовано 28 Января 2010 Поделиться Опубликовано 28 Января 2010 Если прописать on_init =%=труляля%, то это получается действие выполнится при инициализации? Или если действие выполнилось - квест инициализируется? В квестах припяти например есть: on_init = %=send_tip(st_resupply_ready:can_resupply) ... % Хотя в task_objects.script нетути послания типса... Кстати помимо reward_money есть reward_item. Хотя оно юзалось только один раз на Юпитере и то закоменчено. И вот еще вопрос. Как при начале новой игры кинуть типс что мол такой-то такой квест начинаем проходить? Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-369016
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 - время показывания Как будет время статью отредактирую и напишу для примера квест по сложней. Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-369154
monk 2 862 Опубликовано 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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-369189
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) Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-369237
Halford 21 Опубликовано 28 Января 2010 Поделиться Опубликовано 28 Января 2010 Po-meceniy, выдавай типс с помощью news_manager.send_tip(db.actor, "текст", timeout, "sender", showtime). У тебя нет самого тектса что послать нужно... Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-369256
XMK 24 Опубликовано 28 Января 2010 Автор Поделиться Опубликовано 28 Января 2010 Возможно просто текст указан без ковычек. Po-meceniy лучше давай в таких случаях код квеста, легче будет сказать в чем проблема.... Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-369260
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 ЗЫ. А где вообще этот типс выдавать? Ссылка на комментарий https://www.amk-team.ru/forum/topic/8806-cop-kvesty/page/3/#findComment-369271
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти