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

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

c19ca8cbf9def90.jpg

 

Без ОГСМ всё работает.

 

 

@Zander_driver,
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : ..\xrServerEntities\script_engine.cpp
[error]Line          : 180
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...orovka_beta2\gamedata\scripts\ogsm_rt_manager.script:978: bad argument #1 to 'pairs' (table expected, got nil)

 

Спавню нпс на новой локации из профиля ОГСМ.
 

Или я вообще туплю. Тут в ЧН же можно спавнить нпс через алспавн напрямую? Это же не ЗП, что бы через респавн.

 

Изменено пользователем Expropriator

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
3 часа назад, Expropriator сказал:

Кто шарит в ОГСМ ( кроме Kirgudu)?

А я тебе не подойду вместо Kirgudu? :crazy2:

Не было там никакой привязки к локациям, насколько я помню. К смартам - да, но не в заданиях типа "kill_stalker".
Проверь, что ты не почистил ненароком конфиг misc\rt_manager.ltx
При первом после загрузки обращении к менеджеру (например, как раз из se_stalker.on_register()) там считывалось содержимое секции list, затем по каждой строке этой секции читались уже свойства заданий и записывались в массив self.task_info. Далее делался перебор этого массива и в зависимости от значения свойства type добавлялось значение в один из массивов task_id_by_type[type]. Пустым он мог оказаться только в том случае, если из конфига не получено ни одного задания нужного типа.

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

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

Странно.

andreyholkin.gif

rod_cccp.gif

 

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

@Expropriator, ну, тут уж только тебе ведомо, что ты там со стартом накуролесил. :) Впрочем, на правильную инициализацию менеджера заданий это влиять всё равно не должно. Там главное, чтобы вызов любого метода менеджера из другого модуля шёл только через получение синглтона инициализированного экземпляра менеджера, например:
ogsm_rt_manager.get_rt_manager():register_target(self)

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

@Kirgudu, ничего понять не могу, Ладно, сперва вернусь к истокам, к нормальному алспавну и локациям. Может у меня алспавн баганутый получается?

 

И кстати, я не внедряю ЧН локации в общий спавн, может причина, что нет смартов и другого спавна?

Изменено пользователем Expropriator

andreyholkin.gif

rod_cccp.gif

 

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

@Expropriator, теоретически all.spawn, конечно, может влиять. Например, для тех же заданий типа "kill_stalker" одним из свойств является свойство parent, указывающее на того, кто может выдать задание. Это story_id определённого персонажа, и если ты удалил его из спавна, задание с таким родителем будет полностью пропущено при инициализации, а значит не будет учтено при составлении массива task_id_by_type[type]. Таким образом, получается, чтобы ты не наталкивался на вылет, описанный выше, необходимо выполнение трёх условий:
1. Конфиг misc\rt_manager.ltx должен содержать как минимум одно задание типа "kill_stalker";

2. All.spawn должен обеспечивать спавн как минимум одного персонажа со story_id, указанным в конфиге в заданиях типа "kill_stalker", причём этот спавн должен происходить до инициализации менеджера;

3. Вызов любого метода менеджера должен происходить только через получение его экземпляра: ogsm_rt_manager.get_rt_manager():method_name().

Конечно, менеджер можно доработать так, чтобы он был универсальным и стойким к разным условиям. Но на момент активной разработки ОГСМ такой задачи просто не возникало, поэтому имеем то, что имеем.

15 часов назад, Zander_driver сказал:

Может там достаточно проверку if type() == 'table' воткнуть, и всего делов...

И кстати, если ты действительно убрал весь классический спавн, тогда причина именно в этом согласно трём правилам, описанным выше. А значит, решение, предложенное @Zander_driver, скорее всего будет для тебя панацеей.

Куда воткнуть такую проверку, объяснять не нужно? Вроде все тут - люди опытные.

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

А есть ли возможность поменять скриптом предмет в слоте актора? (текущий отправить в инвентарь, а вместо него взять из инвентаря)

 

 

 

 

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

