Создание собственного оружия (SWEP)

0
Посетители
0
Активный участник
В этом туториале,вы научитесь созданию собственного оружия.
Итак начнём.
Сперва заходим в папку addons - D:\Games\Red Garry's Mod\Game\garrysmod\addons
Создаём новую папку,переименовываем его название на своё,к примеру SWEP.

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

В ней создаём папку weapons.Дальше в этой папке создаём наше оружие.
Создаём текстовый файл,и переименовываем его в weapon_myswep - Где myswep название нашего оружия.Переименовываем формат .txt в формат .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.Weight = 5 // Вес оружия.
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

end

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

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

end

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.

Если вы всё сделали правильно то у вас должно получится вот это - http://yadi.sk/d/J3fkh1Bj46oOe




Строго не судить,мой первый пост.
Mega Upload.
Посетители
0
Новичок
Как ты додумался до пистолета стреляющего стульями? А пост просто класс! Спасибо! Я сделал себе оружие с текстурой портал гана из Portal 2, которое спавнит мячики :3
Посетители
0
Новичок
оружие делающее порталы
Посетители
0
Активный участник
А вообще выстрел пулями можно сделать с помощью структуры bullet:
local bullet = {}
bullet.Num = num_bullets
bullet.Src = self.Owner:GetShootPos() // Source
bullet.Dir = self.Owner:GetAimVector() // Dir of bullet
bullet.Spread = Vector( aimcone, aimcone, 0 ) // Aim Cone
bullet.Tracer = 5 // Show a tracer on every x bullets
bullet.TracerName = "Tracer" // what Tracer Effect should be used
bullet.Force = 1 // Amount of force to give to phys objects
bullet.Damage = damage
bullet.AmmoType = "Pistol"

self.Owner:FireBullets( bullet )

self:ShootEffects()

Потом сделаю тутор для пистолета.
Mega Upload.
 
Доступ закрыт.
  • Вам запрещено отвечать в темах данного форума.