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

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

 
 

Neptun речь о банальном упрощении жизни, как это реализовано в других местах. Когда есть один статичный зацикленный кадр, гораздо проще его и использовать, а переключаться по событиям, а не по таймеру, делая кучу однотипных anm-ок.

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


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

Добрый вечер. Я подключил к Зову Припяти локацию Кордон. Заселил её. Организовал симуляцию.  Сделал, как в оригинале. Чтобы сталкеры утром уходили на прогулку а вечером шли на базу.

Спойлер


    army = {
            squad = nil,
            smart = {     base     = { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not travel_manager.check_squad_for_enemies(squad) and (target:name() == "esc_b1") end },
                        surge     = { prec = function() return xr_conditions.surge_started() end },
                        territory= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },
                        resource = { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end }
                    },
            actor = nil
    },
    stalker = {
            squad = nil,
            smart = {     base     = { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not travel_manager.check_squad_for_enemies(squad) and (target:name() == "esc_b6") end },
                        surge     = { prec = function() return xr_conditions.surge_started() end },
                        territory= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },
                        resource = { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end }
                    },
            actor = nil
    },
    bandit = {
            squad = {     stalker     = { prec = function(squad, target) return in_time_interval(8,21) and not xr_conditions.surge_started() and simulation_objects.sim_dist_to(squad, target) <= 150 end }
                    },
            smart = {     base     = { prec = function(squad, target) return in_time_interval(21,8) and not xr_conditions.surge_started() and not travel_manager.check_squad_for_enemies(squad) and (target:name() == "esc_b10") end },
                        territory= { prec = function() return in_time_interval(8,21) and not xr_conditions.surge_started() end },
                        surge     = { prec = function() return xr_conditions.surge_started() end }
                    },
            actor = nil
    },

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

Воодушевился успехом и решил в этом же скрипте запретить монстрам заходить на базовые смарты.

 

Спойлер


    monster_predatory_day = {
            squad = {     monster_vegetarian            = { prec = function() return in_time_interval(6,19)    end    },
                        stalker                        = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
                        bandit                        = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
                        dolg                        = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
                        freedom                        = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
                        killer                        = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end }
                    },
            smart = {     territory= { prec = function() return  in_time_interval(6, 19) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end },
                        lair     = { prec = function() return in_time_interval(19,6) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end }
                    },
            actor = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end }
    },
    monster_predatory_night = {
            squad = {     monster_vegetarian            = { prec = function() return in_time_interval(21,6)    end    },
                        stalker                        = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
                        bandit                        = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
                        dolg                        = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
                        freedom                        = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
                        killer                        = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end }
                    },
            smart = {     territory= { prec = function() return  in_time_interval(19,6) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end },
                        lair     = { prec = function() return in_time_interval(6,19) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end }
                    },
            actor = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end }
    },

И получил зеленое насекомое.

Спойлер

 

FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : ..\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ...ishing\Зов Припяти\gamedata\scripts\sim_board.script:107: attempt to index global 'target' (a nil value)
 

stack trace:

 

107 строка -- 

            smart = {     territory= { prec = function() return  in_time_interval(6, 19) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end },

Чем то движку не приглянулось указание смартов.  Вопрос - чем?  Можно ли запретить в sim_board конкретным фракциям лезть на конкретные смарты?

 

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


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

Платформа: x-ray 1.6

Скрипты/конфиги

Создаю смарты на локации. Решил, очень грубо говоря, включить debug для лога в скрипте _g.script в функции "printf(fmt,...)"

local con = get_console()
con:execute(string.gsub(string.format(fmt,...), " ", "_"))
con:execute("flush")

При загрузке игры вылет, в логах "Wrong smart name [%s] in start position" - это из функции "sim_board:fill_start_position()", скрипт - sim_board.script. Самый главный вопрос, который меня мучает, что за таблица "smarts_by_names", куда прописывать свои созданные смарты, уже везде прописал, даже в game_graph.ltx и поставил game_graph в Level Editor на локации внутрь смарта, в свойствах в 4 пункте выбрал свой смарт. В файлах по пути ../misc/*.ltx так же везде указал мои смарты, сквады. В скриптах, в принципе, прописал. Остаётся только момент с таблицей в sim_board.script, правильно ли я указал там всё, для объекта "simulation_activities"...но повторил за оригиналом, плюс там скорее настройки поведения смарта, и там не все смарты прописаны. Режим debug (если это можно так назвать) для лога в _g.script убирать не хочу. Что за ошибка то такая - "Wrong smart name [%s] in start position".

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


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

Когда есть один статичный зацикленный кадр

Анимация привязана к конкретному месту на локации, она при всём желании не может быть использована где бы то ни было ещё. Следовательно, ты говоришь об анимации, которая имитирует вид от 1-го лица. Чтобы ими лучше манипулировать, надо запускать их через скрипты, а не через форму sr_cutscene.


Дополнено 2 минуты спустя
6 часов назад, Сергей Шубин сказал:

Чем то движку не приглянулось указание смартов.

По-моему, нужно создать локальную переменную target

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


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

Сергей Шубин Уважаемый! Вы заявляете прекондишен-функцию: prec = function(), но параметры в нее не передаете, а внутри нее пытаетесь их проверять: target:name() ~= "esc_b6"
Выход: используете параметры - заявляйте их prec = function(squad, target)


12 часов назад, bad_major сказал:

"Wrong smart name [%s] in start position"

Означает, что в стартовой позиции (конфиг simulation.ltx секции [start_position_***]) заявлен смарт, который фактически отсутствует (не внесен в таблицу smarts_by_names, вноситься в нее смарт автоматически при регистрации объекта данного класса движком). Проверяйте есть ли заявленный смарт в all.spawn.

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

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

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


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

Как сделать, чтобы НПС реагировал на выстрел от игрока? 

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


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

del

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

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

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


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

А в чем препятствие поставить в апдейт и посмотреть за последствиями? Хотя функция довольно странная. Если ГГ и НПС делают что? Вероятно, должна быть проверка, что они вступили в диалог, потому что результат как раз говорит, что все бабки будут отданы этому НПС, но тут ещё надо добавить проверку, что у ГГ вообще есть деньги.

О как... Тогда поставлю вопрос другой... Есть ли такая функция, чтобы игрок лишился ВСЕХ деняг и возможно ли такую функцию поставить в апдейт?

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


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

Крим Рекомендую покрутить каллбек на слух НПС. По идее они слышат выстрелы.

40 минут назад, Doctor_Oz сказал:

лишился ВСЕХ деняг

db.actor:give_money(-db.actor:money())

Изменено пользователем Hozar_2002
  • Мастер! 2
  • Спасибо 2

Еще один злодей!
20 ГБ ОЗУ DDR3 2133 МГц (Разносорт) Процессор Intel Core i5 7600k 3.80 ГГц
Видеокарта Gigabyte Radeon RX 580 8192 МБ GDDR5 (Micron)

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


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

Была тут такая ошибка никто на нее не ответил,сам столкнулся. Знает кто как лечить? при загрузке уровня в ле. 

FATAL ERROR
 
[error]Expression    : assertion failed
[error]Function      : CEditableObject::UpdateBox
[error]File          : D:\GameDev\Engine\XRayEngine\XRayEngine\Source\Editors\XrECore\Editor\EditObject.cpp
[error]Line          : 162
[error]Description   : !m_Meshes.empty()
 

stack trace:

 
FATAL ERROR
 
[error]Expression    : error handler is invoked!
[error]Function      : invalid_parameter_handler
[error]File          : D:\GameDev\Engine\XRayEngine\XRayEngine\Source\XrCore\xrDebugNew.cpp
[error]Line          : 786
[error]Description   : 
 

stack trace:

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

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


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

Какому-то объекту в конфиге не задано значение какого-то параметра.

Например:

ammo_mag_size =

В этом случае, оружию не было указано обязательное значение параметра ёмкости магазина.


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

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


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

Я знаю есть функция, которая спавнит динамические объекты, мне она нужна. Единственное, что я помню от неё - это обрывок названия "cond". Нигде не могу отыскать её. Подскажите, прошу вас. 

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


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

del

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

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


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

Я знаю есть функция, которая спавнит динамические объекты

=spawn_object(объект:точка_спавна)

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


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

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

 

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


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

Как запаковать исходный код условного Xray Monolith в dll. Файлы( в "папка с игрой"/bin) для работы с игрой?

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


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

Как запаковать исходный код условного Xray Monolith в dll. Файлы( в "папка с игрой"/bin) для работы с игрой?

В Visual Studio 201(7, 9) вроде, других способов нет.

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


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

Поставил NPC на карту через smart_cover, прописал логику, респавн, поставил smart_terrain.

При старте новой игры, вылет. ЛОГ СНИЗУ

FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ...\x-ray_cop_sdk\editors\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)

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


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

У меня комп крашится во время игрового вылета, вот прям зависает и все. Единственное, что выходит делать - это перезагрузка. Однако после неё в логе ничего не написано, просто пусто. Как я могу исправить вылет, если не знаю лога? Никак. Подскажите, как можно исправить краш моей системы во время вылета? 

Изменено пользователем Крим

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


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

Крим можно не перезагружать компьютер, а запустить диспетчер задач:
Ctrl + Alt + Delete - потом нажать диспетчер задач
Снять задачу с X-ray 1.6 engine
Может помочь, но лог может не записаться. Лучше всего запускать сталкер через Visual Studio в режиме локального отладчика Windows, тем самым вы 100% узнаете, в чём причина вылета.


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

most34 может в логике смарта прописано
[logic]
а надо
[smart_terrain]
?


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

Hikki смотри тутор как настроить OpenXray в Visual Studio. Всё по аналогу сделай, только думаю стоить закинуть ресуры этого движка вместо двигла OpenXray.

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


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

Здравствуйте, товарищи сталкеры! Я тут решился попробовать себя в роли мододела. И вот, хочу мод свой развернуть на оригинальных локациях ЗП, но в зимнем сеттинге. Подскажите мне, пожалуйста, как это можно реализовать? И какой движок использовать (Оригинальный от ЗП или тот же, но модифицированный сообществом)? Заранее благодарю вас!

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


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

 Не знаю почему, но когда я делал заселение локации для своей модификации, столкнулся с таким вылетом:

Спойлер

* [win32]: free[312764 K], reserved[186392 K], committed[3695084 K]
* [ D3D ]: textures[2668306 K]
* [x-ray]: crt heap[3410070 K], process heap[3410070 K], game lua[8160 K], render[188 K]
* [x-ray]: economy: strings[22550 K], smem[11048 K]
compiling shader deffer_model_bump_d-hq_1
compiling shader model_env_lq
compiling shader model_env_lq_0
compiling shader accum_emissivel
compiling shader deffer_model_bump_d-hq_0
compiling shader deffer_model_flat_d_0
compiling shader model_def_lplanes_0
compiling shader model_env_lq_1
compiling shader model_def_lplanes_1
! Unknown command:  dump_infos
compiling shader model_scope_lense
compiling shader model_scope_lense_0
intro_start game_loaded
* MEMORY USAGE: 3499174 K
* End of synchronization A[1] R[1]
intro_delete ::update_game_loaded
compiling shader yuv2rgb
stack trace:

 
[error][       8]    : (null)

Не знаю точно, с чем он связан, но как я понял, это связано как-то с точками спавна. Ещё при попытке спавна чего-либо (через Повелитель Зоны, либо при прогрузке НПС в смарте) у меня происходит вылет связанный с недостатком памяти. И происходит он всегда. Я уже писал этот вопрос в тему движка (Advanced X-Ray), и мне ответили, что это с движком не связано. Поэтому я задал этот вопрос сюда.

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

Как ты относишься к людям, так и люди будут относиться к тебе.

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


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

Не подскажите, как по key_bindings называется кнопка спринта?
Пишу скрипт, где эту кнопку нужно отследить, а названия не знаю и найти не могу (в lua_help не указано).
Попробовал подобрать, но такие как kRUN, kSPRINT и kSPRINT_TOGGLE не подошли.
Кто-нибудь знает правильно название кнопки?

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


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

Хочу сделать чтоб на худе показывалась шкала радиации, вобще лучше бы было если значение в цифрах.Как такое можно сделать, интересует худ зов припяти?

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


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

Detron Пробуйте accel:
 

Спойлер

C++ class key_bindings {
    const kACCEL = 6;


В 12.04.2022 в 13:48, NitWaifu сказал:

как это можно реализовать?

Начните с редактирования текстур окружения "под зиму" при помощи фотошопа с плагином dds.

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

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

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


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

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

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

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

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

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

Войти

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

Войти

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