Перейти к содержанию

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

 
 

Народ! Как можно управлять партиклом, совсем не знаю как работает такая секция.
sr_particle
Есть файл логики спейса, всё работает, но мне нужно отключить партикл при получении определённого поршня.
Логика выглядит так:
 

Спойлер

 

[logic]
active = sr_idle@wait

[sr_idle@wait]
on_info = {+drk_spawn_teleport_exit} sr_particle@teleport

[sr_particle@teleport]
name = anomaly2\anomaly_teleport_01
path = drk_teleport_particle
mode = 2
looped = true

 

Работает ли в такой секции  on_info =??? Ну или как из этой секции переключиться на другую??? Вроде партикл работает только пока работает секция.

  • Дурка 1

Группа мода в VK
Мод делался и тестировался на железе
i5-11400, 32Гб ОЗУ, Radeon RX580  Разрешение 2560 х 1440.  ВСЕ на максималке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
36 минут назад, Policai сказал:

Работает ли в такой секции  on_info =???

А почему нет?! Примеров много в оригинале

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Как ударить игрока, при этом запретив ему двигаться? Я это делаю через:

%=actor_punch =disable_ui%

но через пару секунд управление игроку возвращается (без UI!), чего, по идее, быть не должно. Как это можно починить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
10 минут назад, fenit сказал:

Как это можно починить?

set_inactivate_input_time(num) -- num поставьте больше

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
22 часа назад, Mass сказал:

set_inactivate_input_time(num) -- num поставьте больше

Спасибо, я чёт не увидел этой строчки сразу. Я решил немного модифицировать функцию, чтоб в неё можно было передавать время до "очухивания". Если кому-то понадобится, то вот:
 

Спойлер

xr_effects.script:


function actor_punch(npc, actor, p)
	if db.actor:position():distance_to_sqr(npc:position()) > 4 then
		return
	end

	local inactivate_time = 30

	if p and p[1] then
		inactivate_time = p[1]
	end

	set_inactivate_input_time(inactivate_time)
	level.add_cam_effector("camera_effects\\fusker.anm", 999, false, "")

	local active_slot = db.actor:active_slot()
	if active_slot ~= 2 and
		active_slot ~= 3
	then
		return
	end

	local active_item = db.actor:active_item()
	if active_item then
		db.actor:drop_item(active_item)
	end
end


Использование:


; time - время в миллисекундах. Можно не передавать аргумент time (не забывая убрать скобки), тогда управление вернётся через 3 секунды
%=actor_punch(time)%

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
9 часов назад, fenit сказал:

actor_punch(actor, npc, p)

И получишь ошибку, если захочешь использовать анимацию под названием "punch" .А также если будет настройка в схеме meet при abuse = true.  В результате актор будет проверять расстояние от самого себя до самого себя. В вызове функции из анимации 1-ым стоит не актор, а нпс

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
9 часов назад, Mass сказал:

А также если будет настройка в схеме meet при abuse = true.

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

9 часов назад, Mass сказал:

В результате актор будет проверять расстояние от самого себя до самого себя.

А почему должна появится ошибка? Мне кажется тут только что и может появится, так это баг, что неписи могут бить на любом расстоянии от гг, но я не знаю как это поправить. Единственная идея - проверять является ли актор актором, а если нет, то менять местами непися и актора, но я не понимаю как это можно сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, fenit сказал:

никаких вылетов, никаких окон с ошибками нет

Ошибка в моём понимании - это не только краш, зависание игры или порча данных! Всякие коллизии, баги, рекурсии одной и той же функции и недочёты тоже являются для меня ошибками. Я не зря уточнил в своём посте о

11 часов назад, Mass сказал:

актор будет проверять расстояние от самого себя до самого себя

И ты же сам пишешь тоже самое

1 час назад, fenit сказал:

что неписи могут бить на любом расстоянии от гг

 

1 час назад, fenit сказал:

Единственная идея

Далеко нет..

1 час назад, fenit сказал:

я не понимаю как это можно сделать

Я бы вынес переменную за пределы функции,  создал новую функцию, вызвал бы эту самую функцию из новоявленной уже с новым значением константы. Можно сделать или через флажок или например через новые аргументы функции и по проверке параметра вызвать с новым значением, или создать аналогичную функцию, но уже с измененным значением. Вот тебе, как минимум, 3 идеи подкинул

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
21 минуту назад, Mass сказал:

Ошибка в моём понимании - это не только краш, зависание игры или порча данных! Всякие коллизии, баги, рекурсии одной и той же функции и недочёты тоже являются для меня ошибками.

Понял, но, всё же, тут ничего критичнее удара на любом расстоянии быть не должно.

22 минуты назад, Mass сказал:

Я бы вынес переменную за пределы функции,  создал новую функцию, вызвал бы эту самую функцию из новоявленной уже с новым значением константы. Можно сделать или через флажок или например через новые аргументы функции и по проверке параметра вызвать с новым значением, или создать аналогичную функцию, но уже с измененным значением. Вот тебе, как минимум, 3 идеи подкинул

1) Как мне тогда передавать эту переменную? Сама суть моей правки в том, что я теперь могу любое значение в функцию передавать.
2) Немного не понимаю что вы имете тут в виду, если прокси функцию, то там никаких флажков же не надо - просто не передавать второй аргумент и дело с концом. А вообще, как мне кажется, можно просто поменять npc и actor в аргументах функции местами и всё должно заработать корректно.
3) Не хочу плодить сущности без особой на то причины.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
25 минут назад, fenit сказал:

Как мне тогда передавать эту переменную?

Создать константу со значением 30 (дефолтным значением) где-нибудь вверху функции punch и лучше всего присвоить local. Делаешь новую функцию с любым неповторяющемся именем с тремя аргументами, 3-тьим будем параметр, который мы передадим в функцию punch. Дальше уже в функции punch делаем: если есть параметр присваиваем новое значение, иначе дефолт?

Почему я не расписываю функцию. А вот хочу чтобы было хоть какое-нибудь понимание в скриптовой области. Если не получиться расписать могу - не проблема, но лучше сам постарайся


Дополнено 3 минуты спустя
25 минут назад, fenit сказал:

можно просто поменять npc и actor в аргументах функции местами

А вот так незя! xr_logic проверяет значение параметра по последовательности сначала актор, нпс и сам параметр см функцию pick_section_from_condlist Это касается только вызова из логики объекта

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 минуты назад, Mass сказал:

Создать константу со значением 30 (дефолтным значением) где-нибудь вверху функции punch и лучше всего присвоить local. Делаешь новую функцию с любым неповторяющемся именем с тремя аргументами, 3-тьим будем параметр, который мы передадим в функцию punch. Дальше уже в функции punch делаем: если есть параметр присваиваем новое значение, иначе дефолт?

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

  • Печаль 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Создаю кат-сцену с присутствием актёра.

Во время спавна актёра - он подбирает лежащее рядом оружие, хотя прописываю, чтобы он этого не делал. Ткните пожалуйста где я что-то упускаю?

Спойлер

[logic]
active = walker@wait

[walker@wait]
path_walk = actor_2_walk
path_look = actor_2_look
combat_ignore_cond = false
combat_ignore_keep_when_attacked = true
meet = no_meet
on_info = {+info_for_scene_3} remark@actor_wait
invulnerable = true
help_wounded_enable = false
out_restr = cutscene_ioltuhin
gather_items_enabled = false
corpse_detection_enabled = false

[remark@actor_wait]
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
meet = no_meet
anim = search_corpse
target = path | actor_2_look,0
help_wounded_enable = false
out_restr = cutscene_ioltuhin
on_info = {+cutscene_ioltuhin_end} %=destroy_object%
gather_items_enabled = false
corpse_detection_enabled = false

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, NewValveCom сказал:

Ткните пожалуйста где я что-то упускаю?

Ничего подозрительного не вижу. Объект точно берется под схему? С путями всё нормально? Тогда добавить в эвалуатор проверку по секции на отсечение заспавненного актора, если конечно секция не идентична ЗП

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

