sasha47007 3 Опубликовано 18 Августа 2008 Поделиться Опубликовано 18 Августа 2008 Почитал что сдесь написано, но мне надо чтоб квест появился при старте новой игры, то есть, я появляюсь, и появляется квест-поговорить с Барменом Ссылка на комментарий
n6260 142 Опубликовано 19 Августа 2008 Поделиться Опубликовано 19 Августа 2008 Почитал что сдесь написано, но мне надо чтоб квест появился при старте новой игры, то есть, я появляюсь, и появляется квест-поговорить с Барменом Ты не флуди... Тебе ясно сказали: образец есть - развивай. Что бы квест появился - надо обязательно какую то привязку для него. Т.е. или с кем-то поговорить, или что-то найти, или еще как - т.е. должно произойти какое то действие которое вызовет появление задания - ты в игре много видел квестов, которые появляются "просто так"? Так что читай и дерзай. А вот если будут ошибки какие вылезать - пиши и тебе помогут. 256 символов Ссылка на комментарий
Смокер 5 Опубликовано 16 Сентября 2008 Поделиться Опубликовано 16 Сентября 2008 Ребята! Хочу сделать так, чтобы труп военного ( кстати его лучше спайнить около дерева недалеко от насыпи.А то получается что он прошел раненый через блокпост под мостом, а его друганы вояки, просто послали подальше.По логике, если патрулируется насыпь,и есть блок пост-то он должен быть уже на южном блокпосту или даже в госпитале) и квест по поиску экспедиции появлялся после выполнения квеста по золотым "лопухам".Так-же хочу сделать, чтобы после доставки ноута Якуту, начинался квест по поиску Клыка, а после него квест по Призраку. Прочитал несколько раз разные описания, но так и не понял.Подскажите-на какие функции скриптов обратить внимание. Ребята! Хочу сделать так, чтобы труп военного ( кстати его лучше спайнить около дерева недалеко от насыпи.А то получается что он прошел раненый через блокпост под мостом, а его друганы вояки, просто послали подальше.По логике, если патрулируется насыпь,и есть блок пост-то он должен быть уже на южном блокпосту или даже в госпитале) и квест по поиску экспедиции появлялся после выполнения квеста по золотым "лопухам".Так-же хочу сделать, чтобы после доставки ноута Якуту, начинался квест по поиску Клыка, а после него квест по Призраку. Прочитал несколько раз разные описания, но так и не понял.Подскажите-на какие функции скриптов обратить внимание. Ссылка на комментарий
Silent Forest 0 Опубликовано 20 Сентября 2008 Поделиться Опубликовано 20 Сентября 2008 Подскажите, плз, скрипт для изымания денег у главгероя (определенной суммы, как плату за информацию). И еще, функцию проверки количества денег у персонажа. Псевдогигант Ссылка на комментарий
dan 6 Опубликовано 20 Сентября 2008 Поделиться Опубликовано 20 Сентября 2008 Подскажите, плз, скрипт для изымания денег у главгероя (определенной суммы, как плату за информацию). И еще, функцию проверки количества денег у персонажа. Пример из amk: проверяем наличие 30000 function actor_has_money_30000() return db.actor:money()>=30000 end отдаем 30000 function give_money_30000(t1,t2) local npc=t1 if npc:id()==db.actor:id() then npc=t2 end dialogs.relocate_money(npc,30000,"out") end Ссылка на комментарий
Wawka 5 Опубликовано 21 Сентября 2008 Поделиться Опубликовано 21 Сентября 2008 Silent Forest, либо можно и по другому (по крайней мере, я таким кодом пользуюсь). Пример проверки наличия денег: function have_money_30000(actor,npc) return actor:money() > 30000 end Изымание: function give_money_30000(actor, npc) dialogs.relocate_money(actor, 30000, "out") end have_money_30000 и give_money_30000 - это произвольное название функции - можно назвать как душе угодно. Главное, чтоб в action диалога было то же самое название. Пример - функция записана в скрипте wawka_dialog.script, тогда в диалоге проверка будет выглядить: <action>wawka_dialog.have_money_30000</action> А изъятие: <action>wawka_dialog.give_money_30000</action> Сразу говорю, в чём различия\недостатки\преимущества данных вариантов - не знаю Ссылка на комментарий
Silent Forest 0 Опубликовано 22 Сентября 2008 Поделиться Опубликовано 22 Сентября 2008 Пример из amk: проверяем наличие 30000 function actor_has_money_30000() return db.actor:money()>=30000 end Функция вернет false, если денег нет? Псевдогигант Ссылка на комментарий
Wawka 5 Опубликовано 22 Сентября 2008 Поделиться Опубликовано 22 Сентября 2008 Функция вернет false, если денег нет?В таких тонкостях скриптов не разбираюсь - но на практике, денег нет, диалог не появляется. Деньги есть - появляется. Ссылка на комментарий
Kostya V 31 Опубликовано 22 Сентября 2008 Поделиться Опубликовано 22 Сентября 2008 В таких тонкостях скриптов не разбираюсь - но на практике, денег нет, диалог не появляется. Деньги есть - появляется. Пример из amk: проверяем наличие 30000 function actor_has_money_30000() return db.actor:money()>=30000 end Эта функция для проверки денег у ГГ. Чтобы диалог не начинался надо вставить в начале диалога <precondition>new_dialog.actor_has_money_30000</precondition> И тогда если нет столько денег, то диалог не появиться. Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет! Ссылка на комментарий
ferrari314 3 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 создал квестик ----------------------------------------------------------------------------------------------- <dialog id="export_weapons_1"> <phrase_list> <phrase id="0"> <text>zdorova_sidor,_mogno_y_teba_orygie zakazat?</text> <next>1</next> </phrase> <phrase id="1"> <text>da,_y_mena_est_lr300_i_svd</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>davai_lr300</text> <next>21</next> </phrase> <phrase id="21"> <text>prinesi_3_konservu</text> <next>22</next> <next>0</next> </phrase> <phrase id="22"> <preconditions>export_weapons_1.have_a_conserva</preconditions> <action>export_weapons_1.otdat_conserva</action> <text>prines_ia_tvoi_konservu</text> <next>23</next> </phrase> <phrase id="23"> <text>dergi_svoiy_vintovky</text> <action>export_weapons_1.vzat_vintovky</action> <next>0</next> </phrase> <phrase id="3"> <text>bla-bla</text> <next>31</next> </phrase> <phrase id="31"> <text>bla-bla</text> <next>32</next> </phrase> <phrase id="32"> <text>bla-bla</text> <next>0</next> </phrase> </phrase_list> </dialog> ---------------------------------------------------------------------- function have_a_conserva(task, objective) if db.actor ~= nil then return db.actor:object("conserva") ~= nil end return false end function otdat_konserva(first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "conserva", "out") end function vzat_vintovky(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "wpn_lr300", "in") end все работает, но консервы не исчезают - это раз. Как их сделать по ттри не врублюсь, ведь если ставить function otdat_konserva(first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "conserva", "out") dialogs.relocate_item_section(second_speaker, "conserva", "out") dialogs.relocate_item_section(second_speaker, "conserva", "out") end пропадает все равно одна, если вызывать одну функцию три раза - вылет... хз..хз.. что делать о_0 Истина где-то рядом... Ссылка на комментарий
Wawka 5 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 Если установлен НЛС, то можно вот таким образом: function otdat_konserva(first_speaker, second_speaker) sak.out_item_namber("conserva", 3) end Если нет НЛС, то помимо вышеуказанного, нужно дописать в свой скрипт вот это (пусть меня поправят, если я не прав): function out_item_namber(itm_section,need_number) reloc_params.itm_section=itm_section reloc_params.itm_cnt=need_number reloc_params.itm_cnt_found=0 db.actor:iterate_inventory(checkout_items_count,db.actor) reloc_params.itm_cnt_found=0 if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then db.actor:iterate_inventory(out_items_count,db.actor) end news_manager.relocate_item(db.actor, "out", itm_section) reloc_params={} end И в sak.out_item_namber("conserva", 3), вместо sak пропиши свой скрипт, в который добавишь второй код. К примеру, вышеуказанное записано в скрипт ferrari.script: function otdat_konserva(first_speaker, second_speaker) ferrari.out_item_namber("conserva", 3) end Ссылка на комментарий
Сяк 59 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 поправлю - кроме вышеуказанной функции необходимы функции подсчета и проверки: function out_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then amk.remove_item_from_inventory(item, actor) reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end function checkout_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section then reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end Ссылка на комментарий
ferrari314 3 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 Сяк, огромное спасибо, НЛЦ стоит, упрощу себе задачу. . Но реакции - ноль. Консервы не исчезають Кто виноват и что делать? Истина где-то рядом... Ссылка на комментарий
Сяк 59 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 Сяк, огромное спасибо, НЛЦ стоит, упрощу себе задачу. . Но реакции - ноль. Консервы не исчезають Кто виноват и что делать? ты вызываешь sak.out_item_namber("conserva", 3) или свою делаешь? Ссылка на комментарий
ferrari314 3 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 вызваю твою Истина где-то рядом... Ссылка на комментарий
Сяк 59 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 вызваю твою Тогда внимательно проверяй все - где то накосячил с вызовом. Ссылка на комментарий
ferrari314 3 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 Вот это я понял, а где накосячил - недопру. Истина где-то рядом... Ссылка на комментарий
dan 6 Опубликовано 30 Сентября 2008 Поделиться Опубликовано 30 Сентября 2008 Вот это я понял, а где накосячил - недопру. Вот еще простая функция передачи предмета function atp_barman_wpn_addon_sil_762_ar(first_speaker, second_speaker) local item = "" local actor, trader if db.actor and db.actor:id() == first_speaker:id() then actor = first_speaker trader = second_speaker else actor = second_speaker trader = first_speaker end flamethrower.relocate_n_items_section(trader, "vodka", "out", 10) dialogs.relocate_item_section(actor, "wpn_addon_sil_762_ar", "in", 1) end Только запомни если передаешь один предмет то используешь dialogs.relocate_item_section если больше одного flamethrower.relocate_n_items_section И ничего дописывать не надо, правда это только на АМК прокатит, либо тебе нужен будет скрипт амк flamethrower.script Ссылка на комментарий
ferrari314 3 Опубликовано 1 Октября 2008 Поделиться Опубликовано 1 Октября 2008 И последнее, как сделать проверку наличия нескольких предматов(думустем тех-же трех консерв) Истина где-то рядом... Ссылка на комментарий
sirwalrus 0 Опубликовано 1 Октября 2008 Поделиться Опубликовано 1 Октября 2008 И последнее, как сделать проверку наличия нескольких предматов(думустем тех-же трех консерв) function have_item_namber(itm,need_namber) local actor=db.actor items_count=0 itemin=itm actor:iterate_inventory(cheking_item,actor) if items_count>=need_namber then return true else return false end end PS за скриптик спасибо колмогору Вызывать так function have_4kolbasa() return barter.have_item_namber("kolbasa",4) ~= false end А соответствено have_4kolbasa()засунуть в прекондишн в диалоге можно Кровосос кровососу - друг, товарищ и КОРМ! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти