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

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

@Jekyll 

ID = 0 это актер(ГГ). Естественно, что неписи на актера агрятся. Лучше, после создания объекта, получить его ID и присвоить его для owner_id.

  • Согласен 3
Ссылка на комментарий
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

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

@Jekyll , вот это

owner_id = bit_not(0)

заменить на

owner_id = p_obj.id

Хотя, по идее, при owner_id = -1 хит и так должен наноситься "от имени" аномалии.

Изменено пользователем naxac
  • Спасибо 1
  • Нравится 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
11 часов назад, naxac сказал(а):

хит и так должен наноситься "от имени" аномалии.

А в движке Вы смотрели, действительно имеется проверка, что если owner_id = -1, то берем ID аномалии? Прежде, чем говорить об идее, надобно смотреть в исходники движка. У нас идеи одни, а у разрабов того времени, они могли сильно отличаться...

Это мое личное мнение.

  • Согласен 1
Ссылка на комментарий
3 часа назад, naxac сказал(а):

При записи пакета параметр max_power пропущен.

И правда... Вернул на место - все заработало как надо... Не представлял даже, что отсутствие этого параметра так важно и может сломать нанесение хита неписям... Урок усвоен.

New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор

Русификатор для игры Vendetta: Curse of Raven's Cry

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

Как вывести сообщение в верхней центральной точке, где высвечиваетсч активное задание при нажатии таб? Мне нужен именно скрипт, отвечающий жа это, хочу заменить таким типом сообщения то, которое просто приходит на пда. Нужно сделать сообщение для дозиметра. Не хочется засорять историю сообщений пда постоянными измерениями уровня радиации.

Как проверить наличие артефакта (любого) в инвентаре гг? И как сделать функцию, которая будет каждую секунду прибавлять немного радиации?

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

Добрый день, подскажите пожалуйста, как прописать скрипт на дверь в сталкер зов припяти, чтоб дверь открывалась  нажатием клавиши "F" (использовать). Скрипт двери я прописал, но дверь открывается только в одну сторону и только тогда, когда актер в нее упирается. А хотелось бы как в игре, чтоб выскочило сообщение (открыть дверь - нажмите F)

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

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

 

Смотри, что мог упустить :pardon:

Изменено пользователем Купер
Ссылка на комментарий
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%

 

Смотри, что мог упустить :pardon:

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

Правильная - вот такая:

Скрытый текст

 

[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  

 

 

Добавлено  Опричник,

Изучите "Правила цитирования". https://www.amk-team.ru/forum/topic/13514-obyavleniya/

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

@strannik-rus , дык... более общий случай, "с наворотами". Для понимания принципа. :biggrin:

Впрочем, вопрос уже решён. :good:

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

Всем привет! Парни подскажите функцию на проверку рядом активной аномалии. Например: если аномалия ЖАРКА рядом с гг находится в радиусе 2 метров происходит то или иное действие!

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

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

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

@Colder обозначь аномалию, как объект и установи условие, при котором между ГГ и объектом будет меньше указанного расстояния для выполнения необходимого действия. И, как и обозначил Zander, это перебор 65 тысяч объектов, но способ рабочий.

Если движок 10006 и ранее, посмотри в файлах амк-мода (amk_anoms.script), как определить аномалию. Дальше методом научного тыка тебе станет уже понятнее.

Изменено пользователем mole venomous
  • Спасибо 1

Здесь могла быть ваша реклама.

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

@Colder @Zander_driver @mole venomous 

А может проще сделать ребята? У аномалий есть биндер(bind_anomaly.script), как уже выше сказали, и у него есть ф-ция

function anomaly_binder:update(delta)
    object_binder.update(self, delta)
end

Вот в ней и делать проверку на расстояние до актера и выполнять что необходимо.

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

  • Нравится 2
  • Согласен 1
Ссылка на комментарий

@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
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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