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

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


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

В статье по созданию примитивного квеста ты отдаеш водку два раза я пробовал править скрипт на отдачу но у меня не получилось вот скрипт function is_has_vodka_borode()

if db.actor:object("af_cristall") then

Return true - эту функцию я убирал несработало

End

Return false - эту функцию я убрал когда не получилось с 1 функцией

End

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

@bios, Есть удобные и проверенные функции для квестов от Сяка.

local items_count=0
local itemin=nil

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
function cheking_item(actor,item)
local items=item:section()
if items==itemin then
items_count=items_count+1
end
end
function create_items(npc,section,number)
for i=1,number do
alife():create(section,
npc:position(),
npc:level_vertex_id(),
npc:game_vertex_id(),
npc:id())
end
end
local reloc_params={}
local stalk
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
function relocate_item_namber(stalker,itm_section,need_number)
stalk=stalker
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(reloc_items_count,db.actor)
end
news_manager.relocate_item(db.actor, "out", itm_section)
reloc_params={}
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
function reloc_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
db.actor:transfer_item(item, stalk)
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
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 escape_sid_doki_have()
    return sak.have_item_namber("sid_document",1) ~= false  
end
function give_escape_sid_doki(first_speaker, second_speaker) 
    sak.out_item_namber("sid_document", 1)
end
function complete_escape_sid_doki_quest(first_speaker, second_speaker)  
    dialogs.relocate_money(second_speaker, 5000, "in")
dialogs.relocate_item_section(second_speaker, "wpn_toz34_vip", "in")
end 

 

 

  • Полезно 2

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

Всем привет
Хочу спросить а как делать квест(ы) с под квестами, на подобии "поговорить с волком, встретится с людми волка и т.д"
И еще один вопрос, как сделать так чтобы квест активировался автоматически после выполнения предыдущего(сразу) пример "Помочь отбиться от бандитов, и когда дальше проходишь по свалке, сразу появляется другое задание помочь (Серому) с звуковым сообщением с просьбой о помощи..."

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

 

@Пикадоний

Загляни в раздел "Уроки по модостроению" - там сразу же на первой странице, пример создания квеста...

 

 

Это не совсем то что я ищу...

Я ищу как сделать чтобы после выполнения одного задания давали другое, как в оригинале...

Приносишь флешку сидору, потом он дают сразу другое задание, а если не брать его то появится авто задание "Взять спец задание у сидора"...

Изменено пользователем Пикадоний
Ссылка на комментарий
@Пикадоний, "задания, квесты и етс" являются всего лишь гемплейной терминологией, внешняя (видимая на экране) часть производится набором специфических файликов (ты их должен знать), НО все взаимодействия между "внутренними событиями" чаще всего происходят посредством инфопорций, которые в свою очередь выдаются разными способами. К примеру тот случай в ТЧ со "спецзаданием Сидорыча" выполняется с помощью рестриктора (он построился после соответствующего диалога, а ты вышел из этого поля, или зашёл в него), или с помощью логики самого Сидорыча, когда в ней включилась секция, где ты отдалился от Сидорыча на "н"-метров и выдался поршень, а по этому поршню выдалось "задание". Или же по таймеру... Придётся и это постигать, хотя бы азы. Изменено пользователем Korpus
Ссылка на комментарий

Приветствую всех форумчан. Дело такое: создал я квест на поиск документов( ну как квест - документы просто прописаны в спавн через скрипт и гг по наводкам их ищет). Хочу реализовать нормальный квест по их сдаче - чтобы после нахождения всех документов ГГ приходила СМС и начинался квест. Но толком реализовать не получается - мододел я зелёный :unsure: . Просьба всем, кто знает как это сделать или располагает соответствующими знаниями помочь в этом деле (может есть уроки по созданию квестов такого типа или кто-то сам этим уже занимался). Спасибо заранее.

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

Ссылка на комментарий
  • Нравится 1

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

 

 

чтобы после нахождения всех документов ГГ приходила СМС и начинался квест