У меня тут микро проблемка появилась

прописал чейзер в character_desc_general, но у нпс он не спавнится  и они ходят с пистолетами, хотя в файле с оружием для нпс он прописан, но другие дробовики прописанные нпс спавнятся как надо

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

Изменено пользователем стрелок_2009

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 минуты назад, стрелок_2009 сказал:

У меня тут микро проблемка появилась

прописал чейзер в character_desc_general, но у нпс он не спавнится  и они ходят с пистолетами, хотя в файле с оружием для нпс он прописан, но другие дробовики прописанные нпс спавнятся как надо

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

Либо ты криво прописал им чейзер (что в теории должно вызывать вылет), либо не учёл, что у симуляционных неписей на один класс (к примеру, sim_default_bandit_0) приходится по несколько профилей (к примеру, sim_default_bandit_0_default_0, sim_default_bandit_0_default_1, sim_default_bandit_0_default_2), либо они считают пистолет мощнее чейзера.

  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
58 минут назад, fenit сказал:

либо они считают пистолет мощнее чейзера.

А тут по подробнее.. 

По каким конкретнее параметрам считается НПС выбирают оружие? Если это только урон то у чейзера я прописал урон 0.75, да и у spas такой же урон, и его нпс используют

Изменено пользователем стрелок_2009

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
13 минут назад, стрелок_2009 сказал:

А тут по подробнее.. 

По каким конкретнее параметрам считается НПС выбирают оружие? Если это только урон то у чейзера я прописал урон 0.75, да и у spas такой же урон, и его нпс используют

ЕМНИП, то через ранг в configs/mp/mp_ranks.ltx, т.е. непись выбирает оружие с самым высоким рангом. Но я могу ошибаться, кто знает лучше - прошу поправить.

Изменено пользователем fenit
  • Мастер! 1
  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

В каком файлы хранится список предметов которые нельзя продавать рандомным НПС? По крайней мере я заметил что когда добавляю новые предметы то их можно продать а другие уже имеющиеся в игре нельзя. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
4 минуты назад, Paradox27kms сказал:

В каком файлы хранится список предметов которые нельзя продавать рандомным НПС? По крайней мере я заметил что когда добавляю новые предметы то их можно продать а другие уже имеющиеся в игре нельзя. 

Рискну предположить, что в configs/misc/trade/trade_generic.ltx

Изменено пользователем fenit
  • Мастер! 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

А скажите а можно ли прописать чтобы в первый слот оружия можно бы ставить условно только автоматы а во второй только пистолеты? Если да то как? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
23 часа назад, Mass сказал:

Ничего подозрительного не вижу. Объект точно берется под схему? С путями всё нормально? Тогда добавить в эвалуатор проверку по секции на отсечение заспавненного актора, если конечно секция не идентична ЗП

С эвалуаторами не работал. Не могли бы приблизительно подсказать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

NewValveCom в xr_gather_items.script в evaluator_gather_items:evaluate()

Добавить проверку 

после

Спойлер

    if self.a.gather_items_enabled ~= true then
        return false
    end

if self.object:section() == "название секции актора в кат сцене, которого спавнить" then return false end

А также в добавить в логику take_items = false, можно и в секцию логики, тогда предмет он точно не должен подбирать

Если и это не поможет, то тут несколько вариантов: повис алайф или биндер, что в свою очередь сказалось на логике, либо нпс просто не берется под логику, тут проверять правильность пути файла до логики сталкера

Изменено пользователем Mass
  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
8 часов назад, NewValveCom сказал:

С эвалуаторами не работал. Не могли бы приблизительно подсказать?

Прежде чем этим заниматься, проверьте то, что рекомендовал вам уважаемый Mass :
Объект точно берется под схему? С путями всё нормально? Проблема скорее там нежели в неработоспособности оверрайда.

  • Мастер! 1
  • Спасибо 1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Почему неписи (симуляционные и нет) могут не атаковать новых мутантов (конкретно брал их из R.P.A. мода)? Они просто стоят и ждут пока их не загрызут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу