Kirgudu 725 Опубликовано 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 119 Опубликовано 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 119 Опубликовано 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 725 Опубликовано 25 Ноября 2022 Поделиться Опубликовано 25 Ноября 2022 https://github.com/OGSR/OGSR-Engine/commit/1e0477aff92a233ca6fd062a546f54229f2b0bcb Qui quaerit, reperit. 1 Цитата Ссылка на комментарий
dsh 3 707 Опубликовано 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 725 Опубликовано 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 119 Опубликовано 26 Ноября 2022 Поделиться Опубликовано 26 Ноября 2022 Вот теперь картинка сложилась. Это, конечно, бинго: найти одновременно нечитаемый параметр с совпадающим названием и пример кода, который не должен работать на чистой игре. Цитата Мини-моды: ТЧ ЧН ЗП Ссылка на комментарий
_Sk8_AsTeR_ 110 Опубликовано 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 119 Опубликовано 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 49 Опубликовано 20 Января Поделиться Опубликовано 20 Января Всем привет! Есть вроде бы простой вопрос: как снять биндер с объекта? Чуть подробнее: сделал свой биндер для объекта, запускаю: 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 10 Опубликовано в субботу в 17:23 Поделиться Опубликовано в субботу в 17:23 Всем привет. Не получается спрятать и показать статику когда на ГГ определённая броня. Скрытый текст 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 119 Опубликовано в воскресенье в 06:28 Поделиться Опубликовано в воскресенье в 06:28 Как минимум, переменная error локальна для первого блока и после else не существует 1 Цитата Мини-моды: ТЧ ЧН ЗП Ссылка на комментарий
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.