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

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

Всем привет , как через нет пакет правильно сменить direction у объекта который я спавню через alife:...(или может можно как либо задать direction при спавне через скрипт?)
в нет пакетах я не силен , но если кто поможет буду при много  благодарен , заранее спасибо)

Изменено пользователем Logger
  • Полезно 1
Ссылка на комментарий

 

 

трабла в самом изначальном решении разряжать оружие в on_item_drop... В чем смысл-то ?
Сие надо бы у автора сего творения спрашивать. Я лишь пытаюсь заставить это нормально работать под ТЧ вообще и ОГСЕ в частности. И если в чистом ТЧ оно работает без вылетов, несмотря на срабатывание actor_binder:on_item_drop на переходах, то в ОГСЕ свои грабли, которые именно на переходах мешают.

Смысл сего действа в том, чтобы при подборе\изъятии ствола, он автоматом скидывал патроны в инвентарь. Если в чистом ТЧ, пока я заради проверки добежал от Сидоровича до перехода, у ГГ уже 500 патронов ля ПМа, 150 для MP-5 и 4 пачки дроби, то в ОГСЕ с неписей выпадает 5 патронов в инвентаре и 3 в стволе, но раз так на десятый. И хотя концепцию "Бомж в ЗО" у них так реализовать не получилось, но в начале игры с хламом к Сидоровичу побегать таки приходится, и неписей поотстреливать только заради лишнего патрона. И вот, чтобы кадый ствол в инвентаре не тыкать, нужен сей замечательный прибамбас.


 

 

В чем смысл-то ?

Или ты о чём?

  • Нравится 1

Шаман - СисАдмин

Всяко-разно: для ЧН

Ссылка на комментарий
А вот это как раз слишком рано. Задумайтесь, как могут срабатывать колбеки до того, как инициализирован сам объект биндера? Это же его методы. Конечно они после __init будут срабатывать.

А при чём тут биндер? Речь-то изначально шла о том, как отловить факт перехода на другую локацию перед этим самым переходом. А это происходит уж точно тогда, когда актор полностью инициализирован в процессе предыдущей загрузки. И значит можно сохранить текущую позицию, например id локации, один раз, в момент инициализации актора.

 

@Romz, попробуй в on_item_drop проверять позицию не клиентского объекта, как ты это делаешь сейчас, а серверного. Примерно так:

local sObj = alife():object(db.actor:id())
local vPos,idLv,idGv = sObj.position, sObj.m_level_vertex_id, sObj.m_game_vertex_id
-- дальше можно вычислить id локации и сравнить с запомненным
if idGv and game_graph():valid_vertex_id(idGv) then
  local oVertex = game_graph():vertex(idGv)
  if oVertex then
    local idLevel = oVertex:level_id()
  end
end

Засим из дискуссии удаляюсь по причине катастрофической нехватки времени. Удачи в поисках решения!

Изменено пользователем Kirgudu
  • Полезно 1
Ссылка на комментарий

@Kirgudu, Вот два набора координат, полученных при переходе. Первое - твоим методом, второе - тем, что было. Отличия только в LevelVertex.

 

 

(908846.0625) = spawn_ammo_in_inv => sect [ammo_7.62x54_7h14] npc [single_player]
position [ x = 15.177068710327, y = 16.481603622437, z = 684.85302734375]
 level_vertex_id [290088]
 game_vertex_id [207]
 npc ID [0]
 number [20] 
(908846.0625) = spawn_ammo_in_inv => sect [ammo_7.62x54_7h14] npc [single_player]
position [ x = 15.177068710327, y = 16.481603622437, z = 684.85302734375]
 level_vertex_id [290880]
 game_vertex_id [207]
 npc ID [0]
 number [20] 

 

 

Шаман - СисАдмин

Всяко-разно: для ЧН

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

@Romz, сей прибамбас, думается мне, можно переключить с on_item_drop на on_item_take. Будут стволы разряжаться при взятии, а оно срабатывает массово ПОСЛЕ входа актора на новую локацию.
И там допустим просто в __init или в netspawn биндера ставить некий флаг в false, в on_item_take его проверять равен ли истине, а в true его ставить на медленном апдейте секунд через 5 после нетспавна актора.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

 

 

