Перейти к содержанию
Авторизация  
Hardtmuth

Даём квест ГГ при входе в определённую зону

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

 

Даём квест ГГ при входе в определённую зону

Автор: LaRento

Здравствуйте, с вами LaRento.

В этой статье я хочу объяснить модмейкерам, как можно получить квест или его выполнение при входе в определённую зону.

Введение: часто игроки хотят выдать квест или выполнение его минизадач и даже его самого при входе в какое-нибудь место. Но не многие знают о такой вещи, как Space Restrictor. Это определённый объект, который выдаёт инфпоршни, вызывает функции из скриптов при входе в зону. Так же я объясню, как можно это сделать с задержкой времени. Хоть и существуют туторы по рестрикторам, но я хочу привести примеры, ведь новички порой не знают что такое Спейс рестриктор.

1. Распаковываем all.spawn и открываем alife_локация.ltx. Пишем туда следующую секцию Спейс Рестриктора:

Спойлер

[20000] ; номер секции
; cse_abstract properties
section_name = space_restrictor ; тип секции спавна - спейс рестриктор
name = quest_start ; имя секции
position = 27.9391098022461,-11.7167835235596,-288.380462646484 ; координаты места, где выдастся квест
direction = -0.000350999995134771,-0.0109850000590086,0.0319279991090298

; cse_alife_object properties
game_vertex_id = 1229 ; гейм вертекс этого места
distance = 0
level_vertex_id = 72763 ; левел вертекс этого места
object_flags = 0xffffff3e
custom_data = <<END
[logic] ; логика(можно указываться прямо в секции)
active = sr_idle@one ; указание активной логики

[sr_idle@one] ; эта логика
on_actor_inside = nil %+quest_start% ; выдача инфопоршня начала квеста при входе в зону ( здесь nil значит что инфопоршень выдасться один раз)
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 36.9949264526367 ; радиус зоны

; cse_alife_space_restrictor properties
restrictor_type = 3

 

2. Открываем info_локация.xml и пишем:

Спойлер

<info_portion id="quest_start"> ; вам инфопоршень для рестриктора
<task>yan_help_quest</task>; имя квеста, который выдастся
</info_portion>

 

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

Выдача квеста с задержкой времени:

Для этого достаточно поменять логику:

Спойлер

[logic] ; логика(можно указываться прямо в секции)
active = sr_idle@one ; указание активной логики

[sr_idle@one] ; эта логика
on_actor_inside = sr_idle@two ; когда ГГ в зоне , логика меняется на sr_idle@two

[sr_idle@two]
on_timer = 10000 | nil %+quest_start% ; при истечении 10 секунд ( 10000 - миллисекунды) выдаётся наш инфопоршень

 

Вызываем функцию:

Стоит поменять логику и вписать важу функция в xr_effects.script:
1. Открываем этот скрипт и пишем вашу функцию.
2. Меняем логику:

Спойлер

[logic] ; логика(можно указываться прямо в секции)
active = sr_idle@one ; указание активной логики

[sr_idle@one] ; эта логика
on_actor_inside = nil %=имя_функции% ; думаю, что не будет вопросов

 

Проигрывание звука:

Тоже дело в логике:

Спойлер

[logic] ; логика(можно указываться прямо в секции)
active = sr_idle@one ; указание активной логики

[sr_idle@one] ; эта логика
on_actor_inside = nil %=play_snd(папка относительно папке sounds\звук)% ; указываем папку в папке sounds а далее сам звук

 

Ну вот собственно и всё. Надеюсь, что у вас всё получится. Всего хорошего, удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу