Виталий Зверь 7 Опубликовано 10 Января 2010 (изменено) ZeeK, Ну так ты задавай вопросы по делу и тема будет продолжаться. Как вариант для генерируемых заданий... Рандом + не отключение ветки квеста после прохождения квеста. Вспомнил даже пример... Торговля Бороды... он арты скупает.Вот вам генерируемый квест. Изменено 10 Января 2010 пользователем Виталий Зверь Поделиться этим сообщением Ссылка на сообщение
Виталий Зверь 7 Опубликовано 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> ========================================================================== Всё проверено и работает, надеюсь поможет кому нибудь и кто то может продолжит... Поделиться этим сообщением Ссылка на сообщение
Виталий Зверь 7 Опубликовано 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 пользователем Виталий Зверь Поделиться этим сообщением Ссылка на сообщение