Ох и говняный(на мой взгляд) это стиль в геймплее\сюжете: откуда заинтересованный персонаж узнает что ГГ, в черт знает скольких километрах от него, нашел какую-то папочку\кейс ? Лучше сделай, после нахождения всех документов, появление соответствующей ветки в диалоге нужного непися.

  • Нравится 1
Ссылка на комментарий
чтобы после нахождения всех документов ГГ приходила СМС и начинался квест

Я конечно не квестер, но предполагаю, что тебе надо сперва повесить функцию проверки на определенные предметы в инвентаре ГГ, и выдавать поршень, когда они все у тебя на руках. А на выдачу этого поршня повесить выполнение функции по приходу СМС и активации квеста. Как-нибудь так, что ли..

 

Функция по проверке предметов:

 

 

local t_wpn = {
"ПРЕДМЕТ1",
"ПРЕДМЕТ1",
"ПРЕДМЕТ1"
}

function search_ALL_weapons_complete()
  local gg = db.actor
   if gg then
     for i=1,#t_wpn do
   if not gg:object(t_wpn) then
  return false
 end
end
gg:give_info_portion("ПОРШЕНЬ")
    return true
  end
 return false
end

 

 

Так же кроме give_info_portion можно повесить любые другие функции, ту же выдачу СМС. Вешать все это дело в апдейт бинд_сталкера.

Изменено пользователем HellRatz
Ссылка на комментарий

 

 

Вешать все это дело в апдейт бинд_сталкера.

Вай, вай... Что-ж Вы так жестоко-то? Это ради одного квеста НА КАЖДОМ апдейте тормошить инвентарь и т.д.?

Может лучше воспользоваться ф-цией on_item_take(из bind_stalker.script) ? Которая будет срабатывать только при появлении в инвентаре предметов, что происходит значительно реже, чем апдейт актора...

Ну допустим документов для квеста 3 и для каждого своя секция в конфиге. В on_item_take проверяем наличие предметов с этими секциями, как появятся все 3 - запускаем квест, а дальнейшую проверку отсекаем инфо-порцией, которая будет квест запускать.

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

 

 

Вай, вай... Что-ж Вы так жестоко-то? Это ради одного квеста НА КАЖДОМ апдейте тормошить инвентарь и т.д.?

Не говори, а ещё лучше ввести систему сигналов = и вообще забыть про бинд_сталкер, и не лезть туда больше, и нервы целы, и нагруз на движок меньше...

 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

Привет всем. Имеется такая проблема делаю квест на убийство нпс( спавн  через скрипт) Как  поставить метку на него(нпс) пробовал прописывать в файле tasks_escape.xml в строке <object_story_id>esc_vasuok_npc</object_story_id>  прописывать имя которое задавал в файле game_story_ids.ltx новой строкой -  093 = "esc_vasuok_npc" . Но метка не появлялась  Что я делаю не так?  Или надо метку задавать скриптом, если да то где можно прочитать как это сделать. Заранее спасибо.

Ссылка на комментарий
Что я делаю не так?

Если ты объявил нужный story_id в game_story_ids.ltx, а затем прописал его в каком-то задании(task), и метка на объекте не появляется - то скорее всего, ты забыл привязать этот story_id к самому объекту. Сделать это можно несколькими способами: в СДК в свойствах объекта, в соответствующем alife-файле распакованного(декомпилированного) all.spawn'а или нет-пакетом при скриптовом создании непися(это видимо тот вариант, что тебе нужен).

Изменено пользователем UnLoaded
Ссылка на комментарий

Если ты объявил нужный story_id в game_story_ids.ltx, а затем прописал его в каком-то задании(task), и метка на объекте не появляется - то скорее всего, ты забыл привязать этот story_id к самому объекту. Сделать это можно несколькими способами: в СДК в свойствах объекта, в соответствующем alife-файле распакованного(декомпилированного) all.spawn'а или нет-пакетом при скриптовом создании непися(это видимо тот вариант, что тебе нужен).

А где можно узнать как то сделать?

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

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

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

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

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

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

Войти

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

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

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