Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Called alot
- function GM:CheckPlayerDeathRoundEnd()
- if !GAMEMODE.RoundBased || !GAMEMODE:InRound() then
- return
- end
- local Teams = GAMEMODE:GetTeamAliveCounts()
- if table.Count(Teams) == 0 then
- GAMEMODE:RoundEndWithResult(1001, "Draw, everyone loses!")
- VOICE_IS_END_ROUND = 1
- ForceCloseTauntWindow(1)
- return
- end
- if table.Count(Teams) == 1 then
- local TeamID = table.GetFirstKey(Teams)
- -- debug
- MsgAll("Round Result: "..team.GetName(TeamID).." ("..TeamID..") Wins!\n")
- -- End Round
- GAMEMODE:RoundEndWithResult(TeamID, team.GetName(TeamID).." win!") -- fix end result that often opposited as "Props Win" or "Hunter Win".
- VOICE_IS_END_ROUND = 1
- ForceCloseTauntWindow(1)
- return
- end
- end
- -- Player Voice & Chat Control to prevent Metagaming. (As requested by some server owners/suggestors.)
- -- You can disable this feature by typing 'sv_alltalk 1' in console to make everyone can hear.
- -- Control Player Voice
- local alltalk = GetConVar("sv_alltalk")
- function GM:PlayerCanHearPlayersVoice(listen, speaker)
- local alltalk_cvar = alltalk:GetInt()
- if (alltalk_cvar > 0) then return true, false end
- -- prevent Loopback check.
- if (listen == speaker) then return false, false end
- -- Only alive players can listen other living players.
- if listen:Alive() && speaker:Alive() then return true, false end
- -- Event: On Round Start. Living Players don't listen to dead players.
- if VOICE_IS_END_ROUND == 0 && listen:Alive() && !speaker:Alive() then return false, false end
- -- Listen to all dead players while you dead.
- if !listen:Alive() && !speaker:Alive() then return true, false end
- -- However, Living players can be heard from dead players.
- if !listen:Alive() && speaker:Alive() then return true, false end
- -- Event: On Round End/Time End. Listen to everyone.
- if VOICE_IS_END_ROUND == 1 && listen:Alive() && !speaker:Alive() then return true, false end
- -- Spectator can only read from themselves.
- if listen:Team() == TEAM_SPECTATOR && listen:Alive() && speaker:Alive() then return false, false end
- -- This is for ULX "Permanent Gag". Uncomment this if you have issues.
- -- if speaker:GetPData( "permgagged" ) == "true" then return false, false end
- end
- -- Control Players Chat
- function GM:PlayerCanSeePlayersChat(txt, onteam, listen, speaker)
- if ( onteam ) then
- -- Generic Specific OnTeam chats
- if ( !IsValid( speaker ) || !IsValid( listen ) ) then return false end
- if ( listen:Team() != speaker:Team() ) then return false end
- -- ditto, this is same as below.
- if listen:Alive() && speaker:Alive() then return true end
- if VOICE_IS_END_ROUND == 0 && listen:Alive() && !speaker:Alive() then return false end
- if !listen:Alive() && !speaker:Alive() then return true end
- if !listen:Alive() && speaker:Alive() then return true end
- if VOICE_IS_END_ROUND == 1 && listen:Alive() && !speaker:Alive() then return true end
- if listen:Team() == TEAM_SPECTATOR && listen:Alive() && speaker:Alive() then return false end
- end
- -- Generic Checks
- if ( !IsValid( speaker ) || !IsValid( listen ) ) then return false end
- -- Only alive players can see other living players.
- if listen:Alive() && speaker:Alive() then return true end
- -- Event: On Round Start. Living Players don't see dead players' chat.
- if VOICE_IS_END_ROUND == 0 && listen:Alive() && !speaker:Alive() then return false end
- -- See Chat to all dead players while you dead.
- if !listen:Alive() && !speaker:Alive() then return true end
- -- However, Living players' chat can be seen from dead players.
- if !listen:Alive() && speaker:Alive() then return true end
- -- Event: On Round End/Time End. See Chat to everyone.
- if VOICE_IS_END_ROUND == 1 && listen:Alive() && !speaker:Alive() then return true end
- -- Spectator can only read from themselves.
- if listen:Team() == TEAM_SPECTATOR && listen:Alive() && speaker:Alive() then return false end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement