Данная серия уроков предназначена для тех, кто хочет научиться создавать своё собственное оружие для видеоигр, будь то AAA First Person Shooter(FPS) , Survival Game или Third Person Shooter(TPS) . Моделирование оружия - очень простое дело, но занимает уйму времени, так как первоначально мы должны создать High-Poly модель, после этого мы должны сделать ретопологию, тем самым оптимизировав модель для игр, запечь Normal Map с High-Poly , наложить качественные Physically Based Rendering (PBR) текстуры и сделать риггинг 3D модели для последующей анимации. Серия уроков будет разбита на 3 части: 1. Моделирование пистолета, 2. Создание материалов и анимаций для Glock, 3. Импорт модели в Unity3D и создание скрипта стрельбы.

Для создания данной модели мы возьмем бесплатный и очень мощный софт Blender3D . Последняя на момент написания статьи версия Блендера - 2.78. Скачать можно с официального сайта . Вы можете использовать любой другой софт: 3DS Max, Maya и даже отечественный Компас-3D , разница будет только в интерфейсе программы. Для создания текстур мы будем использовать всеми любимый Photoshop , но также подойдет и GIMP .

Чтобы создать Game-Ready Glock , нам нужно придерживаться данного плана:
1. Найти чертежи и несколько референсов пистолета
2. Приступить к моделированию High-Poly
3. Оптимизировать 3D модель для игр
4. Создать PBR текстуры
5. Импортировать Glock в Unity

Чертежи пистолета Glock

Для создания большинства моделей необходимы чертежи. Мы нашли неплохое изображение пистолета Glock 19 спереди, сзади и по бокам. Фотографии не совсем совпадают, но такие погрешности не должны помешать процессу. Но все-таки лучше использовать точные чертежи, например с этого или этого сайта. Итак, чтобы добавить изображение на задний фон, нужно: нажать клавишу N , в открывшемся меню найти вкладку Background Images > Add Image и выбрать нужный файл. Чтобы увидеть изображение, нужно перейти в ортогональный режим, нажав 5 на Numpad . Снизу есть важная характеристика - Opacity (Прозрачность). Добавьте ещё несколько референсов таким же способом, но временно отключив их в этой вкладке. Если вам этот метод не нравится, то можно включить аддон Images As Planes в User Preferences > Add-ons.

Чертежи не могут показать порезы или мелкие части на пистолете. Здесь нам помогут референсы из Google . Поищите как можно больше фотографий Glock с различных сторон.

Моделирование High-Poly оружия

При создании High-Poly модели нет необходимости экономить полигоны, используйте столько, сколько считаете нужным. Не жалейте полигонов на всеразличные мелкие детали и порезы. Для удобства вы можете использовать Hotkeys (горячие клавиши), которые сильно упростят вам жизнь и сэкономят уйму времени. Все полезные горячие клавиши Blender написаны в этой статье: . Нам же понадобятся только некоторые из них: E - экструдирование, G - перемещение, S - масштабирование, Ctrl+B - фаска, Z - переход в режим Wireframe , X - удаление, A - выделение всех элементов, если нажать A в режиме редактирования, то выделятся все точки/ребра/плоскости, H - скрыть объект.

Ретопология High-Poly Glock

На данном этапе нам нужно оптимизировать нашу 3D модель для видеоигр. AAA оружие сейчас должно иметь до 20.000 Tris, если это автомат, до 10.000 Tris, если это пистолет. Это приблизительные значения, для каждого проекта они разные. BlenderMania выпустили очень неплохой урок о том, как сделать ретопологию высокополигонального объекта на Low-Poly 3D модель.

В данном уроке автор рассказывает о том, как использовать Blender3D и MeshLab для создания быстрой ретопологии, используя минимум усилий и времени. В нашем случае нет необходимости использовать MeshLab , мы создадим Low-Poly модель с нуля, как показано в этом видеоуроке:

Наша модель должна быть разделена на 4 части: затвор, курок, магазин и основную часть. Магазин, также как затвор и курок, должен состоять из минимального количества полигонов, потому что большая часть полигонов пойдет на основу пистолета.

Создайте UV-развертку низкополигональной модели. Для запекания Normal Map нужно выбрать нашу High-Poly модель, потом выбрать нашу Low-Poly , перейти во вкладку Render . Нужно убедиться, что у нас выбран Blender Render . Находим в этой вкладке Bake> Bake Mode = Normals, Normal Space = Tangent, Selected to Active. Жмем Bake . После запекания карты нормалей нужно сохранить, нажав F3 . Перейдите во вкладку Materials , создайте новый материал, во вкладке Textures выберите нашу карту нормалей, в Influence отключите Color, Geometry > Normal. В Mapping Coordinates должны быть переключены с Generated на UV . Добавьте свет на сцену и посмотрите результат.

В следующем уроке мы создадим текстуры и анимации для нашего пистолета.

Моды - это разработанные обычными игроками дополнения, которые добавляют новый контент в МайнКрафт: предметы, техника, биомы и многое другое. Дополнения на новое оружие являются одними из самых популярных среди игроков по всему миру, так как огнестрел значительно разбавляет геймплей игры.

Модификаций, которые добавляют огнестрельное оружие и броню в Майнкрафт на компьютер, большое множество, поэтому Вы без труда найдете то, что придется по душе. Сотни различных моделей популярных пушек из реальной жизни, известные всем стволы из CS и CS:GO. Любите жесткие перестрелки? Возьмите пулемет и выпустите пару обойм по противнику. Больше по душе тихие скрытые убийста? Быстро хватаем в руки снайперскую винтовку с оптическим прицелом и выносим врага с одного попадания.

Какие виды оружия добавляют моды?

Как было сказано выше, моделей огромное количество. Ниже я попробую разделить все их на некоторые категории и приведу по несколько примеров.

  • Штурмовые винтовки (Оружие из CS) : Калаш 47, M4A1, Фамас F1, Galil;
  • Пистолеты и револьверы : Colt, Deagle, ТТ;
  • Дробовики : Mossberg, Remington, двустволки;
  • Снайперские винтовки : AWP, винтовка Мосина, Remington 700 LTR;
  • Взрывающееся оружие : Гранаты, мины, базуки.

Это лишь малая часть оружия из модов для МайнКрафта, с которой Вам предстоит познакомиться.

Огнестрельное оружие на сайт

На нашем сайте Вы сможете бесплатно скачать самые крутые и новые моды на оружие. В каждому моду будет подробное описание, скриншоты и ссылки на прямую загрузку.

Сперва заходим в папку addons - D:\Games\Red Garry"s Mod\Game\garrysmod\addons
Создаём новую папку,переименовываем его название на своё,к примеру SWEP.

Дальше создаём текстовый файл addon.txt.
Вписываем в него:
"AddonInfo"
{
"name" "Swep" // Вместо Swep впишите своё название аддона.
"author_name" "Author" //Вместо Author впишите свой ник.
"author_url" "Url" //Тут можно написать страницу своего сайта.Пример -
"info" "Swep" // Тут вписываем информацию о своём оружие.
}
В принципе можно оставить всё как есть.
Дальше создаём папку lua.

Как и что?

Вот теперь можно создавать оружие.
Открываем наш.lua файл,и вписываем в самом начале вот этот код:

SWEP.PrintName = "Chair Thrower" // Это название нашего оружия.
SWEP.Author = "I am athor" // Тут можно указать ник автора. Впишите свой ник в кавычках.
SWEP.Instructions = "Left mouse to fire a chair!" // Это инструкция по аддону.

SWEP.Spawnable = true // Тут можно вписать разрешение простому игроку,если там = true как в нашем случае,то игроку разрешается использовать это оружие,если = false то игроку запрещается использовать его.
SWEP.AdminOnly = true // То же самое как и в случае сверху,только тут разрешение/запрещение оружие даётся админу.

SWEP.Primary.ClipSize = -1 // Это функция отвечает за количество патрон в магазине,если значение = -1 как в нашем случае,то патронов в магазине бесконечно.
SWEP.Primary.DefaultClip = -1 // Количество патрон при получения оружия.
SWEP.Primary.Automatic = true // Тип оружия автомат или винтовка.В нашем случае = true это автомат,при случае = false это винтовка.
SWEP.Primary.Ammo = "none" // Тип патрон.

