Skip to content

Commit 9108760

Browse files
committed
xd
1 parent fb870c2 commit 9108760

5 files changed

Lines changed: 162 additions & 0 deletions

File tree

raiseweapons/libraries/client.lua

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
local MODULE = MODULE
2+
local function shouldUseAltLower()
3+
return tobool(lia.option.get("hideHandsWhenLowered", false))
4+
end
5+
6+
function MODULE:CalcViewModelView(weapon, viewModel, oldEyePos, oldEyeAngles, eyePos, eyeAngles)
7+
if LocalPlayer():getNetVar("pipboyOpen", false) then return end
8+
if hook.Run("ShouldPreventLoweredWeaponView", weapon, viewModel, oldEyePos, oldEyeAngles, eyePos, eyeAngles) then return end
9+
if not IsValid(weapon) then return end
10+
local client = LocalPlayer()
11+
if not IsValid(client) or not client.isWepRaised then return end
12+
if not lia.module.list["raiseweapons"] then return end
13+
if not client.isWepRaised then return end
14+
local target = client:isWepRaised() and 0 or 100
15+
client.liaRaisedFrac = Lerp(FrameTime() * 2, client.liaRaisedFrac or 0, target)
16+
local fraction = (client.liaRaisedFrac or 0) / 100
17+
if fraction <= 0 then return end
18+
local rotation = weapon.LowerAngles or Angle(30, -30, -25)
19+
if shouldUseAltLower() and weapon.LowerAngles2 then rotation = weapon.LowerAngles2 end
20+
local vmAngles = Angle(eyeAngles.p, eyeAngles.y, eyeAngles.r)
21+
vmAngles:RotateAroundAxis(vmAngles:Up(), rotation.p * fraction)
22+
vmAngles:RotateAroundAxis(vmAngles:Forward(), rotation.y * fraction)
23+
vmAngles:RotateAroundAxis(vmAngles:Right(), rotation.r * fraction)
24+
return eyePos, vmAngles
25+
end

raiseweapons/libraries/server.lua

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
local MODULE = MODULE
2+
local function getToggleTimerName(client)
3+
return "liaToggleRaise" .. client:SteamID64()
4+
end
5+
6+
local function clearPendingToggle(client)
7+
if not IsValid(client) then return end
8+
timer.Remove(getToggleTimerName(client))
9+
client.liaToggleRaisePending = nil
10+
client:setAction(false)
11+
end
12+
13+
function MODULE:KeyPress(client, key)
14+
if key ~= IN_RELOAD or not IsValid(client) or not client.toggleWepRaised then return end
15+
if client.liaToggleRaisePending then return end
16+
local toggleTime = lia.config.get("wepToggleTime", 1)
17+
local text = client:isWepRaised() and "Holstering weapon..." or "Unholstering weapon..."
18+
client.liaToggleRaisePending = true
19+
client:setAction(text, toggleTime)
20+
timer.Create(getToggleTimerName(client), toggleTime, 1, function()
21+
if not IsValid(client) then return end
22+
client.liaToggleRaisePending = nil
23+
client:setAction(false)
24+
client:toggleWepRaised()
25+
end)
26+
end
27+
28+
function MODULE:KeyRelease(client, key)
29+
if key ~= IN_RELOAD or not IsValid(client) or not client.liaToggleRaisePending then return end
30+
clearPendingToggle(client)
31+
end
32+
33+
function MODULE:PlayerSwitchWeapon(client)
34+
if not IsValid(client) or not client.setWepRaised then return end
35+
clearPendingToggle(client)
36+
client:setWepRaised(false)
37+
end
38+
39+
function MODULE:PlayerDeath(client)
40+
clearPendingToggle(client)
41+
end

