Сповіщення
Очистити все

SoC. Додаємо провідника


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Теорія

У ТЧ є єдиний момент, коли в результаті діалогу з НПС ГГ переміщається. Це діалог із "Про-Свідомістю". Після відмови від вступу, РР переміщається на АЕС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 ) ( "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_l01escape.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 ( " - вказати можна лише один шлях

 
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
 

 

А я робив ще легше – ось так

 
function osoznanie_decline ( npc, actor ) 
npc:stop_talk ( ) 
actor:stop_talk ( ) 
db.actor:set_actor_position ( vector ( ) :set ( позиція X,позиція Y,позиція Z ) )  -- Замість написів пишемо координати 
end
 

Власне перенесення на нову локацію відсутнє, але місця займе менше.


   
Цитата