Как сделать ГГ мартышкой (другим типом перса), особенности реализации |
Здравствуйте, гость ( Вход | Регистрация )
Как сделать ГГ мартышкой (другим типом перса), особенности реализации |
VladNiP |
Aug 7 2009, 13:14
Сообщение
#1
|
боцман Группа: форумчанин Сообщений: 270 Регистрация: 23-July 09 Из: Россия. Пермь. Пользователь №: 20,820 |
У меня есть впорос, связанный с главным героем.
Я пытаюсь сделать его обезьянкой. Заметил кое-что в енкуантерах. Код. Код case "monkey": isSet = true; chr.sex = "monkey"; LAi_type_monkey_Init(chr); RemoveCharacterEquip(chr, BLADE_ITEM_TYPE); LAi_NPC_Equip(chr, mchr_rank + 3, true, false); break; Конкретно строка: LAi_type_monkey_Init(chr); Решил похимичить. Но ничего не получилось. Вопрос: Можно ли сделать главного героя обезъянкой и как это сделать если можно. ( чтоб анимация была и не было глюков. ) Пользуясь случаем хочу поблагодарить ALexusB'a и Alexad_D'a. Действительно помогло. |
navy |
Aug 10 2009, 12:46
Сообщение
#21
|
Hagane no Renkinjutsushi Группа: Seaward.Ru Team Сообщений: 5,970 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 |
Ну тема то "Для программистов" А вообще, твоя мартышка не похожа на оную, поэтому тоже не вариант, ИМХО. Руки доберуться до кода, посмотрю как там что, не до этого сейчас немного.
|
VladNiP |
Aug 10 2009, 14:28
Сообщение
#22
|
боцман Группа: форумчанин Сообщений: 270 Регистрация: 23-July 09 Из: Россия. Пермь. Пользователь №: 20,820 |
Цитата Тебя устроил мой вариант? Нет. Я бы хотел просто мартышку. Такое, кстати, когда-то и у меня получалось. Потом вернул все обратно. Кстати, попробовал я просто заменить анимацию у всех мужчин в игре. Получилось тоже не очень: У моего героя по-прежнему искажения, но теперь и у всего народа идут искажения. Опять-таки вернул все на место. |
Lugger |
Aug 10 2009, 14:47
Сообщение
#23
|
боцман Группа: форумчанин Сообщений: 282 Регистрация: 15-December 05 Из: Ульяновск Пользователь №: 1,734 |
Код LAi_type_monkey_Init(chr); Тогда персонаж станет неуправляемым. А чтобы персонаж был управляемым, то он должен быть: Код LAi_SetPlayerType(chr); Функция эта инспользуется только для ГГ. Код RemoveCharacterEquip(chr, BLADE_ITEM_TYPE); Снять текущую экипировку - в данном случае саблю. Надо интегрировать код анимации для мартышки в функцию, где эта анимация детально по действиям устанавливается для персонажа. Функция LAi_SetDefaultStayAnimation(aref chr) находится в loc_ai\LAi_utils.c, а функции, которые в ней запускаются - в characters\characters.c Вот туда то и надо вставлять куски кода по проверке имени модели. Так как мартышка несколько нестандартный тип персонажа, то разработчики в итоге сделали всё в одну кучу. То что надо, находится в loc_ai\types\LAi_monkey.c В итоге сможем макакой и бегать как надо и бить по лицу и т.д.)) А вот стрелять ею не выйдет, к сожалению. Если подождёте, оправдаю свои догадки и выложу что надо. *** Ну да, точно. VladNip, скачай архивчик и разархивируй в корневой каталог игры. Скачать: Не знаю, какая у тебя база - я эту хрень провернул на mod_v4. При этом нужно указать. Если в character_init.c: Код ch.model = "monkey'; Ниже, в этом же файле, буквально в строке 339 найди: Код Characters[GetCharacterIndex("Danielle")].model.animation = "woman"; скопируй строку, и в ней напиши: Код Characters[GetCharacterIndex("Blaze")].model.animation = "monkey"; При начале новой игры будет макака с правильной анимацией и с правильным поведением. Если же где то по ходу дела должно сработать, то: Код ref PChar = GetMainCharacter(); PChar.model = "monkey"; PChar.model.animation = "monkey"; Вот и всё, собственно. Но это если по быстрому. А вообще надо и экипировку убирать (вернее дать "руки"), ну и общие вопросы. |
Alexad_D |
Aug 11 2009, 10:15
Сообщение
#24
|
матрос Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 |
Аха..... Lugger ! Исходя из выше сказанного..... то можно попытаться ввернуть в игру любую модель если к ней есть готовая анимация? Если я правильно понял, то если я хочу ввернуть в игру модель.... (возьмем пример по проще) беатрис из К3 то надо интегрировать ее в характерс.с или надо что то еще....? Т.е. Переносим из К3 беатрис - гм, ан и ани в ПКМ. Сохраняем под беатрис, в ани переписываем ссылку с вумен на веатрис, в харакер_инит добовляем строку под данькой:
Characters[GetCharacterIndex("beatrice")].model.animation = "beatrice"; ..... меняем выше : ch.id = "beatrice"; ch.model = "beatrice"; ch.model.animation = "beatrice"; ch.activity_begin = "0"; ch.activity_end = "24"; ch.sex = "beatrice"; ...... а в характерс.с тогда что.....? Заводить из характерс.с К3? И как? Надо же наверное еще ее заводить в LAi_types как отдельный тип? Или не только? Если можно с этого места растолмачить по подробней..... (Талмач - от старословянского - Переводчик, в данном контекте - растолмачить - разъяснить) |
navy |
Aug 11 2009, 11:34
Сообщение
#25
|
Hagane no Renkinjutsushi Группа: Seaward.Ru Team Сообщений: 5,970 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 |
Цитата При начале новой игры будет макака с правильной анимацией и с правильным поведением. собсна с начала этого обсуждения так и советовали сделать |
VladNiP |
Aug 11 2009, 11:34
Сообщение
#26
|
боцман Группа: форумчанин Сообщений: 270 Регистрация: 23-July 09 Из: Россия. Пермь. Пользователь №: 20,820 |
|
navy |
Aug 11 2009, 11:57
Сообщение
#27
|
Hagane no Renkinjutsushi Группа: Seaward.Ru Team Сообщений: 5,970 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 |
Цитата Вот только вопрос, может стоило просто прописать функцию Почитай посты Алекса про оптимизацию. зы: ну вообще-то люгер ничего нового не сказал, а только то, что мы уже тебе писали с Алексом 10 раз |
Alexad_D |
Aug 11 2009, 16:07
Сообщение
#28
|
матрос Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 |
Правильно ли я все понял? Для того чтобы в ПКМ появился новый перс, но не ГГ, а типа Вуазье или Риса но с новой моделью и анимацией к ней в ПКМ Надо:
в LAi_types.c вставить строки // Новый перс #include "Loc_ai\types\LAi_newchar.c" //--------- //newchar //--------- void LAi_SetNewcharType(aref chr) { chr.chr_ai.type = LAI_DEFAULT_TYPE; LAi_type_newchar_Init(chr); LAi_group_MoveCharacter(chr, LAI_GROUP_PLAYER); Дальше создаем LAi_newchar.c где прописываем так... Тип:Новый характер Шаблоны: stay dialog #define LAI_TYPE_newchar "newchar" //Инициализация void LAi_type_newchar_Init(aref chr) { //Тип DeleteAttribute(chr, "location.follower"); DeleteAttribute(chr, "chr_ai.type"); chr.chr_ai.type = LAI_TYPE_newchar; LAi_tmpl_SetFollow(chr, GetMainCharacter(), -1.0); //Анимация для перса LAi_SetDefaultStayAnimation(chr); SendMessage(&chr, "lsl", MSG_CHARACTER_EX_MSG, "SetFightWOWeapon", false); } Создаем перса к примеру на Оксбее makeref(ch,Characters[n]); бла,бла, бла, ch.id = "newchar"; ch.model = "newchar"; ch.sex = "newchar"; ну и так далее Ну а дальше что? Или это вообще не так делается? А то что то у меня нифига не получается анимация как была кривая так и осталась. Единствено что при встрече он сразу бежит ко мне и ждет начала диалога ****************** Буду пробовать, по совету ALexusB шерстить ани. может что и получится |
ALexusB |
Aug 11 2009, 16:28
Сообщение
#29
|
Разработчик ВМЛ-КВЛ Группа: Admin Сообщений: 16,314 Регистрация: 2-November 04 Пользователь №: 3 |
Alexad_D
Нет, все проще, в случае совместимой по анамиции модели нужно просто указать PChar.model = "вуман2"; PChar.model.animation = "вуман2"; и... не все... нужно прошерстить файл .ани и назвать всю анимацию так, как она названа в ПКМ, подобрать подходящую из ударов. |
navy |
Aug 12 2009, 07:02
Сообщение
#30
|
Hagane no Renkinjutsushi Группа: Seaward.Ru Team Сообщений: 5,970 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 |
Новый тип поведения создавать не надо. Типы поведения отвечают только за действия персонажа в разных ситуациях. Достаточно сделать как сказал Алекс, если анимация совместима конечно.
Вот образец настройки анимации для персонажа. Смотри где у тебя косяки, и перенастраивай. Или правь .ани файл под свой скелет и анимацию. Код //Установим анимацию персонажу BeginChangeCharacterActions(chr); chr.actions.idle.i1 = "idle_1"; chr.actions.idle.i2 = "idle_2"; chr.actions.idle.i3 = "idle_3"; chr.actions.walk = "walk"; chr.actions.backwalk = "back walk"; chr.actions.run = "walk"; chr.actions.backrun = "back walk"; chr.actions.stsUp = "walk"; chr.actions.stsDown = "walk"; chr.actions.stsUpBack = "back walk"; chr.actions.stsDownBack = "back walk"; chr.actions.stsUpRun = "walk"; chr.actions.stsDownRun = "walk"; chr.actions.stsUpRunBack = "back walk"; chr.actions.stsDownRunBack = "back walk"; chr.actions.turnLeft = "skip"; chr.actions.turnRight = "skip"; chr.actions.swim = "walk"; chr.actions.fightwalk = "walk"; chr.actions.fightbackwalk = "back walk"; chr.actions.fightrun = "walk"; chr.actions.fightbackrun = "back walk"; chr.actions.fightidle.i1 = "idle_1"; chr.actions.fightidle.i2 = "idle_2"; chr.actions.fightidle.i3 = "idle_3"; chr.actions.attack.a1 = "attack"; chr.actions.attacktl.a1 = "attack"; chr.actions.attacktr.a1 = "attack"; chr.actions.hit.h1 = "hit"; chr.actions.block = "block"; chr.actions.blockhit = "block_hit"; chr.actions.recoil = "Recoil"; chr.actions.shot = "skip"; chr.actions.dead.d1 = "death"; chr.actions.fightdead.d1 = "death"; EndChangeCharacterActions(chr); SendMessage(&chr, "lsl", MSG_CHARACTER_EX_MSG, "SetFightWOWeapon", true); |
Alexad_D |
Aug 12 2009, 11:20
Сообщение
#31
|
матрос Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 |
Новый тип поведения создавать не надо. Типы поведения отвечают только за действия персонажа в разных ситуациях. Достаточно сделать как сказал Алекс, если анимация совместима конечно. Да я это понял.... если бы нужен был только ГГ то да..... Фишка вот в чем - ( беатрис из К3 я взял попрактиковаться). При наличаи некоторого практического опыта, в туле по идее, можно навесить на любую новую модель любую анимацию. И это я уже пробовал - т.е. выбирал из анимации беатрис то что нравилось и делал новый ани - именно так как ты писал (по совету Алексуса) есть правда некоторые неточности, но это устранимо и если набить руку то потом будет сразу нармально.. Но это ладно, да и не по теме. По теме вот что.... если использовать новую модель с новой аним. как ГГ т.е. так makeref(ch,Characters[0]); //Blaze Devlin //ch.perks.list.InstantBoarding = true; ch.name = "Нейм"; ch.lastname = "Ластнейм"; ch.id = "Beatrice"; ch.model = "BeatriceA"; ch.model.animation = "Beatrice"; ch.sex = "Beatrice"; ............................... Characters[GetCharacterIndex("beatrice")].model.animation = "beatrice"; // это обязательно проблем нет - косяки с анимацией начнутсятся тогда, если пыться завести нового персонажа, ну что-то типа Риса Блюма например То есть я так понимаю надо заводить и новый тип поведения? Вот я и попробовал - по аналогии с мартышкой так- в характерс.с Отредактировано. В характерс можно вообще не лезть (это точно.) Уже проверено! в LAi_types.с // Беатрис #include "Loc_ai\types\LAi_beatrice.c" //Установить персонажу тип beatrice void LAi_SetBeatriceType(aref chr) { chr.chr_ai.type = LAI_DEFAULT_TYPE; LAi_type_beatrice_Init(chr); LAi_group_MoveCharacter(chr, LAI_GROUP_PLAYER); } Ну уже LAi_beatrice.c не буду писать - там сделано примерно как для офицеров Отредактировано. |
navy |
Aug 12 2009, 11:56
Сообщение
#32
|
Hagane no Renkinjutsushi Группа: Seaward.Ru Team Сообщений: 5,970 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 |
Хз, я в это сильно не влазил. Но если у тебя косяки с анимацией, то где-то она не правильно задана. Перезадавай в LAi_beatrice.c как я приводил выше, и будет все норм.
|
Alexad_D |
Aug 15 2009, 01:32
Сообщение
#33
|
матрос Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 |
В результате нескольких бессонных ночей интеграция модели в ПКМ получилась частично. Под нее заточены два перса - ГГ и его типа офицер. Вопрос...... если ГГ без косяков почему такая кривая анимация у офицера?????
|
delfin_ |
Aug 15 2009, 02:01
Сообщение
#34
|
Защитнег Бакланаф Группа: форумчанин Сообщений: 5,186 Регистрация: 5-December 04 Пользователь №: 174 |
|
navy |
Aug 15 2009, 07:57
Сообщение
#35
|
Hagane no Renkinjutsushi Группа: Seaward.Ru Team Сообщений: 5,970 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 |
см. выше. т.е. или не правильно отрабатывается анимация атаки. т.е. она не соотвествует скелету. Перезадавай в скриптах или правь ани файл.
|
Alexad_D |
Aug 15 2009, 10:38
Сообщение
#36
|
матрос Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 |
Ура!!!!!!!!! Есть нашел ошибку!!!!!!!!!!!!!!!!!!!! Удаляю этот пост.
Delfin_ и Navy - Спасибо что откликнулись.... Но все оказалось гораздо проще - в точке с запятой - которую не поставил ========================================= И вот результат - |
navy |
Aug 15 2009, 18:23
Сообщение
#37
|
Hagane no Renkinjutsushi Группа: Seaward.Ru Team Сообщений: 5,970 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 |
Поздравляю!
|
Текстовая версия | Сейчас: 30th May 2024 - 15:37 |