<<<Назад <<< <<<Меню>>> >>> Далее>>>

Использование речи и радио


Вы можете заставить юнит произнести какую-либо фразу.

Во время разговора текст фразы будет отображаться в середине экрана. Для этого необходимо:

  1. В файле stringtable.csv нужно создать строку, определяющую текст фразы, которую по вашему замыслу должен будет произнести персонаж. В строке установите идентификатор фразы (назовем его STRM_hello), текст фразы и комментарий. Поле комментария не используется, но в нем можно указывать имя того, кто произносит речь, чтобы было легче работать в дальнейшем.
  2. Для разговоров вам не нужно определять экземпляр CfgIdentities в файле descriptions.ext.
  3. В файле descriptions.ext нужно создать экземпляр класса CfgSounds для речи, которую вы хотите услышать от персонажа. Дайте классу идентификатор (назовем его VHello). В определении класса необходимо задать имя звука (в demo всегда пустое), используемый .ogg файл со звуком, и идентификаторы текстовых строк, которые вы хотите увидеть, из файла stringtable.csv (например, STRM_hello из шага 1). Более подробное описание файла descriptions.ext лежит здесь. А научиться использовать собственные .ogg файлы можно, прочитав статью Создание собственных звуков и музыки.
  4. Убедитесь, что вы добавили имя .ogg файла в файл descriptions.ext (без расширения .ogg) в массив sounds[], который находится сразу после строки класса CfgSounds.
  5. Дайте говорящему юниту ярлык (tag), используя его поле text (назовем его truckdriver).
  6. Чтобы заставить юнит truckdriver сказать фразу VHello в поле expActiv,expDesActiv или init добавьте:
    truckdriver say ""VHello"";
    где VHello - это имя класса CfgSounds из файла description.ext (см. шаг 3)


Как научить юниты говорить по радио.

Данная процедура аналогична вышеописанной. Но текст фразы при этом будет отображаться в нижней части экрана.

  1. В файле stringtable.csv надо создать строку, определяющую текст произносимой персонажем по радио фразы. В строке вы задаете идентификатор (назовем его STRM_fallback), собственно текст фразы и комментарий. Строка комментария также обычно используется для обозначения автора реплики и не является обязательной.
  2. Для радио-переговоров вам не нужно определять экземпляр класса CfgIdentities в файле descriptions.ext.
  3. В файле descriptions.ext надо будет создать экземпляр класса CfgRadio для реплики, которую вы хотите услышать в исполнении персонажа. Дайте классу уникальный идентификатор (назовем его RFallback). В определении класса вы задаете название звука (в demo всегда пустое), используемый звуковой .ogg файл, и идентификаторы отображаемых текстовых строк из файла stringtable.csv (например, STRM_fallback из шага 1). Для дополнительной информации обратитесь к описанию формата файла descriptions.ext. Для обучения использованию своих собственных .ogg файлов прочитайте статью Как добавлять свои звуки и музыку.
  4. Убедитесь, что вы добавили имя .ogg файла в файл descriptions.ext (без расширения .ogg) в массив sounds[], который находится сразу после строки класса CfgRadio.
  5. В файле missions.sqm вам нужно прописать идентификацию (identity) юнита, который, по вашему мнению, должен произнести желаемую фразу. Для этого добавьте этому юниту в поле init строчку:
    this setidentity ""Officer"";
    где Officer - это имя класса идентификации в файле descriptions.ext (см. шаг 2)
    Кроме того, не забудьте присвоить юниту ярлык с помощью его поля text (назовем его off).
  6. Чтобы юнит off произнес по радио фразу RFallback, обращаясь ко всем своим (юниты с идентичным значением side) в полях expActiv, expDesActiv или init добавьте строчку: off sideRadio ""RFallback"";
    где RFallback - это имя класса CfgRadio в файле description.ext (см. шаг 3).
  7. Чтобы юнит off произнес по радио фразу RFallback, обращаясь ко всем юнитам из своей группы в полях expActiv,expDesActiv или init добавьте строчку:
    off groupRadio ""RFallback"";
    где RFallback - это имя класса CfgRadio в файле description.ext (см. шаг 3).
  8. Чтобы юнит off произнес по радио фразу RFallback, обращаясь ко всем юнитам, находящимся в том же транспортном средстве, что и он сам в полях expActiv,expDesActiv или init добавьте строчку:
    off vehicleRadio ""RFallback"";
    где RFallback - это имя класса CfgRadio в файле description.ext (см. шаг 3).
  9. ы юнит off произнес по радио фразу RFallback, обращаясь ко всем юнитам в игре в полях expActiv,expDesActiv или init добавьте строчку:
    off globalRadio ""RFallback"";
    где RFallback - это имя класса CfgRadio в файле description.ext (см. шаг 3).
Вы можете также включить/выключить радио, прописав в полях expActiv,expDesActiv или init строчку:
EnableRadio true;//включить
EnableRadio false;//выключить


Как научить юниты общаться в чате.

Кроме всего прочего, вы также можете заставить персонаж говорить в чате (то есть чтобы надпись отображалась в нижнем левом углу экрана). В принципе, эта функция предназначена для обмена текстовыми сообщениями в режиме многопользовательской игры, но это работает и с персонажами в однопользовательском режиме. Текст сообщения будет появляться вместе с именем юнита там же, где и радио-сообщения. Достоинство этого способа состоит в том, что вам не нужно предварительно определять строку в файле stringtable.csv! Недостаток - вы не сможете связать фразу со звуковым файлом. Для реализации этой возможности необходимо сделать следующее:

  1. Для чата НЕ нужно определять строку в файле stringtable.csv.
  2. Для чата НЕ нужно определять экземпляр CfgIdentities в файле descriptions.ext.
  3. Для чата НЕ нужно добавлять класс в файл descriptions.ext.
  4. Необходимо в файле missions.sqm прописать идентификацию для юнита, который будет использовать чат. В поле юнита init добавьте строчку:
    this setidentity ""Officer"";
    где Officer - это имя класса identity в файле descriptions.ext (см. шаг 2).
    Не забудьте присвоить юниту ярлык при помощи поля text (назовем его off).
  5. Чтобы юнит off выдал в чат фразу "My advice...drink heavily", адресованную всем своим, в полях expActiv,expDesActiv или init добавьте строчку:
    off sideChat ""My advice...drink heavily"";
  6. Чтобы юнит off произнес в чат реплику "Fat drunk and stupid is no way to go through life son", адресованную всем юнитам в своей группе, в полях expActiv,expDesActiv или init добавьте строчку:
    off groupChat ""Fat drunk and stupid is no way to go through life son"";
  7. Чтобы юнит off сказал всем, кто сидит в ним в одном транспортном средстве, фразу "Premed...prelaw...whats the difference?", в полях expActiv,expDesActiv или init добавьте строчку:
    off vehicleChat ""Premed...prelaw...whats the difference?"";
  8. Чтобы юнит off сообщил всем юнитам, участвующим в игре, следующее "Mind if we dance with your dates?", в полях expActiv,expDesActiv или init добавьте строчку:
    off globalChat ""Mind if we dance with your dates?"";


Для чего нужен класс CfgIdentities?

Он используется для обеспечения уникальности персонажей:

  1. Поле name используется, когда нужен встроенный звук для определения имени говорящего. Например, если для персонажа, отдающего приказ на mount (залезть в транспортное средство), определить имя "Dude", то вы увидите "Dude" вместо обычного имени в появившейся строке с приказом в игре.
  2. Поля face и glasses позволят вам обеспечить определенную уникальность персонажей, заменив заданные изначально лица.
  3. Поля voice и pitch дают вам возможность использовать разные голоса, когда персонаж произносит одну из встроенных фраз (например mount). В демо был единственный голос - "Adam". У поля pitch значение 1.0 задается по умолчанию. Меньше 1.0 - более низкий голос, а больше 1.0 - более высокий.
  4. Чтобы прописать идентификацию персонажа, в файле missions.sqm нужно прописать идентификацию юниту, который вы бы хотели заставить говорить. Для этого в поле юнита init добавьте строку:
    this setidentity ""Driver"";
    где Driver - имя класса CfgIdentity (а не имя в поле name) в файле descriptions.ext.


<<<Назад <<< <<<Меню>>> >>> Далее>>>