Суббота, 30.11.2024, 23:20Приветствую Вас Юнга | RSS
Главная | | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
FAQ по созданию модификаций
AnubisДата: Среда, 25.06.2014, 23:46 | Сообщение # 1
Адмирал флота
Группа: Завсегдатаи
Сообщений: 88
Репутация: 7
Статус: Offline
Тема, в которой каждый может оставить «кусочек кода» для игр серии Корсары. Для чего создавалась эта тема? Допустим, вы хотите поделиться кодом к играм из серии Корсары, маленьким таким кодом, а урок писать лень или лишком много чести, отдельный урок для такого кода писать. Вот в эту тему все и кидайте. Будем вместе составлять FAQ, в помощь.

Как оформить пост: (для удобства и однородности)
1. Пишем вопрос или название. Например: Как изменить имя ГГ в КТДМ
2. Пишем код обязательно в тегах code. Чтоб ясно было, чего это
3. Короткое описание кода. Что это, зачем это и с чем это едят. Можно и не короткое описание, а даже очень подробно объяснить, если не лень, конечно.
4. Если код вставляется в специальный файл, то название файла и путь к нему. А если это для квестов, диалогов и НПС, тогда можно и в описании все сказать.
5. Автор кода или игра (название полностью), откуда код взят. Будем взаимно вежливыми и не станем нарушать авторских прав. Если вы сами автор кода, то это только прославит вас, а если нет, то не обидит другого.

FAQ по созданию модификаций


Как зафиксировать имя и фамилию, при создании своего НПС
Как сделать видимыми локаторы
Объяснения к некоторым из win_condition
Как заменить модельку и имя ГГ в игре КТДМ на свои
 
AnubisДата: Среда, 25.06.2014, 23:48 | Сообщение # 2
Адмирал флота
Группа: Завсегдатаи
Сообщений: 88
Репутация: 7
Статус: Offline
Как зафиксировать имя и фамилию, при создании своего НПС

Код
void SetNames()
{
  for(int i = 0; i < TOTAL_CHARACTERS; i++)
  {
   if(Characters[i].id != "Blaze" && Characters[i].id != "Beatrice")
   {
    if(!CheckAttribute(Characters[i], "namelock"))
    {
     SetRandomNameToCharacter(&Characters[i]);
    }
   }
  }

  SetRandomNameToCharacter(CharacterFromID("Knower"));
  PChar.Quest.Knower.Name = Characters[GetCharacterIndex("Knower")].name + " " + Characters[GetCharacterIndex("Knower")].lastname;
}


при создании своего НПС фиксирует его имя и фамилию. Без этого кода, имя и фамилия будeт все время разные, по случайному выбору игры.

файл EuropeanTowns.с (путь program\scripts)

взято из игры Корсары 3 - Ветер свободы
 
AnubisДата: Среда, 25.06.2014, 23:51 | Сообщение # 3
Адмирал флота
Группа: Завсегдатаи
Сообщений: 88
Репутация: 7
Статус: Offline
Как сделать видимыми локаторы

Чтобы увидеть все локаторы нужно открыть файл locations_loader.c (путь program\locations), найти строку VisibleLocatorsGroup("item", 1.0, 15.0, 255, 255, 0, 255);, и удалить символы /* и */, или // со всех требуемых вам локаторов, обычно этих хватает:

Код
VisibleLocatorsGroup("goto", 1.0, 15.0, 55, 255, 0, 0);
VisibleLocatorsGroup("reload", 1.0, 15.0, 55, 0, 255, 0);  
VisibleLocatorsGroup("sit", 1.0, 15.0, 55, 255, 0, 0);
VisibleLocatorsGroup("rld", 1.0, 15.0, 255, 0, 255, 0);  
VisibleLocatorsGroup("box", 1.0, 15.0, 255, 255, 0, 0);
VisibleLocatorsGroup("randitem", 1.0, 15.0, 255, 255, 0, 255);


При следующем включении игры вы будите видеть все локаторы.
 
AnubisДата: Четверг, 26.06.2014, 12:52 | Сообщение # 4
Адмирал флота
Группа: Завсегдатаи
Сообщений: 88
Репутация: 7
Статус: Offline
Объяснения к некоторым из win_condition

Нахождение ГГ в локации
Код
PChar.quest.(название case квеста).win_condition.l1 = "location";
PChar.quest.(название case квеста). win_condition.l1.location = "id локации";
PChar.quest.(название case квеста).win_condition = "(название case квеста)";


Время наступление следующего case квеста, то есть таймер (здесь 10 дней)
Код
PChar.quest. (название case квеста).win_condition.l1 = "Timer";
PChar.quest. (название case квеста).win_condition.l1.date.day = GetAddingDataDay(0, 0, 10);
PChar.quest. (название case квеста).win_condition.l1.date.month = GetAddingDataMonth(0, 0, 10);
PChar.quest. (название case квеста).win_condition.l1.date.year = GetAddingDataYear(0, 0, 10);
PChar.quest. (название case квеста).win_condition.l1.date.hour = rand(23);
PChar.quest. (название case квеста).win_condition = "(название case квеста)"


Смерть НПС
Код
PChar.quest.(название case квеста).win_condition.l1 = "NPC_Death";
PChar.quest.(название case квеста).win_condition.l1.character = "id НПС";
PChar.quest.(название case квеста).win_condition = "(название case квеста)";


ГГ покидает локацию
Код
PChar.quest.(название case квеста).win_condition.l1 = "ExitFromLocation";
PChar.quest.(название case квеста).win_condition.l1.location = "id докации";
PChar.quest.(название case квеста).win_condition = "(название case квеста)";


Кораблик потоплен или взят на абордаж
Код
PChar.quest.(название case квеста).win_condition.l1 = "Ship_capture_NPC_Dead";
PChar.quest.(название case квеста).win_condition.l1.character = "id НПС";
PChar.quest.(название case квеста).win_condition = "(название case квеста)";


Можно комбинировать win_condition (например):

Код
PChar.quest.(название case квеста 1).win_condition.l1 = "NPC_Death";
PChar.quest.(название case квеста 1).win_condition.l1.character = "id НПС";
PChar.quest.(название case квеста 1).win_condition = "(название case квеста 1)";
PChar.quest.(название case квеста 2).win_condition.l1 = "ExitFromLocation";
PChar.quest.(название case квеста 2).win_condition.l1.location = "id докации";
PChar.quest.(название case квеста 2).win_condition = "(название case квеста 2)";


Допустим должна произойти дуэль между ГГ и НПС. Прописав такое выражение в case квеста получим два разных результата: если ГГ убьет НПС запуститься case квеста 1, а если сбежит из локации, то case квеста 2
 
AnubisДата: Четверг, 26.06.2014, 12:53 | Сообщение # 5
Адмирал флота
Группа: Завсегдатаи
Сообщений: 88
Репутация: 7
Статус: Offline
Как заменить модельку и имя ГГ в игре КТДМ на свои

Для того, чтобы сменить модель ГГ в игре КТДМ, вы должны уже иметь следующее:
Модель ГГ – файл «название» .gm. Например: my_barmen.gm
Текстура для модели ГГ – файл «название».tga.tx. Например: my_barmen_ttx.tga.tx
Портреты ГГ – файлы размером 256х256, 128х128, 64х64, и 64х64 для BATTLE_INTERFACE в круглой рамке, но имеющие одинаковое название face_номер.tga.tx. Например: face_777.tga.tx

Перейдем к интеграции новой модели ГГ в игру. Для начала откройте папку Characters (путь: RESOURCE\MODELS) и помещаем туда свой файл с моделью ГГ, в нашем случае файл my_barmen.gm. Далее открываем папку Characters (путь: RESOURCE\Textures) и помещаем туда файл с текстурой модели, в нашем случае my_barmen_ttx. tga.tx. После этого откроем файл CharacterUtilite.с (путь: program\characters) и найдем там такую строку: void FaceMaker(aref rCharacter), берем строку, например case "blaze": rCharacter.FaceId = 1; break;, где:
case "blaze-название модели": rCharacter.FaceId = 1-номер портрета; break;, копируем ее и изменяем ее под наши файлы, должно получится:

Код
case " my_barmen":   rCharacter.FaceId = 777; break;


Открываем далее файл characters_init.с и ищем строку ch.model в блоке:
Код
////////////////////////////////////////
// ПЕРВЫЙ ПЕРСОНАЖ - ПАРЕНЬ
////////////////////////////////////////

и заменяем название модели на свою, в нашем случае получится так:
Код
ch.model        = "my_barmen";


Итак, ваша модель в игре, но нет портретов нашей модели. Берем файлы face_777.tga.tx и раскидываем их по папкам соответствующего размера. 256х256, 128х128, 64х64 соответственно в папки 64, 128, 256 (путь: RESOURCE\Textures\INTERFACES\PORTRAITS), а так же файл с размером 64х64, который в круглой рамке, помещаем в папку PORTRAITS (путь: RESOURCE\Textures\BATTLE_INTERFACE), но это еще не все. Надо отдельно прописать файл с размером 128х128. Открываем файл pictures.ini (путь: RESOURCE\INI\interfaces). Находим там такой код:
Код
[FACE128_0]
sTextureName    = portraits\128\face_0.tga
wTextureWidth    = 128
wTextureHeight    = 128
picture = face,0,0,128,128

копируем и изменяем ее под свои значения, в нашем случае получится так:
Код
[FACE128_777]
sTextureName    = portraits\128\face_777.tga
wTextureWidth    = 128
wTextureHeight    = 128
picture = face,0,0,128,128

Теперь у нашего ГГ видно личико.

Если вам вступит поменять и имя, то делается это так. Common.ini (путь: RESOURCE\INI\texts\russian) ищем такие строки:
Код
string = Blaze,"Питер"
string = Sharp,"Блейк"


и меняем имя как фантазии хватит, например:
Код
string = Blaze,"Васисуалий"
string = Sharp,"Лоханкин"


Вот и все. Теперь можно играть своей моделькой ГГ. И не забудьте начать игру сначала, иначе изменения не вступят в силу.

Если возникнут вопросы, то задавайте их в этой теме.
 
  • Страница 1 из 1
  • 1
Поиск:

Design by Mark © 2024 , Redesign by Anubis © 2024
Сделать бесплатный сайт с uCoz
Яндекс.Метрика