Новости:

Форум Infotex WeaponMod

Тема: СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ НА QC ;)  (Прочитано 39742 раз)

Оффлайн Koshak 22 Февраля 2010, 23:19:55

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2836
  • Карма: +271/-16
    • Просмотр профиля
    • Infotex Мир Хобби
СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ НА QC ;)

.qc скрипт - простой текстовый файл или несколько файлов, созданных в текстовом редакторе типа NOTEPAD, и необходимых чтобы компилировать модель. 
Cписок общих команд для studiomdl, с параметрами, описанием, и примером:
$modelname  
Эта команда сообщает studiomdl, где поместить откомпилированную модель.
example: $modelname "C:\Half-Life\valve\models\player\Gordon"
 
$cd <путь>
Эта команда указывает studiomdl текущую рабочую папку. Эта команда такая же как и в DOS'e "cd".
пример: $cd "C:\Half-Life\valve\models\source\Gordon"

$cdtexture
<путь>
Эта команда сообщает studiomdl, где лежат текстуры.
пример: $cdtexture "C:\Half-Life\valve\models\source\Gordon\textures"
 
$externaltextures
Эта команда сообщает studiomdl сохранять ли текстуры модели как отдельный *t.mdl файл. 
пример: $externaltextures
 
$cliptotextures
Эта команда сообщает studiomdl компилировать ли текстуры с моделью. Это обычно используется с моделями игрока для дезматча.
пример: $cliptotextures
 
$scale #
Масштаб модели больше или меньше. По умолчанию всегда равно 1.
пример: $scale 1.2
 
$origin 
Это смещения начала координат модели. Этот параметр нужен для точной настройки модели, если вы к примеру модель сделали выше 0 по координате Z, то вам надо обязательно указать насколько выше вы её поместили или модель будет неправильно показыватся на экране. Внимание: после декомпиляции модели оружия из CS анимации рук сьезжает нафих в совсем не туда куда нужно, с помощью этой команды можно вернуть модель рук обратно не редактируя анимации.
пример: $origin 0 0 36
 
$eyeposition 
Для монстров в одиночной игре, нужно чтобы сообщить игре где глаза монстра находятся относительно начала координат модели.
пример: $eyeposition 0 0 65
 
$body <имя smd файла> [reverse]
Это ссылка на .smd файл сеточной оболочкой модели; базовая модель с кожей. Команда reverse зеркально отражает нормали всех поверхностей, используется только в случае, если происходят некоторые проблемы при экспортировании из 3D MAX, когда нормали поверхностей полностью полностью изменены.
пример: $body studio "monster" reverse 
 
$bodygroup <имя группы> {smd группы}
Это позволяет вашей модели иметь взаимозаменяемые части. Этот пример показывает как сделать монстра, который может держать дробовик, mp5 или ничего. Не включайте .smd расширение. Я несовсем понял как точно пользоватся этой командой, попозже разберусь.
пример:
$bodygroup weapons
{
studio "shotgun"
studio "mp5"
blank

 
$texturegroup <имя группы> {bmp группы}
Команда позволяет вашей модели иметь взаимозаменяемые текстуры. Этот пример показывает, как нормальные текстуры головы и тела могут быть заменены в игре кровавыми текстурами. Убедитесь, что включили .bmp расширение.
пример:
$texturegroup pain
{
{ "body_normal.bmp" "head_normal.bmp" }
{ "body_pain.bmp" "head_pain.bmp" }
}
 
$renamebone <старое имя кости> <новое имя кости>
Character Studio версии 2.x и выше использует другое названия для некоторых из костей двуногого животного. Если вы смешиваете модели, или мультипликации от более ранних версий тогда они должны быть переименованны. Этой командой можно легко переименовать кости в течение компилирования, вместо того чтобы переименовать их в каждом .max файле.
пример: $renamebone "Bip01 R Clavicle" "Bip01 R Arm" 
 
$include <.qc файл>
Включать ли другой .qc файл в компиляцию.
пример: $include "C:\Half-Life\valve\models\player\player_shared.qc" 
 
$attachment <#> <кость> 
Задаёт определённую точку которая присоединяется к заданной кости, потом можно воспроизводить различные эффекты, такие как огонь, взбрызги крови и т. д. в этой точке. Координаты задают удаление точки от кости.
пример: $attachment 0 "Bip01 R Hand" 20 2 5 
 
$controller <#> <кость> <ось вращения> <лимит врашения в градусах>
Эта команда позволяет игре управлять вращением костей. Наиболее очевидный пример - вращение головы монстра, в примере 1. Команда позволяет игре вращать голову от -60 градусов до +60 по оси X. Пример 2 показывает как сделать контроллер рта чтобы монстр мог говорить.
пример 1: $controller 0 "Bip01 Head" XR -60 60
пример 2: $controller mouth "Bone03" ZR 0 45 
 
$hbox <группа #> <кость> 
Команда задеёт hitboxes для костей модели. Эти два примера показывают как назначить хитбоксы ноге.
пример: $hbox 7 "Bip01 R Leg1" 0.31 -3.97 -2.84 17.60 3.94 2.97
пример: $hbox 7 "Bip01 R Foot" -0.56 -2.34 -2.19 3.81 8.00 2.66
 
 
$sequencegroupsize <# в KB>
Это отделяет скелетные анимации от сети в меньшие файлы. Нужно для того чтобы анимации загружались в память только когда необходимо, вместо того чтобы загружать их все. Это полезно для монстров с заданными сценарием анимаций.
пример: $sequencegroupsize 64 
 
$sequence <имя файла> "smd" [motion extraction] [fps <#>] [blend ] [origin ] [scale <#>] [loop] [frame ] ['activity' 'multiplier'] {event <#> } 
Команда указывает компилятору файл с анимацией.
Подробней о параметрах $sequence:
 
[motion extraction] Этот параметр указывает оси по которым будет происходить перемешение модели при воспроизведении анимации. Наиболее общие опции: X, Y, LX, и LY, которые обозначают движения по x и y оси. LX и LY - для линейного движения. X и Y работают также как LX и LY. Это используется в Half-Life, чтобы перемещать монстра. 
 
[fps <#>] Устанавливает скорость проигрывания кадров анимации в секунду.
пример: fps 15 
 
[blend ] Вы можете перечислять два .smd файла мультипликации и смешивать их вместе. Этот пример смешивает от -45 до +45 градусов по оси X. Параметр не изучен.
пример: blend XR -45 45 
 
[origin ] То же самое что и $origin но только применяется к данной анимации.
пример: origin 0 0 13 
 
[scale <#>] То же самое что и $scale но только применяется к данной анимации.
пример: scale 1.3 
 
[loop] Указывает что анимация зацикленна.
пример: loop 
 
[frame ] Это ограничивает воспроизведение кадров анимации.
пример: frame 5 10 
 
['activity' 'multiplier'] Если у вас несколько анимаций к примеру выстрела из одного и тогоже оружия, то данная команда укажет игре что данную анимацию воспроизводить нужно в 3 раза чаще чем остальные.
пример: ACT_RANGE_ATTACK2 3 
 
{event <#> <кадр> <опции>} События которые может вызывать данная анимация. Параметр изменяет не очень много но весма полезен для создания различных эффектов. Можно вызывать: воспроизведение звука, показывание спрайта в определённой точке, запускать определённый механизм на карте или делать еще что-нибудь если заранее запрограмировать то что вам нужно.
 
пример 1: { event 5004 1 "weapons\shoot.wav" }
Случай 5004 - воспроизведение звука. Впишите путь, начинающийся с папки вашего мода..
 
пример 2: { event 5001 1 "20" }
События 5001, 5011 и 5021 - для спрайтов, особенно огня и дыма для оружия. Этот пример запускает mp5 спрайт, muzzleflash1.spr с системой координат 1. "20" указывает, что спрайт # 0 масштабируется в 2 раза больше. Ниже - диаграмма спрайтов с порядковыми номерами и описанием для чего они используются: 
 
0: muzzleflash1.spr - mp5 
1: muzzleflash2.spr - shotgun, pistols 
2: muzzleflash3.spr - hornetgun 
 
Точка крепления должна быть определена для спрайтов. Случай 5001 делает так, чтобы начало координат было в $attachment 0, начало координат 5011-ых спрайтов - в $attachment 1, и начало координат 5021-ых - в $attachment 2.
 
пример 3: { event 5002 10 "5" }
Случай 5002 - для искр. Здесь это проигрывается относительно системы координат 10 и масштабируется 5 раз. 
 
пример 4: { event 7 2 }
Это просто запускает случай # 7 к системе координат 2. Случай 7 - может быть всё что угодно. Это должно быть заданно в програмном коде ИСКУССТВЕННОГО ИНТЕЛЛЕКТА монстра.
 
пример 5: { event 1003 20 "bigexplosion" }
Случай 1003 запускает некий механизм в карте под названием "bigexplosion", к системе координат 20.


Вот примеры команды $sequence:
 
пример 1: $sequence crouch_shoot_mp5 "crouch_shoot_mp5"
Очень простая команда содержащая в себе минимум, необходимый для того чтобы она работала. Crouch_shoot_mp5 - имя анимации, и "crouch_shoot_mp5" - файл анимации, без .smd расширения. 
 
пример 2: $sequence shoot "shoot" { { event 5001 1 "20" } { event 5004 1 "hks1.wav" } }
Этот пример использует события, чтобы показать действие спрайтов и звук для стрельбы из оружия. 
Вот и всё что можно было сказать о содержании qc, далее будут опубликованны примеры различных qc файлов с описанием каждой команды.

Права на мануал принадлежат сайту  http://cs-mapping.com.ua  :104:
У кошки четыре ноги: вход, выход, земля и питание

V D C 23 Февраля 2010, 07:21:47 (#1)

  • Гость
обьясни мне о "безграмотному" для чего это?
  • « Последнее редактирование: 24 Февраля 2010, 09:33:00 от Hamradio »

Оффлайн Koshak 26 Февраля 2010, 07:59:36 (#2)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2836
  • Карма: +271/-16
    • Просмотр профиля
    • Infotex Мир Хобби
обьясни мне о "безграмотному" для чего это?

3D моделирование!
У кошки четыре ноги: вход, выход, земля и питание

VDC 26 Февраля 2010, 14:38:26 (#3)

  • Гость
аааа спс

kran 26 Сентября 2013, 13:57:31 (#4)

  • Гость
Соре за некропостинг, но в $sequence есть ещё один полезный флаг, зовется rotate. Думаю нет смысла обьяснять что это. :)
Пример исп-я:
$sequence "draw_grenade_mode" "draw_grenade_mode" fps 30 rotate 180

Оффлайн Koshak 26 Сентября 2013, 16:59:46 (#5)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2836
  • Карма: +271/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Ага есть такой параметр (диапазон значений -180 до 180)  :-)
У кошки четыре ноги: вход, выход, земля и питание