@phalcor, в оригинале пожалуй без особо злой чёрной магии нет. В XRay Ext добавлены соответствующие методы.

  • Спасибо 1
  • Согласен 1

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

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

Здрасьте.

 

Как в ЧН отследить смену калибра оружия и вообще список установленных апгрейдов? Секция предмета остается той же, в нетпакете таких данных нет (если только они не пишутся в конец в виде набора stringZ).

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

У меня тоже вопросик. По ЗП. Нашел на сталкерине:

function set_ammo_elapsed(number) 
void set_ammo_elapsed(int ammo_elapsed)
заряжает магазин количеством патронов, равным ammo_elapsed. Размер магазина игнорируется.

 

function unload_magazine()
void unload_magazine()
разряжает магазин оружия. Оружие должно быть в инвентаре/руках объекта CAI_Stalker. Патроны из ствола пропадают. Аргументов не принимает.
 

А как это должно выглядеть в самом скрипте? Можно примерчик кода. А то, до сих пор в основном использовал функции которые получают значения, а не задают. И вообще, это было в 18-ом году. Сам удивился.

 

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

Уважаемые камрады, подскажите, пожалуйста, работает ли на оригинальном движке команда set_fov для мутантов? 
Если да - то параметры она принимает в градусах или радианах?

Увеличение set_range( new_value ) отрабатывает, а вот на set_fov() никаких изменений отладка не показывает.

И второй вопрос - параметр "освещенности" ( luminocity_factor ) для мутантов вообще скриптами можно менять?

След от кругов на воде - это тоже след (с)

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

Здрасьте.

 

Как научить NPC обходить ГГ, а не идти напролом? Я так понимаю, список "препятствий" динамический, без точных координат каждого ящика и каждой аномалии, только где он хранится?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
1 час назад, Norman Eisenherz сказал:

Я так понимаю, список "препятствий" динамический,

Вот тут ошибочка, нпс ходят по "нодам" - клеткам расставленным в сдк, а они статические, и предметы заспавленые  скриптом  - "динамические" они не видят в упор

  • Согласен 2
Ссылка на комментарий
10 минут назад, Norman Eisenherz сказал:

Каким тогда образом NPC

в AMK запросто обходят. Посредством скриптов

  • Согласен 1

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

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

@Norman Eisenherz, ну, с аномалиями проще. Во первых они не движутся, во вторых, ты должен быть в курсе что у аномалии два радиуса действия:

effective_radius и actor_blowout_radius_percent.

И вот какой то из них скрипт и использует для определения границ аномалий.

Изменено пользователем UriZzz

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

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

@Norman Eisenherz, например https://www.amk-team.ru/forum/topic/6185-skriptovanie/?do=findComment&comment=1325557

А вообще, хорошей практикой будет (а раньше считалось ещё и хорошим тоном) проведение самостоятельного поиска по форуму на интересующую тему. Многие вопросы обсуждались не раз и не два. Вот и запрос по словосочетанию "обход аномалий" легко возвращает интересные для изучения результаты.

  • Согласен 1
Ссылка на комментарий
10 часов назад, mole venomous сказал:

Посредством скриптов

Строго говоря, нет. Посредством скриптов добавляются (или удаляются) зоны в список тех, которые надо/не надо обходить. А обход-то сам всегда и во все времена, выполнялся и выполняется движком.

 

22 часа назад, Norman Eisenherz сказал:

Я так понимаю, список "препятствий" динамический, без точных координат каждого ящика и каждой аномалии, только где он хранится?

space_restriction_manager.cpp :rolleyes:

Ну или, если по-старому, то через нетпакеты можно в эти списки (in_restrictions, out_restrictions) что-то добавлять/удалять скриптами. Только, это что-то должно быть (если без правок движка), рестриктором или аномалией.

Чтобы туда еще и актор принимался, надо немного движок подправить. Но за идею спасибо.

Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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