mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
Merge #3664
3664: Add initial delay to talking in chat r=heinrich5991 a=Learath2 <!-- What is the motivation for the changes of this pull request --> This adds a delay before one can chat. It should help mods in situations where people are spamming chat ## Checklist - [x] Tested the change ingame - [ ] Provided screenshots if it is a visual change - [x] Tested in combination with possibly related configuration options - [ ] Written a unit test if it works standalone, system.c especially - [x] Considered possible null pointers and out of bounds array indexing - [x] Changed no physics that affect existing maps - [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional) Co-authored-by: Learath2 <learath2@gmail.com>
This commit is contained in:
commit
8e4e4940d2
|
@ -328,6 +328,7 @@ MACRO_CONFIG_INT(SvTimeInBroadcastInterval, sv_time_in_broadcast_interval, 1, 0,
|
||||||
MACRO_CONFIG_INT(SvDefaultTimerType, sv_default_timer_type, 0, 0, 3, CFGFLAG_SERVER, "Default way of displaying time either game/round timer or broadcast. 0 = game/round timer, 1 = broadcast, 2 = 0+1, 3 = none")
|
MACRO_CONFIG_INT(SvDefaultTimerType, sv_default_timer_type, 0, 0, 3, CFGFLAG_SERVER, "Default way of displaying time either game/round timer or broadcast. 0 = game/round timer, 1 = broadcast, 2 = 0+1, 3 = none")
|
||||||
|
|
||||||
// these might need some fine tuning
|
// these might need some fine tuning
|
||||||
|
MACRO_CONFIG_INT(SvChatInitialDelay, sv_chat_initial_delay, 0, 0, 360, CFGFLAG_SERVER, "The time in seconds before the first message can be sent")
|
||||||
MACRO_CONFIG_INT(SvChatPenalty, sv_chat_penalty, 250, 50, 1000, CFGFLAG_SERVER, "chat score will be increased by this on every message, and decremented by 1 on every tick.")
|
MACRO_CONFIG_INT(SvChatPenalty, sv_chat_penalty, 250, 50, 1000, CFGFLAG_SERVER, "chat score will be increased by this on every message, and decremented by 1 on every tick.")
|
||||||
MACRO_CONFIG_INT(SvChatThreshold, sv_chat_threshold, 1000, 50, 10000, CFGFLAG_SERVER, "if chats core exceeds this, the player will be muted for sv_spam_mute_duration seconds")
|
MACRO_CONFIG_INT(SvChatThreshold, sv_chat_threshold, 1000, 50, 10000, CFGFLAG_SERVER, "if chats core exceeds this, the player will be muted for sv_spam_mute_duration seconds")
|
||||||
MACRO_CONFIG_INT(SvSpamMuteDuration, sv_spam_mute_duration, 60, 0, 3600, CFGFLAG_SERVER, "how many seconds to mute, if player triggers mute on spam. 0 = off")
|
MACRO_CONFIG_INT(SvSpamMuteDuration, sv_spam_mute_duration, 60, 0, 3600, CFGFLAG_SERVER, "how many seconds to mute, if player triggers mute on spam. 0 = off")
|
||||||
|
|
|
@ -3749,12 +3749,17 @@ int CGameContext::ProcessSpamProtection(int ClientID)
|
||||||
|
|
||||||
NETADDR Addr;
|
NETADDR Addr;
|
||||||
Server()->GetClientAddr(ClientID, &Addr);
|
Server()->GetClientAddr(ClientID, &Addr);
|
||||||
int Muted = 0;
|
|
||||||
|
|
||||||
for(int i = 0; i < m_NumMutes && !Muted; i++)
|
int Muted = 0;
|
||||||
|
if(m_apPlayers[ClientID]->m_JoinTick > m_NonEmptySince + 10 * Server()->TickSpeed())
|
||||||
|
Muted = (m_apPlayers[ClientID]->m_JoinTick + Server()->TickSpeed() * g_Config.m_SvChatInitialDelay - Server()->Tick()) / Server()->TickSpeed();
|
||||||
|
if(Muted <= 0)
|
||||||
{
|
{
|
||||||
if(!net_addr_comp_noport(&Addr, &m_aMutes[i].m_Addr))
|
for(int i = 0; i < m_NumMutes && Muted <= 0; i++)
|
||||||
Muted = (m_aMutes[i].m_Expire - Server()->Tick()) / Server()->TickSpeed();
|
{
|
||||||
|
if(!net_addr_comp_noport(&Addr, &m_aMutes[i].m_Addr))
|
||||||
|
Muted = (m_aMutes[i].m_Expire - Server()->Tick()) / Server()->TickSpeed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Muted > 0)
|
if(Muted > 0)
|
||||||
|
|
Loading…
Reference in a new issue