naxac 2 605 Опубликовано 23 Октября 2023 (изменено) 22.10.2023 в 22:02, Colder сказал: section.id section тут - это строка, видимо? Нужно что-то вроде local obj = creare_anom(.... level.map_add_object_spot_ser(obj.id, ..... Ну, и функция create_anom должна возвращать заспавненный объект. 22.10.2023 в 22:02, Colder сказал: метка ставится на гг Потому что первый аргумент в level.map_add_object_spot_ser равен nil Изменено 23 Октября 2023 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 16 Декабря 2023 @Colder , можно: вместо break сделай return, а сразу после цикла поставь спавн этого мешка. Получится, если в цикле return не сработал, значит дистанция больше, значит спавним мешок обратно. 1 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Июля 2024 53 минуты назад, Balavnik сказал: координатах, на которые наведён прицел? Что-то вроде device().cam_pos:add( device().cam_dir:mul( level.get_target_dist() ) ) Но это неточно, в векторах не силён) 2 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 29 Июля 2024 (изменено) 28.07.2024 в 04:06, Labadal сказал: чтобы это значение "1", сохранялось в переменной, даже если я начну новую игру? Можно записывать переменные в файл (пример). Только для этого нужно в скриптах иметь рабочее пространство имён io. Если же io нет, то можно использовать разные "костыли" - например, создать специальный файл, в названии которого сохранять нужные данные (пример). Изменено 29 Июля 2024 пользователем naxac добавил примеры 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 30 Июля 2024 6 часов назад, Labadal сказал: помню, что в СДК игрался Доигрался - виснет логика у нпс. Попробуй откатить изменения. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 2 Августа 2024 31.07.2024 в 13:39, Labadal сказал: Запускаю игру - опять получаю безлоговый вылет Была у меня когда-то давно такая история при сборке спавна с помощью xrAI. Проблема, насколько я понял тогда, в самом xrAI. Есть, вроде как, какая-то правленая версия, но я тогда её так и не нашёл - перешел на АСДС. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 5 Августа 2024 (изменено) @Labadal , там весь скрипт переделывать надо, в том числе и в тех местах, где создаются уникальные id для фраз. Возьми просто родной скрипт от 6-го патча. Изменено 5 Августа 2024 пользователем naxac 1 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 6 Августа 2024 1 час назад, Labadal сказал: это ведь не решение У тебя стоит какой-то мод, предназначенный для 4 патча, а движок - 6 патча. Отсюда и все проблемы с зависанием нпс, и вот эта трабла с диалог_менеджером тоже. 1 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 8 Августа 2024 19 часов назад, Капрал Хикс сказал: if task_status == 0 then В lua_help есть такой класс: C++ class task { const completed = 2; const fail = 0; const in_progress = 1; const task_dummy = -1; }; Из названий констант, думаю, понятно, какая что значит. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 11 Августа 2024 @Капрал Хикс , все верно, ведь это не id таска, а секция в конфиге. Если тебе нужно проверить состояние конкретного цикличного квеста, нужно это делать в task_manager.script 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Августа 2024 (изменено) 20 часов назад, Капрал Хикс сказал: Вот там я и завис Выглядит это примерно так: local tm = task_manager.get_random_task() local status = tm.task_info["секция_квеста_из_task_manager.ltx"].status if status == "selected" then -- если это задание взято и активно в данный момент, то... end Изменено 12 Августа 2024 пользователем naxac 1 3 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 1 Октября 2024 @Balavnik , попробую погадать на кофейной гуще. У тебя платформа ТЧ, скрипт оригинальный. Тогда вылет связан с тем, что группировка непися не добавлена в death_manager.script, либо не прописана в конфигах death_manager'a. 4 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 6 Июня 2025 @Norman Eisenherz , полностью бы функцию посмотреть. И, проверяемые артефакты на классе se_artefact сделаны? Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Июня 2025 @Norman Eisenherz , твои изменеия будут действовать только для тех артов, в конфиге у которых стоит класс SCRPTART (см. скрипт class_registrator). 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 13 Июня 2025 (изменено) @Norman Eisenherz , ты используешь переменную клиентского актера db.actor. В момент появления серверного объекта артефакта клиентского объекта актера ещё нет. Используй либо серверный объект актера alife():actor(), либо проверку на наличие db.actor. @Капрал Хикс , может быть, на net_destroy какое-нибудь непотребство происходит? В какой-нибудь схеме сбой, или в каком-нибудь биндере?... Ещё, вроде, что-то такое было, если не убрать перед дестроем статик с экрана, добавленный через AddDialogToRender. Изменено 14 Июня 2025 пользователем naxac 3 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 23 Июня 2025 @Капрал Хикс , если self.start_btn - это статик, а не кнопка, то у него есть метод SetTextST("string_id"), которому game.translate_string не нужно, он автоматически транслирует строку. 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 7 Июля 2025 (изменено) @Stalkersof , для того, чтобы вывести нужный индикатор, тебе надо знать, сколько проспал ГГ. И в переменной "sleep_time" лучше хранить не время начала отсчёта, а само прошедшее время. Для этого нужно, напрмер, на net_spawn загружать эту переменную, а на save - сохранять. Скрытый текст local hud = get_hud() local sleep_sound = xr_sound.get_safe_sound_object([[actor\sleepy]]) local sleep_z,sleep_g,sleep_k = 0,0,0 -- Время в минутах, через которое показываем индикаторы local time_z = 12 * 60 -- зеленый индикатор local time_g = 14 * 60 -- желтый индикатор. local time_k = 16 * 60 -- красный индикатор. --========================================================================= -- удаление пробелов по краям строки string.trim = function (s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end -- разбивка строки по символу string.explode = function ( str, div, clear ) local ret = {} for s in string.gmatch( str, "([^"..div.."]+)" ) do ret[ #ret+1 ] = ( clear and string.trim( s ) or s ) end return ret end -- Функции времени из АМК - чтобы не сбивалось время при смене месяца local StartTime function getStartTime() if StartTime == nil then local t = string.explode(system_ini():r_string("alife", "start_time"), ":", true) local d = string.explode(system_ini():r_string("alife", "start_date"), ".", true) StartTime = game.CTime() StartTime:set( tonumber(d[3]), tonumber(d[2]), tonumber(d[1]), -- year.month.day tonumber(t[1]), tonumber(t[2]), tonumber(t[3]), 0 ) -- hours:minutes:seconds:milliseconds end return StartTime end function game_milliseconds() if StartTime == nil then getStartTime() if StartTime == nil then return 0 end end local gtime = game.get_game_time() local seconds = gtime:diffSec(StartTime) local y,m,d,h,min,sec,ms = gtime:get() return (seconds * 1000 + ms) end function game_seconds() if StartTime == nil then getStartTime() if StartTime == nil then return 0 end end return game.get_game_time():diffSec(StartTime) end function game_minutes() return math_floor(game_seconds() / 60) end function game_hours() return math_floor(game_seconds() / 3600) end function game_days() return math_floor(game_seconds() / 86400) end --========================================================================= local sleep_time local last_time = 0 -- вызывается из функции actor_binder:update(?) function update() --log1 (sleep_time) -- текущее время в минутах local time_now = game_minutes() if last_time ~= 0 then sleep_time = sleep_time + time_now - last_time end if sleep_time > time_k then --log1("k") db.actor.power = - 0.005 add_sleep_static("red")-- red if sleep_k == 0 then sleep_sound:play(db.actor, 0, sound_object.s2d) sleep_k = 1 level.add_pp_effector("peace_fade.ppe", 1973, false) end elseif sleep_time > time_g then --log1("g") db.actor.power = - 0.003 add_sleep_static("yellow")-- yellow if sleep_g == 0 then sleep_sound:play(db.actor, 0, sound_object.s2d) sleep_g = 1 end elseif sleep_time > time_z then --log1("z") db.actor.power = - 0.001 add_sleep_static("green")-- green if sleep_z == 0 then sleep_sound:play(db.actor, 0, sound_object.s2d) sleep_z = 1 end end last_time = time_now end -- вызывается из функции actor_binder:net_spawn function net_spawn() getStartTime() sleep_time = (ogsr_vars.get_value_safe( "sleep_time" )) or 0 end -- вызывается из функции actor_binder:save - вызов надо ставить в самое начало функции function pre_save() ogsr_vars.set_value( "sleep_time", sleep_time) end ------------------------------------------------------------------------------------------------- local current_color local colors = { green = GetARGB(255,76,255,0), yellow = GetARGB(255,255,216,0), red = GetARGB(255,255,0,0) } function add_sleep_static(clr) if current_color == clr then return end -- чтобы постоянно не обновлялось одно и то же local w = hud:AddCustomStatic("can_sleep_static", true):wnd() w:SetColor( colors[clr] ) current_color = clr end -- Функция запускается из скрипта сна по окончании -- Сюда надо передать время в минутах, которое проспали function remove_sleep_static(sleep_minutes) if hud:GetCustomStatic("can_sleep_static") then hud:RemoveCustomStatic("can_sleep_static") end sleep_time = math.max(sleep_time - sleep_minutes, 0) sleep_z = 0 sleep_g = 0 sleep_k = 0 current_color = nil end -- Функция скрытия индикатора. Вызывается из скрипта -- Скрытия индикаторов при использовании бинокля и опт. прицела function remove_static() if hud:GetCustomStatic("can_sleep_static") then hud:RemoveCustomStatic("can_sleep_static") current_color = nil end end Ничего не проверял, но вроде должно работать. Ещё бы интервал обновления задать, чтобы не апдейтилось постоянно. Изменено 7 Июля 2025 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 13 Августа 2025 @mmindwork , если объекты из all.spawn, то у них есть уникальное имя, тогда можно получить объект: local obj = alife():object("object_name") А потом вертексы: local lv, gv = obj.m_level_vertex_id, obj.m_game_vertex_id Если есть story_id, то объект можно получить: local obj = alife():story_object(story_id) А затем и вертексы: см. выше. Перемещается он или нет, роли не играет. 1 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 28 Августа 28.07.2026 в 00:24, ziken сказал: как через скрипт использовать предмет Использовать предмет - это значит съесть его: db.actor:eat( db.actor:object("antirad") ) 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение