Reisen 3 Опубликовано 22 Апреля 2013 (изменено) Пробую положить 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 остался в этой анимации и не прерывал ее. Изменено 22 Апреля 2013 пользователем Reisen Поделиться этим сообщением Ссылка на сообщение
Reisen 3 Опубликовано 22 Апреля 2013 Не особо понимаю что значит "захватить его под скрипт", какие то примеры этого захвата под скрипт? И если можна так объяснить как для очень нового, я со скриптами от нескольких дней только знакомлюсь. Поделиться этим сообщением Ссылка на сообщение
Reisen 3 Опубликовано 27 Августа 2013 (изменено) Здравствуйте. Есть функция 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 со значениями в таблице но у меня как то не выходит. Изменено 27 Августа 2013 пользователем Reisen Поделиться этим сообщением Ссылка на сообщение
Reisen 3 Опубликовано 27 Августа 2013 (изменено) Я бы тебе посоветовал использовать разные названия для переменных и для скриптов (get_visual) А вот я без особых надежд взял и изменил название на local get_oname = get_visual.main(obj) и сразу же заработало... Я на это потратил больше дня а надо было название взят другое, что самое смешное это такая нубовская ошибка, везде по голове молотком стучат чтобы этого не делать. Reisen, попробуй так сделать: На будущие постараюсь помнить что есть еще такой способ. Спасибо за помощь, надо мне было сразу же сюда писать, а не голову ламать часами. Изменено 27 Августа 2013 пользователем Reisen 1 Поделиться этим сообщением Ссылка на сообщение