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

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


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

@NL-Vincenz создаешь-то в ТЧ? Не знаю как в ЗП, но в ТЧ последнее подзадание должно быть продублировано в начало блока перед первым заданием, куда и должен быть вписан article. То есть в твоем случае должно быть так (не спрашивай зачем разработчики так сделали, это не игра, а сплошные тайны):

Скрытый текст

 

<game_task id="start_pes_kvest">
            <title>start_pes_kvest_0</title>

            <objective>
                    <text>start_pes_kvest_2</text> <!-- последнее подзадание дубль в начале -->
                    <infoportion_complete>start_pes_quest_complete_0</infoportion_complete> <!-- последнее подзадание дубль в начале -->

                    <article>start_pes_kvest</article> <!-- сюда же пихаем артикл -->
            </objective>
            <objective>
                    <text>start_pes_kvest</text> <!-- вот и пошел уже сам квест от первого подзадания -->
                    <icon>ui_iconsTotal_tutorial_find_artefact</icon>
                    <infoportion_complete>start_pes_quest_complete_0</infoportion_complete> </objective>
            <article>start_pes_kvest</article>
            <objective>
                    <text>start_pes_kvest_1</text>
                        <function_complete>acz_quest_function.start_pes_quest</function_complete>
            </objective>
            <objective>
                    <text>start_pes_kvest_2</text>
                    <infoportion_complete>start_pes_quest_complete_0</infoportion_complete>
            </objective>
</game_task>

 

Это при условии, что у тебя ТЧ.

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

Народ, нужна помощь. Значит, ситуация такая: на кордоне в деревне новичков есть непись Н и он по логике стоит на месте, чешит репу. По задумке, после определённого диалога он должен прогуляться с гг до элеватора и вернуться обратно в деревеньку, но что-то я не понял, как ему можно сменить логику прямо в игре через диалог, какой функцией, каким скриптом. Сайт поиском прошерстил, толкого ответа не нашел, прошу помощи)) (или ткните носом на пост, который решает мою проблему). Буду благодарен!

Ссылка на комментарий
1 час назад, Grishamen сказал:

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

Выдать в диалоге инфо-порцию, а в логике прописать необходимые действия. Про логику читать по ссылке ниже:

http://stalkerin.gameru.net/wiki/index.php?title=Настройка_логики._Часть_0

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

Прогулка на расстояния типа от ДН до элеватора - это плохая идея.

Хорошая, на стандартной кодовой базе - сделать отдельный смарт с работами в ДН и на элеваторе, и переключаться между ними. Либо, используя 2 существующих смарта, прописать в оба работы с проверкой имени непися, и гонять его из одного смарта в другой.

Ссылка на комментарий
35 минут назад, Dennis_Chikin сказал:

гонять его из одного смарта в другой

Гонять - это конечно хорошо. Но!

15 часов назад, Grishamen сказал:

он должен прогуляться с гг до элеватора

Я так понимаю, тут нужны независимые от смартов секции логики. Иначе получится, что не непись с ГГ гуляет, а ГГ тупо бежит за неписем...

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

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

Ссылка на комментарий
3 часа назад, _Val_ сказал:

Я так понимаю, тут нужны независимые от смартов секции логики. Иначе получится, что не непись с ГГ гуляет, а ГГ тупо бежит за неписем...

Если не ошибаюсь, в оригинале ТЧ(за другие части не знаю) нет схем логики, которые бы позволили "пришпилить" непися к ГГ. Тут только добавление чего-то типа "Напарники"...

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

Есть вот такая схема, когда НПС идет за ГГ куда бы он не пошел.

 

----------------------------------------------
-- Karavan simple
-- Схема каравана простая - гг ведет чудиков
-- 2008 - 2009 Rulix aka Bak
----------------------------------------------


class "evaluator_end" (property_evaluator)
function evaluator_end:__init(name,storage) super (nil,name)
	self.st = storage
end
function evaluator_end:evaluate()
	return not xr_logic.is_active(self.object,self.st)
end

class "evaluator_karavan" (property_evaluator)
function evaluator_karavan:__init(name,storage) super (nil, name)
  self.st = storage
end
function evaluator_karavan:evaluate()
	return db.actor and xr_logic.is_active(self.object,self.st) and self.st.enabled == true
end

class "action_karavan" (action_base)
function action_karavan:__init(name,storage) super (nil, name)
	self.st = storage
end
function action_karavan:initialize()
	action_base.initialize(self)
	local npc = self.object
	npc:set_desired_position()
	npc:set_desired_direction()
	npc:set_detail_path_type(move.curve)
	npc:set_path_type(game_object.level_path)
	self.offset = vector():set(math.random()*6-3,0,math.random()*6-3)
	self.offset:normalize()
end
function action_karavan:execute()
	action_base.execute(self)
	local npc = self.object
	if xr_logic.try_switch_to_another_section(npc,self.st,db.actor) then
		return
	end
	local dist = db.actor:position():distance_to(npc:position())
	local state,look,anim = state_mgr.get_state(npc)
	if dist <= self.st.radius then
		state,look,anim = self.st.close_state,nil,true
	elseif dist < self.st.close_dist then
		state,look,anim = self.st.close_state,nil,true
	elseif dist >= self.st.faraway_dist then
		state,look,anim = self.st.wait_state,nil,true
	elseif dist < self.st.near_dist then
		state,look,anim = self.st.near_state,nil,true
	elseif not (state and state_lib.states[state].movement == move.stand) then
		state,look,anim = self.st.faraway_state,nil,true
	end	
	if self.st.look == true and state_lib.states[state].movement == move.stand then
		look = true
	end
	if look == true then
		look = {look_object = db.actor}
	end
	if anim == true then
		anim = {animation = true}
	end
	if state then
		state_mgr.set_state(npc,state,nil,nil,look,anim)
	end
	if state_lib.states[state].movement ~= move.stand then
		local vertex_id = level.vertex_in_direction(db.actor:level_vertex_id(),self.offset,self.st.radius)
		utils.send_to_nearest_accessible_vertex(npc,vertex_id)
	end
end
function action_karavan:finalize()
	self.object:clear_animations()
end

prop_karavan = 9651
prop_end = prop_karavan+1
act_karavan = prop_karavan

function add_to_binder(object,char_ini,scheme,section,st)
	local manager = object:motivation_action_manager()
	manager:add_evaluator(prop_karavan,evaluator_karavan("evaluator_karavan",st))
	local action = action_karavan("action_karavan",st)
	action:add_precondition(world_property(stalker_ids.property_alive,true))
	action:add_precondition(world_property(stalker_ids.property_enemy,false))
	action:add_precondition(world_property(stalker_ids.property_danger,false))
    xr_motivator.addCommonPrecondition(action)
	if watcher_act then
		action:add_precondition(world_property(watcher_act.evid_near_stuff,false))
		action:add_precondition(world_property(watcher_act.evid_see_body,false))
		action:add_precondition(world_property(watcher_act.evid_see_stuff,false))		
	end
	action:add_precondition(world_property(prop_karavan,true))
	action:add_effect(world_property(prop_karavan,false))
	manager:add_action(act_karavan,action)
	local atbl = {xr_actions_id.alife}
	for i,id in ipairs(atbl) do
		action = manager:action(id)
		if action then
			action:add_precondition(world_property(prop_karavan,false))
		end
	end
end

function set_scheme(npc,ini,scheme,section,gulag_name)
	local st = xr_logic.assign_storage_and_bind(npc,ini,scheme,section)
	st.logic = xr_logic.cfg_get_switch_conditions(ini,section,npc)
	st.close_dist = utils.cfg_get_number(ini,section,"close_dist",npc,false) or 7
	st.near_dist = utils.cfg_get_number(ini,section,"near_dist",npc,false) or 14
	st.faraway_dist = utils.cfg_get_number(ini,section,"faraway_dist",npc,false) or 32
	st.close_state = utils.cfg_get_string(ini,section,"close_state",npc,false,"") or "guard"
	st.near_state = utils.cfg_get_string(ini,section,"near_state",npc,false,"") or "rush"
	st.faraway_state = utils.cfg_get_string(ini,section,"faraway_state",npc,false,"") or "sprint"
	st.wait_state = utils.cfg_get_string(ini,section,"wait_state",npc,false,"") or "hide"
	st.look = utils.cfg_get_bool(ini,section,"look_on_actor",npc,false)
	st.radius = utils.cfg_get_number(ini,section,"radius",npc,false) or 4
	st.no_loot = utils.cfg_get_bool(ini,section,"no_loot",npc,false)
	if st.no_loot ~= true then
		st.no_loot = nil
	end
	st.enabled = true
end
function disable_scheme(npc,scheme)
	rx_ai.printf("disable")
	local st = db.storage[npc:id()][scheme]
	if st then
		st.enabled = false
	end
end
  • Полезно 1

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

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

В логике

Скрытый текст

[karavan]
close_dist = 2
near_dist = 10
faraway_dist = 31
close_state = guard
near_state = rush
faraway_state = sprint
wait_state = rush
look_on_actor = false
radius = 1
combat_ignore_cond = always
combat_type = monolith
no_loot = true
on_info = {+поршень} walker3@lexa

переход в схему

Скрытый текст

[walker2@lexa]
path_walk = jupiter_lexa_walk
path_look = jupiter_lexa_look  
meet = meet
danger = danger_condition
combat_ignore_cond = always
on_info = {+поршень} karavan 

 

  • Полезно 1

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

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

Здравствуйте уважаемые.

 

Вопрос такой.

Допустим есть диалог с Сидоровичем. В результате которого получаем задание "Взорвать звезду смерти".

Берём задание и уходим.

Ходим. Бродим.

И варианты:

0) Взорвали. Обследовали местность. Подобрали непонятное. Вернулись. Сдали неизвестное.

1) Взорвали. Вернулись. И нас как лошару посылают таки обломки этого гадюшника на колёсиках исследовать и принести что-то непривычное. Нашли. Вернули.

2) Не взорвали. Прошло определённое игровое время. Гадюшник исчез. На земле обломки. Слышим задание "принести то не знаю что". Находим. Приносим.

3) Не взорвали. Обобрали. Голое поле. Возвращаемся. Нас посылают к кому-то узнать кто это (взорвать и обнести) мог.  Уходим. Узнаём. Находим. Убиваем. Забираем. Сдаём.

 

Таким макаром можно закрутить квест?

 

 

Ссылка на комментарий
В 29.07.2018 в 07:49, Saboteur сказал:

Здравствуйте уважаемые.

 

Вопрос такой.

Допустим есть диалог с Сидоровичем. В результате которого получаем задание "Взорвать звезду смерти".

Берём задание и уходим.

Ходим. Бродим.

И варианты:

0) Взорвали. Обследовали местность. Подобрали непонятное. Вернулись. Сдали неизвестное.

1) Взорвали. Вернулись. И нас как лошару посылают таки обломки этого гадюшника на колёсиках исследовать и принести что-то непривычное. Нашли. Вернули.

2) Не взорвали. Прошло определённое игровое время. Гадюшник исчез. На земле обломки. Слышим задание "принести то не знаю что". Находим. Приносим.

3) Не взорвали. Обобрали. Голое поле. Возвращаемся. Нас посылают к кому-то узнать кто это (взорвать и обнести) мог.  Уходим. Узнаём. Находим. Убиваем. Забираем. Сдаём.

 

Таким макаром можно закрутить квест?

Да,но писать много,учти

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

Не знаю в нужный форум я пишу или нет.

 

Делаю свой мод на ТЧ. Возникли проблемы при создании квеста.

 

Квест типа "Найди и принеси мне эту штуковину".

 

Семёнов выдает квест на поиск артефакта "Мамины Бусы". 

 

В задании всего два пункта:

 

- Найти Артефакт

- Принести Артефакт

 

Дело в том что я не знаю как реализовать следующее: при подборе артефакта пункт Найти артефакт отмечается как выполненный.

 

Когда я подбираю артефакт он не отмечается, а когда я возвращаюсь к Семёнову, я сдаю ему квест и все задание выполнено полностью. 

 

Прошу помощи.

Добавлено  Murarius,

Перемещено.

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

@PARENTAL ADVISORY EXPLICIT CONTENT, следует сделать проверку в этом пункте на наличие этого артефакта:

function название_функции(task, objective)
if db.actor ~= nil then 
return db.actor:object("название_артефакта") ~= nil
end
return false
end

Вписать так:<function_complete>название_скрипта.название_функции</function_complete>

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

Здравствуйте. Надеюсь, пишу куда надо, т.к. ничего другого, вроде, не нашёл. Пытаюсь сделать правку на ТЧ 1.0006 (без модов, оригинал) на то, чтобы время всех квестов было либо увеличено до 100 дней, либо убрано полностью. В итоге, после ковыряния в task_manager время выполнения квестов стало 14 часов. Теперь решил не трогать, пока не подскажут, как сделать правильно.

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

Здравствуйте Друзья, такой к вам вопрос 

 Я ставлю чистую игру (Сталкер ТЧ 1.0004.), плюс правку на Вырезанный сюжет (которую нашел на этом сайте), она стабильно работает. 

 А я хочу на этом пустом месте (без сюжетном) создать свой, новый. Подскажите как это реализовать, я уже добавил своего персонажа, но он к сожалению при попытке с ним поговорить, дает сбои/вылеты.

 Вылеты без лога, понятия не имею почему. Все инфопоршни/диалоги/скрипты вроде работают как должны, прошу помочь. Я мог что-то упустить из виду, из-за невнимательности. 

Проблемная Gamedata 

Изменено пользователем W.A.S.P.
пунктуация
Ссылка на комментарий
23 часа назад, EGER.OVERKILL WF сказал:

Здравствуйте Друзья, такой к вам вопрос 

 Я ставлю чистую игру (Сталкер ТЧ 1.0004.), плюс правку на Вырезанный сюжет (которую нашел на этом сайте), она стабильно работает. 

 А я хочу на этом пустом месте (без сюжетном) создать свой, новый. Подскажите как это реализовать, я уже добавил своего персонажа, но он к сожалению при попытке с ним поговорить, дает сбои/вылеты.

 Вылеты без лога, понятия не имею почему. Все инфопоршни/диалоги/скрипты вроде работают как должны, прошу помочь. Я мог что-то упустить из виду, из-за невнимательности. 

Проблемная Gamedata 

Upd: Уже решил. 

Добавлено  Опричник,

Изучите "Правила цитирования". https://www.amk-team.ru/forum/topic/13514-obyavleniya/

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

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

Ссылка на комментарий
15 часов назад, AndreySol сказал:

А зачем знания скриптов?

Согласен, поэтому и искал, где можно еще почитать про это. Спасибо за ссылку. Почему-то через Гугл не нашел

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

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

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

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

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

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

Войти

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

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

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