EXIT
Login for OTK
Информация приведенная ниже рассчитана на людей освоивших базовый уровень картостроения и разбирающихся в description.ext файлах по крайней мере настолько, насколько необходимо для интеграции в игру своих звуков и музыки.

Изначально данный метод разработали DenVdmj, Vova_fox и Lost за что им огромное спасибо!
Активно он применяется пока только в нашей команде (ОТК), но тем не менее, это очень удобно и сокращает количество писанины во много раз. Судя по тому что никто кроме нас этим не пользуется, можно сделать логичный вывод что данный метод неизвестен широкой общественности ни у нас, ни на официальном форуме. К примеру, на официале, разработчик одной программы для написания и контроля скриптов и конфигов был сильно удивлен что такие конструкции работают в ArmA 2 и долго в это не верил Smile


Итак.
пажелеем пальцы зачем писать всёвремя одно и тоже (c) Vova_fox

#define arg(i) (_this select (i))

_entry = arg(0);
_depth = arg(1);
_indent = arg(2);

в данном примере вместо i подставляется нужный номер.

ЗВУКИ
class CfgSounds
{
sounds[] = {};
#define dialog(n) \
class dialog##n \
{ \
name = "sound"; \
sound[] = {dialog##n.ogg, db+0, 1.0}; \
titles[] = {0, $STR_dialog##n}; \
}; \
dialog(1);
dialog(2);
};
Каждый из этих звуков имеет свой номер (1,2,3,4) который вставляется в ##, соответственно первый звук имеет имя dialog1, имя звука dialog1.ogg и титры STR_dialog1, второй - dialog2, dialog2.ogg, STR_dialog2 и т.д
Вызываем звуки как обычно - player say "dialog1\dialog2" и т.д
N это закрывающая буква. Вот на это (##n) подставляется номер.

пример с двумя дефайнами
    class CfgSounds
{
sounds[] = {};
#define Tarasov(a) \
class Tarasov##a \
{ \
name = "sound"; \
sound[] = {Tarasov##a.ogg, db+0, 1.0}; \
titles[] = {0, $STR_Tarasov##a}; \
}; \

Tarasov(1);
Tarasov(2);
Tarasov(3);

#define Kopitkin(b) \
class Kopitkin##b \
{ \
name = "sound"; \
sound[] = {Kopitkin##b.ogg, db+0, 1.0}; \
titles[] = {0, $STR_Kopitkin##b}; \
}; \

Kopitkin(1);
Kopitkin(2);
Kopitkin(3);
};

Звуки имеют имена: Tarasov1, Tarasov2, Kopitkin1, Kopitkin2 ... и т.д...

Заменили имя дефайна, заменили содержимое, самое главное во втором дефайне в скобках (b) и по всему классу идёт так же b. Т.е какую ты переменную вставишь в дефайн, вот той ты и должен закрыть.

РАДИО
class CfgRadio
{
sounds[] = {};
#define radio(n) \
class radio##n \
{ \
name="Radio"; \
sound[] = {radio##n.ogg, db+0, 1.0}; \
title = $STR_radio##n; \
}; \
radio(1);
radio(2);
};
Теперь в миссии будут определены 2 радио - radio1 и radio2, которые имеют звуки radio1.ogg, radio2.ogg соответственно и титры STR_radio1 и STR_radio2 так же

Помимо этого, можно пользоваться этим методом при написании bikd файлов
class Sentences
{
#define TEXT(I,N) \
class Player_##I##_##N \
{ \
text = $STR_Player_##I##_##N##; \
speech[] = {\sound\PLAYER\Player_##I##_##N##.ogg}; \
class Arguments {}; \
};

TEXT(Tr1,1)
TEXT(Tr2,1)
TEXT(Tr2,2)
TEXT(Tr2,3)
TEXT(Tr1,01)
TEXT(Tr1,02)
TEXT(Tr1,03)
TEXT(Tr1,04)
TEXT(Tr1,05)
TEXT(Tr1,06)
TEXT(Vid1,1)
TEXT(Vid1,2)
TEXT(Vid1,3)
TEXT(Vid2,1)
TEXT(Vid2,2)
};

class Arguments{};
class Special{};
startWithVocal[] = {hour};
startWithConsonant[] = {europe, university};
кроме того, есть метод замены множества иных значений, но об этом чуть позже.

З.Ы. Это все будет форматироваться, дополняться и в конечном итоге окажется в H&T

А теперь: Ахтунг!
Любое копирование информации приведенной здесь допускается только при условии указания автора, источника копирования (ссылка на данную статью), а так же при условии наличия ссылки на сайт OTK Studio.
Любая модификация текста данного информационного пособия на других ресурсах - только с согласия автора.

Автор статьи: Wass, Студия OTK.

Наш баннерour banner

OTK Studio website

Партнерыpartners

Russian largets portal
Internacional news website
Global news website
Ukrainian news website
Portuguese news website
SARMAT news website

Кто на сайтеwho on site

Сейчас 5 гостей онлайн