DarkSnowder 899 Опубликовано 2 Сентября 2021 @Капрал Хикс тут зависит от обстоятельств - бар сам по себе место перенаселённое (у меня лично объединённой локе Бар-ДТ это не убрано, чтобы лишний раз комп не грузить), так что здесь всё зависит от мощностей - если игра справится с такой нагрузкой - можно и убрать выход в оффлайн. 2 Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 5 Сентября 2021 (изменено) Народ, поясните - из-за чего вместо стандартных букв в новых диалогах появляется такая вот кракозябра? Вот сам диалог и текст диалога Скрытый текст Изменено 5 Сентября 2021 пользователем DarkSnowder Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 9 Сентября 2021 (изменено) Народ, запутался уже, прошу вашей помощи. Скомпилировал Агропром, создал новый лагерь военных на территории института, привязал к нему сталкеров (заспавнил в редакторе по новой), и в игре постоянно вот такой вылет Скрытый текст FATAL ERROR [error]Expression : vertex || show_restrictions(m_object) [error]Function : CPatrolPathManager::select_point [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\patrol_path_manager.cpp [error]Line : 155 [error]Description : any vertex in patrol path [agr_army_lager_guard10_walk] in inaccessible for object [l03_agroprom_stalker_0008] stack trace: Постоянные жалобы на то, что мол пути найти не может НО! - лагерь не имеет никаких привязок к space_restrictor-ам - никаких space_restrictor, не допускающих нахождение посторонних на территории института нету - все way-поинты находятся на АИ-сетке - у всех сталкеров, привязанных к АИ-сетке нет никаких привязок к space_restrictor-ам Вот в чём причина вылета может быть тогда? Делал такие-же лагеря на других локах - всё работало отлично. Скрытый текст ------------------ НИИ Агропром. Новый Лагерь ------------------------------------------ if type == "agr_army_lager" then t = { section = "logic@agr_army_lager_walker1", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker2", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker3", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker4", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker5", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_kamp1", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker6", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_kamp2", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker7", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker8", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker9", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker10", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker11", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker12", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker13", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker14", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker15", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker16", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@agr_army_lager_walker17", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "agr_army_lager" then return function(gulag) return 0 end end if gulag_type == "agr_army_lager" then return npc_community == "military" end Скрытый текст ;*************** agr_army_lager ******************* [logic@agr_army_lager_walker1] active = walker1@agr_army_lager [walker1@agr_army_lager] path_walk = guard1_walk path_look = guard1_look [logic@agr_army_lager_walker2] active = walker2@agr_army_lager [walker2@agr_army_lager] path_walk = guard2_walk path_look = guard2_look [logic@agr_army_lager_walker3] active = walker3@agr_army_lager [walker3@agr_army_lager] path_walk = guard3_walk path_look = guard3_look [logic@agr_army_lager_walker4] active = walker4@agr_army_lager [walker4@agr_army_lager] path_walk = guard4_walk path_look = guard4_look [logic@agr_army_lager_walker5] active = walker5@agr_army_lager [walker5@agr_army_lager] path_walk = guard5_walk path_look = guard5_look [logic@agr_army_lager_kamp1] active = kamp1@agr_army_lager [kamp1@agr_army_lager] center_point = institute_camp_center path_walk = institute_camp_center_task radius = 2.4 danger = danger_ignore@agr_army_lager on_timer = 150000 | kamp3@agr_army_lager [kamp3@agr_army_lager] center_point = angar_camp_center path_walk = angar_camp_center_task radius = 2.4 danger = danger_ignore@agr_army_lager on_timer = 150000 | kamp1@agr_army_lager [logic@agr_army_lager_walker6] active = walker6@agr_army_lager [walker6@agr_army_lager] path_walk = guard6_walk path_look = guard6_look [logic@agr_army_lager_kamp2] active = kamp2@agr_army_lager [kamp2@agr_army_lager] center_point = institute_camp_center path_walk = institute_camp_center_task radius = 2.4 danger = danger_ignore@agr_army_lager [logic@agr_army_lager_walker7] active = walker7@agr_army_lager [walker7@agr_army_lager] path_walk = guard7_walk path_look = guard7_look [logic@agr_army_lager_walker8] active = walker8@agr_army_lager [walker8@agr_army_lager] path_walk = guard8_walk path_look = guard8_look [logic@agr_army_lager_walker9] active = walker9@agr_army_lager [walker9@agr_army_lager] path_walk = guard9_walk path_look = guard9_look [logic@agr_army_lager_walker10] active = walker10@agr_army_lager [walker10@agr_army_lager] path_walk = guard10_walk path_look = guard10_look [logic@agr_army_lager_walker11] active = walker11@agr_army_lager [walker11@agr_army_lager] path_walk = guard11_walk path_look = guard11_look [logic@agr_army_lager_walker12] active = walker12@agr_army_lager [walker12@agr_army_lager] path_walk = guard12_walk path_look = guard12_look [logic@agr_army_lager_walker13] active = walker13@agr_army_lager [walker13@agr_army_lager] path_walk = guard13_walk path_look = guard13_look [logic@agr_army_lager_walker14] active = walker14@agr_army_lager [walker14@agr_army_lager] path_walk = guard14_walk path_look = guard14_look [logic@agr_army_lager_walker15] active = walker15@agr_army_lager [walker15@agr_army_lager] path_walk = guard15_walk path_look = guard15_look [logic@agr_army_lager_walker16] active = walker16@agr_army_lager [walker16@agr_army_lager] path_walk = guard16_walk path_look = guard16_look [logic@agr_army_lager_walker17] active = walker17@agr_army_lager [walker17@agr_army_lager] path_walk = guard17_walk path_look = guard17_look [danger_ignore@agr_army_lager] ignore_distance = 5 Скрытый текст [smart_terrain] type = agr_army_lager capacity = 19 communities = military Ссылка на лог Изменено 9 Сентября 2021 пользователем DarkSnowder Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 9 Сентября 2021 @WinCap Вот лог Вроде как выводится да Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 9 Сентября 2021 (изменено) @WinCap Дык никаких рестрикторов в том то и дело на пути ни у кого нет. Изменено 9 Сентября 2021 пользователем DarkSnowder Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 9 Сентября 2021 @WinCap @Okichi Да, действительно дело было в реестре - удалил их всех и всё заработало. Чтож, буду восстанавливать их потихоньку и смотреть, какой реестр был глючным. 1 Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 11 Сентября 2021 (изменено) Добро всем. Решил адаптировать функцию медика в ТЧ, перенёс диалог, внёс все нужные функции, и при старте диалога на мед помощь выскакивает вот такой вылет Скрытый текст 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: d:\s.t.a.l.k.e.r\gamedata\scripts\dialogs.script:330: attempt to compare number with nil stack trace: Ссылается он вот на эту функцию проверки состояния здоровья игрока Скрытый текст function actor_needs_bless(first_speaker, second_speaker) if db.actor.health < 1 or db.actor.radiation > 0 or db.actor.bleeding > 0 then return true end return false end В частности на db.actor.bleeding > 0 then. Я так понял всё дело в цифре 0, но как тогда в ТЧ проверку на кровотечение сделать в пределах этой функции. В скриптах родного ТЧ ничего такого не находил пока что. Скрытый текст -- Medic support function medic_magic_potion(first_speaker, second_speaker) db.actor.health = 1 db.actor.power = 1 db.actor.radiation = -1 db.actor.bleeding = 1 end function actor_needs_bless(first_speaker, second_speaker) if db.actor.health < 1 or db.actor.radiation > 0 or db.actor.bleeding > 0 then return true end return false end function actor_is_damn_healthy(first_speaker, second_speaker) return not actor_needs_bless(first_speaker, second_speaker) end Изменено 11 Сентября 2021 пользователем DarkSnowder Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 11 Сентября 2021 @WinCap тут дело в том, что функция при диалоге на лечение в случае оказании помощи игроку не может это кровотечение остановить, то бишь значение > 0 она не определяет как прекращение кровотечения у ГГ. Если ёё закомментировать, вылет пропадает, но кровотечение у ГГ не вылечивается. Дело не в том, что там некорректно указано db.actor.bleeding, а то, что числовое значение > 0 для него указано некорректно. Вот меня и интересует, какое значение там должно быть, чтобы лечение ГГ шло как по маслу. Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 11 Сентября 2021 @UriZzz Нет, в оригинальном скрипте одна точка. При двоеточии вылет без лога, проверял. 1 Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 11 Сентября 2021 (изменено) @I am Dead Я помню, что когда ещё в команде DRDA был тоже эту функцию переносил и над ней сидел, сидел, и вроде бы как то я даже смог заставить кровотечение исчезать при лечении ГГ. Но вот ток как я это сделал (а главное, сделал ли вообще) уже и не помню, давно это было. Просто давать возможность ГГ вылечиваться у медика без аннулирования кровотечения - такое себе мероприятие. Изменено 11 Сентября 2021 пользователем DarkSnowder Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 30 Сентября 2021 (изменено) Народ, у меня есть подземелья на открытом уровне, накрыл всю подземку рестриктором, и вот как мне правильно логику рестриктора настроить, чтобы при входе в него погода менялась на подземную, а при выходе из него погода возвращалась на дефолтную. Скрытый текст [logic] active = sr_idle [sr_idle] on_info = {=actor_in_zone(escape_undeground_zone)} %=set_indoor_weather% on_info2 = {=actor_out_zone(escape_undeground_zone)} %=set_default_weather% Скрытый текст function set_indoor_weather(actor, npc) level.set_weather("indoor", true) end function set_default_weather(actor, npc) level.set_weather("default", true) end Изменено 1 Октября 2021 пользователем DarkSnowder Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 31 Октября 2021 всем хабара товарисчи Если кто играл, то наверное помнит как в НС ОП-1 по локациям бегали стаи крыс, которые не были привязаны к гулагам или респавну (видимо спавнились через скрипт), даже в оригинальной солянке от 2010 года в баре и подземке агропрома можно было найти стаи крыс. Кто знает, каким способом там их респили? Помню также таким способом изломы респился у деревни новисов.. А то что-то сам ковырял файлы - ничего так и не нашёл. Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 8 Ноября 2021 Приветсвую Не подскажите, как бы выглядела логика для ящичка, открыть который можно было бы только с помощью пароля? Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 14 Января 2022 Доброго дня комрадыю Вопрос таков У моего бота прописана вот такая логика Скрытый текст [logic] active = walker@bar combat_ignore = combat_ignore meet = no_meet [walker@bar] path_walk = chern_gurvinek_walk path_look = chern_gurvinek_look meet = no_meet danger = danger_condition on_actor_dist_le_nvis = 5 | remark@hello ;on_info = {-chern_bar_hurvinek_meeting} kamp combat_ignore_cond = {=fighting_dist_ge_20} [remark@hello] anim = hello_wpn target = actor ;anim_end = remark@talk on_timer = 3000 | remark@talk combat_ignore_cond = {=fighting_dist_ge_20} meet = no_meet ;[remark@wait] ;target = actor ;on_actor_dist_le_nvis = 3 | remark@talk %=xr_effects.gurvinek_give_equipment% ;meet = no_meet ;combat_ignore_cond = {=fighting_dist_ge_20} [remark@talk] snd = hurvinek_start_monolog ;on_game_timer = 12 |nil %=xr_effects.gurvinek_give_equipment% on_game_timer = 12 | {-chern_bar_hurvinek_meeting} %=xr_effects.gurvinek_give_equipment +chern_bar_hurvinek_meeting% combat_ignore_cond = {=fighting_dist_ge_20} on_signal = sound_end | kamp meet = no_meet [kamp] center_point = chern_lager_town_vegetables_camp_center meet = meet combat_ignore_cond = {=fighting_dist_ge_20} [meet@helow] meet_dialog = escape_talk_about_escape use = true use_wpn = true [danger_condition] ignore_distance = 15 [combat_ignore] При подходе к нему и после проигрывания анимации hello происходит вылет вот с с таким логом Сама функция выдачи предметов прописана в xr_effects и выглядит так Скрытый текст function gurvinek_give_equipment(first_speaker, second_speaker) local reward_items = math.random(1,3) if reward_items == 1 then -- Первый вариант dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_9x18_fmj", 2) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_pm") dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife") ; dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple") dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 3) end if reward_items == 2 then -- Второй вариант dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_12x70_buck", 5) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_bm16") dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife") ; dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple") dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 3) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad", 1) end if reward_items == 3 then -- Третий вариант dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_12x70_buck", 5) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_9x18_fmj", 2) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_bm16") dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_pm") dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife") ; dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple") dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 5) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 2) dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad", 1) end end Может вы сможете подсказать, где я накосячил? Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 14 Января 2022 @WinCap В чём именно косяк? Дубликата у функции нету, проверял Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 14 Января 2022 @WinCap Спасибо, и в правду помогло Слушай, а как мне указать, чтобы после начала звуковой дорожки, снаряга выдалась ток через 10 секунд? (как эти секунды правильно прописать?) Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 28 Февраля 2022 Народ, такой вопрос. У моего котофея в игре прописана такая логика Скрытый текст [smart_terrains] none = true [logic] active = mob_walker@idle [mob_walker@idle] path_walk = cher_slap_cat_walk path_look = cher_slap_cat_look friendly = true actor_friendly = true то бишь людям и игроку он не опасен, и сталкеры его не трогают можно ли как-то прописать ему анимации? (чтоб сидел, лежал, кушал и т.д.) а то он просто стоит в постойке idle и выглядит это как то неестественно. Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 2 Марта 2022 @Никсон а разве принцип "a=*название-анимации* в вейпоинтах не читается из state_lib скрипта (вроде как в вей-поинтах именно оттуда анимации берутся) Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 1 Августа 2022 Народ, как сделать так, чтобы определённый предмет гарантированно был у непися в инвентаре (прописал и в секцию спавн в СДК, и в характере персонажа, предмета как не было так и нет) Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение
DarkSnowder 899 Опубликовано 1 Августа 2022 @Купер Благодарствую, буду пробовать И ещё вопрос - я ящику прописал ссылку на логику, в которой указана хабар Скрытый текст [spawn] ammo_5.56x45_ap = 4 ammo_5.56x45_ss190 = 2 grenade_f1 = 1 wpn_l85 = 1 ammo_m209 = 3 wpn_mp5 = 1 ammo_9x19_pbp = 5 antirad = 2 medkit_army = 3 bandage = 5 af_fireball = 1 af_night_star = 1 Но хабара там не появляется. В чём может быть причина? Путь к логике я проверил, всё нормально. Лучше сделать мод с 0, чем пытаться залатать багованный. Поделиться этим сообщением Ссылка на сообщение