Material modify control

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Оригинал Material Proxy, Material modify control.

Описание

Объект material_modify_control используется для изменения значений переменных, указанных в специальных Proxy-материалах. Для этих материалов должны быть определены Proxy-действия, основанные на использовании переменных, и эти материалы должны быть отмечены как изменяемые – при помощи ключевого слова "MaterialModify".

Особенности использования

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект может быть установлен в любом месте на карте.
  • На карте может быть установлено множество этих объектов
  • Выбор Brush-объекта, материал которого будет изменяться, осуществляется через свойство "Parent".
  • Материал, указанный в свойстве "Material to Modify" будет изменяться на всей карте, а не только на объекте, указанном в свойстве "Parent".

Ошибки

  Warning.png Внимание:  Функция "StartAnimSequence" работает с ошибкой, приводящей к краху игры. Возможно, есть способ заставить работать эту функцию правильно, поэтому её поддержка оставлена.

Параметры

  • Parent – имя Brush-объекта, на котором наложен материал "Material to Modify";
  • Material to Modify – имя материала, используемого на карте, который будет изменяться; значение этого свойства указывается относительно директории материалов /materials/, поэтому строку "/materials/" указывать не нужно; значение этого свойства может быть например таким: "cs_assault/metalwall002";
  • Material VAR to Modify – имя переменной, объявленной в материале "Material to Modify".

Inputs

  • SetMaterialVar <string> - изменить значение переменной "Material VAR to Modify" в материале "Material to Modify";
  • SetMaterialVarToCurrentTime – установить значение переменной "Material VAR to Modify" равным значению текущего времени в миллисекундах;
  • StartAnimSequence <START_FRAME END_FRAME FRAMERATE LOOP> - указать анимационную последовательность для материала; START_FRAME – начальный кадр, END_FRAME – конечный кадр, FRAMERATE – частота кадров, LOOP – (0 или 1) повторяемость кадров; (у этой функции есть баг, см. пункт "Ошибки").

Карта

csssdk_material_modify_control.vmf

Используются файлы

  • /materials/csssdk/csssdk_material_modify_control.vmt
  • /materials/csssdk/csssdk_material_modify_control2.vmt
  • /materials/csssdk/csssdk_material_modify_control2.vtf

Используются объекты

  • material_modify_control
  • func_button
  • func_detail
  • func_wall
  • func_brush

Описание карты

На карте поставлено два пульта со множеством кнопок, которые рекомендуется нажимать стреляя по ним. Кнопки сгруппированы "в столбик" по три кнопки. Каждая такая группа кнопок изменяет свою переменную, определённую в материалах: csssdk_material_modify_control.vmt и csssdk_material_modify_control2.vmt

Это обычные текстовые файлы, указывающие как должны быть отображаться материалы в игре, поэтому откройте эти файлы при помощи блокнота и посмотрите как они устроены. Найдите в материалах блок "Proxies". Этот блок содержит функции управляющие материалом. Например функция "Sine" изменяет какую-то переменную используя функцию синуса, функция "TextureTransform" всячески поворачивает, масштабирует и сдвигает текстуру на материале. Перед блоком "Proxies" определено несколько переменных, таких как "$CenterVector" или "$RotateAngle". Эти переменные создаёт автор материала, чтобы потом использовать их в функциях блока "Proxies". Вот именно эти переменные и изменяет объект material_modify_control во время игры, задавая им новые значения. Обратите внимание, что если в блоке "Proxies" не указать строку "MaterialModify", то материал не сможет быть изменён в игре при помощи объекта material_modify_control.

Запустите эту карту-пример и понажимайте на кнопки самого большого пульта. Самые верхние кнопки на пульте сбрасывают значения переменных к их значениям по умолчанию, то есть тем значениям, которые указаны в файлах материалов. Изменяя переменные материала, изменяется и поведение материала в игре, потому что всё что делает материал зависит от этих переменных.

Последний пульт имеет всего три кнопки. При нажатии на любую из этих кнопок игра завершит своё выполнение, выдав на экран сообщение о чтении памяти по неизвестному адресу. Это баг игры, описанный в пункте "Ошибки". Рекомендуется поикать возможность использования функции "StartAnimSequence" не приводящую к этой ошибке, но скорей всего это баг разработчиков, вызванный неправильным использованием строковых функций.

Смотрите также