UnLoaded 313 Опубликовано 27 Апреля 2016 Поделиться Опубликовано 27 Апреля 2016 Но, не работает. А ты серьезно веришь, что нет-пакет БТРа соответствует нет-пакету непися ? Сделал поиск по слову custom_data, вот результат - именно тот, что нужен тебе... 1 Ссылка на комментарий
dsh 3 824 Опубликовано 27 Апреля 2016 Поделиться Опубликовано 27 Апреля 2016 (изменено) @TIGER_VLAD, вот по тому примеру делать не нужно. Выкинь каку. Лучше делать local sobj = alife():create(...) local pk = xs_netpk.stalker( sobj ) if pk:isOk() then local data = pk:get() local cd = data.custom_data:getTable() cd.logic = { [ "cfg" ] = "logic\\my_very_custom_logic.ltx", } data.custom_data:set( cd ) pk:set( data ) end или local sobj = alife():create(...) local data = m_net_utils.get_stalker_data( sobj ) data.custom = "[logic]\ncfg=logic\\my_very_custom_logic.ltx\n" m_net_utils.set_stalker_data( data, sobj ) Пишу по памяти и могу ошибиться. Изменено 27 Апреля 2016 пользователем dsh 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 27 Апреля 2016 Поделиться Опубликовано 27 Апреля 2016 @UnLoaded, @dsh, Я так понимаю эти скрипты годятся только для сталкеров? Монстрам, вертолетам, бтрам не подойдут? Ссылка на комментарий
dsh 3 824 Опубликовано 27 Апреля 2016 Поделиться Опубликовано 27 Апреля 2016 @TIGER_VLAD, про вертолеты и бтры не скажу, не смотрел. Возможно, даже если соотв. класс не поддерживается, читать, как alife item, и устанавливать только custom data. Для мутантов поддержка есть, m_net_utils.get_monster_data() и xs_netpk.monster(). 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Zander_driver 10 341 Опубликовано 29 Апреля 2016 Поделиться Опубликовано 29 Апреля 2016 Монстрам, вертолетам, бтрам не подойдут? Вообще-то, Артосовскими модулями менять нетпакет можно у любого класса объектов. А кто и зачем будет что-то смотреть в кастом-дате и что на основании прочитанного делать, это уже отдельный вопрос. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Winsor 177 Опубликовано 29 Апреля 2016 Поделиться Опубликовано 29 Апреля 2016 Уважаемые, каким образом можно узнать у трупа НПС - кто этого НПС убил? вешать регистратор на deatch_callback не очень хочется. Благодарю! Ссылка на комментарий
=VENOM= 50 Опубликовано 29 Апреля 2016 Поделиться Опубликовано 29 Апреля 2016 Очень просто, ведь ID убийцы сохраняется в базе данных жертвы: function return_killer_id(victim_npc) if npc and not npc:alive() then local t = db.storage[npc:id()].death if t and t.killer ~= -1 then return t.killer end end end 1 Ссылка на комментарий
makdm 37 Опубликовано 29 Апреля 2016 Поделиться Опубликовано 29 Апреля 2016 (изменено) Очень просто Мне всегда нравились такие ответы на вопрос. Код ничего не возвращает. Изменено 29 Апреля 2016 пользователем makdm 1 Ссылка на комментарий
UnLoaded 313 Опубликовано 29 Апреля 2016 Поделиться Опубликовано 29 Апреля 2016 Код ничего не возвращает По тому, что поле "death" в таблице не существует. Возможно, данные об убийце в pstor имеются... Ссылка на комментарий
Malandrinus 615 Опубликовано 29 Апреля 2016 Поделиться Опубликовано 29 Апреля 2016 вешать регистратор на deatch_callback не очень хочется. Наверное таки придётся. Добавить пару строчек в колбеке биндера и не забыть это сохранить в pstor непися. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Zander_driver 10 341 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 ведь ID убийцы сохраняется в базе данных жертвы: Я полагаю у автора этих строк не совсем стандартные скрипты, о чем он забыл упомянуть) например тот самый регистратор, записывающий эти данные вот туда. Хотя в пстор правда проще. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Malandrinus 615 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 Я полагаю у автора этих строк не совсем стандартные скрипты, Скрипты вполне стандартные. Просто поле death в хранилище непися появляется только если в логике присутствует секция on_death и соответственно срабатывает схема xr_death. В остальных случаях этого поля нет. регистратор, записывающий эти данные вот туда. Хотя в пстор правда проще. pstor - это не альтернатива хранилищу непися. Это просто разные вещи для разных нужд. Хранилище (storage) хранит данные во время игры. В pstor мы записываем данные для сохранения в сейве и оттуда их извлекаем при загрузке (и возможно пишем в хранилище, чтобы дальше использовать в игре). 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Zander_driver 10 341 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 Просто поле death в хранилище непися появляется только если в логике присутствует секция on_death и соответственно срабатывает схема xr_death. В остальных случаях этого поля нет. ок, я этого не знал) просто сталкерская логика для меня такой темный лес... нагромождение нелогичного и непонятно как и зачем работающего кода. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
=VENOM= 50 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 Просто поле death в хранилище непися появляется только если в логике присутствует секция on_death и соответственно срабатывает схема xr_death. В остальных случаях этого поля нет. Даже и не подумал, что об этом тоже нужно было упомянуть. И ещё так хотелось подчеркнуть, что аргументом является жертва-NPC, что имя аргумента изменил, а в теле функции позабыл ... А хотя нет... Ради очистки совести проверил на чистом 1.0004, всё отлично работает и безо всякого on_death в логике, ошибку только исправил в названии аргумента в теле функции: function return_killer_id(victim_npc) if victim_npc and not victim_npc:alive() then local t = db.storage[victim_npc:id()].death if t and t.killer ~= -1 then return t.killer end end end Ссылка на комментарий
UnLoaded 313 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 (изменено) всё отлично работает и безо всякого on_death в логике А вот тут Ваше утверждение совсем не убедительно - я у себя проверял для нескольких неписей, действительно схема xr_death не срабатывает. А запись полей "death" и "killer" в db.storage происходит именно в этой схеме, вот фрагмент: function action_process_death:death_callback(victim, who) if who ~= nil then printf("[%s] killed by [%s]", victim:name(), who:name()) db.storage[victim:id()].death.killer = who:id() else printf("[%s] killed by [Unknown]", victim:name()) db.storage[victim:id()].death.killer = -1 end .............. Изменено 30 Апреля 2016 пользователем UnLoaded Ссылка на комментарий
makdm 37 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 ID того, кто "шлёпнул" НПС хранится в его же нет-пакете. Всегда можно прочитать пакет НПС-трупа и получить ID киллера. Единственное неудобство - это нужно заранее позаботиться о получении серверного класса объекта НПС-трупа удобным для скриптёра способом. Как-то так. 1 Ссылка на комментарий
=VENOM= 50 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 Спорить не стану - я не знаю, почему у вас не срабатывает. Я "испытывал" функцию на бандитах на АТП в оригинальной ТЧ. У них ни в логике, ни в all.spawn секции on_death нет. Функция нормально возвращает ID убийцы. Ссылка на комментарий
Malandrinus 615 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 У них ни в логике, ни в all.spawn секции on_death нет Большинство неписей получают логику из гулага. Бандиты на АТП очевидно в гулаге. 1 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
UnLoaded 313 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 Бандиты на АТП очевидно в гулаге. Само собой, в гулаге. Правда я у себя на 1.0006 посмотрел этот гулаг(esc_fabrika_bandit), нет там нигде on_death. И у меня то-же для этих бандитов, сразу после убийства, выдает ID убийцы = 0, что соответствует актеру. Но после сэйв\лоад уже все, полей "death" и "killer" не существует. Так что, похоже, самый адекватный способ убийцу получить - из нет-пакета, а все эти логико- и сэйв\лоад зависимые вещи лучше не использовать... 1 2 Ссылка на комментарий
Malandrinus 615 Опубликовано 30 Апреля 2016 Поделиться Опубликовано 30 Апреля 2016 посмотрел этот гулаг(esc_fabrika_bandit), нет там нигде on_death хм. Да действительно после смерти им прописано поле death, а после перезагрузки это поле исчезает. Ну значит универсальная схема им это поле пишет. И значит к тому же криво не сохраняет это поле в pstor, как положено бы. На самом деле к чему все эти страдания? Добавить своё поле в биндер или хранилище по колбеку на смерть - вопрос пары строк кода. Ещё пара строк - сохранение этого поля в псторе. И всех делов. Неужели ради этого кому-то милее лезть в богомерзкие нетпакеты? 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти