```lua
-- weapon_p228.lua

if ( SERVER ) then
    AddCSLuaFile()
end

if ( CLIENT ) then
    SWEP.PrintName = "P228"
    SWEP.Author = "Ваше Имя"
    SWEP.Slot = 1
    SWEP.SlotPos = 1
    SWEP.DrawAmmo = true
    SWEP.DrawCrosshair = true
    SWEP.ViewModelFOV = 60
    SWEP.ViewModelFlip = false
end

SWEP.Category = "Custom Weapons"

-- Модели
SWEP.ViewModel = "models/weapons/v_pist_p228.mdl"   -- Ваша модель вида от первого лица
SWEP.WorldModel = "models/weapons/w_pist_p228.mdl"  -- Ваша модель вида от третьего лица
SWEP.UseHands = true                                   -- Использовать стандартные руки GMod

SWEP.HoldType = "pistol"

-- Настройки Primary (Основное оружие)
SWEP.Primary.ClipSize = 12
SWEP.Primary.DefaultClip = 12
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = "Pistol"

-- Настройки Secondary (Вторичное оружие)
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
function SWEP:Initialize()
    self:SetHoldType(self.HoldType)
end

-- Первичное действие (стрельба)
function SWEP:PrimaryAttack()
    if not self:CanPrimaryAttack() then return end

    self.Weapon:EmitSound("Weapon_p228.Single")

    self:ShootBullet(25, 1, 0.02)

    self:TakePrimaryAmmo(1)

    self.Weapon:SetNextPrimaryFire(CurTime() + 0.3)
end

-- Функция создания выстрела
function SWEP:ShootBullet(damage, num_bullets, aimcone)
    self:GetOwner():LagCompensation(true)

    local bullet = {}
    bullet.Num    = num_bullets
    bullet.Src    = self:GetOwner():GetShootPos()
    bullet.Dir    = self:GetOwner():GetAimVector()
    bullet.Spread = Vector(aimcone, aimcone, 0)
    bullet.Tracer = 1
    bullet.Force  = damage * 2
    bullet.Damage = damage

    self:GetOwner():FireBullets(bullet)

    self:GetOwner():LagCompensation(false)
end

-- Вторичное действие (можно реализовать прицеливание)
function SWEP:SecondaryAttack()
    -- Реализуйте прицеливание или другое действие
end

-- Перезарядка
function SWEP:Reload()
    if self:GetOwner():GetAmmoCount(self.Primary.Ammo) <= 0 then return end
    self.Weapon:DefaultReload(ACT_VM_RELOAD)
    self.Weapon:SetNextPrimaryFire(CurTime() + 1)
end
```
Я хочу чтобы вид от третьего лица было видно как стреляет, я хочу чтобы оружие было в правой руке. Я хочу чтобы от первого лица оружие немного дергало от отдачи. Так же исправь баги:
[{
	"resource": "/C:/Program Files (x86)/Steam/steamapps/common/GarrysMod/garrysmod/addons/il_guns/lua/weapons/weapon_p228.lua",
	"owner": "glua",
	"severity": 4,
	"message": "'self.Weapon' is the same as just 'self' in SWEPs",
	"startLineNumber": 53,
	"startColumn": 5,
	"endLineNumber": 53,
	"endColumn": 9
},{
	"resource": "/C:/Program Files (x86)/Steam/steamapps/common/GarrysMod/garrysmod/addons/il_guns/lua/weapons/weapon_p228.lua",
	"owner": "glua",
	"severity": 4,
	"message": "'self.Weapon' is the same as just 'self' in SWEPs",
	"startLineNumber": 59,
	"startColumn": 5,
	"endLineNumber": 59,
	"endColumn": 9
},{
	"resource": "/C:/Program Files (x86)/Steam/steamapps/common/GarrysMod/garrysmod/addons/il_guns/lua/weapons/weapon_p228.lua",
	"owner": "glua",
	"severity": 4,
	"message": "'self.Weapon' is the same as just 'self' in SWEPs",
	"startLineNumber": 88,
	"startColumn": 5,
	"endLineNumber": 88,
	"endColumn": 9
},{
	"resource": "/C:/Program Files (x86)/Steam/steamapps/common/GarrysMod/garrysmod/addons/il_guns/lua/weapons/weapon_p228.lua",
	"owner": "glua",
	"severity": 4,
	"message": "'self.Weapon' is the same as just 'self' in SWEPs",
	"startLineNumber": 89,
	"startColumn": 5,
	"endLineNumber": 89,
	"endColumn": 9
}]