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

Скриптование


Svoboда

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

Пробую положить npc в анимацию после попадания.

B xr_motivator.script после function motivator_binder:hit_callback(obj, amount, local_direction, who, bone_index)callstack() поместил свой код.
.

if (bone_index == 15 or bone_index == 19) then 	--// попаданиe в кости головы.
local math = math
local rnd = math.random(1,10)
local say = ""
	
	if rnd <= 7 then   --// 70%  will result in heavy injury (Health reduced with script to 0.10%).
	obj.health =- 0.9
	say = "Heavy Injury"
--//state_mgr.set_state(obj, "wounded_heavy_3")
		obj:play_cycle("idle_to_wounded_1")

		elseif rnd == 8 or rnd == 9 then  --// 20% chance it will result in temporary stun (Play sitting/sleeping animation). 
		say = "Temporary Stun"
--//state_mgr.set_state(obj, "sit_ass")
		obj:play_cycle("idle_to_wounded_0")

		elseif rnd == 10 then  --// 10% chance it will just bounce off.
		say = "Ricochet"
	end
	news_manager.send_tip(db.actor, say, nil, nil, 2000)
end

Пробовал со state_mgr.set_state(obj, "sit_ass"), анимация начинает играть но быстро прерываетсям, наверное покрывается со state с более высоким приоритетом.
Тоже самое с obj:play_cycle("idle_to_wounded_0"), начинает играть и быстро прекращается.

 

Но если убрать все вражеские отношения (Чтобы враги не отвлекались) и стрельнут по npc  то анимация будет проигриватся корректно и раз положены в анимацию npc  в ней и останется.
Eсть ли какой то способ чтобы npc остался в этой анимации и не прерывал ее.

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

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


Ссылка на сообщение

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

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


Ссылка на сообщение

Здравствуйте.

Есть функция kоторая возвращает название комбинезона kak string.
Проблема в том что я этот string хочу проверить по таблице.

group_1 = {soldier_outfit_grey = true, soldier_outfit_brown = true, ... etc.}

local get_visual = get_visual.main(obj)
if group_1[get_visual] then
-//kod//--
end

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

group_1 = {soldier_outfit_grey = true, soldier_outfit_brown = true, ... etc.}

local get_visual = get_visual.main(obj)
if get_visual == "soldier_outfit_grey" then
-//kod//--
end

To сравнение удается, то есть, это не nil и название комбинезона фактически находится в get_visual.

Какие-то советы, что делаю не так?

Я читал lua tutorial и там сказано что это правильный способ чтобы сравнивать string со значениями в таблице но у меня как то не выходит.

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

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


Ссылка на сообщение

Я бы тебе посоветовал использовать разные названия для переменных и для скриптов (get_visual)

А вот я без особых надежд взял и изменил название на

 local get_oname = get_visual.main(obj)

и сразу же заработало...

Я на это потратил больше дня а надо было название взят другое, что самое смешное это такая нубовская ошибка, везде по голове молотком стучат  чтобы этого не делать.

Reisen, попробуй так сделать:

На будущие постараюсь помнить что есть еще такой способ.

 

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

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

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


Ссылка на сообщение
  • Недавно просматривали   1 пользователь

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