Silver Raven 197 Опубликовано 5 Сентября 2016 (изменено) @Карлан, у меня какой-то бред выходит. Да и еще хочу убрать из функции level и game вертексы. Спавн все равно локальный. Как это модифицировать? Чем задавать direction - градусами или как в all.spawn - радианами?: function lab_x7_spawn_light_alarm_switch_green() local ser_obj = alife():create("lab_x7_light_alarm_switch_green",vector():set(-76.31,-13.80,76.38),1012,2875) if ser_obj then -- Фиксируем кости local pk = m_netpk.get(ser_obj) if pk and pk:isOk() then local data = pk:get() if data then data.fixed_bones = "link" -- любая кость? только link (проверить) pk:set(data) end end end end З.Ы. Вот, к примеру, актера можно без проблем перемещать по левелу локально - без указания вертексов. А для физ. объекта (не юзающего флажок used ai locations) это возможно осуществить родными функциями? Заместо alife():create... (хотя, на крайняк и нет-пакеты подойдут). Уж очень меня достало переписывать спавн через скрипты тех предметов, что появляются на одном с гг левеле, после очередного ковыряния локаций в СДК. Изменено 5 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 8 Сентября 2016 С какого-то перепуга, отказывается запускаться конвертотор bardak-а. Мол, не могу найти запрашиваемый левел. Еще пару недель назад, все было ок. Что за фигня? Батник (хотя, зачем он?) converter -level default: l01_escape -mode le -with_lods pause Кусок с convertor.ini ; 2947+ (SHOC) [2947_config]:2945_config $game_data$ = G:\Games\For games\S.T.A.L.K.E.R - Trilogy\S.T.A.L.K.E.R. mods utilities\X-Ray SDK\gamedata\ $game_levels$ = G:\Games\For games\S.T.A.L.K.E.R - Trilogy\S.T.A.L.K.E.R. mods utilities\X-Ray SDK\levels\ spawn_version = soc fsconvertor.ltx (да, его копия есть в папке с СДК) $sdk_root$ = false| false| G:\Games\For games\S.T.A.L.K.E.R - Trilogy\S.T.A.L.K.E.R. mods utilities\X-Ray SDK\ $sdk_root_raw$ = false| false| $sdk_root$| rawdata\ $local_root$ = false| false| $sdk_root$ $server_data_root$ = false| false| $sdk_root$| rawdata\ $server_backup$ = true| false| $server_data_root$| backup\ $server_root$ = false| true| \ $app_data_root$ = true| false| $server_root$| _appdata_\ $game_data$ = false| true| $sdk_root$| gamedata\ $game_ai$ = true| false| $game_data$| ai\ $game_anims$ = true| true| $game_data$| anims\| *.anm;*.anms| Animation files $game_config$ = true| false| $game_data$| config\ $game_dm$ = true| true| $game_data$| meshes\| *.dm| Detail Model files $game_levels$ = true| false| $game_data$| levels\ $game_meshes$ = true| true| $game_data$| meshes\| *.ogf;*.omf| Game Object files $game_particles$ = true| true| $server_data_root$| particles\ $game_scripts$ = true| false| $game_data$| scripts\| *.script| Game script files $game_shaders$ = true| true| $game_data$| shaders\ $game_sounds$ = true| true| $game_data$| sounds\ $game_spawn$ = true| false| $game_data$| spawns\ $game_textures$ = true| true| $game_data$| textures\ $game_saves$ = false| true| savedgames\ $screenshots$ = true| false| screenshots\ $logs$ = true| false| $sdk_root$| logs\| *.err| Log files $temp$ = true| false| $sdk_root$| temp\ $import$ = true| true| $sdk_root$| import\| | *.object;*.lwo;*.txt;*.xr;*.wav;*.obj;*.ltx;*.cpp| Files $clips$ = true| true| $server_data_root$| objects\| *.clip| Object clips $groups$ = true| true| $server_data_root$| groups\| *.group| XRay groups $level$ = false| false| $game_levels$ $maps$ = true| true| $server_data_root$| levels\| *.level| XRay levels $objects$ = true| true| $server_data_root$| objects\| *.object;*.lwo| XRay objects $sounds$ = true| true| $server_data_root$| sounds\| *.wav| Wave files $textures$ = true| true| $server_data_root$| textures\ $detail_objects$ = true| true| $import$| | *.dti| Detail indices $omotion$ = true| true| $import$| | *.anm| Object animation files $omotions$ = true| true| $import$| | *.anms| Object animation list files $sbones$ = true| true| $import$| | *.bones| Skeleton bone data files $smotion$ = true| true| $import$| | *.skl;*.skls| Skeleton motion files aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 8 Сентября 2016 @abramcumner, если бы. Но нет, не из-за него. aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 8 Сентября 2016 @BoBaH_671, так страшно, что аж неделю назад этим же батником все нормально распаковывалось. З.Ы. Если есть желающие помочь и поковыряться в этом безобразии вот ссылка: http://rgho.st/6P5fdBHmc aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 13 Сентября 2016 Как это понимать: FATAL ERROR [error]Expression : fatal error [error]Function : CObjectList::Destroy [error]File : E:\stalker\sources\trunk\xr_3da\xr_object_list.cpp [error]Line : 363 [error]Description : <no expression> [error]Arguments : ! Unregistered object being destroyed Происходит при попытке завершить игру. Предполагаю, что это может быть связано с удалением одной из ламп на левеле через скрипт: function lab_x7_delete_light_alarm_switch_red() local se_obj = alife():object("light_alarm_switch_red") if se_obj then alife():release(se_obj, true) end end Может повесить ей story_id? aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 15 Сентября 2016 (изменено) @Hadzirim Hajad, судя по скриншоту, после вылета игры ты нажал кнопку отправки архива с логами игры ПЫС (естественно, вся эта фигня уже давно не работает, если и работала вообще), а поскольку никакой почтовой программы с активным адресом не привязанно - выводится это уведомление. Короче, не жми всякие малопонятные кнопки. И срочно спрячь скриншот под спойлер, а лучше используй превью. Иначе, получишь нагоняй от модераторов. Изменено 15 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 17 Сентября 2016 (изменено) Есть способ заставить главное меню игры отображать номер сборки модификации из внешнего файла? Например, по его имени внутри папки gamedata: build 170916 и без зависимости от расширения. Что-то вроде поиска по ключевому слову build + все то, что написано в названии файла кроме него. Изменено 17 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) Можно как-то сгладить анимации непися в логике, ибо между переходом от hello к guard - он "втыкает" в идловом состоянии: [walker@wait_actor] path_walk = generators_alex_walk_1 path_look = generators_alex_look meet = meet@alex_squad_need_help danger = danger_condition@alex on_info = {+generators_save_taurus} walker@after_start_task on_info2 = {+generators_save_taurus_alternative} walker@after_start_alternative_task on_info3 = {+generators_taurus_dead} walker@after_taurus_dead [meet@alex_squad_need_help] meet_state = 30| hello| 20| guard meet_state_wpn = 30| hello| 20| threat@threat_weap victim = 30| actor victim_wpn = 30| actor use = true use_wpn = false syndata = hello meet_dialog = {-generators_save_taurus} generators_alex_start_dialog Изменено 24 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 @_Val_, тогда, я так понимаю, придется вешать переходы между анимациями из walker-а по сигналу? И разбивать схему на несколько частей. Несколько геморойно. aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) @CRAZY_STALKER666, время, серьезно? Вы бы хоть вики почитали, прежде чем это писать. Это дистанция в метрах до гг, при которой проигрывается указанная анимация. А если он слишком быстро "пролетит" указанный промежуток - она уродливо оборвется. Изменено 24 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) @_Val_, а как бы мне с walker-а дистанцию до гг вычислить? [walker@wait_actor] path_walk = generators_alex_walk_1 path_look = generators_alex_look danger = danger_condition@alex on_info = {+generators_save_taurus} walker@after_start_task on_info2 = {+generators_save_taurus_alternative} walker@after_start_alternative_task on_info3 = {+generators_taurus_dead} walker@after_taurus_dead [remark@1] anim = hello target = actor on_signal = anim_end | remark@2 -- А может тут дать переход к meet, с постоянной анимкой? [remark@2] anim = guard target = actor on_signal = anim_end | meet@alex_squad_need_help Как-то так? Но нужно то, что я писал выше, on_actor_dist_le - сработает? Вот так: [walker@wait_actor] path_walk = generators_alex_walk_1 path_look = generators_alex_look on_actor_dist_le = 20 | remark@hello_actor meet = meet@alex_squad_need_help danger = danger_condition@alex on_info = {+generators_save_taurus} walker@after_start_task on_info2 = {+generators_save_taurus_alternative} walker@after_start_alternative_task on_info3 = {+generators_taurus_dead} walker@after_taurus_dead [remark@hello_actor] anim = hello target = actor on_signal = anim_end | meet@alex_squad_need_help [meet@alex_squad_need_help] meet_state = 20| guard meet_state_wpn = 20| threat@threat_weap victim = 20| actor victim_wpn = 20| actor use = true use_wpn = false syndata = hello meet_dialog = {-generators_save_taurus} generators_alex_start_dialog З.Ы. Секция спавна содержимого в инвентарный ящик по условию (spawner), доступна в ТЧ? Или это только для мобов и нпс? Изменено 24 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 @_Val_, а возврат к изначальной логике сделать так?: on_actor_dist_ge_iviz = 20 | walker@wait_actor Чтобы непись приветствовал гг каждый раз, пока тот не поговорил с ним. aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) @_Val_, что-то не так. Непись лишь слегка дергается на нужной дистанции, затем, судя по всему, переходит во второй walker: [logic] active = walker@wait_actor on_death = death [walker@wait_actor] path_walk = generators_alex_walk_1 path_look = generators_alex_look on_actor_dist_le_inviz = 20 | remark@hello_actor danger = danger_condition@alex meet = no_meet on_info = {+generators_save_taurus} walker@after_start_task on_info2 = {+generators_save_taurus_alternative} walker@after_start_alternative_task on_info3 = {+generators_taurus_dead} walker@after_taurus_dead [remark@hello_actor] anim = hello target = actor on_signal = anim_end | walker@wait_talk_to_actor [walker@wait_talk_to_actor] path_walk = generators_alex_walk_1 path_look = generators_alex_look danger = danger_condition@alex meet = meet@alex_squad_need_help on_info = {+generators_save_taurus} walker@after_start_task on_info2 = {+generators_save_taurus_alternative} walker@after_start_alternative_task on_info3 = {+generators_taurus_dead} walker@after_taurus_dead [meet@alex_squad_need_help] meet_state = 10| guard meet_state_wpn = 10| threat@threat_weap victim = 10| actor victim_wpn = 10| actor use = true use_wpn = false meet_dialog = {-generators_save_taurus} generators_alex_start_dialog Изменено 24 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) @_Val_, судя по логу (вывод дебаг сообщения в консоль), переход в секцию remark@hello_actor выполняется успешно. По таймеру, анимка проигралась нормально (я правда не знаю ее длину в сек. взял с запасом). Бред какой-то... on_signal всегда отрабатывал нормально. Жаль, что еще остается анимка guard со своей озвучкой из секции meet, со своим "кривым" переключением. Но в walker-е не сделать проверку на наличие у гг ствола в руках. Кто подскажет продолжительность анимации hello? upd. Я тут полностью перекинул озвучку монолитовцев из ЗП (все, кроме лишних для ТЧ папок). Проверил каждый звук в подпапках - их имена и количество полностью соответствует аналогам из ТЧ. Но в игре, иногда, проскакивает старая озвучка. Это невозможно! За годы работы с игрой, запоминаешь все фразы наизусть - они точно заменены. Пробовал править конфиг m_stalker_monolith, - перечислял все звуки по порядку и просто, задавал общий путь (например: sound_death = fight\death\death_), чтобы игра считывала все доступные файлы. Никакой разницы. Как такое происходит? Изменено 24 Сентября 2016 пользователем Silver Raven 1 aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) Кстати. Вот такое дело мне никогда не нравилось. meet_state = 10| guard meet_state_wpn = 10| threat@threat_weap victim = 10|actor victim_wpn = 10| actor Поясню. Предположительно в 10 метрах от ГГ непись обязан произвести одновременно кучу действий. 1. Посмотреть на ГГ. 2. Взять оружие на изготовку.(Произнести свою эпическую фразу). Мне иногда кажется, что неокрепшая психика неписей этого не выдерживает. Я бы так делал: meet_state = 10| guard victim = 20| actor Допустим. А как же неписю реагировать на гг со стволом в руках (meet_state = 10| guard этого не учитывает), если meet_state_wpn = 10| threat@threat_weap - отсутствует? И куда ему смотреть, если victim_wpn = 10| actor - отсутствует? def_state_standing = guard - сейчас попробую. upd. Похоже, def_state_standing = guard конфликтует с анимкой, заданной в вей-поинте непися (binocular). Пытаясь заменить ее. Он то достает бинокль, то убирает его. Изменено 24 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) Пф... Здесь все элементарно: https://dl.dropboxus.../xr_meet.script Я так понимаю, тут набор различных правок + рефракторинг с комментариями? А еще подобное есть? А то я как раз собираю по всему инету переработанные скрипты оригинала. Изменено 24 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 @Dennis_Chikin, я сейчас подсунул этот xr_meet заместо своего. Игра ругается на: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...e.r. - trilogy\shoc\gamedata\scripts\xr_logic.script:279: attempt to call field 'set_meet' (a nil value) функцию set_meet. Чего ему надо то? aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) @_Val_, ну изначально предполагалось, что этот непись будет все время глазеть в бинокль, изредка прерываясь на другие анимации. Этим и обусловлен выбор метода ее места прописывания. Да и я не очень представляю себе, как в одном walker-е "подружить" анимку бинокля с анимкой guard? Еще один remark? Большая выходит логика (учитывая, что тут писалась лишь ее малая часть). "Починил" бы кто meet, гемороя было бы меньше. З.Ы. on_actor_dist_le = 20 | remark@hello_actor on_actor_dist_le_nviz = 10 | walker@wait_talk_to_actor Если в одной логике стоит две проверки, они не будут между собой конфликтовать? Не хочу, чтобы непись "здоровался" с гг не видя его. Пусть тогда уже, сразу переходит к готовности к диалогу, если тот "подкрался" сзади. Изменено 24 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 25 Сентября 2016 (изменено) Тем не менее. Оригинал - логика Волка: [walker@esc_lager_volk_walker1] path_walk = wolf_walk path_look = wolf_look meet = meet@wolf on_actor_dist_le = 23| {+tutorial_wounded_start -esc_kill_bandits_quest_kill} remark@esc_lager_volk1 on_actor_dist_le_nvis = 5| walker@esc_lager_volk_walker2 danger = danger_condition@shustryi @Карлан, мне посоветовал брать ее за образец для моего непися. @_Val_, подробнее об этом неписе: [logic] active = walker@wait_actor on_death = death [walker@wait_actor] path_walk = generators_alex_walk_1 path_look = generators_alex_look on_actor_dist_le = 20 | remark@hello_actor on_actor_dist_le_nvis = 10 | walker@wait_talk_to_actor danger = danger_condition@alex meet = no_meet [remark@hello_actor] anim = hello target = actor meet = no_meet on_timer = 4000 | walker@wait_talk_to_actor [walker@wait_talk_to_actor] path_walk = generators_alex_walk_1 path_look = generators_alex_look danger = danger_condition@alex meet = meet@alex_squad_need_help on_info = {+generators_save_taurus} walker@after_start_task on_info2 = {+generators_save_taurus_alternative} walker@after_start_alternative_task on_info3 = {+generators_taurus_dead} walker@after_taurus_dead [meet@alex_squad_need_help] meet_state = 20| guard meet_state_wpn = 20| threat@threat_weap victim = 20| actor victim_wpn = 20| actor use = true use_wpn = false meet_dialog = {-generators_save_taurus} generators_alex_start_dialog [walker@after_start_task] path_walk = generators_alex_walk_1 path_look = generators_alex_look danger = danger_condition@alex meet = meet@after_start_task on_info = {+generators_taurus_back_to_alex_squad_complite} walker@after_complite_task on_info2 = {+generators_taurus_dead} walker@after_fail_task [meet@after_start_task] meet_state = 20| guard meet_state_wpn = 20| threat@threat_weap victim = 20| actor victim_wpn = 20| actor use = true use_wpn = false meet_dialog = {+generators_save_taurus -generators_taurus_back_to_alex_squad_complite} generators_alex_taurus_save_in_progress_dialog [walker@after_start_alternative_task] path_walk = generators_alex_walk_1 path_look = generators_alex_look danger = danger_condition@alex meet = meet@after_start_alternative_task on_info = {+generators_taurus_back_to_alex_squad_complite} walker@after_complite_task [meet@after_start_alternative_task] meet_state = 20| guard meet_state_wpn = 20| guard victim = 20| actor victim_wpn = 20| actor use = true use_wpn = true meet_dialog = {+generators_save_taurus_alternative -generators_taurus_back_to_alex_squad_complite} generators_alex_taurus_dead_hello_dialog [walker@after_complite_task] path_walk = generators_alex_walk_2 path_look = generators_alex_look danger = danger_condition@alex meet = meet@after_complite_task [meet@after_complite_task] victim = 20| actor victim_wpn = 20| actor use = true use_wpn = true meet_dialog = {+generators_taurus_back_to_alex_squad_complite -generators_save_taurus_task_talk_to_alex_complite} generators_alex_taurus_safety_dialog [walker@after_fail_task] path_walk = generators_alex_walk_2 path_look = generators_alex_look danger = danger_condition@alex meet = meet@after_fail_task [meet@after_fail_task] meet_state = 20| guard meet_state_wpn = 20| threat@threat_weap victim = 20| actor victim_wpn = 20| actor use = true use_wpn = false meet_dialog = {+generators_taurus_dead +generators_save_taurus -generators_taurus_dead_talk_to_alex_complite} generators_alex_taurus_dead_dialog, {+generators_taurus_dead_talk_to_alex_complite} generators_alex_taurus_dead_hello_dialog [walker@after_taurus_dead] path_walk = generators_alex_walk_1 path_look = generators_alex_look danger = danger_condition@alex meet = meet@after_taurus_dead [meet@after_taurus_dead] meet_state = 20| guard meet_state_wpn = 20| threat@threat_weap victim = 20| actor victim_wpn = 20| actor use = true use_wpn = false meet_dialog = {+generators_taurus_dead -generators_save_taurus -generators_taurus_dead_talk_to_alex_alternative_complite} generators_alex_taurus_dead_alternative_dialog, {+generators_taurus_dead_talk_to_alex_alternative_complite} generators_alex_taurus_dead_hello_dialog [danger_condition@alex] ignore_distance = 30 ignore_distance_grenade = 30 ignore_distance_sound = 30 [death] on_info = %+generators_alex_squad_dead% [smart_terrains] none = true Со старта он втыкает в бинокль. Если гг находится в радиусе обзора и ближе 20-ти метров от него - машет рукой, переходит к анимке guard (если гг с оружием, просим стволом в нас не тыкать). Если гг не в радиусе обзора и находится в менее чем 10-ти метрах от непися - сразу переходит к guard, без приветствия.Разговариваем с неписем, берем квест - он переходит к walker@after_start_task. Он опять пялится в бинокль. При приближении гг переходит к анимке guard.Если мы взяли квест не у него: walker@after_start_alternative_task - проделываем то же самое, что и в самом начале. Разве что диалоги другие. (надо будет добавить приветствие и туда)Ну а дальше, по аналогии с прошлыми секциями: если выполнили задание: walker@after_complite_task, если провалили задание - walker@after_fail_task. Только в бинокль уже не пялимся.Если важный для квеста персонаж погиб, во время его выполнения (он же альтернативный квестодатель): walker@after_taurus_dead.Как-то так... Изменено 25 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 25 Сентября 2016 @Fagot., возможно та анимка, заточена под конкретный класс оружия (?). И поскольку у обреза и Тоз-а они одинаковые - все ок. А вот если сунуть ему автомат... aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение