mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
135
gamemodes/terrortown/gamemode/cl_keys.lua
Normal file
135
gamemodes/terrortown/gamemode/cl_keys.lua
Normal file
@@ -0,0 +1,135 @@
|
||||
--[[
|
||||
| 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
|
||||
Reference in New Issue
Block a user