AndreySol 215 Опубликовано 16 Января 2021 Поделиться Опубликовано 16 Января 2021 @Jekyll ID = 0 это актер(ГГ). Естественно, что неписи на актера агрятся. Лучше, после создания объекта, получить его ID и присвоить его для owner_id. 3 Ссылка на комментарий
naxac 2 445 Опубликовано 16 Января 2021 Поделиться Опубликовано 16 Января 2021 19 часов назад, Jekyll сказал(а): Что означает bit_not(0) в данном случае? -1, т.е. нет значения. 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Jekyll 92 Опубликовано 16 Января 2021 Поделиться Опубликовано 16 Января 2021 5 часов назад, AndreySol сказал(а): ID = 0 Не понял, где в функции указано, что там 0? Если bit_not(0), то, по словам @naxac , это -1, но не 0... Ну ладно, ID аномалии я-то получил, а как его присвоить для owner_id? В нет_спавне биндера кусок нет-пакета перебрать? Таких вариантов, как self.object.owner_id или self.object:owner_id(), не существует... New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
naxac 2 445 Опубликовано 18 Января 2021 Поделиться Опубликовано 18 Января 2021 (изменено) @Jekyll , вот это owner_id = bit_not(0) заменить на owner_id = p_obj.id Хотя, по идее, при owner_id = -1 хит и так должен наноситься "от имени" аномалии. Изменено 18 Января 2021 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
AndreySol 215 Опубликовано 18 Января 2021 Поделиться Опубликовано 18 Января 2021 11 часов назад, naxac сказал(а): хит и так должен наноситься "от имени" аномалии. А в движке Вы смотрели, действительно имеется проверка, что если owner_id = -1, то берем ID аномалии? Прежде, чем говорить об идее, надобно смотреть в исходники движка. У нас идеи одни, а у разрабов того времени, они могли сильно отличаться... Это мое личное мнение. 1 Ссылка на комментарий
Это популярное сообщение. naxac 2 445 Опубликовано 19 Января 2021 Это популярное сообщение. Поделиться Опубликовано 19 Января 2021 (изменено) @AndreySol , разумеется, прежде, чем писать, я посмотрел код в движке. Скрытый текст void CCustomZone::CreateHit ( u16 id_to, u16 id_from, const Fvector& hit_dir, float hit_power, s16 bone_id, const Fvector& pos_in_bone, float hit_impulse, ALife::EHitType hit_type) { if (OnServer()) { if(m_owner_id != u32(-1) ) // проверка id_from = (u16)m_owner_id; NET_Packet l_P; Fvector hdir = hit_dir; SHit Hit = SHit(hit_power, hdir, this, bone_id, pos_in_bone, hit_impulse, hit_type); Hit.GenHeader(GE_HIT, id_to); Hit.whoID = id_from; Hit.weaponID = this->ID(); Hit.Write_Packet(l_P); u_EventSend (l_P); }; } @Jekyll, присмотрелся внимательнее - у тебя ошибка в функции. При записи пакета параметр max_power пропущен. Изменено 19 Января 2021 пользователем naxac 4 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Jekyll 92 Опубликовано 19 Января 2021 Поделиться Опубликовано 19 Января 2021 3 часа назад, naxac сказал(а): При записи пакета параметр max_power пропущен. И правда... Вернул на место - все заработало как надо... Не представлял даже, что отсутствие этого параметра так важно и может сломать нанесение хита неписям... Урок усвоен. New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
ARTLantist 14 Опубликовано 22 Января 2021 Поделиться Опубликовано 22 Января 2021 Как вывести сообщение в верхней центральной точке, где высвечиваетсч активное задание при нажатии таб? Мне нужен именно скрипт, отвечающий жа это, хочу заменить таким типом сообщения то, которое просто приходит на пда. Нужно сделать сообщение для дозиметра. Не хочется засорять историю сообщений пда постоянными измерениями уровня радиации. Как проверить наличие артефакта (любого) в инвентаре гг? И как сделать функцию, которая будет каждую секунду прибавлять немного радиации? Ссылка на комментарий
naxac 2 445 Опубликовано 23 Января 2021 Поделиться Опубликовано 23 Января 2021 @ARTLantist , вот в этой теме можешь найти ответы. Поиском пользуйся. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
strannik-rus 0 Опубликовано 24 Января 2021 Поделиться Опубликовано 24 Января 2021 Добрый день, подскажите пожалуйста, как прописать скрипт на дверь в сталкер зов припяти, чтоб дверь открывалась нажатием клавиши "F" (использовать). Скрипт двери я прописал, но дверь открывается только в одну сторону и только тогда, когда актер в нее упирается. А хотелось бы как в игре, чтоб выскочило сообщение (открыть дверь - нажмите F) Ссылка на комментарий
gam 117 Опубликовано 24 Января 2021 Поделиться Опубликовано 24 Января 2021 @strannik-rus ЕМНИП в ЗОВЕ это работает от рестрикторов. Но не факт конечно. Ссылка на комментарий
Купер 2 842 Опубликовано 25 Января 2021 Поделиться Опубликовано 25 Января 2021 (изменено) @strannik-rus , стандартный набор логики ph_door. От части к части, в принципе, не сильно менялся. Пример ingame: gamedata\configs\scripts\jupiter\jup_b1_door.ltx Скрытый текст [logic] active = ph_door@locked [ph_door@locked] locked = true closed = true snd_open_start = trader_door_locked tip_open = jup_b1_door_is_closed on_info = {=actor_in_zone(jup_b1_open_door_zone)} ph_door@close [ph_door@close] locked = false closed = true snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop on_use = {+jup_b1_give_task} ph_door@open %+jup_b1_already_visited%, ph_door@open tip_open = tip_door_open on_info = {!actor_in_zone(jup_b1_open_door_zone)} ph_door@locked [ph_door@open] locked = false closed = false snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop tip_close = jup_b1_bar_door on_info = {+jup_b1_give_task -jup_b1_already_visited} ph_door@locked %+jup_b1_already_visited% Смотри, что мог упустить Изменено 25 Января 2021 пользователем Купер Ссылка на комментарий
strannik-rus 0 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 25.01.2021 в 11:50, Купер сказал(а): @strannik-rus , стандартный набор логики ph_door. От части к части, в принципе, не сильно менялся. Пример ingame: gamedata\configs\scripts\jupiter\jup_b1_door.ltx Показать [logic] active = ph_door@locked [ph_door@locked] locked = true closed = true snd_open_start = trader_door_locked tip_open = jup_b1_door_is_closed on_info = {=actor_in_zone(jup_b1_open_door_zone)} ph_door@close [ph_door@close] locked = false closed = true snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop on_use = {+jup_b1_give_task} ph_door@open %+jup_b1_already_visited%, ph_door@open tip_open = tip_door_open on_info = {!actor_in_zone(jup_b1_open_door_zone)} ph_door@locked [ph_door@open] locked = false closed = false snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop tip_close = jup_b1_bar_door on_info = {+jup_b1_give_task -jup_b1_already_visited} ph_door@locked %+jup_b1_already_visited% Смотри, что мог упустить Это логика закрытой двери, тоесть выскакивает сообщение, что дверь закрыта изнутри. Но я уже нашел ту, что нужно. Правильная - вот такая: Скрытый текст [collide] ignore_static [logic] active = ph_door@close [ph_door@close] locked = false closed = true snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop on_use = ph_door@open [ph_door@open] locked = false closed = false snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop on_use = ph_door@close Добавлено Опричник, 28 Января 2021 Изучите "Правила цитирования". https://www.amk-team.ru/forum/topic/13514-obyavleniya/ Ссылка на комментарий
Купер 2 842 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 @strannik-rus , дык... более общий случай, "с наворотами". Для понимания принципа. Впрочем, вопрос уже решён. Ссылка на комментарий
Colder 12 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 Всем привет! Парни подскажите функцию на проверку рядом активной аномалии. Например: если аномалия ЖАРКА рядом с гг находится в радиусе 2 метров происходит то или иное действие! Ссылка на комментарий
Zander_driver 10 333 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 @Colder Если совсем примитивно реализовать, то функция должна перебирать все 65к объектов в игре, выбирая среди них нужные аномалии и проверяя дистанцию до каждой. Если реализовать более сложно и грамотно, то к аномалиям нужен скриптовый биндер. Каждый биндер при подключении к объекту (читай - при входе его в онлайн), регистрирует его в некой таблице-буфере, и искомая функция перебирает уже этот буфер, опять же проверяя дистанцию до каждой аномалии. Второй способ выгоднее тем, что перебираются только аномалии. А не все-подряд объекты. Что-то еще более-другое, вряд ли возможно выдумать на оригинальном движке. А движок вы кстати не уточнили... 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. Ссылка на комментарий
mole venomous 3 386 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 (изменено) @Colder обозначь аномалию, как объект и установи условие, при котором между ГГ и объектом будет меньше указанного расстояния для выполнения необходимого действия. И, как и обозначил Zander, это перебор 65 тысяч объектов, но способ рабочий. Если движок 10006 и ранее, посмотри в файлах амк-мода (amk_anoms.script), как определить аномалию. Дальше методом научного тыка тебе станет уже понятнее. Изменено 28 Января 2021 пользователем mole venomous 1 Здесь могла быть ваша реклама. Ссылка на комментарий
AndreySol 215 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 @Colder @Zander_driver @mole venomous А может проще сделать ребята? У аномалий есть биндер(bind_anomaly.script), как уже выше сказали, и у него есть ф-ция function anomaly_binder:update(delta) object_binder.update(self, delta) end Вот в ней и делать проверку на расстояние до актера и выполнять что необходимо. У меня сейчас биндер подключен к двум типам аномалий, для одних одни действия, для других - другие. А те аномалии, что мне не нужны были - биндер не подключен, и соответстввенно нагрузки на движок не создают + биндер работает только для тех аномалий, которые онлайн. 2 1 Ссылка на комментарий
Colder 12 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 Изменяюсь спросить а может кто скинуть bind_anomaly? Ссылка на комментарий
AndreySol 215 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 @Colder Активация биндера в конфигах аномалий, для примера радиоактивных: [zone_radioactive] GroupControlSection = spawn_group_zone $spawn = "zones\radioactive" ;$prefetch = 16 class = Z_RADIO script_binding = bind_anomaly.init_radiation ; <----- это добавить hit_impulse_scale = 0.001; 0.01 И сам скрипт-файл биндера. 1 3 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти