Перейти к содержанию

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

 
 

стрелок_2009 Ну, как сказать, GeJorge в SGM 2.2 для каждого ствола вывел его базовые характеристики с форматированием и цветовым выделением, а вас что-то сдерживает.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Возможно ли (не прошу сделать) сделать скрипт, противоположный npc_in_actor_frustrum?
Т.е. выдать инфопоршень, когда НПС исчезает с поля зрения актора.
Пытался сделать таким образом:
 

Спойлер

function npc_out_of_actor_frustrum(npc)
    local actor_dir = device().cam_dir
    local npc_dir = npc:position():sub(db.actor:position())
    local yaw = yaw_degree3d(actor_dir, npc_dir)
    news_manager.send_tip(db.actor, "g_man_ischez", nil, "seeker", nil, nil)
    return yaw > 35
end

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
5 часов назад, NewValveCom сказал:

противоположный npc_in_actor_frustrum?

Противоположная - это инверсия: not npc_in_actor_frustrum(npc)

function npc_out_actor_frustrum(npc)
	return not npc_in_actor_frustrum(npc)
end


  

  • Лайк 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
6 часов назад, denis2000 сказал:

Противоположная - это инверсия: not npc_in_actor_frustrum(npc)


function npc_out_actor_frustrum(npc)
	return not npc_in_actor_frustrum(npc)
end


  

Вешаю условие исчезновения сталкера после пропажи с поля зрения согласно скрипту - не работает.
 

Спойлер

[logic@stalker_noname]
suitable = {=check_npc_name(stalker_noname)}
active = walker@1
prior = 200

[walker@1] 
path_walk = man_1_walk 
on_info = {+noname_spawn} remark@1
meet = no_meet

[remark@1]
target = story | actor
on_info = {=npc_in_actor_frustrum} %+noname_frustrumed%
on_info2 = {+noname_forgot} walker@2
anim = wait
meet = no_meet
close_snd_hello = nil
close_snd_bye = nil

[walker@2] 
path_walk = man_2_walk 
on_info = {=npc_out_actor_frustrum} %=send_tip(test:got_duty_light_armor) =remove_npc%
meet = no_meet 

 

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


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

NewValveCom Где прописана функция какие и как туда передаются параметры? Подумайте и ответьте на эти вопросы.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Продолжаю копаться в звуковых файлах ЗП/ЧН. Появился вопрос по поводу того, как конкретно работают периоды в файле configs\environment\sound_channels.ltx 

Вот пример секции звуковых каналов: 

[crows_01]
        max_distance               = 30.000000
        min_distance                = 20.000000
        period0                          = 50000
        period1                          = 55000
        period2                          = 7000
        period3                          = 20000
        sounds                           = ambient\creatures\crow_01, ambient\creatures\crow_02 

Как конкретно работают period0, period1, period2, period3? Они просто считывают указанное в них время и не играют звук во время него или между period0 - period1 высчитывается среднее время и звук не играется во время него? И в чём измеряются эти цифры (секунды/миллисекунды?). 
Обычно тыкал на подбор, но сейчас стало интересно, как всё же это устроено. 

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


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

Вот что написано по этим параметрам в движке:
period 0 эта опция определяет минимальный интервал времени запуска (в секундах).
period 1 эта опция определяет максимальный интервал времени запуска (в секундах).
period 2 эта опция отвечает за минимальный интервал паузы (в секундах).
period 3 эта опция отвечает за максимальный интервал паузы (в секундах).
Однако имхо не в секундах, а в милисекундах.  Должно соблюдаться period 0 < period 1, а period 2 < period 3

  • Мастер! 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Возможно ли НПС прописать/убрать какие либо партиклы скриптом/логикой? Свечение, горение, дым, пар, искры и т.п. 

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

45545432.gif

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


Ссылка на сообщение
Поделиться на другие сайты
 
13 минут назад, monk сказал:

Возможно ли НПС прописать/убрать какие либо партиклы скриптом/логикой?

В ЗП, когда ГГ движется в Путепроводе под Припятью, отыгрываются партиклы зеленого дыма прямо "перед носом" ГГ. Создается иллюзия, что ГГ находится в облаке ядовитых испарений.

В ЧН, над головой Стрелка в битве на ЧАЭС, горит прямо защитный Нимб какой-то, пока Шрам шмаляет по нему из Гаусс пушки.

Все это партиклы, которые отыгрываются на НПС. Привязка идет к определенной кости скелета.

Можете подсмотреть как это сделано в ресурсах игр ЗП и ЧН.

 

  • Спасибо 1

Терпение... И все получится.

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


Ссылка на сообщение
Поделиться на другие сайты
 
21 час назад, denis2000 сказал:

Вот что написано по этим параметрам в движке:
period 0 эта опция определяет минимальный интервал времени запуска (в секундах).
period 1 эта опция определяет максимальный интервал времени запуска (в секундах).
period 2 эта опция отвечает за минимальный интервал паузы (в секундах).
period 3 эта опция отвечает за максимальный интервал паузы (в секундах).
Однако имхо не в секундах, а в милисекундах.  Должно соблюдаться period 0 < period 1, а period 2 < period 3

Спасибо за помощь, а то никак не мог понять, как они конкретно роботают. 

Если не сложно и знаешь, подскажи ещё по такому вопросу - возможно ли создать для локации отдельные наборы эмбиентов со своими звуковыми каналами?
На форуме читал где-то, что для этого достаточно кинуть в папку, находящуюся по пути configs\environment\ambients, файл с названием локации (к примеру escape.ltx) в нём прописать секции (day, night, evening, morning и т.п.), потом в sound_channels.ltx создать необходимые звуковые каналы и на локации будут играть именно они. Попробовал, но ничего из этого не работает по итогу. 

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


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

Сделал новую карту для игры и разместил на ней локации (оригинальные) и открывая карту в КПК локации смещены, потом где-то вычитал что надо изменить параметр round_rect , изменил его и теперь карта в КПК и миникарте отметки смещены

Что делать? 

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


Ссылка на сообщение
Поделиться на другие сайты
 
7 часов назад, Вереск сказал:

Попробовал, но ничего из этого не работает по итогу.

Не удивительно!

Делать надо так:
1. В файле gamedata\configs\game_maps_single.ltx в секции локации прописываем параметр weathers например: weathers = door
2. В папку gamedata\configs\environment\weathers\ добавляем файл door.ltx в котором указываем параметр ambient например: ambient = door2
3. В файл gamedata\configs\environment\ambients.ltx добавляем секцию door2 с параметром sound_channels = door3
4. В файл gamedata\configs\environment\sound_channels.ltx добавляем секцию door3 с параметром sounds = ambient\rnd_outdoor\rnd_shooting_1, ambient\rnd_outdoor\rnd_shooting_2, ambient\rnd_outdoor\rnd_shooting_4, ambient\rnd_outdoor\rnd_shooting_5, ambient\rnd_outdoor\rnd_shooting_7

В результате имеем локацию с постоянной канонадой на фоне.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
22 часа назад, denis2000 сказал:

Не удивительно!

Делать надо так:
1. В файле gamedata\configs\game_maps_single.ltx в секции локации прописываем параметр weathers например: weathers = door
2. В папку gamedata\configs\environment\weathers\ добавляем файл door.ltx в котором указываем параметр ambient например: ambient = door2
3. В файл gamedata\configs\environment\ambients.ltx добавляем секцию door2 с параметром sound_channels = door3
4. В файл gamedata\configs\environment\sound_channels.ltx добавляем секцию door3 с параметром sounds = ambient\rnd_outdoor\rnd_shooting_1, ambient\rnd_outdoor\rnd_shooting_2, ambient\rnd_outdoor\rnd_shooting_4, ambient\rnd_outdoor\rnd_shooting_5, ambient\rnd_outdoor\rnd_shooting_7

В результате имеем локацию с постоянной канонадой на фоне.

Так это получается для каждой локации придётся свою погоду делать. А если у меня к примеру Атмосфер 3, как база используется, то для каждой локации дублировать его секции, а это уже по моему глупо. 

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 04.03.2025 в 13:44, Вереск сказал:

достаточно кинуть в папку, находящуюся по пути configs\environment\ambients, файл с названием локации (к примеру escape.ltx) в нём прописать секции (day, night, evening, morning и т.п.), потом в sound_channels.ltx создать необходимые звуковые каналы и на локации будут играть именно они.

О, а такая схема тоже осталась в движке и работает с секциями: [day], [default], [evening], [morning], [night], [rain], [tuman]


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
7 часов назад, denis2000 сказал:

О, а такая схема тоже осталась в движке и работает с секциями: [day], [default], [evening], [morning], [night], [rain], [tuman]

Видимо нет, потому что не работает она. Если можешь, опиши подробней, как она действует, возможно что-то не правильно я делал.

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


Ссылка на сообщение
Поделиться на другие сайты
 
3 часа назад, Вереск сказал:

Видимо нет, потому что не работает она.

Точно работает:
1. Я предварительно прошерстил исходники движка и она там не вырезана, что меня очень удивили - вед это анахронизм.
2. Я проверил ее работу точно по описанию - все заработало.

3 часа назад, Вереск сказал:

возможно что-то не правильно я делал.

Так выкладываете правки...

Изменено пользователем denis2000
  • Мастер! 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
7 часов назад, denis2000 сказал:

