Kirgudu 949 Опубликовано 23 Ноября 2022 Поделиться Опубликовано 23 Ноября 2022 Внимательно стоит читать не только документацию по игре в случае её наличия, но и посты, на которые сам же ссылаешься, например, тут: https://www.amk-team.ru/forum/topic/6138-cs-kovyryaemsya-v-faylah/?do=findComment&comment=1443031 Всё в ЧН работает, проверено личным опытом модостроя, а Malandrinus в своём посте разжевал вопрос так, что дальше некуда. Не нужно путать spawn_id, задаваемый отдельным параметром в секции объекта в all.spawn и тот виртуальный spawn_id, который является порядковым номером этой секции объекта и который при распаковке, например, средствами acdc (с SDK не работал, но, возможно, там тоже) можно увидеть в квадратных скобках в начале секции. Поскольку при перепаковке all.spawn этот номер может измениться, единственно правильным способом получить его при исполнении будет вызов метода alife():spawn_id(spawn_story_id), где spawn_story_id, в свою очередь, также прописан отдельным параметром в секции объекта в all.spawn. Никакие spawn_id, прописанные там же отдельным параметром, не должны использоваться в данном механизме ни в ТЧ, ни в ЧН, ни в ЗП, а story_id можно использовать только для поиска уже заспавненного объенкта перед его удалением, но не для повторного спавна. Инструмент Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 24 Ноября 2022 Поделиться Опубликовано 24 Ноября 2022 8 hours ago, Kirgudu said: Не нужно путать spawn_id, задаваемый отдельным параметром в секции объекта в all.spawn и тот виртуальный spawn_id, который является порядковым номером этой секции объекта Из чего следует, что я их путаю? Номер в квадратных скобках я даже не упоминал. Насчет оригинального поста Malandrinus – действительно, не дочитал. 8 hours ago, Kirgudu said: Никакие spawn_id, прописанные там же отдельным параметром, не должны использоваться Тем не менее, такие записи зачем-то есть; можно было бы считать обозначения аргументов простой путаницей в названиях, если бы спавн через spawn_id не работал вообще, но он работает в ТЧ. Видимо, "неучтенка" из ранних билдов… Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 25 Ноября 2022 Поделиться Опубликовано 25 Ноября 2022 On 11/14/2013 at 9:32 AM, Malandrinus said: local spawn_id = alife():spawn_id(spawn_story_ids.some_level_changer) alife():create(spawn_id) Если метод spawn_id() принимает только аргумент spawn_story_id, то как работает следующий код из OGSR и почему такой код, в отличие от ТЧ/ЧН, не вешает скрипты? Spoiler [ogse_lc_mngr.script] function lc_create(sid, spot, hint) local sim = alife() if not sim:story_object(sid) then -- ссылка на story_id local spawn_id = sim:spawn_id(sid) -- снова ссылка на story_id local lc = sim:create (spawn_id) if lc then … end end end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Kirgudu 949 Опубликовано 25 Ноября 2022 Поделиться Опубликовано 25 Ноября 2022 https://github.com/OGSR/OGSR-Engine/commit/1e0477aff92a233ca6fd062a546f54229f2b0bcb Qui quaerit, reperit. 1 Инструмент Ссылка на комментарий
dsh 3 820 Опубликовано 25 Ноября 2022 Поделиться Опубликовано 25 Ноября 2022 Ну, если уж ссылаться на OGSR, то там же можно, если не путаю, спаунить и по имени, без всяких story и spawn id. А нет, я таки путаю. Не нахожу этого в OGSR. Это я только у себя добавлял получения spawn_id по имени: https://github.com/dsh2dsh/OGSR-Engine/commit/be0d672ca18c80289cfa0c8bd7e6552b513f4587 Quote Добавил alife():spawn_id( имя ) которая возвращает spawn_id из all.spawn по имени объекта. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Kirgudu 949 Опубликовано 25 Ноября 2022 Поделиться Опубликовано 25 Ноября 2022 (изменено) @dsh было, было и в основной ветке, видимо, дополнение признали полезным и затянули. https://github.com/OGSR/OGSR-Engine/commit/544daa9962efb142b6e2b058e045846f96dc5608 Легко найти по истории, уже второй коммит с конца:https://github.com/OGSR/OGSR-Engine/commits/main/ogsr_engine/xrGame/alife_spawn_registry.cpp Офф: я впервые в ваши правки движка заглянул так-то; даже при взгляде наискосок попадаются любопытные вещи. Если б ещё было время заниматься модостроем, да по-прежнему сохранялся высокий интерес... но нет. Хватит того, что периодически могу дать ответ по легаси скриптам. Изменено 25 Ноября 2022 пользователем Kirgudu 1 1 Инструмент Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 26 Ноября 2022 Поделиться Опубликовано 26 Ноября 2022 Вот теперь картинка сложилась. Это, конечно, бинго: найти одновременно нечитаемый параметр с совпадающим названием и пример кода, который не должен работать на чистой игре. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 19 Декабря 2022 Поделиться Опубликовано 19 Декабря 2022 Мужики, спасайте Имеем следующий набор работ: Скрытый текст --4 работы доп охраны for i = 6, 9 do t = { section = "logic@fox_ohrana_" .. i, idle = 0, prior = 8, state = { 0 }, in_rest = "", out_rest = "", } table.insert(sj, t) end --Кулинар идёт сюда t = { section = "logic@artem", idle = 0, prior = 11, state = { 0 }, in_rest = "", out_rest = "", position_threshold = 5, predicate = function(obj_info) return obj_info.story_id == 9509 end } table.insert(sj, t) Проблема в том, что искомый нпс с СИДом 9509 занимает одну из работ сверху (с низшим приоритетом). Почему он отказвыается брать работу с высоким приоритетом? Она ведь точно свободная, ибо предикейт для него сделан с проверкой по СИДу? Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 26 Декабря 2022 Поделиться Опубликовано 26 Декабря 2022 [ЧН 1.5.10] При скриптовом вводе габаритов список CUIListWnd() создается только пустым, а при попытке наполнения не создается вовсе – не выводится даже его родительское окно. При XML-выводе список создается и наполняется успешно. В чем может быть причина? Spoiler local x, y, w, h = 55, 50, 680, 420 local eh = 70 -- так работает local xml = CScriptXmlInit() xml:ParseFile(…) local list = xml:InitList("list", bk) -- ссылка на описание <list width=680 height=420 /> list:SetWndPos( vector2():set(x, y) ) -- так нет -- local list = CUIListWnd() -- bk:AttachChild(list) -- list:SetWndRect( Frect():set(x, y, x+w, y+h) ) list:SetItemHeight(eh) for i = 1, 8 do local e = CUIListItemEx() e:SetWndRect( Frect():set(0, 0, w, eh) ) e:SetText("test_" .. i) list:AddItem(e) end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
phalcor 56 Опубликовано 20 Января 2023 Поделиться Опубликовано 20 Января 2023 Всем привет! Есть вроде бы простой вопрос: как снять биндер с объекта? Чуть подробнее: сделал свой биндер для объекта, запускаю: function init(obj) local new_binder = bolt_binder(obj) obj:bind_object(new_binder) end При нужных мне обстоятельствах я хочу "отменить" биндер для данного конкретного объекта, делаю это так: function bolt_binder:net_spawn(data) --тут разная обработка объекта self.object:bind_object(nil) --удаляем биндер --ВСЁ ЧТО ДАЛЕЕ, УЖЕ НЕ ИСПОЛНЯЕТСЯ ПО ПРИЧИНЕ АННИГИЛЯЦИИ :) if not object_binder.net_spawn(self, data) then return false end return true end Но есть основания полагать, что снимать биндер с объекта так: self.object:bind_object(nil) - это не корректно. Как же правильно? Ссылка на комментарий
Colder 12 Опубликовано 28 Января 2023 Поделиться Опубликовано 28 Января 2023 Всем привет. Не получается спрятать и показать статику когда на ГГ определённая броня. Скрытый текст local outfit = db.actor:item_in_slot(6) if outfit and get_string(outfit:section(), "backpack_avaliable") ~= false then local error = xml:InitStatic("slots_cover", self) error:Show(true) else error:Show(false) Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 29 Января 2023 Поделиться Опубликовано 29 Января 2023 Как минимум, переменная error локальна для первого блока и после else не существует 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Colder 12 Опубликовано 7 Февраля 2023 Поделиться Опубликовано 7 Февраля 2023 Хочу вывести на экран режим стрельбы с оружия. Скрытый текст function actor_on_fire_mode() local slot = {1,2,4} for n = 1,table.getn(slot) do local item = db.actor:item_in_slot(slot[n]) local wpn = db.actor:active_item() if item ~= nil and wpn then local fm = sys_ini:r_string(wpn:section(), "fire_modes") local fm_t = parse_nums(fm) fm_t = 1 local StatCS = hud:GetCustomStatic("fire_modes_static") if StatCS == nil then hud:AddCustomStatic("fire_modes_static", true) StatCS = hud:GetCustomStatic("fire_modes_static") StatCS:wnd():SetText(fm_t) end end end end Подскажите как правильно написать функцию. Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 8 Февраля 2023 Поделиться Опубликовано 8 Февраля 2023 • В чем замысел процитированных строк? Распарсить список, а потом просто присвоить значение 1? Может, имелось в виду fm_t[1]?local fm_t = parse_nums(fm) fm_t = 1 • Статик "fire_modes_static" прописан в [config\ui\ui_custom_msgs.xml]? Вообще, какой-то результат при выполнении кода есть? • Для получения действующего режима стрельбы надо читать нетпакет. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Colder 12 Опубликовано 8 Февраля 2023 Поделиться Опубликовано 8 Февраля 2023 (изменено) Да все прописанно, на худ высвечивается число 1 Изменено 8 Февраля 2023 пользователем Colder 1 Ссылка на комментарий
Jekyll 91 Опубликовано 9 Февраля 2023 Поделиться Опубликовано 9 Февраля 2023 Здравствуйте! Как итерировать инвентарь НПС во время диалога с ним? Способ, подсмотренный в скрипте оригинала ЗП, типа local npc = dialogs.who_is_npc(first_speaker,second_speaker) local function itr_inv(temp,item) ..... end npc:iterate_inventory(itr_inv,nil) не помог. New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 10 Февраля 2023 Поделиться Опубликовано 10 Февраля 2023 Проверить построчно: определяется ли NPC, запускается ли итератор, обнаруживаются ли какие-то объекты. На странице [594] этой же темы было обсуждение с примерами итераторов. 1 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Jekyll 91 Опубликовано 12 Февраля 2023 Поделиться Опубликовано 12 Февраля 2023 Как заставить math.max обратиться к таблице? math.max(1,2,3,4,5) - работает, но таблица предполагается динамичной, способ не подходит local table = {1,2,3,4,5} (условно) math.max(table) - не работает (вылет - number expected, got table) Искал ответ в справочниках по луа и здесь на форуме - не нашел. Полагаю, нужно использовать какой-то метод, но какой - не знаю. table.concat выдает строку, следовательно - вылет (number expected, got string). New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
WinCap 292 Опубликовано 12 Февраля 2023 Поделиться Опубликовано 12 Февраля 2023 @Jekyll, а количество элементов в таблице меняется? S.T.A.L.K.E.R. CoP Objects (upd 10.04.24) Ссылка на комментарий
Jekyll 91 Опубликовано 12 Февраля 2023 Поделиться Опубликовано 12 Февраля 2023 @WinCap Да. New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти