Перейти к контенту

[SoC] Ковыряемся в файлах


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

Доброй ночи. Скорее всего это измусоленный до дыр вопрос, но я не мог его нагуглить поэтому решил задать вопрос здесь.

Как сделать так что бы диалог главного героя не заходил за рамки диалогового окна? Я так понял нужно что то поправить в xml файле, но где и как?

Tiberhius.gif

Ссылка на комментарий

@Tiberhius Если не ошибаюсь, параметр stretch должен быть равен 1, пишу по памяти. Если его нет, нужно добавить по аналогии с другими.

Изменено пользователем W.A.S.P.
оверквотинг
Добавлено  Опричник,

Изучите "Правила цитирования". https://www.amk-team.ru/forum/topic/13514-obyavleniya/

Сталкер - наше всё!

Ссылка на комментарий
В 21.09.2019 в 00:14, Tiberhius сказал:

Как сделать так что бы диалог главного героя не заходил за рамки диалогового окна?

talk[_16].xml, тэги

question_item:text

other_answer_item:content_text

actor_answer_item:content_text

выставить complex_mode="1"

Если не поможет, то подгонять размеры этих элементов.

  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Всем привет. Что нужно прописать в логике НПС что бы при перемещении из точки А в пункт Б с ним невозможно было завести диалог, а только лишь по прибытию?

Tiberhius.gif

Ссылка на комментарий

Спасибо, Fagot :)

Ещё вопрос.
Как прописать НПС условие, чтобы он никогда не подходил к другому НПС ближе, чем на 1 метр? Во всех схемах поведения. Как будет выглядеть условие?

 

Изменено пользователем Usman_Shinobi
Ссылка на комментарий
В 22.09.2019 в 21:08, Tiberhius сказал:

из точки А в пункт Б с ним невозможно было завести диалог,

Я имел ввиду что бы с НПС во время его перемещения из одной точки в другую невозможно было завести вообще диалог. Что бы до прибытия у него был полный игнор на ГГ.

Tiberhius.gif

Ссылка на комментарий

@Tiberhius, в нужной секции логики: 

meet = no_meet

 Кстати, выше уже дали ответ, в соответствии с твоим вопросом.

Изменено пользователем Fagot.
Ссылка на комментарий

