SullenMan
16.12.2011, 1:57
меня очень заинтересовал файл \resource\set\interaction_entity\human.inc
он отвечает за поведение бота при ранении и смерти. кто знает, как внедрить в поведение при попадании пули в тело анимацию
step_back_after_body-hit_1
так чтобы при ранении она проигрывалась и боец пятился назад как при ударе кулаком в рукопашном бою???
vora_bat
16.12.2011, 4:12
SullenMan в {on bullet_hit добавляешь {ani_play "step_back_after_body-hit_1"}
вот только таким способом можно посылать своих юнитов сквозь стены
могу предложить stand_after_body-hit. Хотя и тут проблема - анимация проигрывается во время бега что выглядит убого. Нужно как-то останавливать солдата при попадании пули, пока не нашёл как.
в общем потестировал. Сделал анимацию когда юнит стоит и лежит.
в {on "process_bullet_hit" добавляешь
Код
{if not linked "vehicle"
{if not dead
{if not lying
{ani_play "stand_after_body-hit"}
{if not volume "head"
{delay 0.5
{ani_play "stand_after_body-hit" -1}
}
}
}
}
}
и в {if volume "head"
Код
{if not linked "vehicle"
{if not dead
{if not lying
{ani_stop "stand_after_body-hit"}
{ani_play "stand_after_straight_hit"}
}
}
}
и в {on "die"
Код
{ani_stop "stand_after_body-hit"}
{ani_stop "stand_after_straight_hit"}
но юниты всё равно будет проигрывать эти анимации при беге. Так что нужно как то его остановить при попадании пули в него. Если кто знает как - отпишитесь
То же самое при если юнит сидит, не знаю как определить это скриптом.
SullenMan
16.12.2011, 11:10
дружище, ты гений! я вот вчера до 5-ти утра думал че делать, а ты вот так вот взял и придумал)))
SullenMan
16.12.2011, 16:24
Тут вот еще возникла проблемка - я добавил анимацию
{if not dead
{if not lying
{ani_stop "step_back_after_body-hit"}
{ani_play "step_back_after_body-hit"}
}
}
}
в момент смерти некоторые солдаты остаются стоять на ногах... есть идеи как это поправить?
SullenMan
16.12.2011, 18:17
вроде бы исправил сам... просто дописал в смерть (on die) {ani_stop "step_back_after_body-hit"} и вродебы число истуканов сократилось.... теперь меня обуревает ещё более интересный вопрос:
{if volume "head" - голова....
а как называется волюм от НОГИ??? есть шикарная анимация "ранения в ногу"
stand_throw_grenade_1_end
Если бы ее прописать при ударе пули в волюм ноги солдата было бы супер!
представьте себе - Sintera mod... стоит пулеметчик с ростовым щитом - его не прострелить никак... и тут КЛАЦ! пуля в ногу и он размыкает защиту аж на 1,5 секунды ловя пули в грудь...
vora_bat
16.12.2011, 21:15
Цитата
вроде бы исправил сам... просто дописал в смерть (on die) {ani_stop "step_back_after_body-hit"} и вродебы число истуканов сократилось....
я ж это и написал в своём посте :D
Цитата
а как называется волюм от НОГИ??? есть шикарная анимация "ранения в ногу"
stand_throw_grenade_1_end
Если бы ее прописать при ударе пули в волюм ноги солдата было бы супер!
посмотрю.
Но опять же, эта анимация будет глючная, с отходом назад. Во время бега она будет проигрываться, да и можно с помощью неё посылать своих солдат сквозь стены. Лучше используй анимации без перемещения юнита в плоскости.
Вобщем смотри: сделал чтобы при попадании в правую ногу проигрывалась та анимация, и так же добавил анимацию при попадании в спину:
Код
{on "process_bullet_hit"
{if hit_side front
{kill_flags front}
{if not linked "vehicle"
{if not dead
{if not lying
{if volume "body"
{ani_play "stand_after_body-hit"}
{if not volume "head"
{delay 0.5
{ani_play "stand_after_body-hit" -1}
}
}
else volume "foot1r"
{ani_play "stand_throw_grenade_1_end"}
else volume "foot2r"
{ani_play "stand_throw_grenade_1_end"}
}
}
}
}
else hit_side back
{kill_flags back}
{if not linked "vehicle"
{if not dead
{if not lying
{ani_play "stand_throw_grenade_2_end"}
}
}
}
Код
{if volume "head"
{if not linked "vehicle"
{if not dead
{if not lying
{if hit_side front
{ani_stop "stand_after_body-hit"}
{ani_play "stand_after_straight_hit"}
}
}
}
}
и отключение анимаций подобавляй в die и прочие:
Код
{ani_stop "stand_after_body-hit"}
{ani_stop "stand_after_straight_hit"}
{ani_stop "stand_throw_grenade_2_end"}
{ani_stop "stand_throw_grenade_1_end"}
SullenMan
16.12.2011, 21:27
это для Читеров) а вот игроку без этого - финального босса ни за что не затолкать в огонь турбины от "Химеры"...
SullenMan а скрпитовый ролик не катит?
vora_bat
16.12.2011, 21:44
SullenMan ну можешь сделать такую анимацию только одному юниту, например проверкой тэга. Сейчас проверю
Вот, если юниту добавить тэг Boss, то у него будет другая анимация, с отходом назад:
Код
{on "process_bullet_hit"
{if hit_side front
{kill_flags front}
{if not linked "vehicle"
{if not dead
{if not lying
{if volume "body"
{if not tagged "boss"
{ani_play "stand_after_body-hit"}
{if not volume "head"
{delay 0.5
{ani_play "stand_after_body-hit" -1}
}
}
else
{ani_play "step_back_after_body-hit"}
}
else volume "foot1r"
{ani_play "stand_throw_grenade_1_end"}
else volume "foot2r"
{ani_play "stand_throw_grenade_1_end"}
}
}
}
}
Вообще идея интересная, внедрил себе в Modern Pack. Ещё б разобраться с бегом и положением сидя...
CatZ ну чего, как геймплейная фича будет. Например сделать босса бессмертным, и единственным способо его убить будет, как уже сказали, затолкать его таким способом в определённую зону. Как в старых играх
SullenMan
17.12.2011, 0:10
выдает ошибку... ругается на строчки которые идут ниже но я их не трогал....
234^ {on< blast_hit overload
а можно УБРАТЬ условие босса, но оставить ногу? (притом для левой тоже есть анимация!
stand_throw_grenade_1_end удар в ногу правую
stand_throw_grenade_2_end ударв в ногу левую...
{on "process_bullet_hit"
{if not linked "vehicle"
{if not dead
{if not lying
{if volume "body"
{if not tagged "boss"
{ani_play "stand_after_body-hit"}
{if not volume "head"
{delay 0.5
{ani_play "stand_after_body-hit" -1}
}
}
else
{ani_play "step_back_after_body-hit"}
}
else volume "foot2l"
{ani_play "stand_throw_grenade_2_end"}
else volume "foot2r"
{ani_play "stand_throw_grenade_1_end"}
}
}
}
}
ВОТ примерно так... ОН ТАНЦУЕТ !!! но как убрать тег босса? или шут с ним?...
черт!! меня аж разрывает творческий порыв!!! можно сделать так чтобы ранение в бедро foot1l и foot1r вызывало анимацию "поскальзывания" stand_throw_grenade_1_end и stand_throw_grenade_2_end ////////// а В голень foot2l и foot2r уже падение тела на живот)))) ЩАС буду искать названия)))
SullenMan
17.12.2011, 1:34
итак. вот что я добавил... получилось здорово.
{on "process_bullet_hit"
{if not linked "vehicle"
{if not dead
{if not lying
{if volume "body"
{if not tagged "boss"
{ani_play "stand_after_body-hit"}
{if not volume "head"
{delay 0.2
{ani_play "stand_after_body-hit" -1}
}
}
else
{ani_play "step_back_after_body-hit"}
}
else volume "foot1l"
{ani_play "stand_throw_grenade_2_end"}
else volume "foot2l"
{set "die_sound" 1}
{talk "death_cry"}
{ani_play "squat_die_front"}
else volume "foot1r"
{ani_play "stand_throw_grenade_1_end"}
else volume "foot2r"
{set "die_sound" 1}
{talk "death_cry"}
{ani_play "squat_die_front"}
}
}
}
}
теперь меня обуервает следующая идея. сделать так, чтобы при опредленном поведении у юнита с тегом "mod-4" загорались ноги... или спина... безумие? нет. импульсный двигатель брони MOD-4
или ещё более дерзкая ЗАТЕЯ
босс получил альтернативную анимацию? так? а если сделать тег "monster" и при ранении заставить обладателя тега делать так: "getover_middle" - это прыжок в перед а теперь прдставьте себе мутанта вооруженного когтями и мечом который при каждом ранении приблизится на 4 шага к стрелку... ЭТО ИДЕЯ ДНЯ!
т.е. чтобы осуществлялся прыжок должно быть два словия:
1) тег monster как условие
2) {ani_play "getover_middle"}
{delay 1
{ani_play "getover_middle" -1}
тока как это вставить и куда??? (чтобы оснавная ветка анимаций не сломалась и осталась прежней?) т.е. чтобы люди дергались, а монстры прыгали на обидчика....
vora_bat
17.12.2011, 2:18
SullenManпопробуй это
Код
{on "process_bullet_hit"
{if hit_side front
{kill_flags front}
{if not linked "vehicle"
{if not dead
{if not lying
{if volume "body"
{if tagged "monster"
{if not volume "head"
{ani_play "getover_middle"}
}
}
{ani_play "step_back_after_body-hit"}
else volume "foot1r"
{ani_play "stand_throw_grenade_1_end"}
else volume "foot2r"
{ani_play "stand_throw_grenade_1_end"}
}
}
}
}
SullenMan
17.12.2011, 12:53
вродебы работает НО! пропала анимация от попадания пули в торс...
и я создал бреед для монстра
{breed
{behaviour soldier}
{skin "mut_mad_0"}
{portrait "mut_mad_0"}
{icon "mut_mad_1"}
{icon_priority 4}
{tags "monster"} <<<<<<<<<<<<<<<<<<<<<
{nationality s_mutant}
{perks
Однако, при установке монстра на карту этот тег ему не добавляется... кто-нибудь знает, как сделать так чтобы добавлялся автоматически?
и ещё вопрос(чисто риторическией) - за всю сторию модов ВТВ кто-либо смог написать новую анимацию?
vora_bat
17.12.2011, 22:41
SullenMan
тэги прописываются в def файле
анимацию новую делали WIW команда, и в моде Первая Мировая
SullenMan
18.12.2011, 15:12
что-то не выходит добавить тег(((
{tags "monster"}
{props "monster"}
как именно должно быть вписанно? есть примеры где это показанно?
во мой деф файл "монстра"
{game_entity
{Extension "mut_mad_0.mdl"}
}
КСТАТИ. у меня возник вопрос по тем настройкам с анимацией. а как нужно дописать чтобы соранилась настрйока с прыжками "monster" а вот обладатель тега "hero" ВООБЩЕ не дергался от попадания пули ни водну из частей тела???
SullenMan
18.12.2011, 23:33
{game_entity
{Extension "mut_mad_0.mdl"}
{tag "monster"}
}
эфекта - НОЛЬ... что не так?
vora_bat
19.12.2011, 4:53
SullenMan
судя по всему тэги можно предпрописывать только обьектам антуража
vora_bat
19.12.2011, 12:03
И так, Timosh помог оптимизировать код и сделать запреты на анимацию во время передвижения и положения сидя, за что ему большое спасибо:
(;базовый код не влияет на вызов анимации, но его удаление может привести к проблемам в игре)
Код
{on "process_bullet_hit"
{spawn "box_vlm" "basis"};спавн хелпера, который пересекается с вольюмом head и проверяет сидит ли юнит
{if hit_side front;при попадании спереди
{kill_flags front}
{if not "hit_anm_forbidden";если в hit_anm_forbidden стоит 0
{if "standing";при условии что юнит стоит
{if not linked "vehicle";при условии что юнит не в машине\технике и т.д.
{if not dead;если юнит не мёртв
{if not lying;при условии что юнит не лежит
{if not swimming;при условии что юнит не плавает
{if volume "body";при условии что попадание в вольюм body
{set "hit_in_front" 1};включение блока с анимацией в разделе hit_sequence
{delay 0.1 {call "hit_sequence"}};вызов скрипта hit_sequence
else volume "foot1r";если попадание в вольюм foot1r
{set "hit_in_leg" 1};включение блока с анимацией в разделе hit_sequence
{delay 0.1 {call "hit_sequence"}};вызов скрипта hit_sequence
else volume "foot2r";если попадание в вольюм foot2r
{set "hit_in_leg" 1};включение блока с анимацией в разделе hit_sequence
{delay 0.1 {call "hit_sequence"}};вызов скрипта hit_sequence
}
}
}
}
}
}
}
else hit_side back;если попадание в заднюю част модели
{kill_flags back}
{if not "hit_anm_forbidden";если в hit_anm_forbidden стоит 0
{if "standing";если юнит не сидит
{if not linked "vehicle";если юнит не в технике
{if not dead;если юнит живой
{if not lying;если юнит не лежит
{if not swimming;если юнит не плавает
{set "hit_in_back" 1};включение блока с анимацией в разделе hit_sequence
{delay 0.1 {call "hit_sequence"}};вызов скрипта hit_sequence
}
}
}
}
}
}
else ;базовый код
{kill_flags front back} ;базовый код
}
{if velocity 7 {kill_flags run} ;базовый код
else velocity 0.1 {kill_flags go} ;базовый код
}
{kill_flags piercing} ;базовый код
{if stuff "rifle" {kill_flags rifle}} ;базовый код
{if stuff "mgun" {kill_flags mgun}} ;базовый код
{if stuff "smg" {kill_flags smg}} ;базовый код
{if stuff "pistol" {kill_flags pistol}} ;базовый код
{health_damage_pierce ;базовый код
{effects "hit-scream" ;базовый код
"hit-light" "hit-heavy" ;базовый код
"die" "hit-explosion" ;базовый код
"throw-off" "throw-off-and-die" ;базовый код
}
{explosive_treshold 70} ;базовый код
{table {30 1} {200 2.5} {500 3} {5000 5}} ;базовый код
}
{if volume "head" ;если попадание в вольюм head
{if not "hit_anm_forbidden";если в hit_anm_forbidden стоит 0
{if not linked "vehicle";если не в технике
{if "standing";если не сидит
{if not dead;если живой
{if not lying;если не лежит
{if not swimming;если не плавает
{if hit_side front;если попадание в вольюм было спереди
{set "hit_in_head" 1};включение блока с анимацией в разделе hit_sequence
{delay 0.1 {call "hit_sequence"}};вызов скрипта hit_sequence
}
}
}
}
}
}
}
{if not volume_armored ;базовый код
{if stuff "sniper" {die}} ;базовый код
{if stuff "mgun" {die}} ;базовый код
{if stuff "pistol" {die}} ;базовый код
{if stuff "rifle" {die}} ;базовый код
else volume_armored ;базовый код
{if stuff "sniper" {call "throw-off"}} ;базовый код
{if stuff "mgun" {call "throw-off"}} ;базовый код
{if stuff "pistol" {call "throw-off"}} ;базовый код
{if stuff "rifle" {call "throw-off"}} ;базовый код
}
{if rand 0.0 ;эта часть кода запрещает шлемам слетать, можете использовать при желании его
{take_off "head"
{impulse up 5 2 dir 7 3}
}
}
}
(mod "mp" ;базовый код
{if volume "body" ;базовый код
{if not volume_armored ;базовый код
{if stuff "pistol" {if rand 0.08 {call "die"} ("health_damage" c(500))}} ;базовый код
{if stuff "mgun" {if rand 0.1 {call "die"} ("health_damage" c(500))}} ;базовый код
{if stuff "rifle" {if rand 0.2 ("health_damage" c(60))}} ;базовый код
}
}
)
}
{on "hit_sequence"
{if "hit_in_head" ;если активирован скрипт {set "hit_in_head" 1}
{ani_play "stand_after_straight_hit"};анимация удара в голову
else "hit_in_front" ;если активирован скрипт {set "hit_in_front" 1}
{ani_play "stand_after_body-hit"};анимация удара в body спереди
{delay 0.8 {ani_play "stand_after_body-hit" -1}};проигрывание анимации в обратном порядке
else "hit_in_leg" ;если активирован скрипт {set "hit_in_leg" 1}
{ani_play "stand_throw_grenade_1_end"};анимация удара в правую ногу
else "hit_in_back" ;если активирован скрипт {set "hit_in_back" 1}
{ani_play "stand_throw_grenade_2_end"};анимация удара в body сзади
}
{set "standing" 0};выключение скрипта
{set "hit_in_leg" 0}; --II--
{set "hit_in_head" 0}; --II--
{set "hit_in_body" 0}; --II--
{set "hit_in_front" 0}; --II--
}
Так же обязательным является прописать в dummy.inc:
Код
{"box_vlm"
{on spawn
{impulse up 0.02 com}
{gravity 0.01}
{delay 0.1
{delete}
}
}
{on overlap begin
{with_effector
{set "standing" 1)
}
}
}}
и положить данную папку куда-нибудь в раздел entity
Нажмите для просмотра прикрепленного файла
SullenMan
19.12.2011, 12:43
столь гениально сколь возмутительно ;)
во-первых нет анимаций на левую ногу, а попадание в голову приводит к остановке деятельности головного мозга ИИ, что несовместимо с текущей компанией...
ГГ и босс умирают с одной пули... жуть.
Короче я добавил свою анимацию на попадание в голень и бедра НОГ...
а теперь скажите ПЛИЗЗЗЗЗ, как мне убрать смерть от пули в голову.
иначе компания становится непроходимой)))
кстати я охотно поделюсь своей версией (впрочем vora_bat и сам мог добавить поражения левой ноги и голеней с падением на живот как результат удара по "сухой кости")
в любом случае я затая дыхание жду подсказки. пожалейте моих Глав Героев и их врагов )
vora_bat
19.12.2011, 12:47
SullenMan ну так я ж и написал, там где "базовый код" - не обязательно использовать. Просто замените на код из human.inc из ресурсов игры. Эти я использую у себя.
Ну а для левой ноги я не нашёл анимации подходящей. Если что-то захотите изменить - я прокомментировал почти все строки кода, разбирайтесь
SullenMan
19.12.2011, 12:56
анимация есть. но я не понял как изменить (вот такой вот я тугой на восприятие)))
{on "hit_sequence"
{if "hit_in_head"
{set "die_sound" 1}
{talk "death_cry"}
{ani_play "step_back_after_body-hit"};анимация удара в голову
else "hit_in_front"
{ani_play "stand_after_body-hit"};анимация удара в body спереди
{delay 0.3 {ani_play "stand_after_body-hit" -1}}
else "hit_in_leg_r_1"
{ani_play "stand_throw_grenade_1_end"};анимация удара в правую ногу бедро
else "hit_in_leg_r_2"
{set "die_sound" 1}
{talk "death_cry"}
{ani_play "squat_die_front"};анимация удара в правую ногу голень = падение
else "hit_in_leg_l_1"
{ani_play "stand_throw_grenade_2_end"};анимация удара в левую ногу бедро
else "hit_in_leg_l_2"
{set "die_sound" 1}
{talk "death_cry"}
{ani_play "squat_die_front"};анимация удара в левую ногу голень = падение
а теперь подскажи мне ради ИИ несчастного - какую строчку изменить))) для уборки смерти от отстрела головы)
SullenMan
19.12.2011, 14:10
итак. чтобы избежать смерти от удара в голову я заменил call die на call "die_scream"
{if not volume_armored
{if stuff "sniper" {call "die_scream"}}
{if stuff "mgun" {call "die_scream"}}
{if stuff "pistol" {call "die_scream"}}
{if stuff "rifle" {call "die_scream"}}
else volume_armored
{if stuff "sniper" {call "throw-off"}}
{if stuff "mgun" {call "throw-off"}}
{if stuff "pistol" {call "throw-off"}}
{if stuff "rifle" {call "throw-off"}}
}
{if rand 0.0
{take_off "head"
{impulse up 5 2 dir 7 3}
}
}
}
смерть стала не столь неизбежной... но затем я обнаружил, что только те виды оружия которые не считаются
{if stuff "sniper"
{if stuff "mgun"
{if stuff "pistol"
{if stuff "rifle"
активируют старт анимации... а от родные игровые - НЕТ ... а ещё похоже, что дистанция до цели влияет на старт и характер анимации например очень часто толькоstand_throw_grenade_1_end проигрывается при выстреле в обе ноги... короче очень много ошибок получается (все таки хотелось бы обсудить все это по Skype) я бы также хотел побеседовать с Timosh - если можешь - отзовись пожалуста.
p.s. я вернул die и все заработало но смерть от пули в голову - вернулась... ОСТРО НУЖДАЮСЬ В ПОМОЩИ так как дейстую на абум. (((
vora_bat
19.12.2011, 14:46
SullenMan вот, заменил на скрипты штурма:
Код
{on "process_bullet_hit"
{spawn "box_vlm" "basis"}
{if hit_side front
{kill_flags front}
{if not "hit_anm_forbidden" ;блок вызова анимации при попадании в торс спереди и правую ногу
{if "standing"
{if not linked "vehicle"
{if not dead
{if not lying
{if not swimming
{if volume "body"
{set "hit_in_front" 1}
{call "hit_sequence"}
else volume "foot1r"
{set "hit_in_leg_r_1" 1}
{delay 0.01 {call "hit_sequence"}}
else volume "foot2r"
{set "hit_in_leg_r_2" 1}
{delay 0.01 {call "hit_sequence"}}
else volume "foot1l"
{set "hit_in_leg_l_1" 1}
{delay 0.01 {call "hit_sequence"}}
else volume "foot2l"
{set "hit_in_leg_l_2" 1}
{delay 0.01 {call "hit_sequence"}}
else volume "head"
{set "hit_in_head" 1}
{delay 0.01 {call "hit_sequence"}}
}
}
}
}
}
}
}
else hit_side back
{kill_flags back}
{if not "hit_anm_forbidden" ;блок вызова анимации при попадании в спину
{if "standing"
{if not linked "vehicle"
{if not dead
{if not lying
{if not swimming
{set "hit_in_back" 1}
{delay 0.01 {call "hit_sequence"}}
}
}
}
}
}
}
else
{kill_flags front back}
}
{if velocity 7 {kill_flags run}
else velocity 0.1 {kill_flags go}
}
{kill_flags piercing}
{if stuff "rifle" {kill_flags rifle}}
{if stuff "mgun" {kill_flags mgun}}
{if stuff "smg" {kill_flags smg}}
{if stuff "pistol" {kill_flags pistol}}
{health_damage_pierce
{effects "hit-scream"
"hit-light" "hit-heavy"
"die" "hit-explosion"
"throw-off" "throw-off-and-die"
}
{explosive_treshold 70}
{table {30 1} {200 2.5} {500 3} {5000 5}}
}
{if volume "head"
{if rand 0.4
{take_off "head"
{impulse up 5 2 dir 7 3}
}
}
}
}
{on "hit_sequence"
{if "hit_in_head"
{set "die_sound" 1}
{talk "death_cry"}
{ani_play "step_back_after_body-hit"} ;анимация удара в голову
else "hit_in_front"
{ani_play "stand_after_body-hit"} ;анимация удара в body спереди
{delay 0.3 {ani_play "stand_after_body-hit" -1}}
else "hit_in_leg_r_1"
{ani_play "stand_throw_grenade_1_end"} ;анимация удара в правую ногу бедро
else "hit_in_leg_r_2"
{set "die_sound" 1}
{talk "death_cry"}
{ani_play "squat_die_front"} ;анимация удара в правую ногу голень = падение
else "hit_in_leg_l_1"
{ani_play "stand_throw_grenade_2_end"} ;анимация удара в левую ногу бедро
else "hit_in_leg_l_2"
{set "die_sound" 1}
{talk "death_cry"}
{ani_play "squat_die_front"} ;анимация удара в левую ногу голень = падение
else "hit_in_back"
{ani_play "stand_throw_grenade_2_end"} ;анимация удара в body спереди сзади
}
{delay 0.001
{set "standing" 0}
{set "hit_in_leg_l_1" 0}
{set "hit_in_leg_l_2" 0}
{set "hit_in_leg_r_1" 0}
{set "hit_in_leg_r_2" 0}
{set "hit_in_head" 0}
{set "hit_in_body" 0}
{set "hit_in_front" 0}
}
}
с головой и правда какая-то ерунда, юнита то ли клинит, то ли ещё что-то. Контузия, одним словом. Реалистично :D
Может в этом коде будет нормально работать, ещё не проверил
Перемещу ка я все эти сообщения про анимацию в отдельную тему.
SullenMan
19.12.2011, 15:15
благодарю. попробую потестить...
вроде все нормально.
{on "hit_sequence"
{if "hit_in_head"
{set "die_sound" 1}
{talk "death_cry"}
{ani_stop "step_back_after_body-hit"} <======================
{ani_play "step_back_after_body-hit"};анимация удара в голову
добавил строчку и оно вроде перестало контузиться....
попробую ещё добавить новых анимаций для удара в спину... например эту "cover_from_snipe_gun" - реалистично до ужаса...
а если сначала сделать проигрыш анимации "ой-больно" -- "stand_throw_grenade_2_end"
а затем задержку на 1 секунду - и активацию "cover_from_snipe_gun"... получится живая реакция
т.е. солдата ранили. солдат обиделся)))
а ещё мне кажется, что забыты были упоминания об отключении анимаций всех этих при {on die
vora_bat
19.12.2011, 15:21
SullenMan
ах да, если захочешь убрать анимации в движении, то добавь
{set "hit_anm_forbidden" 1}
в {on move on
и
{set "hit_anm_forbidden" 0}
в {on move off
Ребята, нужна помощь. Где прописано, что при попадании пули\взрыва выскакивала полоска жизни? Я бы хотел убрать её. Интересно, что она выскакивает только если юнит находится под управлением игрока. Пытался в human.inc изменять параметры if not user_control, но безрезультатно - полоски жизни всё равно появляются.
Помогите!
Друзья, кто разбирается в inc'ах, давайте покопаемся вместе. Нужно найти и исправить косяк - юниты при попадании "зависают". В прямом смысле, проигрывается анимация попадания, и они попадают в ступор.
Вот сам human.inc
[attachmentid=63656]
Код в блоке {on bullet_hit и в {on "hit_sequence"
з.ы. данный human.inc несёт в себе другие изменения, так что для использования в своих модах лучше просто скопируйте блоки с кодом вызова анимации.
Разбираюсь в инках средне, но как могу, так и помогу. 1: инк подключился и работает. 2: не исполняются анимации при попадании. 3:условие (on bullet_hit) работает. 4: у меня не исполняется условие иф стэндинг, т.к. оно нигде не прописано нигде. Видимо, оно связано с box_vlm, к-рого у меня также нет. Т.е., нужно еще дать ссыль на него. Кроме того, он должен где-нибудь в box_vlm-инк или дамми-инк связывать свой спавн с условием стэндинг. Таким образом, желательно указать еще эту часть кода. Без данных составляющих ничем помочь не смогу. Хотя быстрый просмотр human.inc вроде ничего не дал.
Вот box_vol, и код из dummy.inc:
Код
{"box_vlm"
{on spawn
{impulse up 0.02 com}
{gravity 0.01}
{delay 0.1
{delete}
}
}
{on overlap begin
{with_effector
{set "standing" 1)
}
}
}}
У меня они зависают в пространстве в двух случаях: при обмороке (knock_down) и смерти, и то, не каждый раз. При этом иногда (где-то 1 из 30) юниты не выходят из состояния обморока, но остаются способны выделяться, произносить фразы и т.д., как в моде «Искра», Причину этого выявить не удалось. Что касается первых двух случаев, то для них у меня есть довольно расплывчатое обьяснение - видимо, в момент «отключки» или смерти юнит блокируется, в т.ч. и в отношении воспроизведения анимации. Т.е, юнит остается в той позе, которая предусмотрена (пред- или)последним кадром проигрываемой в данный момент анимации. А тут - как выйдет: этой анимацией будет или анимация попадания (около 30% случаев), или анимация смерти/обморока . В иных случаях я не выявил отклонений от нормы. Орфографию подправлю позже, ибо сейчас пишу с телефона.
путём проб и ошибок баг исправился таким кодом:
Код
{on "hit_sequence"
{if not dead
{if "hit_in_head"
{ani_play "stand_after_straight_hit"} ;анимация удара в голову
{call "hit-scream"}
else "hit_in_front"
{ani_play "stand_after_body-hit"} ;анимация удара в body спереди
{call "hit-scream"}
else "hit_in_leg"
{ani_play "stand_throw_grenade_1_end"} ;анимация удара в правую ногу
{call "hit-scream"}
else "hit_in_back"
{ani_play "stand_throw_grenade_2_end"} ;анимация удара в body сзади
{call "hit-scream"}
}
}
{set "standing" 0}
{set "hit_in_leg" 0}
{set "hit_in_head" 0}
{set "hit_in_body" 0}
{set "hit_in_front" 0}
{if not dead
{delay 1
{ani_play "stand_idle_1hand"}
}
}
}
А для избавления от зависания юнита во время обморока достаточно протаггить его на этот период и добавить исключающий блок с этим тэгом аналогично искл. блоку с условием смерти. Ну это тоже не сложно.
Dudkoff
Я вроде везде прописывал отключение блока. Посмотрю.
Конкретно вот о чём речь (который завис, находится в knock_down. Пока не очнулся, держался именно так):
Dudkoff
хм, у меня нормально отключаются. Возможно это связано с тем, что я делал для Штурма в первую очередь, и менял анимации смерти...
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.