Перенос модели оружия с Garry's Mod в Counter-Strike:Source
Райан Купер

PRO-Смотритель


Рейтинг: 453


Сообщений: 91


Спасибок: 72

Необходимые программы

1: Crowbar

2: HLMV (Уже встроен по умолчанию в "Counter-Strike:Source\bin"

3: Notepad++ (По желанию)

4: Audacity/AIMP

Настройка программ

Crowbar:

1: Жмём на вкладку "Set Up Games"

2: Переносим взгляд ниже и жмём на кнопку "Browse..."

 

 
Спойлер

 

 

3: Открываем папку где находятся игры (Steam или SteamLibary)

4: Проверяем, и пока что закрываем программу.

HLMV:

Если появляется ошибка "Unable to find gameinfo.txt..." то:

Открываем cmd и пишем: setx vproject "директория файлов игры". Например: setx vproject "D:\steam\steamapps\common\Counter-Strike Source\cstrike"

Перенос модели 

Скачиваем аддон с оружием с мастерской, например: ArcCw и дополнения к нему . Переходим по директории "steamapps\workshop\content\4000" и наблюдаем какие-то цифры, здесь и скрывается наш аддон который мы скачали. Сортируем по дате и открываем первую папку. Затем открываем Crowbar и переходим во вкладку "Unpack". Перекидываем файл .gma в программу и видем файлы аддона: "lua","materials", "models", "sound". Если вы видете только файл с расширением .bin то: Запускаете GM, ждёте, затем закрываете. Переходим вGarrys'mod/garrysmod/addons/ и ищем наш аддон. В окне Output to: выбираем Subfolder. Жмякаем на кнопку Unpack в нижней части и ждём. Нажимаем на кнопку goto  и переносимся в место где ноходятся наша папка unpacked 0.74, тут и находятся наш контент, можно переместить в удобное для вас место. Папку lua можно удалить она нам не нужна. 

Теперь работаем с моделью. Создаём папку в cstrike/custom. Например я буду переносить mp5. Переходим в models/ пока не увидем файлы с расширением .mdl, .dx80.vtx, .dx90.vtx, .phy, .vvd, .sw.vtx. Выбираем файлы понравившейся модели, например: c_ur_mp5.@ . Где @ там расширения которые описаны выше. Переходим в Crowbar, вкладка decompile и ставим такие настройки: 

 
Спойлер

Перетаскиваем .mdl файл в программку и жмём Decompile. Итак теперь у нас есть файлы .smd в основном их куча так что откроем .mdl файл HLMV (и не забудем переместить папку materials в нашу папку в custom) и ещё откроем файл .qc через текстовый редактор. Открыв этот файл мы увидем следующее:

 
Спойлер
// Created by Crowbar 0.74
 
$modelname "weapons/arccw\c_ur_mp5.mdl"
 
$bodygroup "0"
{
studio "ironSIGHT.smd"
studio "scalarSIGHT.smd"
studio "altSIGHT.smd"
blank
}
$bodygroup "1"
{
studio "mp5UPPER.smd"
studio "mp5sdUPPER.smd"
studio "mp5kUPPER.smd"
studio "swordUPPER.smd"
}
$bodygroup "2"
{
studio "fourLOWER.smd"
studio "sefLOWER.smd"
}
$bodygroup "3"
{
studio "fixedSTOCK.smd"
studio "collapseSTOCK.smd"
studio "collapseSTOCKcoll.smd"
studio "pdwSTOCK.smd"
studio "pdwSTOCKfold.smd"
studio "tacticSTOCK.smd"
studio "tacticSTOCKfold.smd"
studio "futureSTOCK.smd"
studio "futureSTOCKcoll.smd"
studio "futureSTOCKfold.smd"
studio "buttSTOCK.smd"
}
$bodygroup "4"
{
studio "standardHG.smd"
studio "flashHG.smd"
studio "flashmlokHG.smd"
studio "slimHG.smd"
studio "picaHG.smd"
studio "mlokHG.smd"
studio "kurzgripHG.smd"
studio "kurzslimHG.smd"
studio "kurzmlokHG.smd"
blank
studio "eodHG.smd"
}
$bodygroup "5"
{
studio "standardMAG.smd"
studio "smallMAG.smd"
studio "straightMAG.smd"
studio "drumMAG.smd"
}
$bodygroup "6"
{
blank
studio "mp5RAIL2.smd"
}
$bodygroup "boolet"
{
studio "boolet.smd"
studio "boolet4drum.smd"
}
$bodygroup "railz"
{
blank
studio "rail_sd.smd"
studio "rail_eod.smd"
}
 
 
$surfaceprop "weapon"
 

Ничего не понятно? Объясняю:

 
Спойлер
$modelname "weapons/arccw\c_ur_mp5.mdl" Отвечает за название конечной модели. В данном случае она будет c_ur_mp5.mdl

$bodygroup "0" - Добавляет группу .smd 
{
studio "ironSIGHT.smd" - Добавляет .smd в скомпилированый файл. Где "ironSIGHT.smd", название файла с расширением
blank - пустота
}

$surfaceprop "weapon" - материал объекта. Будто металл, дерево и т.п.

$sequence - анимация


В файле ещё много переменных, которые можно посмотреть на valvesoftware

Итак, нам нужны только $bodygroup.  В HLMV во вкладке Model есть несколько меню выбора. Нам нужны только два первых:

 
Спойлер

В первой колонке: название нашего $bodygroup.

Во второй: наши модели которые загружены в $bodygroup, и все они идут так как указано в файле .qc

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

А так зачем мы это делаем? Для того чтобы размер скомпилированой модели был намного меньше или для того чтобы "кастомизировать" модель. Можете конечно этого не делать, дело ваше.

Теперь добавляем наши руки, Добавим их командой $model "hand" "название.smd", команду вписываем в наш .qc файл. Стандартные руки можно скачать отсюда. (изменить расширение файла с .txt на .smd). Руки должны находится в одной папке где .qc. А также нужно добавить строчку $cdmaterials "models\weapons\v_models\hands\" к осталным таким командам.

Затем меняем анимации. Из порядок должен ТОЧНО совпадать с теми, что у стандартной модели. Не больше не меньше. Лишние анимации удалить, а недостоющие продублировать. В моём случае для mp5 порядок такой:

 
Спойлер
idle
reload
draw
shoot1
shoot2
shoot3

Порядок заменяемой модели можно узнать так: декомпилировать модель, открыть .qc  файл и просмотреть сам порядок $sequence по названию.

Также нужно изменить название конечной модели на стандартное. Название можно узнать в cstrike и файл cstrike_pak_dir.vpk переместить в Crowbar (конечно же нажав на вкладку unpack) и искать по данной директории models/weapons с префиксом v_.

После того как изменили порядок анимаций нужно сохранить а затем компилировать. Заходим во вкладку Compile и выбираем игру на которую мы хотим скомпилировать модель. В нашем случае это Counter-Strike: Source, перекидываем наш .qc файл. Output to  меняем также на Subfolder, и нажимаем Compile и ждём компиляции.

На этом всё. Во второй части будем добавлять звуки, а создадим "евенты" в анимациях.

 

TKFmc7R.gif

Спасибо сказали: Zoid, .д1ьнс, Fleeeshi, BETELVEGA
Райан Купер

PRO-Смотритель


Рейтинг: 453


Сообщений: 91


Спасибок: 72

Правка к первой части

 

 
Спойлер
$modelname "weapons/v_smg_mp5.mdl" // название конечной модели

$bodygroup "0" - создаёт группу .smd. "0" // название
{
 studio "ironSIGHT.smd" // непостредственно сам .smd файл
 
}

$cdmaterials "" // путь к текстурам

$sequence "reload_empty" { // добавляет анимацию с названием
 "c_ur_mp5_anims\reload_empty.smd" // сама анимация
 activity "ACT_VM_RELOAD" 1 // действие которое вызывает анимацию
 fadein 0.2 // плавывный переход
 fadeout 0.2 // плавывный переход
 snap // отключает плавный переход
 fps 30 // скорость проигрывания. Больше-быстрее, меньше-медленнее
}

 

 

Часть 2. Звуки, скрипты

Начнём пожалуй со звуков. Папку sound из нашего аддона перемещаем в нашу папку в custom. Переходим туда, и нужно звук стрелбы чуть редактировать. Запускаем Audacity и перетаскиваем наш файл туда, наблюдаем следующую картину:

 

 
Спойлер

Как мы видим, один канал отличается от другого. Первый канал это наш вытсрел, второй выстрел издалека. Жмём сюда и разделяем наш стереотрек в моно.

 

 

 
Спойлер

 

Затем удаляем второй канал и экспортируем наш файл в .wav c такими настройками:

 

 
Спойлер

 

Бывает что звук выстрела и выстрела издалека уже разделены на два файла. Тогда нужно только экспортировать звук выстрела в .wav.

Точно также мы делаем с другими звуками, перетаскиваем нашу кучку файлов в программу и делаем экспорт нескольких файлов с такими же настройками как сверху. После чего видим такое окно:

 

 
Спойлер

 

Лучше создать отдельную папку. Удаляем наши старые файлы звуков и перекидываем туда.

Со звуками покончено, и в дело вступают скрипты. Первое что нам нужно, это изменить положение рук с левой на правую. Для этого нужно создать папку scripts  в нашей папке в custom. Скрипты можно скачать отсюда, и перекидываем в нашу папку scripts. После того как перекинули скрипты, создаём ещё одну папку weapons и создаём текстовый файл с названием нашего оружия, например: mp5.txt. Открываем файл Список звуков для оружий и в поиске (CTRL+F) пишем название оружия для которого нужно скопировать список звуков, в моём случае это mp5. Копируем всё до следуещего оружия и вставляем в наш файл в weapons. На этом пока всё, но мы скоро вернёмся к нашему файлу.

TKFmc7R.gif

Спасибо сказали: BETELVEGA
Райан Купер

PRO-Смотритель


Рейтинг: 453


Сообщений: 91


Спасибок: 72

Часть 2.1 Евенты

 

Евенты (event) - переменная в .qc файле которая отвечает за звуковые эффекты и визуальные эффекты в блоке с анимацией. 

Выглядит она так:

 

 
Спойлер
{ event тип кадр "действие" }
Где тип - туда встааляется переменные которые будут отвечать за действие.
Распрострянёные:
5004 // переменная отвечающая за проигрывания звука
5001 // переменная отвечающая за отображения огня во время выстрела
AE_CLIENT_EFFECT_ATTACH 0 // переменная отвечающая за визуальный эффект. Например падающие гильзы после выстрела. Где 0 - номер $attachment 

Где кадр - туда вставляется номер кадра на котором мы хотим увидеть/услышать евент
Где действие  - туда вставляется действие которое должно проиграться. Пример:
EjectBrass_9mm 2 100
Где 2 - кадр
где 100 - неизвестно, скорее всего это угол

Итак лезем в .qc файл и ищем евенты, если их нету то нужно сделать самим, открываем HLMV

 

 

 
Спойлер
кстати, лучше сделать так, чтобы он открывал их по двойному щелчку по .mdl. Как сделать? Кликаем два раза по .mdl и ищем Найти другое приложение на этом компьютере. Затем выбираем наш HLMV и готово

и видим снизу ползунок, он будет нам нужен. Для начала сделаем проигрывания звуков при перезарядке, переходим во вкладку Sequence и выбираем анимацию перезарядки. Переходив в .qc файл и вставляем евент { event 5004 0 "" } . Начнём, двигаем ползунок и подбираем кадр, на котором должен будет звук. В моём случае там нужен звук движения затвора назад, ищем подходящий звук. Нашли? отлично, пока откладываем его. Теперь нам нужно вставить вмето 0, кадр на котором должен быть звук, например 4. Теперь название в скобках, пусть будет mp5.chback. должно выглядить примерно так { event 5004 4 "mp5.chback" }. Точно также делаем с остальными звуками меняя кадр и названия. После этого блок с анимацией должен выглядить так:

 

 

 
Спойлер
$sequence "reload_empty" {
 "c_ur_mp5_anims\reload_empty.smd"
 activity "ACT_VM_RELOAD" 1
 { event 5004 4 "mp5.chback" }
 { event 5004 10 "mp5.chlock" }
 { event 5004 30 "mp5.magout" }
 { event 5004 44 "mp5.magin" }
 { event 5004 66 "mp5.chamber" }
 fadein 0.2
 fadeout 0.2
 snap
 fps 30
}

Кстати, для анимации стрелбы не нужно делать евент проигрывания звука, вместо него нужно сделать евент вспышки и выброс гильз. Должно выглядить так:

 

 

 
Спойлер
$sequence "fire" {
 "c_ur_mp5_anims\fire.smd"
 activity "ACT_VM_PRIMARYATTACK" 1
 { event AE_CLIENT_EFFECT_ATTACH 5 "EjectBrass_9mm 2 100" }
 { event 5001 0 "1" }
 fadein 0.03
 fadeout 0.03
 fps 30
}
5-аттачмент где должна выбрасываться гилза

Если у вас есть все евенты, тогда не их нужно трогать, а переходить к следующему шагу.

После прописки евентов лезем в наш файл в scripts/weapons со списком звуков. Объясняю команды:

 

 

 
Спойлер
"Weapon_MP5Navy.Single" // название как в .qc
{
"channel" "CHAN_WEAPON" // канал
"volume" "1.0" // громкость
 
"CompatibilityAttenuation""1.0"
"pitch" "PITCH_NORM"
 
"wave" "weapons/mp5/mp5-attack.wav" // наш файл
 
}
 
"mp5.chback"
{
"channel" "CHAN_ITEM"
"volume" "1.0"
"CompatibilityAttenuation""1.0"
"pitch" "PITCH_NORM"
 
"wave" "weapons/mp5/mp5-clip-out.wav" 
}

Вставляем названия как в .qc и вставляем путь до файла с названием звука. Папку sounds  не берём! Если не хватает, просто копируем, а если лишнее - удаляем

 

Должно выглядить так:

 

 
Спойлер
"Weapon_MP5Navy.Single"
{
"channel""CHAN_WEAPON"
"volume""1.0"
 
"CompatibilityAttenuation""1.0"
"pitch""PITCH_NORM"
 
"wave""weapons/mp5/fire_first.wav"
 
}
 
"mp5.chback"
{
"channel""CHAN_ITEM"
"volume""1.0"
"CompatibilityAttenuation""1.0"
"pitch""PITCH_NORM"
 
"wave""weapons/mp5/chback.wav" 
}
 
"mp5.chlock"
{
"channel""CHAN_ITEM"
"volume""1.0"
"CompatibilityAttenuation""1.0"
"pitch""PITCH_NORM"
 
"wave""weapons/mp5/chlock.wav" 
}
 
"mp5.magout"
{
"channel""CHAN_ITEM"
"volume""1.0"
"CompatibilityAttenuation""1.0"
"pitch""PITCH_NORM"
 
"wave""weapons/mp5/magout.wav" 
}
 
"mp5.magin"
{
"channel""CHAN_ITEM"
"volume""1.0"
"CompatibilityAttenuation""1.0"
"pitch""PITCH_NORM"
 
"wave""weapons/mp5/magin.wav" 
}
 
"mp5.chamber"
{
"channel" "CHAN_ITEM"
"volume""1.0"
"CompatibilityAttenuation""1.0"
"pitch" "PITCH_NORM"
 
"wave" "weapons/mp5/chamber.wav" 
}

Сохраняем файл. Теперь можно скомпилировать модель. Открываем модель в HLMV и выбираем анимацию перезарядки, и слышим симфонию. Переходим в custom/название папки/models и создаём папку weapons, и перекидываем нашу модельку.

 

Пора проверить её в игре! Но есть один нюанс, в игре с ботами мы точно проверить её не сможем, т.к. создаётся сервер непосредственно от нашей игры. Есть два способа, зайди на любой сервер и купить наше заменяемое оружие или создать свой локальный сервер (есть много гайдов как это сделать). 

Теперь какие могут быть проблемы:

  1. Анимация обрывается
  2. Анимация прошла, но кд большой 

В первом случае: в .qc строчке fps увеличиваем значение компилируем, перемещаем, тестим до тех пор, пока анимация не начнёт проигрываться нормально.

Во  втором случае: fps понижаем, компилируем, перемещаем, тестим, пока результат вас не устроит.

А на этом всё, перенос модели закончен.

P.S. Проблемы, вопросы писать в этой теме

Отредактировал: [PRO-Смотритель] Райан Купер, 4 февраля 2024 г, 16:35

TKFmc7R.gif

Спасибо сказали: BETELVEGA
Авторизация
  Войти через ВК
Последнее на форуме

Добавление азартной игры

Дата: 11 июля 2024 г, 12:47

Автор: kirieshka

заявка на смотра

Дата: 21 июня 2024 г, 11:15

Автор: CyXArik08

Заявка на смотрителя- LEPIK - CS:GO MiniGame

Дата: 17 июня 2024 г, 21:34

Автор: CyXArik08

Заявка на Смотрителя asdasd - Minigame

Дата: 12 июня 2024 г, 19:18

Автор: CyXArik08

CSGO MG смотритель mr.BlØǾĐツ

Дата: 9 июня 2024 г, 11:55

Автор: CyXArik08