что такое swep garrys mod
Что такое swep garrys mod
1. Knowledge of how to edit lua files using wordpad or notepad+ (you do not need to know any actual lua as long as you are making basic bullet chuckers)
2. the SWEP construction kit which can be found here: http://steamcommunity.com/sharedfiles/filedetails/?id=109724869
it is required to create the weapons ironsights coordinates (so you look down the sights properly instead of poke your eye out, try to fire from crotch level or something ridiculous like that)
First of all i will do a raw copy paste of the weapon’s code and show you what each function does and how to change them around to get the desired effect. We are using the mad cows weapon base as an example though most weapon bases look very similar to this so it’s not to hard to change bases.
Each weapon consists of 3 lua files, named cl_init.lua, init.lua and shared.lua
opening cl_init.lua yeilds this:
thats it for cl_init.lua
init.lua will contain only the following:
There is nothing wrong with any of this code so leave it alone unless you have some kind of fetish for flooding your console with errors.
Skipping past that we get to the real meat and bones of a SWEP, the file known as shared.lua:
This is identical to the primary fire codes but it is for your guns secondary fire. Mad cow’s base uses the seconday fire mode as an iron sights function so do for the purpose of this tutorial not touch this code or you will break ♥♥♥♥.
Continued in next section
continuation of the shared.lua section:
hese are mad cows specific functions to define what general type of weapon your swep is, do not set more than one as ‘true’ or evil spirits will take over your gmod and cause it to spew errors
note: there is minimal difference between pistol and rifle, shotgun gives your weapon custom shotgun specific gunsmoke effects as well as sequential loading (you load one shell at a time into the weapon instead of loading an entire clip like a normal gun) and the sniper class gives you scope code and the option of making your weapon a bolt action rifle.
SWEP.Pistol = true
SWEP.Rifle = false
SWEP.Shotgun = false
SWEP.Sniper = false
^ this is the postion your gun will be in when you look down the sights, you can acquire this data using the ironsights function of the swep construction kit.
^ same as ironsights but this is the position your weapon will be in when you are running with it or have it holstered.
SWEP.ScopeZooms = <12>— this is only called if your weapon is a sniper, it is the magnification of your scope, eg 8x, 12x, 3.5x
// Burst options
SWEP.Burst = false
SWEP.BurstShots = 3
SWEP.BurstDelay = 0.05
SWEP.BurstCounter = 0
SWEP.BurstTimer = 0
^ add this set of functions if you want your weapon to be a burst fire gun, this will only work on mad cows base
// Custom mode options (Do not put a burst mode and a custom mode at the same time, it will not work)
SWEP.Type = 1 // 1 = Automatic/Semi-Automatic mode, 2 = Suppressor mode, 3 = Burst fire mode
SWEP.Mode = false
SWEP.data.Delay = 0.5 // You need to wait 0.5 second after you change the fire mode
^ add this set of functions if you wish to give your weapon an alternate fire mode that can be activated by pressing e and r together, remember to only add either this OR the burst fire code above, if you add both you will have a bad time
^ copy paste your SWEP.PrimarySound to here, it loads the sound into your computer’s RAM which makes it lag less if the sound needs to be called a lot eg for a super rapid fire weapon
and thats all for now folks, happy hunting and be sure to see the next page for an example swep you can copy paste to speed up the process
Что такое swep garrys mod
Этот гайд посвящён функциям
Если хотите начать с сути дела, перемотайте видео на 1:00
Это серия разделов руководства от RenPar’а, которые пытаются ввести в курс дела с 0, и сразу по серьёзному, пытаясь объяснить многие вещи до их корней
Будет лучше, если вы будете хотя бы знать основы lua, или очень схожего с ним языка. Иначе многие вещи будет трудно понять
Для начала, нам нужна программа, которая способна редактировать lua файлы. Для этого может подойти обычный блокнот, но лучше Notepad++, поскольку он способен распознавать синтаксис языка lua, и сообщать вам об ошибках
Исключение: команды, созданные для Garry’s Mod)
Готово, теперь игра способна читать ваш lua файл. В нашем же случае, игра предоставит нам возможность использовать нами созданное оружие
Так почему это происходит?
Всё дело в SWEP.Base, а конкретней
SWEP.Base = «weapon_base»
Это значение подключает библиотеку кода к нашему орудию. И в данном случае (это стандартное свойство значения) используется папка weapon_base, зарытая в папке игры. Там расположено 5 lua файлов, но трогать их не стоит. Максимум заглянуть для изучения (там разработчик оставил описания многих вещей).
Для примера напишу это:
И всё будет прекрасно работать. Это просто переменная, а не неизвестная фигня. Но новички часто путаются из-за этого.
А что говорить насчёт функций? Почитайте в справочнике Lua, в полне простой оператор
Вы всегда можете модифицировать или изменить функции. Всё зависит от ваших знаний и фантазий. Тут же приведён слегка модифицированный пак функций из weapon_base
[Было уже описано в списке и в других разделах]
Атака разделяется на два вида: основной и дополнительный огонь. И у каждой свои функции, и отличает их всё только припиской Primary или Secondary. Разобрали
Из чего же состоит атака в коде? А состоит из несколько блоков функций (который вызываются не с помощью хуков). Как пирамида. Обо всём по порядку:
Если можно атаковать, то мы прекращаем работу функции
Это что-то типо редактора персонажа в RPG, только для оружия
Представьте, что все значения ниже, это как обычный урок информатики, где вы заполняете таблицы в Microsoft Exel. Только вместо базы данных учеников вы заполняете базу данных патронов
Создание SWep’а в SWEP Construction Kit
Привет я решил сделать перевод.
Введение в SCK.
Создание оружия
SCK можно найти в Spawn Menu\Weapon\Other
Кнопка Thirdperson переключает камеру на вид от третьего лица (ведь worldmodel тоже надо делать, а ты что думал?)
Перейдите во вкладку Weapon. Здесь вы будете редактировать модель ViewModel и WorldModel.
Вы можете скопировать адрес модели из обычного Windows-проводника (или Mac) в поле модели. Незабудьте также изменить WorldModelна схожую с ViewModel
Для урока я заменю модель гранаты. Я делаю это путём уменьшения модели. У различных моделей разные кости. Часто бывают фиаски, но мы
же люди – у каждого ошибки случаются.
Для пикантности я добавил разные модели, там : спрайты,частицы, прочие модели. Спрайты соответственно находятся в папке Sprites!
Я добавил также кактус, который стал «дитём» от модели руки.
Здесь будет отображаться счётчик патронов на элементе с именем «myquad»
Для финиша дизайна модели – нужно сделать WorldModel. Просто скопируйте всё из ViewModel –перемещайте и уменьшайте.
Коддинг и Lua
Сейчас вот – мы доберёмся до коддинга на Lua. Это не так уж и сложно. Сначала выделаете базу кода SKC на Swep.Вы можете скопировать код в буфер обмена или скачать с GITHUB.
Теперь ваш Swep готов к использованию. Он не только красив 🙂 и функционален.
Если перевод не такой на высшем уровне,я просто хотел помочь.
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 ) // Вот и сама функция стула.
if ( CLIENT ) then return end
local ent = ents.Create( «prop_physics» )
ent:SetModel( model_file ) // Путь к модели,в данном случае ничего не указываем поскольку модели уже были указаны в функциях выстрела.
ent:SetPos( self.Owner:EyePos() + ( self.Owner:GetAimVector() * 16 ) ) // Указывает где появится модель.
ent:SetAngles( self.Owner:EyeAngles() )
ent:Spawn() // Спавнит наше оружие
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
Строго не судить,мой первый пост.
А вообще выстрел пулями можно сделать с помощью структуры 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»
Потом сделаю тутор для пистолета.
Тогда просто убивай их с AR2, нажимая ПКМ.
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 ) // Вот и сама функция стула.
if ( CLIENT ) then return end
local ent = ents.Create( «prop_physics» )
ent:SetModel( model_file ) // Путь к модели,в данном случае ничего не указываем поскольку модели уже были указаны в функциях выстрела.
ent:SetPos( self.Owner:EyePos() + ( self.Owner:GetAimVector() * 16 ) ) // Указывает где появится модель.
ent:SetAngles( self.Owner:EyeAngles() )
ent:Spawn() // Спавнит наше оружие
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
Что такое swep garrys mod
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 ) // Вот и сама функция стула.
if ( CLIENT ) then return end
local ent = ents.Create( «prop_physics» )
ent:SetModel( model_file ) // Путь к модели,в данном случае ничего не указываем поскольку модели уже были указаны в функциях выстрела.
ent:SetPos( self.Owner:EyePos() + ( self.Owner:GetAimVector() * 16 ) ) // Указывает где появится модель.
ent:SetAngles( self.Owner:EyeAngles() )
ent:Spawn() // Спавнит наше оружие
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
Создайте луа файл, например: weapon_scripted_357.lua в папке 357 Scripted SWEP/lua/weapons.
Теперь соответственно напишем сам код.
Там где кавычки, нужно указывать названия в кавычках.
SWEP.ViewModel = «models/weapons/c_357.mdl» // Директория модели от первого лица.
SWEP.WorldModel = «models/weapons/w_357.mdl» // Директория модели от третьего лица.
SWEP.UseHands = true // Если true то c_модели используют кастомные руки,если false то нет.
function SWEP:SecondaryAttack() // Функция выстрела правой кнопки мыши.(Она нам не понадобится)
end
P.S Извиняюсь за задержку, просто не до этого было 🙂
Можете не писать в комментариях вопросы, на них не будет ответа ни сейчас, ни через месяц. Спасибо за понимание.