Hooks
This document describes the hooks available in the Raised Weapons module for managing weapon raising and lowering functionality.
OnWeaponLowered
Purpose
Called when a weapon is lowered.
Parameters
player
(Player): The player whose weapon was lowered.weapon
(Weapon): The weapon that was lowered.
Realm
Server.
When Called
This hook is triggered when:
- A weapon is lowered
- After PlayerWeaponRaisedChanged
hook
- When the weapon state changes to lowered
Example Usage
-- Track weapon lowered
hook.Add("OnWeaponLowered", "TrackWeaponLowered", function(player, weapon)
local char = player:getChar()
if char then
local weaponLowered = char:getData("weapon_lowered", 0)
char:setData("weapon_lowered", weaponLowered + 1)
end
lia.log.add(player, "weaponLowered", weapon)
end)
-- Apply weapon lowered effects
hook.Add("OnWeaponLowered", "WeaponLoweredEffects", function(player, weapon)
-- Play lowered sound
player:EmitSound("buttons/button14.wav", 75, 100)
-- Apply screen effect
player:ScreenFade(SCREENFADE.IN, Color(0, 255, 0, 15), 0.5, 0)
-- Notify player
player:notify("Weapon lowered!")
-- Create particle effect
local effect = EffectData()
effect:SetOrigin(player:GetPos())
effect:SetMagnitude(1)
effect:SetScale(1)
util.Effect("Explosion", effect)
end)
-- Track weapon lowered statistics
hook.Add("OnWeaponLowered", "TrackWeaponLoweredStats", function(player, weapon)
local char = player:getChar()
if char then
-- Track lowered frequency
local loweredFrequency = char:getData("weapon_lowered_frequency", 0)
char:setData("weapon_lowered_frequency", loweredFrequency + 1)
-- Track lowered patterns
local loweredPatterns = char:getData("weapon_lowered_patterns", {})
table.insert(loweredPatterns, {
weapon = weapon:GetClass(),
time = os.time()
})
char:setData("weapon_lowered_patterns", loweredPatterns)
end
end)
OnWeaponRaised
Purpose
Called when a weapon is raised.
Parameters
player
(Player): The player whose weapon was raised.weapon
(Weapon): The weapon that was raised.
Realm
Server.
When Called
This hook is triggered when:
- A weapon is raised
- After PlayerWeaponRaisedChanged
hook
- When the weapon state changes to raised
Example Usage
-- Track weapon raised
hook.Add("OnWeaponRaised", "TrackWeaponRaised", function(player, weapon)
local char = player:getChar()
if char then
local weaponRaised = char:getData("weapon_raised", 0)
char:setData("weapon_raised", weaponRaised + 1)
end
lia.log.add(player, "weaponRaised", weapon)
end)
-- Apply weapon raised effects
hook.Add("OnWeaponRaised", "WeaponRaisedEffects", function(player, weapon)
-- Play raised sound
player:EmitSound("buttons/button14.wav", 75, 100)
-- Apply screen effect
player:ScreenFade(SCREENFADE.IN, Color(0, 255, 0, 15), 0.5, 0)
-- Notify player
player:notify("Weapon raised!")
-- Create particle effect
local effect = EffectData()
effect:SetOrigin(player:GetPos())
effect:SetMagnitude(1)
effect:SetScale(1)
util.Effect("Explosion", effect)
end)
-- Track weapon raised statistics
hook.Add("OnWeaponRaised", "TrackWeaponRaisedStats", function(player, weapon)
local char = player:getChar()
if char then
-- Track raised frequency
local raisedFrequency = char:getData("weapon_raised_frequency", 0)
char:setData("weapon_raised_frequency", raisedFrequency + 1)
-- Track raised patterns
local raisedPatterns = char:getData("weapon_raised_patterns", {})
table.insert(raisedPatterns, {
weapon = weapon:GetClass(),
time = os.time()
})
char:setData("weapon_raised_patterns", raisedPatterns)
end
end)
OverrideWeaponRaiseSpeed
Purpose
Called to override the weapon raise speed.
Parameters
client
(Player): The player whose weapon raise speed is being set.raiseSpeed
(number): The current raise speed.
Realm
Server.
When Called
This hook is triggered when: - A weapon raise speed is being set - During weapon raising/lowering - When the speed calculation begins
Example Usage
-- Override weapon raise speed
hook.Add("OverrideWeaponRaiseSpeed", "OverrideWeaponRaiseSpeed", function(client, raiseSpeed)
local char = client:getChar()
if char then
-- Check if player has speed modifier
local speedModifier = char:getData("weapon_raise_speed_modifier", 1)
if speedModifier ~= 1 then
return raiseSpeed * speedModifier
end
-- Check if player is in a restricted area
if char:getData("in_restricted_area", false) then
return raiseSpeed * 0.5 -- Slower in restricted areas
end
-- Check if player is in water
if client:WaterLevel() >= 2 then
return raiseSpeed * 0.75 -- Slower in water
end
-- Check if player is handcuffed
if client:IsHandcuffed() then
return raiseSpeed * 0.25 -- Much slower when handcuffed
end
end
return raiseSpeed
end)
-- Track weapon raise speed overrides
hook.Add("OverrideWeaponRaiseSpeed", "TrackWeaponRaiseSpeedOverrides", function(client, raiseSpeed)
local char = client:getChar()
if char then
local speedOverrides = char:getData("weapon_raise_speed_overrides", 0)
char:setData("weapon_raise_speed_overrides", speedOverrides + 1)
end
lia.log.add(client, "weaponRaiseSpeedOverridden", raiseSpeed)
end)
-- Apply weapon raise speed override effects
hook.Add("OverrideWeaponRaiseSpeed", "WeaponRaiseSpeedOverrideEffects", function(client, raiseSpeed)
-- Play speed override sound
client:EmitSound("ui/buttonclick.wav", 75, 100)
-- Apply screen effect
client:ScreenFade(SCREENFADE.IN, Color(255, 255, 0, 5), 0.1, 0)
-- Notify player
client:notify("Weapon raise speed overridden!")
end)
PlayerWeaponRaisedChanged
Purpose
Called when a player's weapon raised state changes.
Parameters
player
(Player): The player whose weapon state changed.state
(boolean): The new raised state.
Realm
Server.
When Called
This hook is triggered when:
- A player's weapon raised state changes
- After setWepRaised
is called
- When the state is updated
Example Usage
-- Track weapon raised state changes
hook.Add("PlayerWeaponRaisedChanged", "TrackWeaponRaisedStateChanges", function(player, state)
local char = player:getChar()
if char then
local stateChanges = char:getData("weapon_raised_state_changes", 0)
char:setData("weapon_raised_state_changes", stateChanges + 1)
end
lia.log.add(player, "weaponRaisedStateChanged", state)
end)
-- Apply weapon raised state change effects
hook.Add("PlayerWeaponRaisedChanged", "WeaponRaisedStateChangeEffects", function(player, state)
-- Play state change sound
player:EmitSound("ui/buttonclick.wav", 75, 100)
-- Apply screen effect
local color = state and Color(0, 255, 0, 10) or Color(255, 0, 0, 10)
player:ScreenFade(SCREENFADE.IN, color, 0.3, 0)
-- Notify player
local status = state and "raised" or "lowered"
player:notify("Weapon " .. status .. "!")
end)
-- Track weapon raised state change statistics
hook.Add("PlayerWeaponRaisedChanged", "TrackWeaponRaisedStateChangeStats", function(player, state)
local char = player:getChar()
if char then
-- Track state change frequency
local stateChangeFrequency = char:getData("weapon_raised_state_change_frequency", 0)
char:setData("weapon_raised_state_change_frequency", stateChangeFrequency + 1)
-- Track state change patterns
local stateChangePatterns = char:getData("weapon_raised_state_change_patterns", {})
table.insert(stateChangePatterns, {
state = state,
time = os.time()
})
char:setData("weapon_raised_state_change_patterns", stateChangePatterns)
end
end)
ShouldWeaponBeRaised
Purpose
Called to determine if a weapon should be raised.
Parameters
player
(Player): The player whose weapon is being checked.weapon
(Weapon): The weapon being checked.
Realm
Server.
When Called
This hook is triggered when:
- A weapon raise state is being checked
- During isWepRaised
calls
- When the state validation begins
Example Usage
-- Control weapon raising
hook.Add("ShouldWeaponBeRaised", "ControlWeaponRaising", function(player, weapon)
local char = player:getChar()
if char then
-- Check if weapon raising is disabled
if char:getData("weapon_raising_disabled", false) then
return false
end
-- Check if player is in a restricted area
if char:getData("in_restricted_area", false) then
return false
end
-- Check if player is in a vehicle
if player:InVehicle() then
return false
end
-- Check if player is in water
if player:WaterLevel() >= 2 then
return false
end
-- Check if player is handcuffed
if player:IsHandcuffed() then
return false
end
-- Check if weapon is restricted
if weapon:getData("restricted", false) then
return false
end
end
return nil -- Let default logic handle it
end)
-- Track weapon raising checks
hook.Add("ShouldWeaponBeRaised", "TrackWeaponRaisingChecks", function(player, weapon)
local char = player:getChar()
if char then
local raisingChecks = char:getData("weapon_raising_checks", 0)
char:setData("weapon_raising_checks", raisingChecks + 1)
end
lia.log.add(player, "weaponRaisingChecked", weapon)
end)
-- Apply weapon raising check effects
hook.Add("ShouldWeaponBeRaised", "WeaponRaisingCheckEffects", function(player, weapon)
local char = player:getChar()
if char then
-- Check if weapon raising is disabled
if char:getData("weapon_raising_disabled", false) then
player:notify("Weapon raising is disabled!")
end
end
end)
WeaponHolsterCancelled
Purpose
Called when a weapon holster is cancelled.
Parameters
client
(Player): The player whose weapon holster was cancelled.
Realm
Server.
When Called
This hook is triggered when: - A weapon holster is cancelled - During weapon holster processing - When the holster is interrupted
Example Usage
-- Track weapon holster cancellations
hook.Add("WeaponHolsterCancelled", "TrackWeaponHolsterCancellations", function(client)
local char = client:getChar()
if char then
local holsterCancellations = char:getData("weapon_holster_cancellations", 0)
char:setData("weapon_holster_cancellations", holsterCancellations + 1)
end
lia.log.add(client, "weaponHolsterCancelled")
end)
-- Apply weapon holster cancellation effects
hook.Add("WeaponHolsterCancelled", "WeaponHolsterCancellationEffects", function(client)
-- Play cancellation sound
client:EmitSound("buttons/button16.wav", 75, 100)
-- Apply screen effect
client:ScreenFade(SCREENFADE.IN, Color(255, 0, 0, 15), 0.5, 0)
-- Notify player
client:notify("Weapon holster cancelled!")
-- Create particle effect
local effect = EffectData()
effect:SetOrigin(client:GetPos())
effect:SetMagnitude(1)
effect:SetScale(1)
util.Effect("Explosion", effect)
end)
-- Track weapon holster cancellation statistics
hook.Add("WeaponHolsterCancelled", "TrackWeaponHolsterCancellationStats", function(client)
local char = client:getChar()
if char then
-- Track cancellation frequency
local cancellationFrequency = char:getData("weapon_holster_cancellation_frequency", 0)
char:setData("weapon_holster_cancellation_frequency", cancellationFrequency + 1)
-- Track cancellation patterns
local cancellationPatterns = char:getData("weapon_holster_cancellation_patterns", {})
table.insert(cancellationPatterns, {
time = os.time()
})
char:setData("weapon_holster_cancellation_patterns", cancellationPatterns)
end
end)
WeaponHolsterScheduled
Purpose
Called when a weapon holster is scheduled.
Parameters
client
(Player): The player whose weapon holster is scheduled.raiseSpeed
(number): The raise speed for the holster.
Realm
Server.
When Called
This hook is triggered when: - A weapon holster is scheduled - During weapon holster processing - When the holster is planned
Example Usage
-- Track weapon holster scheduling
hook.Add("WeaponHolsterScheduled", "TrackWeaponHolsterScheduling", function(client, raiseSpeed)
local char = client:getChar()
if char then
local holsterScheduling = char:getData("weapon_holster_scheduling", 0)
char:setData("weapon_holster_scheduling", holsterScheduling + 1)
end
lia.log.add(client, "weaponHolsterScheduled", raiseSpeed)
end)
-- Apply weapon holster scheduling effects
hook.Add("WeaponHolsterScheduled", "WeaponHolsterSchedulingEffects", function(client, raiseSpeed)
-- Play scheduling sound
client:EmitSound("ui/buttonclick.wav", 75, 100)
-- Apply screen effect
client:ScreenFade(SCREENFADE.IN, Color(255, 255, 0, 10), 0.3, 0)
-- Notify player
client:notify("Weapon holster scheduled!")
end)
-- Track weapon holster scheduling statistics
hook.Add("WeaponHolsterScheduled", "TrackWeaponHolsterSchedulingStats", function(client, raiseSpeed)
local char = client:getChar()
if char then
-- Track scheduling frequency
local schedulingFrequency = char:getData("weapon_holster_scheduling_frequency", 0)
char:setData("weapon_holster_scheduling_frequency", schedulingFrequency + 1)
-- Track scheduling patterns
local schedulingPatterns = char:getData("weapon_holster_scheduling_patterns", {})
table.insert(schedulingPatterns, {
raiseSpeed = raiseSpeed,
time = os.time()
})
char:setData("weapon_holster_scheduling_patterns", schedulingPatterns)
end
end)
WeaponRaiseScheduled
Purpose
Called when a weapon raise is scheduled.
Parameters
client
(Player): The player whose weapon raise is scheduled.newWeapon
(Weapon): The new weapon being raised.raiseSpeed
(number): The raise speed for the weapon.
Realm
Server.
When Called
This hook is triggered when: - A weapon raise is scheduled - During weapon raising processing - When the raise is planned
Example Usage
-- Track weapon raise scheduling
hook.Add("WeaponRaiseScheduled", "TrackWeaponRaiseScheduling", function(client, newWeapon, raiseSpeed)
local char = client:getChar()
if char then
local raiseScheduling = char:getData("weapon_raise_scheduling", 0)
char:setData("weapon_raise_scheduling", raiseScheduling + 1)
end
lia.log.add(client, "weaponRaiseScheduled", newWeapon, raiseSpeed)
end)
-- Apply weapon raise scheduling effects
hook.Add("WeaponRaiseScheduled", "WeaponRaiseSchedulingEffects", function(client, newWeapon, raiseSpeed)
-- Play scheduling sound
client:EmitSound("ui/buttonclick.wav", 75, 100)
-- Apply screen effect
client:ScreenFade(SCREENFADE.IN, Color(255, 255, 0, 10), 0.3, 0)
-- Notify player
client:notify("Weapon raise scheduled!")
end)
-- Track weapon raise scheduling statistics
hook.Add("WeaponRaiseScheduled", "TrackWeaponRaiseSchedulingStats", function(client, newWeapon, raiseSpeed)
local char = client:getChar()
if char then
-- Track scheduling frequency
local schedulingFrequency = char:getData("weapon_raise_scheduling_frequency", 0)
char:setData("weapon_raise_scheduling_frequency", schedulingFrequency + 1)
-- Track scheduling patterns
local schedulingPatterns = char:getData("weapon_raise_scheduling_patterns", {})
table.insert(schedulingPatterns, {
weapon = newWeapon:GetClass(),
raiseSpeed = raiseSpeed,
time = os.time()
})
char:setData("weapon_raise_scheduling_patterns", schedulingPatterns)
end
end)