Перейти к контенту

Создание квеста


Рекомендуемые сообщения

Почитал что сдесь написано, но мне надо чтоб квест появился при старте новой игры, то есть, я появляюсь, и появляется квест-поговорить с Барменом

Ссылка на комментарий
Почитал что сдесь написано, но мне надо чтоб квест появился при старте новой игры, то есть, я появляюсь, и появляется квест-поговорить с Барменом

Ты не флуди... Тебе ясно сказали: образец есть - развивай. Что бы квест появился - надо обязательно какую то привязку для него. Т.е. или с кем-то поговорить, или что-то найти, или еще как - т.е. должно произойти какое то действие которое вызовет появление задания - ты в игре много видел квестов, которые появляются "просто так"? Так что читай и дерзай. А вот если будут ошибки какие вылезать - пиши и тебе помогут.


256 символов
Ссылка на комментарий

Ребята! Хочу сделать так, чтобы труп военного ( кстати его лучше спайнить около дерева недалеко от насыпи.А то получается что он прошел раненый через блокпост под мостом, а его друганы вояки, просто послали подальше.По логике, если патрулируется насыпь,и есть блок пост-то он должен быть уже на южном блокпосту или даже в госпитале) и квест по поиску экспедиции появлялся после выполнения квеста по золотым "лопухам".Так-же хочу сделать, чтобы после доставки ноута Якуту, начинался квест по поиску Клыка, а после него квест по Призраку.

Прочитал несколько раз разные описания, но так и не понял.Подскажите-на какие функции скриптов обратить внимание.

 

Ребята! Хочу сделать так, чтобы труп военного ( кстати его лучше спайнить около дерева недалеко от насыпи.А то получается что он прошел раненый через блокпост под мостом, а его друганы вояки, просто послали подальше.По логике, если патрулируется насыпь,и есть блок пост-то он должен быть уже на южном блокпосту или даже в госпитале) и квест по поиску экспедиции появлялся после выполнения квеста по золотым "лопухам".Так-же хочу сделать, чтобы после доставки ноута Якуту, начинался квест по поиску Клыка, а после него квест по Призраку.

Прочитал несколько раз разные описания, но так и не понял.Подскажите-на какие функции скриптов обратить внимание.

Ссылка на комментарий

Подскажите, плз, скрипт для изымания денег у главгероя (определенной суммы, как плату за информацию). И еще, функцию проверки количества денег у персонажа.

Псевдогигант 06db21d6667da55d85ebf8e54f89.gif

Ссылка на комментарий
Подскажите, плз, скрипт для изымания денег у главгероя (определенной суммы, как плату за информацию). И еще, функцию проверки количества денег у персонажа.

 

Пример из 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

Ссылка на комментарий

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>

Сразу говорю, в чём различия\недостатки\преимущества данных вариантов - не знаю :)

Ссылка на комментарий
Пример из amk:

проверяем наличие 30000

 

function actor_has_money_30000()

return db.actor:money()>=30000

end

Функция вернет false, если денег нет?

Псевдогигант 06db21d6667da55d85ebf8e54f89.gif

Ссылка на комментарий
Функция вернет false, если денег нет?
В таких тонкостях скриптов не разбираюсь - но на практике, денег нет, диалог не появляется. Деньги есть - появляется.
Ссылка на комментарий
В таких тонкостях скриптов не разбираюсь - но на практике, денег нет, диалог не появляется. Деньги есть - появляется.

 

Пример из amk:

проверяем наличие 30000

 

function actor_has_money_30000()

return db.actor:money()>=30000

end

 

Эта функция для проверки денег у ГГ.

Чтобы диалог не начинался надо вставить в начале диалога

 

<precondition>new_dialog.actor_has_money_30000</precondition>

 

И тогда если нет столько денег, то диалог не появиться.

Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет!

Ссылка на комментарий

создал квестик

-----------------------------------------------------------------------------------------------

<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

Истина где-то рядом...

Ссылка на комментарий

Если установлен НЛС, то можно вот таким образом:

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

Ссылка на комментарий

поправлю - кроме вышеуказанной функции необходимы функции подсчета и проверки:

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

Ссылка на комментарий

Сяк, огромное спасибо, НЛЦ стоит, упрощу себе задачу. ^_^.

Но реакции - ноль. Консервы не исчезають :huh:

Кто виноват и что делать? :dash3:

Истина где-то рядом...

Ссылка на комментарий
Сяк, огромное спасибо, НЛЦ стоит, упрощу себе задачу. ^_^.

Но реакции - ноль. Консервы не исчезають :huh:

Кто виноват и что делать? :dash3:

ты вызываешь sak.out_item_namber("conserva", 3) или свою делаешь?

Ссылка на комментарий
Вот это я понял, а где накосячил - недопру.

 

 

Вот еще простая функция передачи предмета

 

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

Ссылка на комментарий
И последнее, как сделать проверку наличия нескольких предматов(думустем тех-же трех консерв)

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()засунуть в прекондишн в диалоге можно

Кровосос кровососу - друг, товарищ и КОРМ!

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...