оно срабатывает массово ПОСЛЕ входа актора на новую локацию
Но размножения патронов не вызывает, т.к. состояние инвентаря читается из автосохранения.

А на actor_binder:on_item_drop можно, как мне тут подсказали, сделать проверку на открытый инвентарь. Т.к. осмыленный выброс происходит из открытого инвентаря.

 

 

if idGv and game_graph():valid_vertex_id(idGv) then local oVertex = game_graph():vertex(idGv) if oVertex then local idLevel = oVertex:level_id() end end
idLevel = nil

Причём, в любом случае, и при ручном выбросе, и при переходе.

Шаман - СисАдмин

Всяко-разно: для ЧН

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

Логично: если оружие было разряжено при взятии, то незачем разряжать уже разряженное оружие при выбрасывании.

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

@aromatizer, Нелогично, т.к. это может быть твой ствол, который был в слоте, и который ты заменил другим, и решил засунуть в ящик, например.

Шаман - СисАдмин

Всяко-разно: для ЧН

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

Зарядить оружие можно только поместив его в слот. Значит, при перемещении оружия из слота в инвентарь, оно тоже должно разряжаться.

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

@aromatizer, Вообще-то, здесь не место для таких обсуждений. Завязываем, а то прилетит.
@Kirgudu, @Zander_driver, Проблема решилась таким образом.
Добавляем в начало функции ts_mod_soc.ts_on_item_drop проверку на открытый инвентарь

if db.actor:has_info("ui_inventory") then

И она срабатывает только при явном выбрасывании ствола из инвентаря ГГ. При переходах и прочих развоплощениях уже не срабатывает.

  • Нравится 2

Шаман - СисАдмин

Всяко-разно: для ЧН

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

А теперь обратный вопрос есть у меня :)  Как можно функцией в ствол запихать N количество патронов?

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

 

 

И она срабатывает только при явном выбрасывании ствола из инвентаря ГГ

Хотелось бы уточнить - то есть на горячей клавише сброса "активного" ствола авторазряжалка не срабатывает?

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

@=VENOM=, А оно и не должно разряжаться из активного слота.

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

@=VENOM=, Да, там проверка, что ствол не в слоте. Чтобы, значит, если у тебя его выбьет, он не разрядился и ты без патронов не остался.

Шаман - СисАдмин

Всяко-разно: для ЧН

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

Блин, кто сегодня скачать успел - перекачайте, плиз. В одном месте забыл переменную переименовать :t1807:

Ссылка та же. Я.Диск

  • Спасибо 1

Шаман - СисАдмин

Всяко-разно: для ЧН

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

Такая проблема образовалась. Нужно отловить момент броска/взрыва гранаты. Написал простой биндер для гранат, net_spawn(бросок) работает на ура, а вот net_destroy(как я думал взрыв) ведет себя странно, срабатывает сначала секунды за 2 до собственно взрыва, а потом еще раз через 1-2 секунды. Есть какие мысли по этому поводу?

Ссылка на комментарий
@vampirnik77, первый дестрой вызывается, когда граната вылетает с руки. Дальше летит уже другая граната, если я правильно помню. Второй дестрой - это уже ее взрыв.
Ссылка на комментарий

@dsh, Когда граната вылетает из рук вызывается net_spawn дестрой вообще вызывается невесть как.

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

@vampirnik77,  и net_spawn и net_destroy вызываются. Когда граната появляется в руках, вызывается net_spawn и у этой гранаты есть parent. Потом гранату бросают и вызывается net_destroy, а потом появляется новая граната и для нее вызывается net_spawn. parent-а у этой гранаты нет. Она летит, падает и взрывается. Вызывается net_destroy. Один из вариантов отловить взрыв гранаты - это в net_spawn сохранить parent_id, а в net_destroy проверять, имеется-ли сохраненный parent_id. Если нет, значит это взрыв. Если есть - значит граната полетела.

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

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

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

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

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