CoP. Создание квеста на уничтожение отряда — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

CoP. Создание квеста на уничтожение отряда — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Новая страница: «Здравствуйте, уважаемые фанаты модинга ЗП, сегодня я попробую объяснить создание квеста н...»)
 
Строка 7: Строка 7:
 
Создаем там отряд, к примеру, псевдогиганта
 
Создаем там отряд, к примеру, псевдогиганта
  
[zat_giant_for_quest]:online_offline_group
+
''[zat_giant_for_quest]:online_offline_group''
story_id = zat_b52_giant_for_quest_squad -- важно дать id, чтобы по квесту отслеживать отряд по метке
+
 
faction = monster_predatory_day
+
''story_id = zat_b52_giant_for_quest_squad'' -- важно дать id, чтобы по квесту отслеживать отряд по метке
npc = gigant_normal
+
 
on_death = %+zat_giant_for_quest_death% -- необходимая инфа, чтобы засчитать квест, после гибели отряда и для перезапуска  
+
''faction = monster_predatory_day''
 +
 
 +
''npc = gigant_normal''
 +
 
 +
''on_death = %+zat_giant_for_quest_death%'' -- необходимая инфа, чтобы засчитать квест, после гибели отряда и для перезапуска  
  
 
'''Второе, распаковываем all.spawn и создаем секцию-рестриктор для логики квеста'''  
 
'''Второе, распаковываем all.spawn и создаем секцию-рестриктор для логики квеста'''  
  
[1868]
+
''[1868]
 
; cse_abstract properties
 
; cse_abstract properties
 +
 
section_name = space_restrictor
 
section_name = space_restrictor
 +
 
name = zat_giant_quest_logic -- название рестриктора
 
name = zat_giant_quest_logic -- название рестриктора
 +
 
position = 150.076538085938,1.77096498012543,94.8425521850586
 
position = 150.076538085938,1.77096498012543,94.8425521850586
 +
 
direction = 0.00209100008942187,3,-0.00126799999270588
 
direction = 0.00209100008942187,3,-0.00126799999270588
 +
  
 
; cse_alife_object properties
 
; cse_alife_object properties
 +
 
game_vertex_id = 0
 
game_vertex_id = 0
 +
 
distance = 0
 
distance = 0
 +
 
level_vertex_id = 293223
 
level_vertex_id = 293223
 +
 
object_flags = 0xffffff3e
 
object_flags = 0xffffff3e
 +
 
custom_data = <<END
 
custom_data = <<END
 +
 
[logic]
 
[logic]
 +
 
cfg = scripts\zaton\zat_giant_quest_logic.ltx -- ! логика задания, которая будет обрабатывать инфопоршни и запускать таймер
 
cfg = scripts\zaton\zat_giant_quest_logic.ltx -- ! логика задания, которая будет обрабатывать инфопоршни и запускать таймер
 +
 
END
 
END
 +
  
 
; cse_shape properties
 
; cse_shape properties
 +
 
shapes = shape0
 
shapes = shape0
 +
 
shape0:type = sphere
 
shape0:type = sphere
 +
 
shape0:offset = 0,0,0
 
shape0:offset = 0,0,0
 +
 
shape0:radius = 1
 
shape0:radius = 1
 +
  
 
; cse_alife_space_restrictor properties
 
; cse_alife_space_restrictor properties
restrictor_type = 3
+
 
 +
restrictor_type = 3''
 +
 
  
 
'''Третье, пишем логику'''  
 
'''Третье, пишем логику'''  
 
[logic]
 
[logic]
 +
 
active = sr_idle -- думаю понятно, логика ждет активации
 
active = sr_idle -- думаю понятно, логика ждет активации
  
--Первый
 
 
[sr_idle]
 
[sr_idle]
 +
 
on_info = {+zat_b52_giant_quest_give('''это выданный в диалоге инфопоршень старта, который запускает логику!''')} sr_idle2 %=create_squad(zat_stalker_for_quest:zat_sim_13)(ну тут понятно - мы создали только что отряд для квеста на точке zat_sim_13, можно бежать и валить))%
 
on_info = {+zat_b52_giant_quest_give('''это выданный в диалоге инфопоршень старта, который запускает логику!''')} sr_idle2 %=create_squad(zat_stalker_for_quest:zat_sim_13)(ну тут понятно - мы создали только что отряд для квеста на точке zat_sim_13, можно бежать и валить))%
  
 
[sr_idle2]
 
[sr_idle2]
 +
 
on_info = {+zat_b52_giant_quest_done} sr_idle@timer -- тоже понятно, в диалоге, после получения инфопоршня '''zat_giant_for_quest_death''' от убитого отряда, я просто выдал еще один поршень, который "выключает квест", пока не пройдет таймер
 
on_info = {+zat_b52_giant_quest_done} sr_idle@timer -- тоже понятно, в диалоге, после получения инфопоршня '''zat_giant_for_quest_death''' от убитого отряда, я просто выдал еще один поршень, который "выключает квест", пока не пройдет таймер
  
Строка 58: Строка 85:
 
Добавлю, что в логике можно играться с поршнями  создавать отряды в помощь, убивать отряды, давать им разные цели после\во время квеста и т.д., все зависит от вашей фантазии и грамотности в написании диалога и выдаче инфопоршней с помощью логики\скриптов
 
