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

SoC. Добавляем проводника — различия между версиями

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

Перейти к: навигация, поиск
Строка 1: Строка 1:
В ТЧ есть единственный момент ,когда в результате диалога с НПС ,ГГ перемещается. Это диалог с О - сознанием. После отказа от вступления, ГГ перемещается на АЭС 2. Если использовать эту функцию ,можно создать в ТЧ проводника.
+
=== Теория ===
Примечание: Проводник не будет перемещаться вместе с вами ,как в ЗП. Вы будете перемещаться в одиночку ,как в ЧН.
+
В ТЧ есть единственный момент, когда в результате диалога с НПС, ГГ перемещается. Это диалог с "О-Сознанием". После отказа от вступления, ГГ перемещается на АЭС2. Если использовать эту функцию, можно создать в ТЧ проводника.<br/>
Для этого:
+
''Примечание: Проводник не будет перемещаться вместе с вами, как в ЗП. Вы будете перемещаться в одиночку, как в ЧН.''<br/>
1)Для этого в '''gamedata\scripts''' находим файл '''dialogs_aes.script'''. В нём имеется следующая функция
+
=== Практика ===
 +
Для этого:<br/>
 +
1). Для этого в '''gamedata\scripts''' находим файл '''dialogs_aes.script'''. В нём имеется следующая функция:
 
<lua>
 
<lua>
 
function osoznanie_decline(npc, actor)
 
function osoznanie_decline(npc, actor)
Строка 18: Строка 20:
 
end
 
end
 
</lua>
 
</lua>
2)Копируем эту функцию ,допустим ,в '''escape_dialog''' из директории '''gamedata\scripts'''
+
2). Копируем эту функцию, допустим ,в '''escape_dialog''' из директории '''gamedata\scripts'''<br/>
3)Обратите внимание на вот этот фрагмент из функции: '''db.actor:disable_info_portion("oso_init_dialog")'''. Здесь функция ссылается на инфопоршень ,но на Кордоне данный инфопоршень не прописан. Тогда
+
3). Обратите внимание на вот этот фрагмент из функции: '''db.actor:disable_info_portion("oso_init_dialog")'''. Здесь функция ссылается на инфопоршень, но на Кордоне данный инфопоршень не прописан. <br/>
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>'''
+
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>'''<br/>
5)Итак ,функция есть ,инфопоршень тоже есть. Теперь нужны координаты. Обратите внимание на следующий фрагмент функции:
+
5). Итак, функция есть, инфопоршень тоже есть. Теперь нужны координаты. Обратите внимание на следующий фрагмент функции:
 
<lua>
 
<lua>
 
local point = patrol("mon_jump_aes2_walk")
 
local point = patrol("mon_jump_aes2_walk")
Строка 27: Строка 29:
 
</lua>
 
</lua>
 
Здесь функция ссылается на определённые координаты на АЭС2. Но нам нужны координаты на Кордоне. Для этого открываем '''way_101_escape.ltx''' и там дописываем пути. Например вот так:
 
Здесь функция ссылается на определённые координаты на АЭС2. Но нам нужны координаты на Кордоне. Для этого открываем '''way_101_escape.ltx''' и там дописываем пути. Например вот так:
 
 
<lua>
 
<lua>
 
[mon_jump_esc8_look]
 
[mon_jump_esc8_look]
Строка 56: Строка 57:
 
</lua>
 
</lua>
  
Теперь осталось только привязать всё это к диалогу. Я взял диалог с Кузнецовым.
+
Теперь осталось только привязать всё это к диалогу. Я взял диалог с Кузнецовым.<br/>
 
Открываем файл dialogs_escape.xml и находим следующие строки:
 
Открываем файл dialogs_escape.xml и находим следующие строки:
  
Строка 82: Строка 83:
 
</lua>
 
</lua>
  
Вот ,собственно и всё. Теперь после фразы "Мне надо дальше" вы переместитесь к бункеру Сидоровича.
+
Вот, собственно и всё. Теперь после фразы "Мне надо дальше" вы переместитесь к бункеру Сидоровича.<br/>
Автор: '''mma'''
+
Автор: '''mma'''<br/>
 +
Дооформил: '''DarkST'''
  
 
[[Категория:Скрипты]]
 
[[Категория:Скрипты]]

Версия 08:00, 21 января 2011

Теория

В ТЧ есть единственный момент, когда в результате диалога с НПС, ГГ перемещается. Это диалог с "О-Сознанием". После отказа от вступления, ГГ перемещается на АЭС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>
 

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

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