Перейти к контенту

Рекомендуемые сообщения

 

 

Но, не работает.

А ты серьезно веришь, что нет-пакет БТРа соответствует нет-пакету непися ?

Сделал поиск по слову custom_data, вот результат - именно тот, что нужен тебе...

Ссылка на комментарий

@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 )
 

 

 

 
Пишу по памяти и могу ошибиться.
Изменено пользователем dsh
Ссылка на комментарий

@UnLoaded@dsh, Я так понимаю эти скрипты годятся только для сталкеров? Монстрам, вертолетам, бтрам не подойдут?

Ссылка на комментарий
@TIGER_VLAD, про вертолеты и бтры не скажу, не смотрел. Возможно, даже если соотв. класс не поддерживается, читать, как alife item, и устанавливать только custom data. Для мутантов поддержка есть, m_net_utils.get_monster_data() и xs_netpk.monster().
Ссылка на комментарий

 

 

Монстрам, вертолетам, бтрам не подойдут?

Вообще-то, Артосовскими модулями менять нетпакет можно у любого класса объектов.

А кто и зачем будет что-то смотреть в кастом-дате и что на основании прочитанного делать, это уже отдельный вопрос.

Мод, где не бывает одинаковых путей - Судьба Зоны. На базе модифицированного движка OGSR Engine.

В пределах 2022 года я завершаю все разработки на базе движка X-Ray. Гайды по сделанному будут написаны, наработки по СЗ на базе X-Ray будут либо опубликованы, либо переданы тем людям кто этого заслуживает.

Дальнейшая разработка и реализация моих идей будет происходить на движке Unreal Engine. И где-то в пределах 2022 года, об этом совершенно точно, будут новости.

 

Ссылка на комментарий

Уважаемые, каким образом можно узнать у трупа НПС - кто этого НПС убил? вешать регистратор на deatch_callback не очень хочется.

Благодарю!

Ссылка на комментарий

Очень просто, ведь 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
Ссылка на комментарий
Очень просто

Мне всегда нравились такие ответы на вопрос.

Код ничего не возвращает.

Изменено пользователем makdm
Ссылка на комментарий

 

 

вешать регистратор на deatch_callback не очень хочется.

Наверное таки придётся. Добавить пару строчек в колбеке биндера и не забыть это сохранить в pstor непися.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

 

 

ведь ID убийцы сохраняется в базе данных жертвы:

Я полагаю у автора этих строк не совсем стандартные скрипты, о чем он забыл упомянуть) например тот самый регистратор, записывающий эти данные вот туда.

Хотя в пстор правда проще.

Мод, где не бывает одинаковых путей - Судьба Зоны. На базе модифицированного движка OGSR Engine.

В пределах 2022 года я завершаю все разработки на базе движка X-Ray. Гайды по сделанному будут написаны, наработки по СЗ на базе X-Ray будут либо опубликованы, либо переданы тем людям кто этого заслуживает.

Дальнейшая разработка и реализация моих идей будет происходить на движке Unreal Engine. И где-то в пределах 2022 года, об этом совершенно точно, будут новости.

 

Ссылка на комментарий

Я полагаю у автора этих строк не совсем стандартные скрипты,

 

Скрипты вполне стандартные. Просто поле death в хранилище непися появляется только если в логике присутствует секция on_death и соответственно срабатывает схема xr_death. В остальных случаях этого поля нет.

 

 

регистратор, записывающий эти данные вот туда. Хотя в пстор правда проще.

 

pstor - это не альтернатива хранилищу непися. Это просто разные вещи для разных нужд. Хранилище (storage) хранит данные во время игры. В pstor мы записываем данные для сохранения в сейве и оттуда их извлекаем при загрузке (и возможно пишем в хранилище, чтобы дальше использовать в игре).

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

 

 

Просто поле death в хранилище непися появляется только если в логике присутствует секция on_death и соответственно срабатывает схема xr_death. В остальных случаях этого поля нет.

ок, я этого не знал) просто сталкерская логика для меня такой темный лес... нагромождение нелогичного и непонятно как и зачем работающего кода.

Мод, где не бывает одинаковых путей - Судьба Зоны. На базе модифицированного движка OGSR Engine.

В пределах 2022 года я завершаю все разработки на базе движка X-Ray. Гайды по сделанному будут написаны, наработки по СЗ на базе X-Ray будут либо опубликованы, либо переданы тем людям кто этого заслуживает.

Дальнейшая разработка и реализация моих идей будет происходить на движке Unreal Engine. И где-то в пределах 2022 года, об этом совершенно точно, будут новости.

 

Ссылка на комментарий

Просто поле 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
Ссылка на комментарий
всё отлично работает и безо всякого 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
..............
Изменено пользователем UnLoaded
Ссылка на комментарий

ID того, кто "шлёпнул" НПС хранится в его же нет-пакете. Всегда можно прочитать пакет НПС-трупа и получить ID киллера.

Единственное неудобство - это нужно заранее позаботиться о получении серверного класса объекта НПС-трупа удобным для скриптёра способом.

Как-то так.

Ссылка на комментарий

Спорить не стану - я не знаю, почему у вас не срабатывает. Я "испытывал" функцию на бандитах на АТП в оригинальной ТЧ. У них ни в логике, ни в all.spawn секции on_death нет. Функция нормально возвращает ID убийцы.

Ссылка на комментарий

 

 

У них ни в логике, ни в all.spawn секции on_death нет

Большинство неписей получают логику из гулага. Бандиты на АТП очевидно в гулаге.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

 

 

Бандиты на АТП очевидно в гулаге.

Само собой, в гулаге. Правда я у себя на 1.0006 посмотрел этот гулаг(esc_fabrika_bandit), нет там нигде on_death. И у меня то-же для этих бандитов, сразу после убийства, выдает ID убийцы = 0, что соответствует актеру. Но после сэйв\лоад уже все, полей "death"  и "killer" не существует.

Так что, похоже, самый адекватный способ убийцу получить - из нет-пакета, а все эти логико- и сэйв\лоад зависимые вещи лучше не использовать...

Ссылка на комментарий

 

 

посмотрел этот гулаг(esc_fabrika_bandit), нет там нигде on_death

хм. Да действительно после смерти им прописано поле death, а после перезагрузки это поле исчезает. Ну значит универсальная схема им это поле пишет. И значит к тому же криво не сохраняет это поле в pstor, как положено бы.

 

На самом деле к чему все эти страдания? Добавить своё поле в биндер или хранилище по колбеку на смерть - вопрос пары строк кода. Ещё пара строк - сохранение этого поля в псторе. И всех делов. Неужели ради этого кому-то милее лезть в богомерзкие нетпакеты?

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
К сожалению, ваш пост содержит слова, запрещенные в нашем сообществе. Пожалуйста, измените ваш текст так, чтобы в нем не оставалось слов, указанных ниже. Помните, что публикация вами даже видоизмененного запрещенного слова может нарушать законодательство РФ и Правила форума.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Недавно просматривали   1 пользователь

AMK-Team.ru

×
×
  • Создать...