* Sb    * Магазин Текущее время: 30 дек 2024, 20:22

Часовой пояс: UTC + 2 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ 1 сообщение ] 
{ VISITS } Просмотры: 3246  Добавили в закладки Добавили в закладки: 0  Подписчиков Подписчиков: 1 
Подписчиков: СКАУТ
Автор Сообщение
 Заголовок сообщения: Добавляем проводника
СообщениеДобавлено: 15 июн 2011, 19:19 
Не в сети
Сталкер
Сталкер
Продвижение:
21.5%
Аватара пользователя

Зарегистрирован: 22 сен 2010, 14:31
В кошельке:
51.00

Сообщения: 329

Откуда: Минск
SoC. Добавляем проводника
[править] Теория
В ТЧ есть единственный момент, когда в результате диалога с НПС, ГГ перемещается. Это диалог с "О-Сознанием". После отказа от вступления, ГГ перемещается на АЭС2. Если использовать эту функцию, можно создать в ТЧ проводника.
Примечание: Проводник не будет перемещаться вместе с вами, как в ЗП. Вы будете перемещаться в одиночку, как в ЧН.
[править] Практика
Для этого:
1). Для этого в gamedata\scripts находим файл dialogs_aes.script. В нём имеется следующая функция:

Код:
function osoznanie_decline(npc, actor)
db.actor:disable_info_portion("oso_init_dialog")
npc:stop_talk()
actor:stop_talk()
xr_effects.enable_ui(db.actor, nil)
local point = patrol("mon_jump_aes2_walk")
local look = patrol("mon_jump_aes2_look")
 
db.actor:set_actor_position(point:point(0))
local dir = look:point(0):sub(point:point(0))
db.actor:set_actor_direction(-dir:getH())
 
end


2). Копируем эту функцию, допустим, в escape_dialog из директории gamedata\scripts
3). Обратите внимание на вот этот фрагмент из функции: db.actor:disable_info_portion("oso_init_dialog"). Здесь функция ссылается на инфопоршень, но на Кордоне данный инфопоршень не прописан.
4). Тогда переименовываем данный инфопоршень так, как вам удобно, например db.actor:disable_info_portion("esc_init_dialog"). Примечание: Название инфопоршня это "esc_init_dialog" (то ,что за скобками, переименовывать не надо). Затем добавляем инфопоршень в файл info_101escape.xml из директории gamedata\config\gameplay. В этом файле добавляем следующее: <info_portion id="esc_init_dialog"></info_portion>
5). Итак, функция есть, инфопоршень тоже есть. Теперь нужны координаты. Обратите внимание на следующий фрагмент функции:

Код:
local point = patrol("mon_jump_aes2_walk")
local look = patrol("mon_jump_aes2_look")


Здесь функция ссылается на определённые координаты на АЭС2. Но нам нужны координаты на Кордоне. Для этого открываем way_101_escape.ltx и там дописываем пути. Например вот так:

Код:
[mon_jump_esc8_look]
points = p0
p0:name = wp00
p0:position = -239.110947,-19.788391,-134.999161
p0:game_vertex_id = 8
p0:level_vertex_id = 16191
 
 
[mon_jump_esc8_walk]
points = p0
p0:name = wp00
p0:position = -238.017761,-19.888292,-140.161987
p0:game_vertex_id = 47
p0:level_vertex_id = 17468


Всё пути есть. Только теперь в функции, переименуйте фрагмент:

Код:
local point = patrol("mon_jump_aes2_walk")
local look = patrol("mon_jump_aes2_look")
 

На фрагмент:

Код:
local point = patrol("mon_jump_esc8_walk")
local look = patrol("mon_jump_esc8_look")


Теперь осталось только привязать всё это к диалогу. Я взял диалог с Кузнецовым.
Открываем файл dialogs_escape.xml и находим следующие строки:

Код:
<dialog id="esc_bridge_soldiers_start">
<precondition>dialogs.is_not_wounded</precondition>
<phrase_list>
<phrase id="12">
<text>esc_bridge_soldiers_start_12</text>
<next>13</next>
</phrase>


Это фраза "Мне надо дальше". Сюда вставляем активизацию нашей функции. Получется следующее:

Код:
<dialog id="esc_bridge_soldiers_start">
<precondition>dialogs.is_not_wounded</precondition>
<phrase_list>
<phrase id="12">
<text>esc_bridge_soldiers_start_12</text>
<action>escape_dialog.osoznanie_decline</action> Здесь следующая структура: <action>Название_скрипта. Название_функции</action>
<next>13</next>
</phrase>


Вот, собственно и всё. Теперь после фразы "Мне надо дальше" вы переместитесь к бункеру Сидоровича.


Я делал также но чуток исправил:

Код:
function osoznanie_decline(npc, actor)
--Поршень не  нужен, он всёравно удаляется
npc:stop_talk()
actor:stop_talk()
xr_effects.enable_ui(db.actor, nil)
local point = patrol("mon_jump_aes2_walk")
local look = point -- указать можно только один путь
 
db.actor:set_actor_position(point:point(0))
local dir = look:point(0):sub(point:point(0))
db.actor:set_actor_direction(-dir:getH())
 
end



Автор: mma
Дооформил: DarkST
Подправил: Бродяга
Категория: Скрипты


Просьба не оставлять коментарии типа: "спасибо за инфу", "прикольно" ну и т.п.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

   Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
В этой теме нет новых непрочитанных сообщений. Добавляем арт в аномалию (зп) [в этом окне]

в форуме База знаний

DiGGeR225

6

6502

28 апр 2011, 09:27

Ашот Перейти к последнему сообщению [в этом окне]

Часовой пояс: UTC + 2 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron

[Мобильная версия]

Создано на основе phpBB® Forum Software © phpBB Group
[ Time : 0.088s | 26 Queries | GZIP : On ]

PlayStation style by HighDefGeek