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

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

3 минуты назад, Overfirst сказал:

поглядеть, как воспроизведение партиклов реализовано в sr_particle.script

Побыстрому глянул, я так понял, что там апдейт проверяет партикл на проигрывание, если партикл "выключился" - то запускает его по новой...

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

Можно пример секции такого объекта?

не видит physic_object

Можете эту секцию скинуть, она наверно в system.ltx?

*Не нужно

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

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

Ссылка на комментарий
39 минут назад, Dennis_Chikin сказал:

Есть бесконечные

Time_limit'а нет, может death убрать, что бы партикл играл бесконечно?

И по каким полям в СДК опрделить бесконечный ли партикл?

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

А death - это вообще где ?

И, да, я не уверен, что движок делает с партиклами, хранящимися внутри функций.

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

Так это вообще-то запуск другого элемента, когда закончился основной.

Вообще, на сколько я понял, запускается particle group, а не element, так ? Тогда время надо смотреть для каждого из элементов.

 

И, да, отключенные, но оставленные эффекты и элементы - хороший способ получить странных и загадочных вылетов.

 

p.s. Но вообще это все уже явно не скрипты.

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

Господа, вопрос.

Работаю на довольно сильно измененной скриптовой базе. В какой-то момент стал ловить вылет на юзании неписей, причем только генериков, и только когда по идее должны появиться стандартные фразы "Что интересного можешь рассказать?" и т.д.

Сидорович полностью рабочий. Диалог с Волком проходит безо всяких проблем, пока не тыкнешь "Я попробую" или "Не слабо. Но не пойду". Вылет не содержит никаких отсылок к LUA, лишь ни о чем мне не говорящий стектрейс:

 

stack trace:

0023:0773F45E xrGame.dll

 

Предыдущий снапшот папки scripts такой проблемы не содержит, но изменений с тех пор гора.

Сам вопрос: какова цепочка вызовов функций при юзании генерик-непися (в ванили)? Одним из первых, насколько понимаю, вызывается xr_motivator.motivator_binder:use_callback(). И судя по добавленному дебагу, он отрабатывает от начала и до конца. А далее?

Благодарю.

 

UPD: к слову, death_manager полностью рабочий. Сталкеры убиваются, инвентарь чистится, лут генерится в соответствии с дроп-секциями. Можно обыскать, стянуть предметы, никаких проблем.

UPD2: вылет исправил -- накосячил в dialog_manager. Но цепочку вызовов для общего развития все ж интересно узнать.

 

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

New Level Changer 5.08: Раритеты

ReapeR build 3: Раритеты

 

Я на YouTube: Vincent Vega

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

Доброго времени!