SWEP.Secondary.ClipSize = -1 // Вот тут всё то же самое как и в верхних
// функциях.
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = "none"


SWEP.AutoSwitchTo = false // Авто переключение оружия.
SWEP.AutoSwitchFrom = false

SWEP.Slot = 1 // Слот оружия,если = 1,то наше оружие будет в первом слоте рядом с монтировкой.
SWEP.SlotPos = 2 // Позиция оружия в слоте.
SWEP.DrawAmmo = false // Скрытие количества патрон в hud"е,если = false,то патроны скрываются,если = true то патроны остаются.
SWEP.DrawCrosshair = true // Скрытие прицела.

SWEP.ViewModel = "models/weapons/v_pistol.mdl" // ВАЖНО:Тут прописываем путь к оружию.Это модель которую будет держать игрок.
SWEP.WorldModel = "models/weapons/w_pistol.mdl" // ВАЖНО:Тут прописываем путь к оружию.Это модель которая будет лежать в не подобранном состоянии.

local ShootSound = Sound("Metal.SawbladeStick") // Звук при выстреле.

Теперь переходим к главным функциям.

function SWEP:PrimaryAttack() // ВАЖНО:Эта функция отвечает за свойства выстрела из левой кнопки мыши.

self.Weapon:SetNextPrimaryFire(CurTime() + 0.5) // Тут указано, когда произойдёт следующий выстрел. 0.5 вы можете изменить по своему вкусу.

self:ThrowChair("models/props/cs_office/Chair_office.mdl") // Функция атаки стульями.Если у вас не работает установите контент Counter-Strike Source или переименуйте модель в models/props_c17/FurnitureChair001a.mdl

function SWEP:SecondaryAttack() // Функция отвечает за выстрел из правой кнопки мыши.

self:ThrowChair("models/props_c17/FurnitureChair001a.mdl") // Функция атаки стульями.

function SWEP:ThrowChair(model_file) // Вот и сама функция стула.

self:EmitSound(ShootSound) // Проигрывание звука оружия.

if (CLIENT) then return end

local ent = ents.Create("prop_physics")

if (!IsValid(ent)) then return end

ent:SetModel(model_file) // Путь к модели,в данном случае ничего не указываем поскольку модели уже были указаны в функциях выстрела.

ent:SetPos(self.Owner:EyePos() + (self.Owner:GetAimVector() * 16)) // Указывает где появится модель.
ent:SetAngles(self.Owner:EyeAngles())
ent:Spawn() // Спавнит наше оружие

local phys = ent:GetPhysicsObject()
if (!IsValid(phys)) then ent:Remove() return end

local velocity = self.Owner:GetAimVector()
velocity = velocity * 100 // Сила выстрела,вы можете указать 7000,чтобы стулья летели со скорости пули.
velocity = velocity + (VectorRand() * 10)
phys:ApplyForceCenter(velocity)

cleanup.Add(self.Owner, "props", ent) // Функция удаление стула,как вы видите код относит его к категории пропс.

undo.Create("Thrown_Chair") // Главная функция удаления стула при нажатии кнопки z.
undo.AddEntity(ent)
undo.SetPlayer(self.Owner)
undo.Finish()
end

//Вот и всё.Ваше оружие готово,вы можете изменить свойства по своему вкусу.
//Искать в категории оружия Other.

Создайте луа файл, например: weapon_scripted_357.lua в папке 357 Scripted SWEP/lua/weapons.

Теперь соответственно напишем сам код.
Там где кавычки, нужно указывать названия в кавычках.

SWEP.Author = "Hds46" // Ник автора свепа.Нужно указывать в кавычках.
SWEP.PrintName = "357 Magnum" // Название свепа которое будет отображаться.
SWEP.Contact = "Your site or mail" // Контактная информация по которой вам будут писать об ошибках и предложениях.
SWEP.Purpose = "357 Scripted Weapon" // Краткая информация об оружии.
SWEP.Instructions = "Shoot" // Инструкция об том,как использовать наш свеп.
SWEP.Category = "My Weapons" // Категория, где будет лежать оружие.
SWEP.Spawnable = true // Если false то оружие нельзя заспавнить,если true то можно.
SWEP.AdminOnly = false // Если false то оружие может использовать каждый,если true то только админы.

SWEP.ViewModelFOV = 64 // Тут можно указать приближать/отдалять модель оружия от экрана игрока.
SWEP.AutoSwitchTo = true // Если true то игрок автоматически переключается на это оружие(если подбирает его),если false то нет.
SWEP.AutoSwitchFrom = false // То же самое,но с другими свепами.
SWEP.Slot = 1 // Позиция оружия в Hud"е.
SWEP.SlotPos = 3 // Позиция оружия в Hud"е.(в нижней части)
SWEP.Weight = 5 // Вес оружия.
SWEP.DrawCrosshair = true // Если true то показывается прицел,если false то нет.
SWEP.DrawAmmo = true // Если true то показывается индикатор патрон магазина игрока,если false то нет.

SWEP.ViewModel = "models/weapons/c_357.mdl" // Директория модели от первого лица.
SWEP.WorldModel = "models/weapons/w_357.mdl" // Директория модели от третьего лица.

SWEP.Primary.Sound = "Weapon_357.Single" // Звук выстрела.Можно указывать директорию,а можно и указывать звуки прописанные в папке script.
SWEP.Primary.Tracer = "Tracer" // Название трассы(следа) пули.
SWEP.Primary.TakeAmmo = 1 // Количество патрон которое расходуется при каждом выстреле
SWEP.Primary.Spread = 0.01 // Точность оружие,чтобы оружие стреляло точно как слонобой из кс,напишите 0 или 0.01
SWEP.Primary.Delay = 1 // Скорострельность оружие(можно сделать автомат или пулемет)
SWEP.Primary.Recoil_pitch = -8 // Значение необходимое для отдачи оружия(Отдача наверх)
SWEP.Primary.Recoil_yaw_min = -2 // Минимальное значение для кода math.Rand
SWEP.Primary.Recoil_yaw_max = 2 // Максимальное значение для кода math.Rand,он будет выбирать случайное десятичное число в диапазоне от -2 до 2. Значение необходимое для отдачи оружия(Отдача вправо и влево)
SWEP.Primary.Recoil_roll = 0 // Значение необходимое для отдачи оружия(Отдача спереди)
SWEP.Primary.Damage = 65 // Урон наносимый оружием.
SWEP.Primary.NumberofShots = 1 // Количество пуль выпускаемых при каждом выстреле(Дробовик)
SWEP.Primary.ClipSize = 6 // Максимальное количество пуль в магазине.
SWEP.Primary.DefaultClip = 6 // Максимальное количество пуль в магазине при подборе оружия.
SWEP.Primary.Automatic = true // Если true то можно будет удерживать кнопку мыши и стрелять не останавливаясь,если false то нужно нажать кнопку атаки еще раз.
SWEP.Primary.Ammo = "357" // Название используемых боеприпасов.
SWEP.HoldType = "revolver" // Тип анимаций которые воспроизводит игрок.

SWEP.UseHands = true // Если true то c_модели используют кастомные руки,если false то нет.

SWEP.Base = "weapon_base" // База для оружия.Нужна чтобы позаимствовать пару нужных фич.
// У нашего оружия нет функций альтернативного выстрела,так что Secodary значения нам не нужны.
SWEP.Secondary.Delay = 0.1
SWEP.Secondary.Recoil = 0
SWEP.Secondary.Damage = 0
SWEP.Secondary.NumberofShots = 1
SWEP.Secondary.ClipSize = 0
SWEP.Secondary.DefaultClip = 0
SWEP.Secondary.Automatic = true
SWEP.Secondary.Ammo = "none"

function SWEP:Initialize() // Инциализация оружия где нужно запрекэкшить звуки и указать тип анимаций.
util.PrecacheSound(self.Primary.Sound)
self:SetWeaponHoldType(self.HoldType)
end

