Seaward.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как сделать ГГ мартышкой (другим типом перса), особенности реализации
VladNiP
сообщение Aug 7 2009, 13:14
Сообщение #1


боцман
****


Группа: форумчанин
Сообщений: 270
Регистрация: 23-July 09
Из: Россия. Пермь.
Пользователь №: 20,820



У меня есть впорос, связанный с главным героем.
Я пытаюсь сделать его обезьянкой. 3.gif
Заметил кое-что в енкуантерах.
Код.
Код
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);
Решил похимичить. smile.gif
Но ничего не получилось.
Вопрос: Можно ли сделать главного героя обезъянкой и как это сделать если можно. ( чтоб анимация была и не было глюков. smile.gif )
Пользуясь случаем хочу поблагодарить ALexusB'a и Alexad_D'a. Действительно помогло. smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
2 страниц V < 1 2  
Reply to this topicStart new topic
Ответов(20 - 36)
navy
сообщение Aug 10 2009, 12:46
Сообщение #21


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,970
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



Ну тема то "Для программистов" smile.gif А вообще, твоя мартышка не похожа на оную, поэтому тоже не вариант, ИМХО. Руки доберуться до кода, посмотрю как там что, не до этого сейчас немного.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VladNiP
сообщение Aug 10 2009, 14:28
Сообщение #22


боцман
****


Группа: форумчанин
Сообщений: 270
Регистрация: 23-July 09
Из: Россия. Пермь.
Пользователь №: 20,820



Цитата
Тебя устроил мой вариант?

Нет. Я бы хотел просто мартышку. Такое, кстати, когда-то и у меня получалось. Потом вернул все обратно.
Кстати, попробовал я просто заменить анимацию у всех мужчин в игре. smile.gif
Получилось тоже не очень: У моего героя по-прежнему искажения, но теперь и у всего народа идут искажения. Опять-таки вернул все на место.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Lugger
сообщение Aug 10 2009, 14:47
Сообщение #23


боцман
****

Заслуженный КорсарСоздатель Модов к игре Корсары III
Группа: форумчанин
Сообщений: 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, скачай архивчик и разархивируй в корневой каталог игры.
Скачать: http://ifolder.ru/13484054

Не знаю, какая у тебя база - я эту хрень провернул на 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";


Вот и всё, собственно. Но это если по быстрому. А вообще надо и экипировку убирать (вернее дать "руки"), ну и общие вопросы.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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 как отдельный тип? Или не только? Если
можно с этого места растолмачить по подробней..... (Талмач - от старословянского - Переводчик, в данном контекте - растолмачить - разъяснить)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Aug 11 2009, 11:34
Сообщение #25


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,970
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



Цитата
При начале новой игры будет макака с правильной анимацией и с правильным поведением.

собсна с начала этого обсуждения так и советовали сделать biggrin.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VladNiP
сообщение Aug 11 2009, 11:34
Сообщение #26


боцман
****


Группа: форумчанин
Сообщений: 270
Регистрация: 23-July 09
Из: Россия. Пермь.
Пользователь №: 20,820



Lugger
Спасибо.
Действительно получилось.
Вот только вопрос, может стоило просто прописать функцию Characters[GetCharacterIndex("Blaze")].model.animation = "monkey";
Вот:
Изображение Изображение
Также спасибо всем, кто участвовал в дискуссии.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Aug 11 2009, 11:57
Сообщение #27


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,970
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



Цитата
Вот только вопрос, может стоило просто прописать функцию

Почитай посты Алекса про оптимизацию.
зы: ну вообще-то люгер ничего нового не сказал, а только то, что мы уже тебе писали с Алексом 10 раз 1.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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";
ну и так далее

Ну а дальше что? Или это вообще не так делается? А то что то у меня нифига не получается анимация как была кривая так и осталась. Единствено что при встрече он сразу бежит ко мне и ждет начала диалога sad.gif


******************

Буду пробовать, по совету ALexusB шерстить ани. может что и получится
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Aug 11 2009, 16:28
Сообщение #29


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,165
Регистрация: 2-November 04
Пользователь №: 3



Alexad_D

Нет, все проще, в случае совместимой по анамиции модели нужно просто указать
PChar.model = "вуман2";
PChar.model.animation = "вуман2";
и... не все... нужно прошерстить файл .ани и назвать всю анимацию так, как она названа в ПКМ, подобрать подходящую из ударов.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Aug 12 2009, 07:02
Сообщение #30


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: 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);
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Aug 12 2009, 11:20
Сообщение #31


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Цитата(navy @ Aug 12 2009, 07:02) *

Новый тип поведения создавать не надо. Типы поведения отвечают только за действия персонажа в разных ситуациях. Достаточно сделать как сказал Алекс, если анимация совместима конечно.

Да я это понял.... если бы нужен был только ГГ то да.....
Фишка вот в чем - ( беатрис из К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 не буду писать - там сделано примерно как для офицеров
Отредактировано.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Aug 12 2009, 11:56
Сообщение #32


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,970
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



Хз, я в это сильно не влазил. Но если у тебя косяки с анимацией, то где-то она не правильно задана. Перезадавай в LAi_beatrice.c как я приводил выше, и будет все норм.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Aug 15 2009, 01:32
Сообщение #33


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



В результате нескольких бессонных ночей интеграция модели в ПКМ получилась частично. Под нее заточены два перса - ГГ и его типа офицер. Вопрос...... если ГГ без косяков почему такая кривая анимация у офицера?????
Прикрепленное изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
delfin_
сообщение Aug 15 2009, 02:01
Сообщение #34


Защитнег Бакланаф
*******

Ветеран ФорумаЗаслуженный КорсарЗнаток Игр Сиварда
Наставник Корсаров
Группа: форумчанин
Сообщений: 5,186
Регистрация: 5-December 04
Пользователь №: 174



Цитата(Alexad_D @ Aug 15 2009, 01:32) *

если ГГ без косяков почему такая кривая анимация у офицера?????

Не видя скриптов мало что можно сказать. Хотя можно сказать наверняка что, что то там не так прописано.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Aug 15 2009, 07:57
Сообщение #35


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,970
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



см. выше. т.е. или не правильно отрабатывается анимация атаки. т.е. она не соотвествует скелету. Перезадавай в скриптах или правь ани файл.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Aug 15 2009, 10:38
Сообщение #36


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Ура!!!!!!!!! Есть нашел ошибку!!!!!!!!!!!!!!!!!!!! Удаляю этот пост.

Delfin_ и Navy - Спасибо что откликнулись.... Но все оказалось гораздо проще - в точке с запятой - которую не поставил 3.gif
=========================================
И вот результат -

Прикрепленное изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Aug 15 2009, 18:23
Сообщение #37


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,970
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



Поздравляю! smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

2 страниц V < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28th March 2024 - 14:54

Блок рекламы
Яндекс цитирования Rambler's Top100
Rambler's Top100