Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
◆ О продукте
Union — это набор патчей и улучшений для движка Gothic, который исправляет ошибки, добавляет новые возможности и делает игру совместимой с современными системами. Он поддерживает загрузку плагинов и предоставляет простой интерфейс для модификаций через API движка, позволяя расширять функционал игры без необходимости изменять ее исходный код.
◆ About
Union is a collection of patches and enhancements for the Gothic engine, fixing bugs, adding new features, and making the game compatible with modern systems. It supports plugin loading and offers a simple engine API for mods, allowing you to expand the game’s functionality without editing the source code.
Нужна помощь у тех, кто шарит за камеры. Собственно, нужно научить Готику создавать пролеты камеры без спейсера. Пробовал просто тестовую камеру с 3 точками через консоль сделать, вроде все нормально добавляется, но при проигрывании камера просто встает в исходную позицию и не двигается. Что поправить/добавить нужно?
В общем пока я жду, когда у переводчика появится время для публикации релиза на немецком ВОГе, закидываю небольшое обновление с парой новых патчей и дополнениями:
- Если с загрузкой какой-то dll возникает проблема, то в сообщении пишется конкретная системная ошибка, повлекшая сбой.
- Тоже самое касается vdfs. Если внутри файловой системы возникает авария, то файловая система вместо закорючек попытается написать примерную причину ошибки.
- Уже не помню писал или нет, но в дополнение к параметру [Plugins] IgnoreList добавляется еще UnIgnoreList, позволяющий отменить игнорирование каких-либо dll.
- В патч скрипте добавляется инструкция #disable, блокирующая исполнение каких-либо патчей.
Union:
// В любом патч-файле указывается инструкция #disable [имя патча], которая запрещает
// вызов указанного патча. Она имеет высокий приоритет выполнения, поэтому запрет
// будет распространяться абсолютно на все патч файлы. Имеет смысл использовать
// при написании собственных патчей, в спидранах, плагинах и так далее.
#disable [Lootfix Unconscious]
#disable [CView_Blit_farZ_65534]
// ...
#engine
#patch
// TO DO ...
#/patch
#/engine
Есть возможность оценить сложность доработки движка в части реализации, скажем, новых классов оружия вроде копья. По аналогии с аддоном к Готике 1? Когда у тебя есть отдельный режим боя spear и отдельный блок анимаций в mds скрипте.
Если это реализуемо, я могу добавить в будущем в ремастер анимации и оверлеи из сиквела.
alex_draven, навскидку сложно, если писать реализацию по канону. В движке анимации, зависящие от боевого состояния, записаны в виде массивов, размеренность которых равна количеству боевых режимов s_run[ANI_NUM].
(См тут строка 113 и ниже)
Менять массивы нельзя, в движке к ним жёстко привязаны смещения, а вот снести весь класс - без проблем. А на его месте уже собрать новый с любыми размерами массивов. Это позволит движку самостоятельно выбирать новый блок анимации по боевому режиму нпс.
Но тут появляется другая проблема. Нужно объяснить движку, что оказывается у него есть какие-то новые режимы. Они упоминаются во множестве функций, отвечающих не только за анимации, но и за реакции на урон, выбор слотов экипировки, в диапазонах и тд и тп.
Тут столько мелкой работы, что самый простой способ - это по хардкору выдернуть из движка нужные методы и перекомпилить в плагине.
Вариант другой - не канон. Мы оставляем все боевые режимы как есть, но дробим на подтипы. Тогда копьё получается обычным двуручником, но с каким-нибудь флагом. Через этот флаг уже по месту дописываем в движок свою логику - какой блок анимации необходимо использовать, какие нюансы в обработке урона следует учитывать, в какой слот помещать оружие, как должны реагировать нпс. Это будет ой как проще, чем менять несколько десятков оригинальных методов и целый класс. При этом вероятность каких-то косяков сводится к минимуму, потому что по большому счету механика не меняется.
Ani num = 10. Интересно, есть ли резервы в существующем массиве. И если есть, сколько их.
По факту имеем fist, mag, 1h, 2h, bow, cbow, sneak. 7 штук. Обычное перемещение, в т.ч. в воде, прописано, на сколько можно судить, отдельно.
alex_draven, none, fist, dag, 1h, 2h, bow, cbow, mag = 8. sneak это не боевой режим, а самостоятельный набор блоков. Итого два резервных слота остаётся.
alex_draven, none, fist, dag, 1h, 2h, bow, cbow, mag = 8. sneak это не боевой режим, а самостоятельный набор блоков. Итого два резервных слота остаётся.
Dag не используется по прямому назначению. Предметы этого типа работают как одноручное оружие. В свое время использовали как костыль для двойных мечей. Интересно было бы попробовать режим dag в мдс скрипте прописать. И посмотреть, что будет.
Итого резерв 9 и 10. В сиквеле наверно эти резервы для spear взяли.
Вот вам копье на отдельных слотах. Dag и второй резерв можно использовать для тех случаев, где тяжело оверлеями накостылять. Скажем, для щитовика.
Был когда-то блок с приставкой PSI, магия спящего (9й слот). Широкого применения она не получила. Phantom95 чё там говорят в альфе по этому поводу, обычные руны что-ли?
void StrafeLeft()
void StrafeRight()
Вот тут скорее всего лежит лекарство для любителей перекатов. В ранних версиях игры цикл стрейфа не прерывался при отпускании клавиши. В релизе анимация прерывается. Для перекатов нужна старая схема. В идеале можно сделать в мдс скрипте свой ключ-указатель (или перенастроить R), какую схему использовать. И тогда перекат будет перекатом без возможности прерывания в момент, когда герой находится в положении жопой кверху.
Был когда-то блок с приставкой PSI, магия спящего (9й слот). Широкого применения она не получила. Phantom95 чё там говорят в альфе по этому поводу, обычные руны что-ли?
Рун в пре-альфах вообще не существовало. В закрытом разделе уже давал более менее развернутую информацию по части реализации магической системы этих версий. Режим пси-магии был полностью отделен от классической и включал в себя уникальный набор анимаций.
Код:
// PSIONIC
ani ("t_Run_2_Psi" 1 "s_Psi" 0.1 0.0 M. "Hum_Ready_Psi_A01.asc" F 1 9)
ani ("s_Psi" 1 "s_Psi" 0.0 0.0 M. "Hum_Ready_Psi_A01.asc" F 10 10)
ani ("t_Psi_2_PsiRun" 1 "s_PsiRun" 0.0 0.1 M. "Hum_Ready_Psi_A01.asc" F 11 19)
aniAlias ("t_PsiRun_2_Psi" 1 "s_Psi" 0.1 0.0 M. "t_Psi_2_PsiRun" R)
aniAlias ("t_Psi_2_Run" 1 "s_Run" 0.0 0.1 M. "t_Run_2_Psi" R)
// TRANSITIONS Psionic
aniBlend ("t_Psi_2_Bow" "s_Bow" 0.1 0.2)
aniBlend ("t_Psi_2_CBow" "s_CBow" 0.1 0.2)
aniBlend ("t_Psi_2_Fist" "s_Fist" 0.1 0.2)
aniBlend ("t_Psi_2_1h" "s_1h" 0.1 0.2)
aniBlend ("t_Psi_2_2hS" "s_2hS" 0.1 0.2)
aniBlend ("t_Psi_2_2hA" "s_2hA" 0.1 0.2)
//////////////////////////
// PSI MOVEMENT
//////////////////////////
// Psi-RUN
aniAlias ("s_PsiRun" 1 "s_PsiRun" 0.1 0.1 M. "s_MagRun" F)
aniAlias ("t_PsiRun_2_PsiRunL" 1 "s_PsiRunL" 0.0 0.0 M. "t_MagRun_2_MagRunL" F)
// Psi-Run-Loop
aniAlias ("s_PsiRunL" 1 "s_PsiRunL" 0.0 0.0 M. "s_MagRunL" F)
aniAlias ("t_PsiRunL_2_PsiRun" 1 "s_PsiRun" 0.0 0.1 M. "t_MagRunL_2_MagRun" F)
aniBlend ("t_PsiRunR_2_PsiRun" "s_PsiRun" 0.3 0.3)
// Psi-Run Backwards Movement
aniAlias ("t_PsiJumpB" 1 "s_PsiRun" 0.1 0.0 M. "t_JumpB" F)
// Psi-WALK
aniAlias ("s_PsiWalk" 1 "s_PsiWalk" 0.1 0.1 M. "s_MagRun" F)
ani ("t_PsiWalk_2_PsiWalkL" 1 "s_PsiWalkL" 0.0 0.0 M. "Hum_WalkLoop_M01.asc" F 1 9)
// Psi-Walk-Loop
ani ("s_PsiWalkL" 1 "s_PsiWalkL" 0.0 0.0 M. "Hum_WalkLoop_M01.asc" F 10 33)
ani ("t_PsiWalkL_2_PsiWalk" 1 "s_PsiWalk" 0.0 0.0 M. "Hum_WalkLoop_M01.asc" F 34 39)
aniBlend ("t_PsiWalkR_2_PsiWalk" "s_PsiWalk" 0.2 0.2)
// Psi-Walk Backwards Movement
aniBlend ("t_PsiWalk_2_PsiWalkBL" "s_PsiWalkBL" 0.2 0.2)
// Psi-Walk-Loop backwards
aniAlias ("s_PsiWalkBL" 1 "s_PsiWalkBL" 0.0 0.0 M. "s_PsiWalkL" R)
aniBlend ("t_PsiWalkBL_2_PsiWalk" "s_PsiWalk" 0.2 0.2)
aniBlend ("t_PsiWalkBR_2_PsiWalk" "s_PsiWalk" 0.2 0.2)
// Psi-SNEAK
aniAlias ("s_PsiSneak" 1 "s_PsiSneak" 0.3 0.3 MI "s_Sneak" F)
aniAlias ("t_PsiSneak_2_PsiSneakL" 1 "s_PsiSneakL" 0.0 0.0 M. "t_Sneak_2_SneakL" F)
// Psi-Sneak-Loop
aniAlias ("s_PsiSneakL" 1 "s_PsiSneakL" 0.0 0.0 M. "s_SneakL" F)
aniBlend ("t_PsiSneakL_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
aniBlend ("t_PsiSneakR_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
// Psi-Sneak Backwards Movement
aniBlend ("t_PsiSneak_2_PsiSneakBL" "s_PsiSneakBL" 0.2 0.2)
// Psi-Sneak-Loop backwards
aniAlias ("s_PsiSneakBL" 1 "s_PsiSneakBL" 0.0 0.0 M. "s_SneakL" R)
aniBlend ("t_PsiSneakBL_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
aniBlend ("t_PsiSneakBR_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
//////////////////////////
// PSI TURNING
//////////////////////////
// aniAlias ("t_PsiRunTurnL" 20 "t_PsiRunTurnL" 0.2 0.2 M. "t_MagRunTurnL" F)
// aniAlias ("t_PsiRunTurnR" 20 "t_PsiRunTurnR" 0.2 0.2 M. "t_MagRunTurnL" R)
// aniAlias ("t_PsiWalkTurnL" 20 "t_PsiWalkTurnL" 0.2 0.2 M. "t_MagRunTurnL" F)
// aniAlias ("t_PsiWalkTurnR" 20 "t_PsiWalkTurnR" 0.2 0.2 M. "t_MagRunTurnL" R)
// aniAlias ("t_PsiSneakTurnL" 20 "t_PsiSneakTurnL" 0.2 0.2 M. "t_MagRunTurnL" F)
// aniAlias ("t_PsiSneakTurnR" 20 "t_PsiSneakTurnR" 0.2 0.2 M. "t_MagRunTurnL" R)
//////////////////////////
// PSI STRAFING
//////////////////////////
aniAlias ("t_PsiRunStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_RunStrafeL" F)
aniAlias ("t_PsiRunStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_RunStrafeL" R)
aniAlias ("t_PsiWalkStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_WalkStrafeL" F)
aniAlias ("t_PsiWalkStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_WalkStrafeL" R)
aniAlias ("t_PsiSneakStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_SneakStrafeL" F)
aniAlias ("t_PsiSneakStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_SneakStrafeL" R)
//////////////////////////
// PSI TRANSITIONS
//////////////////////////
// Movement-Modes
aniBlend ("t_PsiRun_2_PsiWalk" "s_PsiWalk" 0.1 0.1)
aniBlend ("t_PsiWalk_2_PsiRun" "s_PsiRun" 0.1 0.1)
aniBlend ("t_PsiRun_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
aniBlend ("t_PsiSneak_2_PsiRun" "s_PsiRun" 0.2 0.2)
aniBlend ("t_PsiRunL_2_PsiWalkL" "s_PsiWalkL" 0.2 0.2)
aniBlend ("t_PsiWalkL_2_PsiRunL" "s_PsiRunL" 0.2 0.2)
aniBlend ("t_PsiSneakL_2_PsiRunL" "s_PsiRunL" 0.2 0.2)
aniBlend ("t_PsiRunL_2_PsiSneakL" "s_PsiSneakL" 0.2 0.2)
// JumpStand
// aus dem Rennen direkt Springen
aniAlias ("t_PsiRunL_2_Jump" 1 "s_Jump" 0.1 0.1 MF "t_RunL_2_Jump" F)
aniAlias ("t_PsiRunR_2_Jump" 1 "s_Jump" 0.1 0.1 MF "t_RunL_2_Jump" F)
// nach dem Sprung direkt weiterrennen, wenn CursorUp weiterhin gedrückt
aniBlend ("t_Jump_2_PsiRunL" "s_PsiRunL" 0.2 0.1)
//////////////////////////
// PSI FIGHTING
//////////////////////////
// Überwindungs-Zauber (z.B. Kontrolle; Co)
// ani ("t_PsiWalk_2_CoCast" 1 "s_CoCast" 0.1 0.0 M. "Hum_PsiCoCast_A01.asc" F 28 36)
// ani ("s_CoCast" 1 "s_CoCast" 0.0 0.0 M. "Hum_PsiCoCast_A01.asc" F 37 37)
// ani ("t_CoCast_2_PsiWalk" 1 "s_PsiWalk" 0.0 0.1 M. "Hum_PsiCoCast_A01.asc" F 38 49)
// Kontrolle geglückt, eigener Körper in "Ruhestellung"
// ani ("t_CoCast_2_CoSucc" 1 "s_CoSucc" 0.0 0.0 M. "Hum_PsiCoCast_A01.asc" F 52 64)
// ani ("s_CoSucc" 1 "s_CoSucc" 0.0 0.1 M. "Hum_PsiCoCast_A01.asc" F 65 65)
// aniBlend ("t_CoSucc_2_Run" "s_Run" 0.2 0.2)
// Körperhaltung des Opfers während Kontrollversuch
// ani ("s_CoVictim" 1 "s_CoVictim" 0.1 0.1 M. "Hum_PsiCoVictim_A01.asc" F 1 10)
// Sofort-Zauber (noch keiner vorhanden)
// Vergessen
ani ("t_PsiWalk_2_Forget" 1 "s_Forget" 0.0 0.0 M. "Hum_PsiForget_M01.asc" F 1 14)
ani ("s_Forget" 1 "s_Forget" 0.0 0.0 M. "Hum_PsiForget_M01.asc" F 15 15)
ani ("t_Forget_2_PsiWalk" 1 "s_PsiWalk" 0.0 0.0 M. "Hum_PsiForget_M01.asc" F 16 29)
// Aufrechterhaltungs-Zauber (noch keiner vorhanden)
// Auflade-Zauber (z.B. Windfaust; WI)
// ani ("t_PsiAim_2_WICast" 1 "s_WICast" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
// ani ("s_WICast" 1 "s_WICast" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
// ani ("t_WICast_2_FBShoot" 1 "s_WIShoot" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
// ani ("s_WIShoot" 1 "s_WIShoot" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
// ani ("t_WIShoot_2_PsiAim" 1 "s_PsiAim" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
Что касается кинжалов, то даже в ранних пре-альфах блок с анимациями боя для них (Как и у одноручных топоров) был полностью пуст.
Код:
///////////////////////
// DAGGER FIGHTING
///////////////////////
// Noch nicht designt
///////////////////////
// 1H AXE FIGHTING
///////////////////////
// noch nicht implementiert
Все остальные анимации для оружия такого типа использовались от одноручников.
Возможно анимации боя для кинжалов были прописаны позже, после того как происходила съёмка Motion Capture в августе 1999 года, но это не факт и вряд ли когда-либо удастся выяснить.
Из представленных в пре-альфах анимациях, можно ещё выделить блоки для прототипа боёвки на двуручных топорах:
Код:
//////////////////////////
// 2H-AXE MOVEMENT
//////////////////////////
// 2hA-RUN
ani ("s_2hARun" 1 "s_2hARun" 0.1 0.1 M. "Hum_2hAmbient_M01.asc" F 0 98)
ani ("t_2hARun_2_2hARunL" 1 "s_2hARunL" 0.0 0.0 M. "Hum_2hRun_M01.asc" F 1 13)
// 2hA-Run-Loop
ani ("s_2hARunL" 1 "s_2hARunL" 0.0 0.0 M. "Hum_2hRun_M01.asc" F 14 37)
{
*eventSFXGrnd (14 "Run")
*eventSFXGrnd (25 "Run")
}
ani ("t_2hARunL_2_2hARun" 1 "s_2hARun" 0.0 0.0 M. "Hum_2hRun_M01.asc" F 38 45)
aniBlend ("t_2hARunR_2_2hARun" "s_2hARun" 0.2 0.2)
// 2hA-Run Backwards Movement
aniAlias ("t_2hAJumpB" 1 "s_2hARun" 0.0 0.0 M. "t_JumpB" F)
// 2hA-WALK-Mode, Standing
ani ("s_2hAWalk" 1 "s_2hAWalk" 0.1 0.1 M. "Hum_2hWalk_M01.asc" F 0 0)
ani ("t_2hAWalk_2_2hAWalkL" 1 "s_2hAWalkL" 0.1 0.0 M. "Hum_2hWalk_M01.asc" F 1 9)
// 2hA-Walk-Loop
ani ("s_2hAWalkL" 1 "s_2hAWalkL" 0.0 0.0 M. "Hum_2hWalk_M01.asc" F 10 33)
{
*eventSFXGrnd (10 "Run")
*eventSFXGrnd (22 "Run")
}
ani ("t_2hAWalkL_2_2hAWalk" 1 "s_2hAWalk" 0.0 0.2 M. "Hum_2hWalk_M01.asc" F 34 38)
aniBlend ("t_2hAWalkR_2_2hAWalk" "s_2hAWalk" 0.2 0.3)
// 2hA-Walk Backwards Movement
aniAlias ("t_2hAWalk_2_2hAWalkBL" 1 "s_2hAWalkBL" 0.0 0.0 M. "t_2hAWalkL_2_2hAWalk" R)
aniAlias ("s_2hAWalkBL" 1 "s_2hAWalkBL" 0.0 0.0 M. "s_2hAWalkL" R)
aniAlias ("t_2hAWalkBL_2_2hAWalk" 1 "s_2hAWalk" 0.0 0.0 M. "t_2hAWalk_2_2hAWalkL" R)
aniBlend ("t_2hAWalkBR_2_2hAWalk" "s_2hAWalk" 0.2 0.2)
// 2hA-SNEAK-Mode, Standing
aniAlias ("s_2hASneak" 1 "s_2hASneak" 0.3 0.3 MI "s_Sneak" F)
aniAlias ("t_2hASneak_2_2hASneakL" 1 "s_2hASneakL" 0.0 0.0 M. "t_Sneak_2_SneakL" F)
// 2hA-Sneak-Loop
aniAlias ("s_2hASneakL" 1 "s_2hASneakL" 0.0 0.0 M. "s_SneakL" F)
aniBlend ("t_2hASneakL_2_2hASneak" "s_2hASneak" 0.2 0.2)
aniBlend ("t_2hASneakR_2_2hASneak" "s_2hASneak" 0.2 0.2)
// 2hA-Sneak Backwards Movement
aniBlend ("t_2hASneak_2_2hASneakBL" "s_2hASneakBL" 0.2 0.2)
aniAlias ("s_2hASneakBL" 1 "s_2hASneakBL" 0.0 0.0 M. "s_SneakL" R)
aniBlend ("t_2hASneakBL_2_2hASneak" "s_2hASneak" 0.2 0.2)
aniBlend ("t_2hASneakBR_2_2hASneak" "s_2hASneak" 0.2 0.2)
//////////////////////////
// 2H-AXE TURNING
//////////////////////////
ani ("t_2hARunTurnL" 20 "t_2hARunTurnL" 0.0 0.0 M. "Hum_2hTurn_M01.asc" F 1 22)
{
*eventSFXGrnd (5 "Run")
*eventSFXGrnd (12 "Run")
}
aniAlias ("t_2hARunTurnR" 20 "t_2hARunTurnR" 0.0 0.0 M. "t_2hARunTurnL" R)
aniAlias ("t_2hAWalkTurnL" 20 "t_2hAWalkTurnL" 0.0 0.0 M. "t_2hARunTurnL" F)
aniAlias ("t_2hAWalkTurnR" 20 "t_2hAWalkTurnR" 0.0 0.0 M. "t_2hARunTurnL" R)
aniAlias ("t_2hASneakTurnL" 20 "t_2hASneakTurnL" 0.2 0.2 M. "t_2hARunTurnL" F)
aniAlias ("t_2hASneakTurnR" 20 "t_2hASneakTurnR" 0.2 0.2 M. "t_2hARunTurnL" R)
//////////////////////////
// 2H-AXE STRAFING
//////////////////////////
ani ("t_2hARunStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "Hum_2hStrafe_M01.asc" F 1 24)
aniAlias ("t_2hARunStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_2hARunStrafeL" R)
aniAlias ("t_2hAWalkStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_2hARunStrafeL" F)
aniAlias ("t_2hAWalkStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_2hARunStrafeL" R)
aniAlias ("t_2hASneakStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_SneakStrafeL" F)
aniAlias ("t_2hASneakStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_SneakStrafeL" R)
//////////////////////////
// 2H-AXE TRANSITIONS
//////////////////////////
// Movement-Modes
aniBlend ("t_2hARun_2_2hAWalk" "s_2hAWalk" 0.2 0.2)
aniBlend ("t_2hAWalk_2_2hARun" "s_2hARun" 0.2 0.2)
aniBlend ("t_2hARun_2_2hASneak" "s_2hASneak" 0.2 0.2)
aniBlend ("t_2hASneak_2_2hARun" "s_2hARun" 0.2 0.2)
aniBlend ("t_2hARunL_2_2hAWalkL" "s_2hAWalkL" 0.2 0.2)
aniBlend ("t_2hAWalkL_2_2hARunL" "s_2hARunL" 0.2 0.2)
aniBlend ("t_2hASneakL_2_2hARunL" "s_2hARunL" 0.2 0.2)
aniBlend ("t_2hARunL_2_2hASneakL" "s_2hASneakL" 0.2 0.2)
// JumpStand
// aus dem Rennen direkt Springen
aniAlias ("t_2hARunL_2_Jump" 1 "s_Jump" 0.1 0.1 MF "t_RunL_2_Jump" F)
aniAlias ("t_2hARunR_2_Jump" 1 "s_Jump" 0.1 0.1 MF "t_RunL_2_Jump" F)
// nach dem Sprung direkt weiterrennen, wenn CursorUp weiterhin gedrückt
aniBlend ("t_Jump_2_2hARunL" "s_2hARunL" 0.2 0.1)
//////////////////////////
// 2H-AXE FIGHTING
//////////////////////////
// Kampf ohne Talent
// Ausholen
aniBlend ("t_2hAWalk_2_2hAAim" "s_2hAAim" 0.2 0.2)
aniAlias ("s_2hAAim" 1 "s_2hAAim" 0.0 0.0 M. "s_2hSAim" F)
aniBlend ("t_2hAAim_2_2hAWalk" "s_2hAWalk" 0.2 0.2)
// Ausholen während Kampfsteps
aniBlend ("t_2hAWalkL_2_2hAAim" "s_2hAAim" 0.2 0.0)
aniBlend ("t_2hAWalkR_2_2hAAim" "s_2hAAim" 0.2 0.0)
// Attacks
ani ("t_2hAAt1Step" 1 "s_2hAWalk" 0.0 0.1 M. "Hum_2hAttackS1_M01.asc" F 1 23)
{
*eventTag (0 "DEF_OPT_FRAME" "12")
*eventSFX (8 "2hAttackT")
}
ani ("t_2hAAt1" 1 "s_2hAWalk" 0.0 0.1 M. "Hum_2hAttack1_M01.asc" F 1 23)
{
*eventTag (0 "DEF_OPT_FRAME" "12")
*eventSFX (8 "2hAttackT")
}
// aniAlias ("t_2hAAttackL" 1 "s_2hAWalk" 0.1 0.1 MR "t_1hSAttackL" F)
// aniAlias ("t_2hAAttackR" 1 "s_2hAWalk" 0.1 0.1 MR "t_1hSAttackR" F)
// Paraden
ani ("t_2hAAim_2_2hADefend" 1 "s_2hADefend" 0.0 0.0 M. "Hum_1hSParade_M01.asc" F 1 5)
ani ("s_2hADefend" 1 "s_2hADefend" 0.0 0.0 M. "Hum_1hSParade_M01.asc" F 6 6)
ani ("t_2hADefend_2_2hAAim" 1 "s_2hAWalk" 0.0 0.0 M. "Hum_1hSParade_M01.asc" F 14 18)
ani ("t_2hAParadeL" 1 "s_2hAWalk" 0.0 0.0 M. "Hum_1hSParade_M01.asc" F 7 11)
aniAlias ("t_2hAParadeM" 1 "s_2hAWalk" 0.0 0.0 M. "t_2hAParadeL" F)
aniAlias ("t_2hAParadeS" 1 "s_2hAWalk" 0.0 0.0 M. "t_2hAParadeL" F)
void StrafeLeft()
void StrafeRight()
Вот тут скорее всего лежит лекарство для любителей перекатов. В ранних версиях игры цикл стрейфа не прерывался при отпускании клавиши. В релизе анимация прерывается. Для перекатов нужна старая схема. В идеале можно сделать в мдс скрипте свой ключ-указатель (или перенастроить R), какую схему использовать. И тогда перекат будет перекатом без возможности прерывания в момент, когда герой находится в полжении жопой кверху.
Не знаю как у других, у себя с помощью Юни я давно сделал вменяемый перекат без всякой зациклености, отдающий правильное состояние и прочее. Но нет нормальной анимации, хотя бы в 1 экземпляре, чтобы гг не катался как колобок по полу, а как бы в прыжке в бок переваливался со спины на ноги
Рун в пре-альфах вообще не существовало. В закрытом разделе уже давал более менее развернутую информацию по части реализации магической системы этих версий. Режим пси-магии был полностью отделен от классической и включал в себя уникальный набор анимаций.
Код:
// PSIONIC
ani ("t_Run_2_Psi" 1 "s_Psi" 0.1 0.0 M. "Hum_Ready_Psi_A01.asc" F 1 9)
ani ("s_Psi" 1 "s_Psi" 0.0 0.0 M. "Hum_Ready_Psi_A01.asc" F 10 10)
ani ("t_Psi_2_PsiRun" 1 "s_PsiRun" 0.0 0.1 M. "Hum_Ready_Psi_A01.asc" F 11 19)
aniAlias ("t_PsiRun_2_Psi" 1 "s_Psi" 0.1 0.0 M. "t_Psi_2_PsiRun" R)
aniAlias ("t_Psi_2_Run" 1 "s_Run" 0.0 0.1 M. "t_Run_2_Psi" R)
// TRANSITIONS Psionic
aniBlend ("t_Psi_2_Bow" "s_Bow" 0.1 0.2)
aniBlend ("t_Psi_2_CBow" "s_CBow" 0.1 0.2)
aniBlend ("t_Psi_2_Fist" "s_Fist" 0.1 0.2)
aniBlend ("t_Psi_2_1h" "s_1h" 0.1 0.2)
aniBlend ("t_Psi_2_2hS" "s_2hS" 0.1 0.2)
aniBlend ("t_Psi_2_2hA" "s_2hA" 0.1 0.2)
//////////////////////////
// PSI MOVEMENT
//////////////////////////
// Psi-RUN
aniAlias ("s_PsiRun" 1 "s_PsiRun" 0.1 0.1 M. "s_MagRun" F)
aniAlias ("t_PsiRun_2_PsiRunL" 1 "s_PsiRunL" 0.0 0.0 M. "t_MagRun_2_MagRunL" F)
// Psi-Run-Loop
aniAlias ("s_PsiRunL" 1 "s_PsiRunL" 0.0 0.0 M. "s_MagRunL" F)
aniAlias ("t_PsiRunL_2_PsiRun" 1 "s_PsiRun" 0.0 0.1 M. "t_MagRunL_2_MagRun" F)
aniBlend ("t_PsiRunR_2_PsiRun" "s_PsiRun" 0.3 0.3)
// Psi-Run Backwards Movement
aniAlias ("t_PsiJumpB" 1 "s_PsiRun" 0.1 0.0 M. "t_JumpB" F)
// Psi-WALK
aniAlias ("s_PsiWalk" 1 "s_PsiWalk" 0.1 0.1 M. "s_MagRun" F)
ani ("t_PsiWalk_2_PsiWalkL" 1 "s_PsiWalkL" 0.0 0.0 M. "Hum_WalkLoop_M01.asc" F 1 9)
// Psi-Walk-Loop
ani ("s_PsiWalkL" 1 "s_PsiWalkL" 0.0 0.0 M. "Hum_WalkLoop_M01.asc" F 10 33)
ani ("t_PsiWalkL_2_PsiWalk" 1 "s_PsiWalk" 0.0 0.0 M. "Hum_WalkLoop_M01.asc" F 34 39)
aniBlend ("t_PsiWalkR_2_PsiWalk" "s_PsiWalk" 0.2 0.2)
// Psi-Walk Backwards Movement
aniBlend ("t_PsiWalk_2_PsiWalkBL" "s_PsiWalkBL" 0.2 0.2)
// Psi-Walk-Loop backwards
aniAlias ("s_PsiWalkBL" 1 "s_PsiWalkBL" 0.0 0.0 M. "s_PsiWalkL" R)
aniBlend ("t_PsiWalkBL_2_PsiWalk" "s_PsiWalk" 0.2 0.2)
aniBlend ("t_PsiWalkBR_2_PsiWalk" "s_PsiWalk" 0.2 0.2)
// Psi-SNEAK
aniAlias ("s_PsiSneak" 1 "s_PsiSneak" 0.3 0.3 MI "s_Sneak" F)
aniAlias ("t_PsiSneak_2_PsiSneakL" 1 "s_PsiSneakL" 0.0 0.0 M. "t_Sneak_2_SneakL" F)
// Psi-Sneak-Loop
aniAlias ("s_PsiSneakL" 1 "s_PsiSneakL" 0.0 0.0 M. "s_SneakL" F)
aniBlend ("t_PsiSneakL_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
aniBlend ("t_PsiSneakR_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
// Psi-Sneak Backwards Movement
aniBlend ("t_PsiSneak_2_PsiSneakBL" "s_PsiSneakBL" 0.2 0.2)
// Psi-Sneak-Loop backwards
aniAlias ("s_PsiSneakBL" 1 "s_PsiSneakBL" 0.0 0.0 M. "s_SneakL" R)
aniBlend ("t_PsiSneakBL_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
aniBlend ("t_PsiSneakBR_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
//////////////////////////
// PSI TURNING
//////////////////////////
// aniAlias ("t_PsiRunTurnL" 20 "t_PsiRunTurnL" 0.2 0.2 M. "t_MagRunTurnL" F)
// aniAlias ("t_PsiRunTurnR" 20 "t_PsiRunTurnR" 0.2 0.2 M. "t_MagRunTurnL" R)
// aniAlias ("t_PsiWalkTurnL" 20 "t_PsiWalkTurnL" 0.2 0.2 M. "t_MagRunTurnL" F)
// aniAlias ("t_PsiWalkTurnR" 20 "t_PsiWalkTurnR" 0.2 0.2 M. "t_MagRunTurnL" R)
// aniAlias ("t_PsiSneakTurnL" 20 "t_PsiSneakTurnL" 0.2 0.2 M. "t_MagRunTurnL" F)
// aniAlias ("t_PsiSneakTurnR" 20 "t_PsiSneakTurnR" 0.2 0.2 M. "t_MagRunTurnL" R)
//////////////////////////
// PSI STRAFING
//////////////////////////
aniAlias ("t_PsiRunStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_RunStrafeL" F)
aniAlias ("t_PsiRunStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_RunStrafeL" R)
aniAlias ("t_PsiWalkStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_WalkStrafeL" F)
aniAlias ("t_PsiWalkStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_WalkStrafeL" R)
aniAlias ("t_PsiSneakStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_SneakStrafeL" F)
aniAlias ("t_PsiSneakStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_SneakStrafeL" R)
//////////////////////////
// PSI TRANSITIONS
//////////////////////////
// Movement-Modes
aniBlend ("t_PsiRun_2_PsiWalk" "s_PsiWalk" 0.1 0.1)
aniBlend ("t_PsiWalk_2_PsiRun" "s_PsiRun" 0.1 0.1)
aniBlend ("t_PsiRun_2_PsiSneak" "s_PsiSneak" 0.2 0.2)
aniBlend ("t_PsiSneak_2_PsiRun" "s_PsiRun" 0.2 0.2)
aniBlend ("t_PsiRunL_2_PsiWalkL" "s_PsiWalkL" 0.2 0.2)
aniBlend ("t_PsiWalkL_2_PsiRunL" "s_PsiRunL" 0.2 0.2)
aniBlend ("t_PsiSneakL_2_PsiRunL" "s_PsiRunL" 0.2 0.2)
aniBlend ("t_PsiRunL_2_PsiSneakL" "s_PsiSneakL" 0.2 0.2)
// JumpStand
// aus dem Rennen direkt Springen
aniAlias ("t_PsiRunL_2_Jump" 1 "s_Jump" 0.1 0.1 MF "t_RunL_2_Jump" F)
aniAlias ("t_PsiRunR_2_Jump" 1 "s_Jump" 0.1 0.1 MF "t_RunL_2_Jump" F)
// nach dem Sprung direkt weiterrennen, wenn CursorUp weiterhin gedrückt
aniBlend ("t_Jump_2_PsiRunL" "s_PsiRunL" 0.2 0.1)
//////////////////////////
// PSI FIGHTING
//////////////////////////
// Überwindungs-Zauber (z.B. Kontrolle; Co)
// ani ("t_PsiWalk_2_CoCast" 1 "s_CoCast" 0.1 0.0 M. "Hum_PsiCoCast_A01.asc" F 28 36)
// ani ("s_CoCast" 1 "s_CoCast" 0.0 0.0 M. "Hum_PsiCoCast_A01.asc" F 37 37)
// ani ("t_CoCast_2_PsiWalk" 1 "s_PsiWalk" 0.0 0.1 M. "Hum_PsiCoCast_A01.asc" F 38 49)
// Kontrolle geglückt, eigener Körper in "Ruhestellung"
// ani ("t_CoCast_2_CoSucc" 1 "s_CoSucc" 0.0 0.0 M. "Hum_PsiCoCast_A01.asc" F 52 64)
// ani ("s_CoSucc" 1 "s_CoSucc" 0.0 0.1 M. "Hum_PsiCoCast_A01.asc" F 65 65)
// aniBlend ("t_CoSucc_2_Run" "s_Run" 0.2 0.2)
// Körperhaltung des Opfers während Kontrollversuch
// ani ("s_CoVictim" 1 "s_CoVictim" 0.1 0.1 M. "Hum_PsiCoVictim_A01.asc" F 1 10)
// Sofort-Zauber (noch keiner vorhanden)
// Vergessen
ani ("t_PsiWalk_2_Forget" 1 "s_Forget" 0.0 0.0 M. "Hum_PsiForget_M01.asc" F 1 14)
ani ("s_Forget" 1 "s_Forget" 0.0 0.0 M. "Hum_PsiForget_M01.asc" F 15 15)
ani ("t_Forget_2_PsiWalk" 1 "s_PsiWalk" 0.0 0.0 M. "Hum_PsiForget_M01.asc" F 16 29)
// Aufrechterhaltungs-Zauber (noch keiner vorhanden)
// Auflade-Zauber (z.B. Windfaust; WI)
// ani ("t_PsiAim_2_WICast" 1 "s_WICast" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
// ani ("s_WICast" 1 "s_WICast" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
// ani ("t_WICast_2_FBShoot" 1 "s_WIShoot" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
// ani ("s_WIShoot" 1 "s_WIShoot" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
// ani ("t_WIShoot_2_PsiAim" 1 "s_PsiAim" 0.1 0.1 M. "1hHitF.asc" F 31 -1)
Что касается кинжалов, то даже в ранних пре-альфах блок с анимациями боя для них (Как и у одноручных топоров) был полностью пуст.
Код:
///////////////////////
// DAGGER FIGHTING
///////////////////////
// Noch nicht designt
///////////////////////
// 1H AXE FIGHTING
///////////////////////
// noch nicht implementiert
Все остальные анимации для оружия такого типа использовались от одноручников.
Возможно анимации боя для кинжалов были прописаны позже, после того как происходила съёмка Motion Capture в августе 1999 года, но это не факт и вряд ли когда-либо удастся выяснить.
Из представленных в пре-альфах анимациях, можно ещё выделить блоки для прототипа боёвки на двуручных топорах:
Код:
//////////////////////////
// 2H-AXE MOVEMENT
//////////////////////////
// 2hA-RUN
ani ("s_2hARun" 1 "s_2hARun" 0.1 0.1 M. "Hum_2hAmbient_M01.asc" F 0 98)
ani ("t_2hARun_2_2hARunL" 1 "s_2hARunL" 0.0 0.0 M. "Hum_2hRun_M01.asc" F 1 13)
// 2hA-Run-Loop
ani ("s_2hARunL" 1 "s_2hARunL" 0.0 0.0 M. "Hum_2hRun_M01.asc" F 14 37)
{
*eventSFXGrnd (14 "Run")
*eventSFXGrnd (25 "Run")
}
ani ("t_2hARunL_2_2hARun" 1 "s_2hARun" 0.0 0.0 M. "Hum_2hRun_M01.asc" F 38 45)
aniBlend ("t_2hARunR_2_2hARun" "s_2hARun" 0.2 0.2)
// 2hA-Run Backwards Movement
aniAlias ("t_2hAJumpB" 1 "s_2hARun" 0.0 0.0 M. "t_JumpB" F)
// 2hA-WALK-Mode, Standing
ani ("s_2hAWalk" 1 "s_2hAWalk" 0.1 0.1 M. "Hum_2hWalk_M01.asc" F 0 0)
ani ("t_2hAWalk_2_2hAWalkL" 1 "s_2hAWalkL" 0.1 0.0 M. "Hum_2hWalk_M01.asc" F 1 9)
// 2hA-Walk-Loop
ani ("s_2hAWalkL" 1 "s_2hAWalkL" 0.0 0.0 M. "Hum_2hWalk_M01.asc" F 10 33)
{
*eventSFXGrnd (10 "Run")
*eventSFXGrnd (22 "Run")
}
ani ("t_2hAWalkL_2_2hAWalk" 1 "s_2hAWalk" 0.0 0.2 M. "Hum_2hWalk_M01.asc" F 34 38)
aniBlend ("t_2hAWalkR_2_2hAWalk" "s_2hAWalk" 0.2 0.3)
// 2hA-Walk Backwards Movement
aniAlias ("t_2hAWalk_2_2hAWalkBL" 1 "s_2hAWalkBL" 0.0 0.0 M. "t_2hAWalkL_2_2hAWalk" R)
aniAlias ("s_2hAWalkBL" 1 "s_2hAWalkBL" 0.0 0.0 M. "s_2hAWalkL" R)
aniAlias ("t_2hAWalkBL_2_2hAWalk" 1 "s_2hAWalk" 0.0 0.0 M. "t_2hAWalk_2_2hAWalkL" R)
aniBlend ("t_2hAWalkBR_2_2hAWalk" "s_2hAWalk" 0.2 0.2)
// 2hA-SNEAK-Mode, Standing
aniAlias ("s_2hASneak" 1 "s_2hASneak" 0.3 0.3 MI "s_Sneak" F)
aniAlias ("t_2hASneak_2_2hASneakL" 1 "s_2hASneakL" 0.0 0.0 M. "t_Sneak_2_SneakL" F)
// 2hA-Sneak-Loop
aniAlias ("s_2hASneakL" 1 "s_2hASneakL" 0.0 0.0 M. "s_SneakL" F)
aniBlend ("t_2hASneakL_2_2hASneak" "s_2hASneak" 0.2 0.2)
aniBlend ("t_2hASneakR_2_2hASneak" "s_2hASneak" 0.2 0.2)
// 2hA-Sneak Backwards Movement
aniBlend ("t_2hASneak_2_2hASneakBL" "s_2hASneakBL" 0.2 0.2)
aniAlias ("s_2hASneakBL" 1 "s_2hASneakBL" 0.0 0.0 M. "s_SneakL" R)
aniBlend ("t_2hASneakBL_2_2hASneak" "s_2hASneak" 0.2 0.2)
aniBlend ("t_2hASneakBR_2_2hASneak" "s_2hASneak" 0.2 0.2)
//////////////////////////
// 2H-AXE TURNING
//////////////////////////
ani ("t_2hARunTurnL" 20 "t_2hARunTurnL" 0.0 0.0 M. "Hum_2hTurn_M01.asc" F 1 22)
{
*eventSFXGrnd (5 "Run")
*eventSFXGrnd (12 "Run")
}
aniAlias ("t_2hARunTurnR" 20 "t_2hARunTurnR" 0.0 0.0 M. "t_2hARunTurnL" R)
aniAlias ("t_2hAWalkTurnL" 20 "t_2hAWalkTurnL" 0.0 0.0 M. "t_2hARunTurnL" F)
aniAlias ("t_2hAWalkTurnR" 20 "t_2hAWalkTurnR" 0.0 0.0 M. "t_2hARunTurnL" R)
aniAlias ("t_2hASneakTurnL" 20 "t_2hASneakTurnL" 0.2 0.2 M. "t_2hARunTurnL" F)
aniAlias ("t_2hASneakTurnR" 20 "t_2hASneakTurnR" 0.2 0.2 M. "t_2hARunTurnL" R)
//////////////////////////
// 2H-AXE STRAFING
//////////////////////////
ani ("t_2hARunStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "Hum_2hStrafe_M01.asc" F 1 24)
aniAlias ("t_2hARunStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_2hARunStrafeL" R)
aniAlias ("t_2hAWalkStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_2hARunStrafeL" F)
aniAlias ("t_2hAWalkStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_2hARunStrafeL" R)
aniAlias ("t_2hASneakStrafeL" 1 "s_JumpStand" 0.1 0.1 M. "t_SneakStrafeL" F)
aniAlias ("t_2hASneakStrafeR" 1 "s_JumpStand" 0.1 0.1 M. "t_SneakStrafeL" R)
//////////////////////////
// 2H-AXE TRANSITIONS
//////////////////////////
// Movement-Modes
aniBlend ("t_2hARun_2_2hAWalk" "s_2hAWalk" 0.2 0.2)
aniBlend ("t_2hAWalk_2_2hARun" "s_2hARun" 0.2 0.2)
aniBlend ("t_2hARun_2_2hASneak" "s_2hASneak" 0.2 0.2)
aniBlend ("t_2hASneak_2_2hARun" "s_2hARun" 0.2 0.2)
aniBlend ("t_2hARunL_2_2hAWalkL" "s_2hAWalkL" 0.2 0.2)
aniBlend ("t_2hAWalkL_2_2hARunL" "s_2hARunL" 0.2 0.2)
aniBlend ("t_2hASneakL_2_2hARunL" "s_2hARunL" 0.2 0.2)
aniBlend ("t_2hARunL_2_2hASneakL" "s_2hASneakL" 0.2 0.2)
// JumpStand
// aus dem Rennen direkt Springen
aniAlias ("t_2hARunL_2_Jump" 1 "s_Jump" 0.1 0.1 MF "t_RunL_2_Jump" F)
aniAlias ("t_2hARunR_2_Jump" 1 "s_Jump" 0.1 0.1 MF "t_RunL_2_Jump" F)
// nach dem Sprung direkt weiterrennen, wenn CursorUp weiterhin gedrückt
aniBlend ("t_Jump_2_2hARunL" "s_2hARunL" 0.2 0.1)
//////////////////////////
// 2H-AXE FIGHTING
//////////////////////////
// Kampf ohne Talent
// Ausholen
aniBlend ("t_2hAWalk_2_2hAAim" "s_2hAAim" 0.2 0.2)
aniAlias ("s_2hAAim" 1 "s_2hAAim" 0.0 0.0 M. "s_2hSAim" F)
aniBlend ("t_2hAAim_2_2hAWalk" "s_2hAWalk" 0.2 0.2)
// Ausholen während Kampfsteps
aniBlend ("t_2hAWalkL_2_2hAAim" "s_2hAAim" 0.2 0.0)
aniBlend ("t_2hAWalkR_2_2hAAim" "s_2hAAim" 0.2 0.0)
// Attacks
ani ("t_2hAAt1Step" 1 "s_2hAWalk" 0.0 0.1 M. "Hum_2hAttackS1_M01.asc" F 1 23)
{
*eventTag (0 "DEF_OPT_FRAME" "12")
*eventSFX (8 "2hAttackT")
}
ani ("t_2hAAt1" 1 "s_2hAWalk" 0.0 0.1 M. "Hum_2hAttack1_M01.asc" F 1 23)
{
*eventTag (0 "DEF_OPT_FRAME" "12")
*eventSFX (8 "2hAttackT")
}
// aniAlias ("t_2hAAttackL" 1 "s_2hAWalk" 0.1 0.1 MR "t_1hSAttackL" F)
// aniAlias ("t_2hAAttackR" 1 "s_2hAWalk" 0.1 0.1 MR "t_1hSAttackR" F)
// Paraden
ani ("t_2hAAim_2_2hADefend" 1 "s_2hADefend" 0.0 0.0 M. "Hum_1hSParade_M01.asc" F 1 5)
ani ("s_2hADefend" 1 "s_2hADefend" 0.0 0.0 M. "Hum_1hSParade_M01.asc" F 6 6)
ani ("t_2hADefend_2_2hAAim" 1 "s_2hAWalk" 0.0 0.0 M. "Hum_1hSParade_M01.asc" F 14 18)
ani ("t_2hAParadeL" 1 "s_2hAWalk" 0.0 0.0 M. "Hum_1hSParade_M01.asc" F 7 11)
aniAlias ("t_2hAParadeM" 1 "s_2hAWalk" 0.0 0.0 M. "t_2hAParadeL" F)
aniAlias ("t_2hAParadeS" 1 "s_2hAWalk" 0.0 0.0 M. "t_2hAParadeL" F)
Trazege, если в момент выполнения анимации отпустить клавишу стрейфа, анимация прерывается мгновенно. По нормальному, она должна доиграть до конца. Как анимация отскока работает, например.
1. Анимации боёвки для двуручных топоров идентичны анимациям боёвки от двуручных мечей.
2. Сами эти анимации не пригодны для использования. Во первых они сами по себе УГ, потому что были сделаны как прототип ещё в 1998 году задолго до съёмки Motion Capture, а во вторых их ещё нужно адаптировать под релизную модель.
Trazege, если в момент выполнения анимации отпустить клавишу стрейфа, анимация прерывается мгновенно. По нормальному, она должна доиграть до конца. Как анимация отскока работает, например.
1. Анимации боёвки для двуручных топоров идентичны анимациям боёвки от двуручных мечей.
2. Сами эти анимации не пригодны для использования. Во первых они сами по себе УГ, потому что были сделаны как прототип ещё в 1998 году задолго до съёмки Motion Capture, а во вторых их ещё нужны адаптировать под релизную модель.
Интересны анимы именно для PSI блока. Для оружия в ремастере Алекса все очень красиво сделано и менять на альфу абсолютно не имеет смысла. Видосиков нет случайно как это все добро выглядит?
Вопрос не в идентичности. Скрипты имеют уникальный ключ A. Пусть это обычный двуруч по сути. Но анимации вызываются другие! А значит, можно отправить в топку пирог из оверлеев. И сделать отдельную ветку прокачки только топоров. Я за то, чтобы каждый тип имел свой блок анимаций в mds скриптах.
Psi похож на sneak. А скрипты боевки на бесконтактную магию. Типа бегает перс и долбит всех на расстоянии силой мысли. Без рун.
Интересны анимы именно для PSI блока. Для оружия в ремастере Алекса все очень красиво сделано и менять на альфу абсолютно не имеет смысла. Видосиков нет случайно как это все добро выглядит?
Trazege, не так оно работает. Поверь.
Вопрос не в идентичности. Скрипты имеют уникальный ключ A. Пусть это обычный двуруч по сути. Но анимации вызываются другие! А значит, можно отправить в топку пирог из оверлеев. И сделать отдельную ветку прокачки только топоров. Я за то, чтобы каждый тип имел свой блок анимаций в mds скриптах.
Psi похож на sneak. А скрипты боевки на бесконтактную магию. Типа бегает перс и долбит всех на расстоянии силой мысли. Без рун.
// 2hA-RUN
ani ("s_2hARun" 1 "s_2hARun" 0.1 0.1 M. "Hum_2hAmbient_M01.asc" F 0 98)
ani ("t_2hARun_2_2hARunL" 1 "s_2hARunL" 0.0 0.0 M. "Hum_2hRun_M01.asc" F 1 13)
И.т.д....
2hA. - для axe. Оружие двуручное, но анимации вызываются не 2h.
2. Сами эти анимации не пригодны для использования. Во первых они сами по себе УГ, потому что были сделаны как прототип ещё в 1998 году задолго до съёмки Motion Capture, а во вторых их ещё нужно адаптировать под релизную модель.
Для справки. Если они мокапом что и наснимали, то почти все отправили в топку. Из живого там бабьи танцы и тренировка с мечом. И инэкстремо. Большая же часть модели это ручная работа. Процентов 10 адаптированные анимации из мокап пакета, который когда-то autodesk бесплатно распространял вместе с 3dsmax.
Я пока ремастер делал, аж слезы счастья пускал. Брал исходники от autodesk и на базе них восстанавливал движения.
Друзья! 2025-й год завершается, и хочется вспомнить все успехи и положительные события, что были в нём на нашем форуме. С подробностями можно орзнакомиться в этой теме.
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.