function SWEP:Reload() // Функция при перезарядке
if (self:GetNextPrimaryFire() > CurTime()) then return end // Это нужно чтобы во время выстрела не перезаряжалось.
if (self.Weapon:Clip1() < self.Primary.ClipSize && self.Owner:GetAmmoCount(self.Primary.Ammo) > 0) then // Проверка на патроны.Если у оружия меньше патрон чем обычно и есть патроны у игрока тогда дальше код.
self:SetNextPrimaryFire(CurTime() + 3) // Время следующего выстрела,ведь не будет же игрок стрелять прямо во время перезарядки.
self:DefaultReload(ACT_VM_RELOAD) // Анимация перезарядки(от первого лица)
self.Owner:SetAnimation(PLAYER_RELOAD) // Анимация перезарядки игрока(от третьего лица)
end
end

function SWEP:PrimaryAttack() // Функция выстрела левой кнопки мыши.
if (!self:CanPrimaryAttack()) then return end // Если нет патрон, то оружие не может стрелять.
local tr = self.Owner:GetEyeTrace() // Направление прицела игрока.
local bullet = {} // Структура пули,значения будут использоваться из значений описанных выше,только вместо SWEP - self.
bullet.Num = self.Primary.NumberofShots
bullet.Src = self.Owner:GetShootPos()
bullet.Dir = self.Owner:GetAimVector()
bullet.Spread = Vector(self.Primary.Spread * 0.1 , self.Primary.Spread * 0.1, 0)
bullet.Tracer = self.Primary.Tracer
bullet.Damage = self.Primary.Damage
bullet.AmmoType = self.Primary.Ammo

self:TakePrimaryAmmo(self.Primary.TakeAmmo)

self.Weapon:MuzzleFlash() // Вспышка выстрела.
self.Owner:FireBullets(bullet) // Вот этот код берет все значения от bullet(выше) и позволяет игроку стрелять пулями.
self:EmitSound(Sound(self.Primary.Sound)) // Воспроизводит звук выстрела.
self.Owner:ViewPunch(Angle(self.Primary.Recoil_pitch,math.Rand(self.Primary.Recoil_yaw_min,self.Primary.Rec
oil_yaw_max),self.Primary.Recoil_roll)) // Отдача,берет значения которые я описал выше.
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK) // Воспроизводит анимацию выстрела(от первого лица)
self.Owner:SetAnimation(PLAYER_ATTACK1) // Воспроизводит анимацию выстрела(от третьего лица)
self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) // Время следующего выстрела.
end

function SWEP:SecondaryAttack() // Функция выстрела правой кнопки мыши.(Она нам не понадобится)
end

function SWEP:Deploy() // Функция при подбирании оружия.
self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) // Время следующего выстрела,игрок не будет стрелять,пока не достанет оружие из кобуры.
self.Weapon:SendWeaponAnim(ACT_VM_DRAW) // Анимация подбирания оружия(от первого лица)
return true // Если true то разрешает поднимать оружие,если false то нет.
end

function SWEP:Holster() // Функция при убирании оружия в кобуру.
return true // Если true то разрешает убирать оружие в кобуру,если false то нет.
end

function SWEP:Think() // Функция которая будет воспроизводится когда игрок держит оружие,каждые 0.01 миллисекунд.
end

Хех, я жив
FAQ:

Вопрос: Если еще автор жив, ты можешь дать лог оружия ближнего боя? Очеенннььь надо
Ответ: К сожалению не делал х. оружие, а это всё я сделал ради руководства. Так что извини, могу дать совет напиши в поисковике "How to make simple weapon GMOD" там много вариантов может и х. оружие будет.

Вопрос: Слушай, я вот создал оружие, я теперь спокойной могу заливать его в мастерскую?
Ответ: Да, для этого нужна специальная программа:

Вопрос: Вопрос: можно ли указать кастомный звук "local ShootSound = Sound" ?
Ответ: Вполне, указывайте путь на звук.

Вопрос: Конечно, нормальное руководство, но не существует иного варианта? (Через программу какую либо например)
Ответ: К сожалению программ нет, есть аддон в мастерской, но там можно делать уж слишком простые оружия.

Вопрос: а как сделать lua - файл?
Ответ: Создаёте файл к примеру firstaddon.txt - нажимаете ПКМ по файлу - перемеиновать - и вместо.txt ставите.lua - сохраняем изменения и всё :)

P.S Извиняюсь за задержку, просто не до этого было:)

Доброго времени суток, уважаемые участники форума!
Сегодня я расскажу как реализовать свое оружие для Counter Strike 1.6 и помогу вам научится работать с программой FragMotion.

Что понадобится сегодня?


  • fragMOTION - лучше не старше 1.1.
  • MilkShape 3D - у самого 1.7.6.
  • GUI StudioMDL - последнюю.
  • Прямые руки - с рождения.

(Перед прохождением урока, возьмите v_deagle.mdl и v_knife.mdl, и положите в отдельные папочки, для удобства).

Часть первая. Подготовка к работе.

1. Для начала откройте MilkShape 3D, затем вкладочку Tools, и Kratisto"s Half-Life MDL Decompiler v.1.x (x=версия) .
2. Нажимаем кнопочку обзор, ту, которая находится справа от слов MDL File...

3. Открываем обычный v_deagle.mdl, который находится в специально подготовленной папочке.
4. Жмем ОК, и ждем пока процесс завершится.
5. Готово! Откройте папочку, и найдите в ней.smd, .bmp и.qc файлы.
6. Открываем наш fragMOTION, жмем File --> Open..., выбираем ref_deonly.smd.
7. Мы получим так называемый "референс" дигла. Сейчас нам нужно удалить все кости, кроме меша (модели).

Но прежде чем что-то сделать, откройте Edit --> Customize User Interface. Если все стоит по-дефолту, кликните на строчку, и выберите Mouse Configurations.
Перед вами есть настройки Default. По ним, кстати, очень сложно работать.
Нажмите правой кнопкой по вкладке MouseConfigurations --> New... --> MouseConfig.
Появится новый конфиг. Щелкаем на нем левой кнопкой мыши, и настраиваем все как у меня.

Все сделали? Жмем File --> Save Changes.

8. Как же удалить эти кости? Легко. Зажмите правую кнопку, и обведите все, что есть вокруг пистолета. Жмем клавишу Delete. Готово.
9. Осталось подготовить пистолет для дальнейшего использования.
Щелкаем на Transform --> Transform Options...
Выкатывается окошечко.

Убираем галочку со Scale. Ставим галку на Position, затем кнопку Apply.
Наш пистолет выравнивается по центру.
Теперь нужно его повернуть для того, чтобы он ровно лег в руках...
В руках? В руках?! Что же мы делаем такое?
А делаем мы вот что.

Часть вторая. Запекание костей.

10. Теперь нужно его повернуть для того, чтобы он ровно лег в руках...
Жмем на галочку Rotate, в поле Y вводим - 90,0000, и жмем Apply два раза.
Стираем в поле Y девятку, оставляем 0,0000. Теперь вводим 90,0000 в поле Z.
Жмем на Apply три раза.
11. Убираем галочку с Rotate и ставим галочку на Position. Оставляем все как есть. Жмем один раз Apply.
Примечание: Если вдруг пушка улетела куда не надо, нажимайте Apply до того, пока пистолет не ляжет в середину .

Так, я же не рассказал одну вещь.
Жмем View --> Layout --> 4 corners. Так очень удобно ориентироваться в дальнейшем.
Чтобы летать в 3D виде, зажмите кнопку на колесике мыши. Чтобы разворачивать камеру, зажмите Shift + Mouse3 (колесико мыши). Приближать, я думаю, умеете.

После всех операций, описанных выше, у вас должно получиться нечто такое.

12. Жмем File --> Merge..., открываем reference.smd от вашего декомпилированного ножа. Ничего не выделяя, просто жмем ОК.
В сцену попадают руки и нож.

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

14. Зажимаем Shift+ЛКМ (левая кнопка мыши), и обводим не нужный нож.
Жмем клавишу Delete. Ого, кусочки остались!

15. Теперь на видах Left, Top, Front проделайте тоже самое, удаляя последние остатки ножа.

16. Ура! Ножа нет, и теперь можно приступить к запеканию костей.
Нажмите ЛКМ два раза по ref_deonly.

Теперь ЛКМ передвиньте пушку к синей точке, которая находится на месте удаленного ножа. Дулом вперед, соответственно.

У вас должно получиться нечто похожее.

Примечание: У вас нет на руках текстур? Не волнуйтесь! Это совсем не важно. Текстуры у меня остались со старых экспортов.

17. Теперь выделяем ПКМ синюю точку, которая находится у нас на дуле.
Примечание: Пистолет должен быть обязательно выделен, и быть красным.

18. Теперь Bone --> Assign Selected Vertices to Bone.
Вуаля! Кость прилепилась к пушке! Чтобы снять выделение, нажмите ПКМ на сцене, и сочетание клавиш Ctrl+Shift+N.

Проверяем.

19. Давайте посмотрим, что у нас вышло. Нажмите File --> Merge Animations... и выберите, например, draw.smd от ножа. Ничего не выделяя, жмем ОК.
Теперь в правом верхнем углу маленькая кнопочка Anim..., жмем. Получаем такую картину.

Выбираем анимацию draw, и ниже дергаем ползунок.

Если все получилось, то, я очень за вас рад!

Часть третья. Добавление оружия в игру.

20. Создайте отдельную папочку под названием Deagle Knife.

21. Нажмите на анимацию draw, и щелкните клавишу Delete. Анимации нет, и значит, у нас в руках, так называемый, референс.

21. Нажмите File --> Export..., сохраняйте с названием reference, и ниже с форматом Half-Life SMD Files (.smd).

Оставьте точечку на Mesh.

22. Теперь, кстати, самое легкое, но, скажем так, очень нудное.
Жмем File --> Merge Animations..., и выбираем, например, draw.smd.
Ничего не трогаем, жмем ОК.
Затем File --> Export..., в спец. папочку Deagle Knife, вводим название анимации draw, формат.smd.
Выкатывает окошечеко. Щелкаем на точечку Animation, и ниже выбираем draw. ОК,

Теперь нужно проделать тоже самое с idle, midslash1, midslash2, slash1, slash2, stab, stab_miss.
Примечание: Не трогаем reference! Мы уже подготовили его в самом начале.

23. Открываем папочку, проверяем наличие таких файлов.

24. Если все на месте, сейчас мы познакомимся с новой для нас программой - GUI StudioMDL.

25. Перекиньте v_knife.qc из папки с декомпилированным ножом, в папку Deagle Knife. Так же, текстуру knifeskin.bmp.
Примечание: Почему? А чтобы не заморачиваться с изменением кода.qc, оставим текстуру. Она не мешает.

26. Из папки с декомпилированным диглом достаем DE_slide1.bmp, DE_handle.bmp, DE_slide2_eagle.bmp, view_glove.bmp, view_skin.BMP, view_finger.bmp, и кидаем в нашу папку Deagle Knife.

27. Перенесите папку Deagle Knife в директорию C:/, чтобы программа GUI StudioMDL не конфликтовала с кириллицей.

28. Открываем GUI StudioMDL, жмем File --> Load QC File.
После чего ставим галку на Dump Hitboxes, и потом, восторженно кликаем на Compile.
Если все прошло успешно, в папке Deagle Knife появится v_knife.mdl.

Примечание по всему уроку: Вставить в руку можно не только тот же самый дигл, вставьте туда ножовку, отвертку, ведро, да все что угодно!

Но вот третья часть подошла к концу, да и вообще весь урок. Если у кого, что не получается, пишите, помогу, чем смогу. Спасибо за внимание, с вами был Валентин.
В следующем уроке я расскажу как сделать свое огнестрельное оружие, и мы серьезно поговорим о аттачинге костей.

Так же хочу поблагодарить Михаила , за его подробные объяснения на эту тему, и весь портал GCC за моральную поддержку.