Помогите составить таблицу.

	if box:is_inv_box_empty() then
	  if box:section()=="box" then
		level.start_stop_menu(level.main_input_receiver(), true)
		alife():create("treasure_item", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
		alife():release(alife():object(box:id()))
	  end
	end

Другими словами, нужна таблица секций рюкзаков, составленная в примерно таком виде:

local box = {

"box",

"box_2",

"box_3"

}

Заранее спасибо.

Важнейшая задача цивилизации - научить человека мыслить.

Ссылка на комментарий
В 18.04.2018 в 22:49, Fenrir02 сказал:

нужна таблица секций рюкзаков

Ну так таблица уже есть. Тебе нужно в ф-ции проверить наличие конкретного тайника в этой таблице ? Тогда так:

таблицу лучше назвать к примеру 

local all_box_table = {"box","box_2","box_3"}
	if box:is_inv_box_empty() then
	  if all_box_table[box:section()] then
		level.start_stop_menu(level.main_input_receiver(), true)
		alife():create("treasure_item", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
		alife():release(alife():object(box:id()))
	  end
	end
  • Спасибо 1
Ссылка на комментарий

 

Оживил непись:

alife():release(obj) ..
obj = alife():create(spawn_id)

Пытаюсь сделать другом, в другом скрипте и не сразу.

		if obj and IAmAStalker[obj:clsid()] and obj:alive() and obj:name() == name then 
				printf("set friend %s",name)
				obj:set_relation(game_object.friend,db.actor)
		end

вылет attempt to call method 'set_relation' (a nil value)

Непись живая, на одном уровне с ГГ, воюет.

Почему может быть вылет?

Прошел Солянку, иду в NLC

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

@qwertyuiop судя по всему, obj у тебя является серверным объектом, а у него нет метода set_relation(). Этот метод есть только у клиентского объекта.

 

  • Полезно 2
Ссылка на комментарий

Вот сейчас интересненького (наверное) на поболтать принес.

Unfortunately, @Bak пока так и не объявился в сети, решил отзеркалить часть лички тут:

 

В 10.04.2018 в 15:11, The ReapeR сказал:

Салют!

 

Заметил интересную особенность с AI additions 2.0f4 для Теней. Я сейчас копаюсь со своим модом, подсмотрел в ZRP 1.09 (http://www.metacognix.com/files/stlkrsoc/index.html) механизм валидации основных модулей еще до открытия главного меню. Если вкратце, там в ui_main_menu добавляется переменная а-ля:

 

local all_good = db and modules and xr_logic

 

Потом на ините меню проверяется ее значение, и в случае false предупреждаем о проблемах (modules, как знаешь, загружает все схемы при любом обращении).

Ну и вот, если раньше все схемы загружались уже после загрузки спавна, то теперь это происходит дважды: при ините главного меню и на "Сервер: Старт" (тоже по вине ui_main_menu). На этом моменте спавн еще не загружен, clsids, скорее всего, не валидны, A-Life тоже.

А в rx_ai первой строчкой идет rx_utils.init() -> init_clsids() -> запрашивается куча клсидов, далее local alife = alife() и проч. В такой комбинации на нетспавне актора загрузка дропается с логом "attempt to access field actor_net_spawn (a nil value)" на строчке из bind_stalker if rx_ai rx_ai.actor_net_spawn(). Дебаг показал интересненькое: init_clsids() из rx_utils падает на запросе клсида актора, ни rx_utils, ни rx_ai, ни modules далее уже не читаются, потому движок LUA и не видит функцию.

 

Собственно, вопрос, чисто из спортивного интереса. Что в принципе правильнее: исправить инит rx_ai или не заигрывать с модулями (по идее, могу и то, и то)? Насколько адекватно загружать схемы в такую рань, и должны ли они все быть независимыми от этапа инита (SANB и все ванильные модули, включая xr_kamp с оттаскиванием трупов, загружаются без проблем)?

Спасибо)

 

В 15.04.2018 в 11:32, The ReapeR сказал:

А. Насчет дедманов из xr_kamp чуть наврал) Пришлось инит таблицы body_grab_bones перенести в конструктор, так как там запрашиваются клсиды.

По всем rx_* очмного различного инита выполняется за пределами функций, просто в теле. Полностью как следует прибраться пока не смог, загружаю схемы отдельно от вызова modules, позже, на ините спавна.

Кстати, насколько же шатка и зависима от условий загрузка схем в ванили: первый вызов modules приходится на get_stype() в xr_gulag, когда запускается первая gulag:beginJob() для, если не ошибаюсь, раненого Толика. То есть любое вмешательство в данную функцию, либо же референс к modules в каком-либо другом кастомном скрипте раньше данного места приведет к более ранней или поздней загрузке схем (или вообще незагрузке). Явно нигде схемы они не грузят, все юзание modules сводится к запросам значений stype_*.

 

М?

New Level Changer 5.08: Раритеты

ReapeR build 3: Раритеты

 

Я на YouTube: Vincent Vega

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

Ы ?

 

Как бы да, стартовая менюшка - сама по себе, пространства _G, game, level и еще много разных - сами по себе.

Более того, традиционная лапша в сталкере, и, особенно, модах, со всеми перекрестными ссылками, требует долгого распутывания, если мы хотим что-то в каком-то ином порядке, чем в том, в котором как-то работает.

 

типа так: https://www.dropbox.com/s/miqjdrqmn95nbjn/_init.script?dl=0

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

  • Полезно 2
Ссылка на комментарий

А из-за чего и где неписю может добавляться во входные рестрикторы все аномалии на уровне, кто-нибудь может подсказать? Не всем неписям, только одному (пока одного выявил). Не могу никак разобраться, с какого аномалии ему добавляются. Другим как и положено - обычно по одному рестриктору, накрывающий смарт. В итоге у этого перца список создается длиной больше 4096 байт и игра падает.

Добавляются они в gulag:set_restrictions через add_restrictions, но откуда они взялись у этого нпс?

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

Выявил, что добавляются в amk_anoms.syncronize() (амк-шные динамические аномалии), оттуда корни растут. И почему-то одному неписю, который ничем непримечателен. Длиннющая строка всех аномалий записывается ему в рестрикторы. Ошибка неординарная, но может у кого было подобное. Не могу понять, откуда они тащатся и почему только ему одному.

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

@Zagolski, именно так и действует обход аномалий в АМК. Остальные НПЦ попадают в исключения, а ему одному подрубаются. Надо посмотреть в скриптах условия включчения схемы обхода аномалий. И использовать кстати любую другую схему обхода, по-моему во всех из них в рестрикторы пишутся не все аномалии на уровне, а только ближайшие.

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

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

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

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

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

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

Войти

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

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

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