mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
136 lines
4.0 KiB
Lua
136 lines
4.0 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
-- Key overrides for TTT specific keyboard functions
|
|
|
|
local function SendWeaponDrop()
|
|
RunConsoleCommand("ttt_dropweapon")
|
|
|
|
-- Turn off weapon switch display if you had it open while dropping, to avoid
|
|
-- inconsistencies.
|
|
WSWITCH:Disable()
|
|
end
|
|
|
|
function GM:OnSpawnMenuOpen()
|
|
SendWeaponDrop()
|
|
end
|
|
|
|
function GM:PlayerBindPress(ply, bind, pressed)
|
|
if not IsValid(ply) then return end
|
|
|
|
if bind == "invnext" and pressed then
|
|
if ply:IsSpec() then
|
|
TIPS.Next()
|
|
else
|
|
WSWITCH:SelectNext()
|
|
end
|
|
return true
|
|
elseif bind == "invprev" and pressed then
|
|
if ply:IsSpec() then
|
|
TIPS.Prev()
|
|
else
|
|
WSWITCH:SelectPrev()
|
|
end
|
|
return true
|
|
elseif bind == "+attack" then
|
|
if WSWITCH:PreventAttack() then
|
|
if not pressed then
|
|
WSWITCH:ConfirmSelection()
|
|
end
|
|
return true
|
|
end
|
|
elseif bind == "+sprint" then
|
|
-- set voice type here just in case shift is no longer down when the
|
|
-- PlayerStartVoice hook runs, which might be the case when switching to
|
|
-- steam overlay
|
|
ply.traitor_gvoice = false
|
|
RunConsoleCommand("tvog", "0")
|
|
return true
|
|
elseif bind == "+use" and pressed then
|
|
if ply:IsSpec() then
|
|
RunConsoleCommand("ttt_spec_use")
|
|
return true
|
|
elseif TBHUD:PlayerIsFocused() then
|
|
return TBHUD:UseFocused()
|
|
end
|
|
elseif string.sub(bind, 1, 4) == "slot" and pressed then
|
|
local idx = tonumber(string.sub(bind, 5, -1)) or 1
|
|
|
|
-- if radiomenu is open, override weapon select
|
|
if RADIO.Show then
|
|
RADIO:SendCommand(idx)
|
|
else
|
|
WSWITCH:SelectSlot(idx)
|
|
end
|
|
return true
|
|
elseif bind == "+zoom" and pressed then
|
|
-- open or close radio
|
|
RADIO:ShowRadioCommands(not RADIO.Show)
|
|
return true
|
|
elseif bind == "+voicerecord" then
|
|
if not VOICE.CanSpeak() then
|
|
return true
|
|
end
|
|
elseif bind == "gm_showteam" and pressed and ply:IsSpec() then
|
|
local m = VOICE.CycleMuteState()
|
|
RunConsoleCommand("ttt_mute_team", m)
|
|
return true
|
|
elseif bind == "+duck" and pressed and ply:IsSpec() then
|
|
if not IsValid(ply:GetObserverTarget()) then
|
|
if GAMEMODE.ForcedMouse then
|
|
gui.EnableScreenClicker(false)
|
|
GAMEMODE.ForcedMouse = false
|
|
else
|
|
gui.EnableScreenClicker(true)
|
|
GAMEMODE.ForcedMouse = true
|
|
end
|
|
end
|
|
elseif bind == "noclip" and pressed then
|
|
if not GetConVar("sv_cheats"):GetBool() then
|
|
RunConsoleCommand("ttt_equipswitch")
|
|
return true
|
|
end
|
|
elseif (bind == "gmod_undo" or bind == "undo") and pressed then
|
|
RunConsoleCommand("ttt_dropammo")
|
|
return true
|
|
elseif bind == "phys_swap" and pressed then
|
|
RunConsoleCommand("ttt_quickslot", "5")
|
|
end
|
|
end
|
|
|
|
-- Note that for some reason KeyPress and KeyRelease are called multiple times
|
|
-- for the same key event in multiplayer.
|
|
function GM:KeyPress(ply, key)
|
|
if not IsFirstTimePredicted() then return end
|
|
if not IsValid(ply) or ply != LocalPlayer() then return end
|
|
|
|
if key == IN_SPEED and ply:IsActiveTraitor() then
|
|
timer.Simple(0.05, function() permissions.EnableVoiceChat( true ) end)
|
|
end
|
|
end
|
|
|
|
function GM:KeyRelease(ply, key)
|
|
if not IsFirstTimePredicted() then return end
|
|
if not IsValid(ply) or ply != LocalPlayer() then return end
|
|
|
|
if key == IN_SPEED and ply:IsActiveTraitor() then
|
|
timer.Simple(0.05, function() permissions.EnableVoiceChat( false ) end)
|
|
end
|
|
end
|
|
|
|
function GM:PlayerButtonUp(ply, btn)
|
|
if not IsFirstTimePredicted() then return end
|
|
-- Would be nice to clean up this whole "all key handling in massive
|
|
-- functions" thing. oh well
|
|
if btn == KEY_PAD_ENTER then
|
|
WEPS.DisguiseToggle(ply)
|
|
end
|
|
end
|