Добавлю, что в логике можно играться с поршнями  создавать отряды в помощь, убивать отряды, давать им разные цели после\во время квеста и т.д., все зависит от вашей фантазии и грамотности в написании диалога и выдаче инфопоршней с помощью логики\скриптов
  
П.С. Можно создавать квест и на убийство отдельного сталкера, без регистрации в squad_descr и создания логики, просто создав НПС с '''story_id''' в '''spawn_sections''', чтобы можно было вешать метку и спавнить его через диалог путем  скрипта '''alife():create'''(через таблицу кординат можно создать иллюзию рандом-спавна путем команды math.random
+
П.С. Можно создавать квест и на убийство отдельного сталкера, без регистрации в '''squad_descr''' и создания логики, просто создав НПС с '''story_id''' в '''spawn_sections''', чтобы можно было вешать метку и спавнить его через диалог путем  скрипта '''alife():create'''(через таблицу кординат можно создать иллюзию рандом-спавна путем команды '''math.random'''
Нужно только тоже прописать ему on_death = %+инфопоршень о смерти% и играть с таймером и поршнем в диалоге, так можно не трогать алл.спавн
+
Нужно только тоже прописать ему '''on_death = %+инфопоршень о смерти%''' и играть с таймером и поршнем в диалоге, так можно не трогать '''алл.спавн'''
  
 
'''Автор: ZeeK'''
 
'''Автор: ZeeK'''

Версия 09:17, 12 июля 2012

Здравствуйте, уважаемые фанаты модинга ЗП, сегодня я попробую объяснить создание квеста на уничтожение отряда в ЗП на основе моего способа. Способ предполагает, что вы умеете хоть немного работать с логикой\скриптами игры. Итак, я не буду описывать все подробно, в обычных местах, таких, как "создадим диалог и прочее". Я надеюсь это вы итак писать умеете. Просто отмечу, что в диалог нужно будет повесить активатор скрипта для выдачи задания и немного поколдовать с инфопоршнями, чтобы, когда выдан инфопоршень(на выдачу квеста или, что квест выполнен, и работает "таймер перезапуска квеста"), квест нельзя было брать повторно.

Первое, создадим отряд на который будет вестись охота. Идем например в squad_descr_zaton.ltx(если отряд будет на Затоне, можете добавить в другие секции squad_descr_название локации или создать отдельный squad_descr файл для мода(я так и сделал)) Создаем там отряд, к примеру, псевдогиганта

[zat_giant_for_quest]:online_offline_group

story_id = zat_b52_giant_for_quest_squad -- важно дать id, чтобы по квесту отслеживать отряд по метке

faction = monster_predatory_day

npc = gigant_normal

on_death = %+zat_giant_for_quest_death% -- необходимая инфа, чтобы засчитать квест, после гибели отряда и для перезапуска

Второе, распаковываем all.spawn и создаем секцию-рестриктор для логики квеста

[1868]

cse_abstract properties

section_name = space_restrictor

name = zat_giant_quest_logic -- название рестриктора

position = 150.076538085938,1.77096498012543,94.8425521850586

direction = 0.00209100008942187,3,-0.00126799999270588


cse_alife_object properties

game_vertex_id = 0

distance = 0

level_vertex_id = 293223

object_flags = 0xffffff3e

custom_data = <<END

[logic]

cfg = scripts\zaton\zat_giant_quest_logic.ltx -- ! логика задания, которая будет обрабатывать инфопоршни и запускать таймер

END


cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 1


cse_alife_space_restrictor properties

restrictor_type = 3


Третье, пишем логику [logic]

active = sr_idle -- думаю понятно, логика ждет активации

[sr_idle]

on_info = {+zat_b52_giant_quest_give(это выданный в диалоге инфопоршень старта, который запускает логику!)} sr_idle2 %=create_squad(zat_stalker_for_quest:zat_sim_13)(ну тут понятно - мы создали только что отряд для квеста на точке zat_sim_13, можно бежать и валить))%

[sr_idle2]

on_info = {+zat_b52_giant_quest_done} sr_idle@timer -- тоже понятно, в диалоге, после получения инфопоршня zat_giant_for_quest_death от убитого отряда, я просто выдал еще один поршень, который "выключает квест", пока не пройдет таймер

[sr_idle@timer] on_game_timer = 6000 | %-zat_giant_quest_target1 -zat_b52_giant_quest_give -zat_b52_giant_quest_done -zat_giant_for_quest_death -zat_giant_quest_begin% -- здесь видно, что после отработки таймера, все инфопоршни обнулились и неизвестны игроку, а значит квест вновь свободен для выполнения on_info = {-zat_b52_giant_quest_give} sr_idle -- автоматическое возвращение на начало логики

Добавлю, что в логике можно играться с поршнями создавать отряды в помощь, убивать отряды, давать им разные цели после\во время квеста и т.д., все зависит от вашей фантазии и грамотности в написании диалога и выдаче инфопоршней с помощью логики\скриптов

П.С. Можно создавать квест и на убийство отдельного сталкера, без регистрации в squad_descr и создания логики, просто создав НПС с story_id в spawn_sections, чтобы можно было вешать метку и спавнить его через диалог путем скрипта alife():create(через таблицу кординат можно создать иллюзию рандом-спавна путем команды math.random Нужно только тоже прописать ему on_death = %+инфопоршень о смерти% и играть с таймером и поршнем в диалоге, так можно не трогать алл.спавн

Автор: ZeeK

Другие места
LANGUAGE