Я бы сделал так:
Задал значение стандартной скорости ходьбы, например
GM.WalkSpeed = 240
.
Задал оружию вес, например: в файле оружия swb_ak47 задал
SWEP.Weight = 30
. Так же можно просто задать таблицу где-нибудь с такими же значениями по классам оружий,
swb_ak47 = 30
.
Через хук
GM:PlayerSwitchWeapon брал значение у оружия и выставлял игроку значение через
Player:SetWalkSpeed, а если у оружия нет параметра Weight, то пропускаем просто возращаемся.
Попробую своими кривыми руками предоставить тебе примерный код.
function GM:PlayerSwitchWeapon(pl, prev, now)
if not now.Weight then
return
end
pl:SetWalkSpeed(GM.WalkSpeed - now.Weight)
end
так же представлю пример для классов
-- пускай, это будет задано в другом файле, но напишу тут
GM.WeaponsWeight = {
["swb_ak47"] = 30,
}
function GM:PlayerSwitchWeapon(pl, prev, now)
local nowclass = now:GetClass()
if not GM.WeaponsWeight[nowclass] then
return
end
pl:SetWalkSpeed(GM.WalkSpeed - GM.WeaponsWeight[nowclass])
end
поидее правильно, прошу прощения, если ошибся