Точно работает:
1. Я предварительно прошерстил исходники движка и она там не вырезана, что меня очень удивили - вед это анахронизм.
2. Я проверил ее работу точно по описанию - все заработало.

Так выкладываете правки...

А исходники CoC'a глянуть могёшь?

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
18 минут назад, Вереск сказал:

А исходники CoC'a глянуть могёшь?

Там в этом месте нет значимых отличий от оригинала.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

С out_of_frustrum разобрался. Нужно было в ещё один скрипт функцию вписать (о чём я не сразу подумал).
 
Сделал скрипт на смену текстуры мапы ПДА во время нахождения актора в зоне.
 

Спойлер

function on_info(info_id)
    if xr_conditions.actor_in_zone(actor, nil, {"tonneled"}) then
        if info_id == "ui_pda" then
            level.start_stop_menu(level.main_input_receiver(), true)
        elseif info_id == "ui_pda_hide" then
            level.start_stop_menu(PdaNoiseWnd(), true)
        end
    end
end

class "PdaNoiseWnd" (CUIScriptWnd)
function PdaNoiseWnd:__init() super()
    self:Init(0,0,1024,768)
    self.ClickBtnExit = function() level.start_stop_menu(self, true) end
    
    self.noise = CUIStatic()
    self.noise:InitTexture("ui\\ui_no_signal")
    self.noise:SetOriginalRect(0,0,1024,768)
    self.noise:Init(3,20,891,643)
    self:AttachChild(self.noise)
end

function PdaNoiseWnd:OnKeyboard(dik, keyboard_action)
    CUIScriptWnd.OnKeyboard(self, dik, keyboard_action)
    if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
        if dik == DIK_keys.DIK_ESCAPE or dik == DIK_keys.DIK_P or dik == DIK_keys.DIK_H or dik == DIK_keys.DIK_M then
            self:ClickBtnExit()
        end
    end
    return true
end
 

По итогу безлоговый вылет. Буду благодарен, если подскажете, ГДЕ может быть ошибка.


Дополнено 33 минуты спустя

Также хочу дополнить.
В прошлой модификации добавил функцию боя нпс с ножом.
Всё было хорошо, но спустя время, перенеся в другой мод все необходимые файлы, скрипты, функции - нпс просто подходят к актору и... всё. С ножом по сути подходят к нему вплотную и ничего не делают.
Все скрипты я кинул и зарегистрировал. Анимация knife_fire зарегистрировал в state_lib. 
Что я упускаю?
 

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


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

NewValveCom Возможно схема meet перебивает схему боя. В планировщике точно всё добавили?

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


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, Mass сказал:

NewValveCom Возможно схема meet перебивает схему боя. В планировщике точно всё добавили?

Удалил секцию meet - не помогло.
По скриптам анимаций, самих функций боя с ножем я всё добавил.


Дополнено 44 минуты спустя

Насчёт планировщика.
Вот биндер в xr_combat.script

Спойлер

----------------------------------------------------------------------------------------------------------------------
-- binder
----------------------------------------------------------------------------------------------------------------------
function add_to_binder(npc, ini, scheme, section, storage)
    local manager = npc:motivation_action_manager()

    manager:add_evaluator( xr_evaluators_id.script_combat, this.evaluator_check_combat("script_combat",storage) )

    local action = manager:action(stalker_ids.action_combat_planner)
    action:add_precondition(world_property(xr_evaluators_id.script_combat, false))

    xr_combat_zombied.add_to_binder ( npc, ini, storage, manager )
    xr_combat_camper.add_to_binder  ( npc, ini, storage, manager )
    
---------------------------------------------------------------------------------------------------
    xr_combat_knife.add_to_binder ( npc, ini, storage, manager )
---------------------------------------------------------------------------------------------------
end

 

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


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

Здравствуйте. Игра вылетает с известным описанием. Вроде зарегистрировал смарт везде: в геим графс, смарт террэин маск, но однако это происходит. 
 

Спойлер

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CInifile::r_section
[error]File          : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp
[error]Line          : 502
[error]Description   : <no expression>
[error]Arguments     : Can't open section 'tm_smart1'. Please attach [*.ini_log] file to your bug report
 
 


 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
4 часа назад, NewValveCom сказал:

Удалил секцию meet

Она тут ни причём. Нужно смотреть планировщик и экшен

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 06.03.2025 в 20:09, NewValveCom сказал:

 level.start_stop_menu(level.main_input_receiver(), true)

Это только в тч (и чн вроде) работает (если не используешь какой-то движок, который восстанавливает)

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, FFFFF сказал:

Игра вылетает с известным описанием.

В конфигах не найдена секция [tm_smart1] на которую что-то (в спавне? в скриптах? в смарттеррейнах?) ссылается.

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


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

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

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

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

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

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

Войти

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

Войти

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