Помогите исправить ошибку!!! Не знаю куда обратиться(((

Вот лог

Скрытый текст

 

* Detected CPU: AuthenticAMD , F15/M0/S1, 3293.00 mhz, 73-clk 'rdtsc'
* CPU Features: RDTSC, MMX, SSE, SSE2

Initializing File System...
using fs-ltx fsgame.ltx
--found external arch mp_military_2.xdb0
FS: 32662 files cached, 5200Kb memory used.
Init FileSystem 5.854361 sec
'xrCore' build 3312, Feb 27 2008

Initializing Engine...
Executing config-script "user.ltx"...
! Cannot open script file [user.ltx]
Starting INPUT device...
Loading DLL: xrRender_R1.dll
Loading DLL: xrGame.dll
! Unable to find InstallUserName entry in registry
* [win32]: free[4056200 K], reserved[47628 K], committed[90412 K]
* [ D3D ]: textures[0 K]
* [x-ray]: crt heap[7235 K], process heap[2322 K], game lua[0 K], engine lua[0 K], render[0 K]
* [x-ray]: economy: strings[1185 K], smem[0 K]
Executing config-script "f:\s.t.a.l.k.e.r. Тень Чернобыля\gamedata\config\default_controls.ltx"...
! cant convert dik_name for dik[16], prop=[
! cant convert dik_name for dik[17], prop=[
! cant convert dik_name for dik[18], prop=[
! cant convert dik_name for dik[19], prop=[
! cant convert dik_name for dik[20], prop=[
! cant convert dik_name for dik[21], prop=[
! cant convert dik_name for dik[22], prop=[
! cant convert dik_name for dik[23], prop=[
! cant convert dik_name for dik[24], prop=[
! cant convert dik_name for dik[25], prop=[
! cant convert dik_name for dik[26], prop=[
! cant convert dik_name for dik[27], prop=[
! cant convert dik_name for dik[30], prop=[
! cant convert dik_name for dik[31], prop=[
! cant convert dik_name for dik[32], prop=[
! cant convert dik_name for dik[33], prop=[
! cant convert dik_name for dik[34], prop=[
! cant convert dik_name for dik[35], prop=[
! cant convert dik_name for dik[36], prop=[
! cant convert dik_name for dik[37], prop=[
! cant convert dik_name for dik[38], prop=[
! cant convert dik_name for dik[39], prop=[
! cant convert dik_name for dik[40], prop=[
! cant convert dik_name for dik[41], prop=[
! cant convert dik_name for dik[44], prop=[
! cant convert dik_name for dik[45], prop=[
! cant convert dik_name for dik[46], prop=[
! cant convert dik_name for dik[47], prop=[
! cant convert dik_name for dik[48], prop=[
! cant convert dik_name for dik[49], prop=[
! cant convert dik_name for dik[50], prop=[
! cant convert dik_name for dik[51], prop=[
! cant convert dik_name for dik[52], prop=[
! cant convert dik_name for dik[144], prop=[
[f:\s.t.a.l.k.e.r. Тень Чернобыля\gamedata\config\default_controls.ltx] successfully loaded.
Executing config-script "user.ltx"...
! Cannot open script file [user.ltx]
SOUND: OpenAL: enumerate devices...
SOUND: OpenAL: EnumerationExtension Present
devices Generic Hardware
SOUND: OpenAL: system  default SndDevice name is Generic Hardware
SOUND: OpenAL: default SndDevice name set to Generic Software
SOUND: OpenAL: All available devices:
1. Generic Software, Spec Version 1.1 (default)
2. Generic Software, Spec Version 1.1 (default)
SOUND: OpenAL: SelectBestDevice is Generic Software 1.1
SOUND: OpenAL: Required device: Generic Software. Created device: Generic Software.
* sound: EAX 2.0 extension: absent
* sound: EAX 2.0 deferred: absent
* sound : cache: 32773 kb, 3805 lines, 8820 bpl
Starting RENDER device...
* GPU [vendor:10DE]-[device:1380]: NVIDIA GeForce GTX 750 Ti
* GPU driver: 26.21.14.3602
* CREATE: DeviceREF: 1
* Vertex Processor: PURE HARDWARE
*     Texture memory: 4087 M
*          DDI-level: 9.0
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: unrecognized, 16
* DVB created: 1536K
* DIB created: 512K
count of .thm files=772
load time=314 ms
* distortion: used, dev(30),need(14)
* SSample: 1024x768
error is error X3539: ps_1_x is no longer supported; use /Gec in fxc to automatically upgrade to ps_2_0
error X3539: Alternately, fxc's /LD option allows use of the old compiler DLL
 

Can't compile shader postprocess

 

Вылетает с тем, что пишет, что нету пиксель шейдеров 1.1

Хоть стоит 750ti в которому 100% есть эти шейдеры!

Уже не знаю что делать( Если не знаете как помочь, или это не по теме, то подскажите куда обратится! Потому что не хочу забрасывать разработку мода((!!!

Изменено пользователем W.A.S.P.
спойлер
Добавлено  Опричник,

Длинные тексты пожалуйста под спойлер. Выделить текст и нажать на панели инструментов кнопку с глазом.

Ссылка на комментарий

Всем привет, появились вопросы по логике НПС. К примеру есть логика:

Скрытый текст

[logic]
active = walker@stay_at_position
combat_ignore = combat_ignore
danger = danger_condition
threshold = threshold@tratata

[walker@stay_at_position]
path_look = esc_borovoy_elevator_look
path_walk = esc_borovoy_elevator_walk
on_info = {+soc_dialog_borovoy_escape_ok} walker2 -- Получаю поршень, перехожу на walker 2.

[walker2]
path_look = esc_borovoy_atp_trup_look
path_walk = esc_borovoy_atp_trup_walk
on_timer = 10000| remark@work -- Можно ли использовать on_timer в схеме walker для переключения в ремарку?

[remark@work]
anim = caution
no_move = true
snd = mil_max_before_collect
target = actor
on_timer = 30000| walker3 -- Перехожу спустя время на walker3.
meet = no_meet
danger = danger_condition

[walker3]
path_look = esc_borovoy_atp_look
path_walk = esc_borovoy_atp_walk

 

Вообщем есть сомнения в правильности моей логики для НПС. Мне нужно что бы НПС c walker2 перешел спустя секунд 10 в remark@work, затем из remark@work ушел в walker3.

Суть логики такова, НПС идет из пункта А в пункт Б, на пункте Б переходит в ремарку (осматривает труп) спустя время идет переход НПС на пункт В.

Надеюсь подробно объяснил суть проблемы.

 

И еще, можно ли использовать на точках p0:name = wp00|a=guard вместо guard к примеру анимацию из ремарки caution? Будет ли он её проигрывать?

Изменено пользователем Tiberhius

Tiberhius.gif

Ссылка на комментарий
2 часа назад, Tiberhius сказал:

Можно ли использовать on_timer в схеме walker для переключения в ремарку

Да.  

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

В path_walk : 

p0:name = wp00|a=anim|t=10000

...

p1:name = wp01|sig=signal1

В логике

on_signal = signal1 | другая_схема

 

 

2 часа назад, Tiberhius сказал:

можно ли использовать на точках p0:name = wp00|a=guard вместо guard к примеру анимацию из ремарки caution? Будет ли он её проигрывать?

Да, будет. Только в path_walk пишутся анамации в движении. Если сталкер стоит/сидит на месте, то - в path_look .

Изменено пользователем Fagot.
  • Спасибо 1
  • Согласен 1
Ссылка на комментарий
1 час назад, Fagot. сказал:

Можно также в точках пути задавать анимацию

Сделал так:

Скрытый текст

[esc_borovoy_atp_trup_look]
points = p0
p0:name = wp00|a=caution|t=20000|sig=signal1
p0:flags = 0x2
p0:position = 108.590683,-7.495135, 5.521363
p0:game_vertex_id = 119
p0:level_vertex_id = 409674


[esc_borovoy_atp_trup_walk]
points = p0
p0:name = wp00
p0:flags = 0x2
p0:position = 108.805817, -7.495113, 5.398840
p0:game_vertex_id = 119
p0:level_vertex_id = 409674

 

Скрытый текст


[logic]
active = walker@stay_at_position
combat_ignore = combat_ignore
danger = danger_condition
threshold = threshold@tratata

 

[walker@stay_at_position]
path_look = esc_borovoy_elevator_look
path_walk = esc_borovoy_elevator_walk
on_info = {+soc_dialog_borovoy_escape_ok} walker2

 

[walker2]
path_look = esc_borovoy_atp_trup_look
path_walk = esc_borovoy_atp_trup_walk
on_signal = signal1| walker3

 

[walker3]
path_look = esc_borovoy_atp_look
path_walk = esc_borovoy_atp_walk

Я хотел что бы он дойдя до walker2 проиграл анимацию 20 секунд, затем подал signal1 и перешел на walker3.

Вместо этого он остановился на мгновение, не проиграл анимацию и перешел на walker3.

Как сделать грамотно его остановку, проигрыш анимации и переход на walker3?

Tiberhius.gif

Ссылка на комментарий

@Tiberhius

Скрытый текст

 


[ment_bar6_look]
points = p0
p0:name = name00|a=anim|t=25000
p0:flags = 0x1
p0:position = 100.897,-0.041,56.958
p0:game_vertex_id = 1224
p0:level_vertex_id = 31901

[ment_bar6_walk]
points = p0,p1
p0:name = name00|a=walk
p0:flags = 0x1
p0:position = 236.539,2.364,-79.962
p0:game_vertex_id = 1272
p0:level_vertex_id = 60596
p0:links = p1(1)

p1:name = name01|a=walk|sig=signal1
...

 

 

 

 

А так не проще(?):

 

[walker@2]
path_look = esc_borovoy_atp_trup_look
path_walk = esc_borovoy_atp_trup_walk
on_signal = signal1| remark@1 ;  сигнал не забыть выдать в последней точке walk

[remark@1]
anim = caution
on_timer = 20000|walker@3
  или:
on_signal = anim_end|walker@3 
...

 

Изменено пользователем Fagot.
  • Спасибо 1
  • Согласен 1
Ссылка на комментарий

Здравствуйте, хотел бы создать систему крафта предметов через диалог с НПС. Ну например: отдаешь сидоровичу медузу и 1000 рублей, он дает каменный цветок. Можете показать новичку пример как так сделать?

  • Сомнительно 1
Ссылка на комментарий
В 27.09.2019 в 22:50, ChopaTopa TV сказал:

Здравствуйте, хотел бы создать систему крафта предметов через диалог с НПС. Ну например: отдаешь сидоровичу медузу и 1000 рублей, он дает каменный цветок. Можете показать новичку пример как так сделать?

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

  • Согласен 1

Tiberhius.gif

Ссылка на комментарий

Всем доброго дня. Заранее извиняюсь, если пишу не в ту тему. У меня вопрос чисто для самообразования. Если я в распакованном all.spawn перенесу, к примеру, обычный ящик с Агропрома на Кордон. То есть, просто пропишу ему другие координаты. Чем это может грозить в дальнейшем и может ли. Игра Тень Чернобыля.

Pir%40t%40s.gif

Ссылка на комментарий

@ChopaTopa TV, с помощью <precondition> перед фразой в диалоге проверяешь, есть ли у ГГ в инвентаре нужные предметы, после чего с помощью <action> в другой фразе удаляешь/передаёшь предметы NPC, затем таким же <action> спавнишь предметы в инвентарь ГГ.

 

Скрытый текст

 


function has_medusa(first_speaker, second_speaker)
    return first_speaker:object("af_medusa") ~= nil --/ есть ли у ГГ предмет af_medusa;
end

function delete_medusa()
    local oItem = db.actor:object("af_medusa") --/ определяем предмет у ГГ;
    if oItem then --/ у ГГ есть предмет;
        db.actor:drop_item(oItem) --/ выбрасываем предмет (опционально);
        alife():release(alife():object(oItem:id()), true) --/ удаляем из игры;
    end
end

function give_af (trader, actor)
    dialogs.relocate_item_section(trader, "каменный_цветок", "in") --/вручаем ГГ предмет "каменный цветок" (не помню название в конфигах);
end

 


Под спойлер затолкал все нужные тебе функции. Проверка делается так: <precondition>твой_скрипт.has_medusa</precondition>. Передача: <action>твой_скрипт.delete_medusa</action>. Названия функций, естественно, пишешь свои, предметы тоже. 

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...