raiseweapons/libraries/shared.lua

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
local MODULE = MODULE
2+
local KEY_BLACKLIST = bit.bor(IN_ATTACK, IN_ATTACK2)
3+
lia.command.add("toggleraise", {
4+
desc = "Toggle whether your current weapon is raised.",
5+
onRun = function(client)
6+
if not IsValid(client) then return end
7+
if (client.liaNextToggleRaise or 0) > CurTime() then return end
8+
client:toggleWepRaised()
9+
client.liaNextToggleRaise = CurTime() + 0.5
10+
end
11+
})
12+
13+
function MODULE:StartCommand(client, command)
14+
if not IsValid(client) or not client.isWepRaised or client:isWepRaised() then return end
15+
local weapon = client:GetActiveWeapon()
16+
if IsValid(weapon) and weapon.FireWhenLowered then return end
17+
command:RemoveKey(KEY_BLACKLIST)
18+
end
19+
20+
function MODULE:CanPlayerThrowPunch(client)
21+
if client.isWepRaised and not client:isWepRaised() then return false end
22+
end

raiseweapons/meta/sh_player.lua

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
local playerMeta = FindMetaTable("Player")
2+
function playerMeta:isWepRaised()
3+
local weapon = self:GetActiveWeapon()
4+
local override = hook.Run("ShouldWeaponBeRaised", self, weapon)
5+
if override ~= nil then return override end
6+
if IsValid(weapon) then
7+
if weapon.IsAlwaysRaised or weapon.AlwaysRaised or ALWAYS_RAISED and ALWAYS_RAISED[weapon:GetClass()] then
8+
return true
9+
elseif weapon.IsAlwaysLowered or weapon.NeverRaised then
10+
return false
11+
end
12+
end
13+
14+
if self:getNetVar("restricted") then return false end
15+
if lia.config.get("wepAlwaysRaised", true) then return true end
16+
local raised = self:getNetVar("raised")
17+
if raised ~= nil then return raised end
18+
raised = self:getNetVar("wepRaised")
19+
if raised ~= nil then return raised end
20+
return false
21+
end
22+
23+
function playerMeta:WepRaised()
24+
return self:isWepRaised()
25+
end
26+
27+
if SERVER then
28+
function playerMeta:setWepRaised(state)
29+
state = tobool(state)
30+
self:setNetVar("raised", state)
31+
self:setNetVar("wepRaised", state)
32+
local weapon = self:GetActiveWeapon()
33+
if IsValid(weapon) then
34+
weapon:SetNextPrimaryFire(CurTime() + 1)
35+
weapon:SetNextSecondaryFire(CurTime() + 1)
36+
end
37+
end
38+
39+
function playerMeta:SetWepRaised(state)
40+
self:setWepRaised(state)
41+
end
42+
43+
function playerMeta:toggleWepRaised()
44+
self:setWepRaised(not self:isWepRaised())
45+
local weapon = self:GetActiveWeapon()
46+
if not IsValid(weapon) then return end
47+
if self:isWepRaised() and isfunction(weapon.OnRaised) then
48+
weapon:OnRaised()
49+
elseif not self:isWepRaised() and isfunction(weapon.OnLowered) then
50+
weapon:OnLowered()
51+
end
52+
end
53+
54+
function playerMeta:ToggleWepRaised()
55+
self:toggleWepRaised()
56+
end
57+
end

raiseweapons/module.lua

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
MODULE.name = "Raise Weapons"
2+
MODULE.author = "Samael"
3+
MODULE.discord = "@liliaplayer"
4+
MODULE.desc = "Lilia port and improvement of NutScript's raiseweapons plugin."
5+
lia.config.add("wepAlwaysRaised", "Weapons Always Raised", false, nil, {
6+
desc = "Whether lowered/passive weapon states should be disabled.",
7+
category = "animations",
8+
type = "Boolean"
9+
})
10+
11+
lia.config.add("wepToggleTime", "Weapon Toggle Time", 1, nil, {
12+
desc = "How long raising or holstering a weapon takes.",
13+
category = "animations",
14+
type = "Float",
15+
min = 0,
16+
max = 10
17+
})

0 commit comments

Comments
 (0)