furhter adjustments based on time

This commit is contained in:
jenz 2026-04-30 14:17:41 +02:00
parent c819974dd6
commit 1df4cdf8dc

View File

@ -157,36 +157,35 @@ public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[]
delete results; delete results;
} }
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void OnPluginEnd()
{
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientConnected(i) && IsFakeClient(i) && !IsClientSourceTV(i))
{
g_iLatency[i] = 0;
KickClient(i, "Disconnect by user.");
}
}
}
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
// Purpose: // Purpose:
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
public void OnMapStart() public void OnMapStart()
{ {
KeyValues kv = CreateKeyValues("ints_used_already");
for (float i = 0.0; i < g_iFakesCount;) for (float i = 0.0; i < g_iFakesCount;)
{ {
int num = GetRandomInt(5, 150);
char strnum[16];
IntToString(num, strnum, sizeof(strnum));
int found = kv.GetNum(strnum, -1);
if (found != -1)
{
continue;
}
kv.SetNum(strnum, num);
i += 1.0; i += 1.0;
CreateTimer(i * RoundToCeil(i / 3), addfakes);
CreateTimer(float(num), addfakes);
} }
delete kv;
} }
public Action addfakes(Handle timer) public Action addfakes(Handle timer)
{ {
int fakes = 0; int fakes = 0;
int spectators = 0;
int inTeam = 0;
for(int i = 1; i <= MaxClients; i++) for(int i = 1; i <= MaxClients; i++)
{ {
if (IsClientConnected(i) && IsClientInGame(i) && IsClientAuthorized(i)) if (IsClientConnected(i) && IsClientInGame(i) && IsClientAuthorized(i))
@ -195,12 +194,25 @@ public Action addfakes(Handle timer)
{ {
fakes++; fakes++;
} }
if (GetClientTeam(i) <= CS_TEAM_SPECTATOR)
{
spectators++;
}
else
{
inTeam++;
}
} }
} }
if (fakes < 16) int limit = 16;
if (nightTime())
{
limit /= 2;
}
if (fakes < limit)
{ {
CreateFake(); CreateFake();
if (GetRandomInt(0, 10) <= 3) if (spectators > limit || inTeam + 2 < spectators)
{ {
SetFakeToTeam(); SetFakeToTeam();
} }
@ -472,6 +484,11 @@ public void KickFakes()
public void ManageFakes(int iPlayersSpectate, int iPlayersInTeam, int iFakesInTeam, int iFakesSpectate) public void ManageFakes(int iPlayersSpectate, int iPlayersInTeam, int iFakesInTeam, int iFakesSpectate)
{ {
int limit = 16; int limit = 16;
if (nightTime())
{
limit /= 2;
}
if (iPlayersSpectate + iPlayersInTeam + 4 < iFakesSpectate + iFakesInTeam || iFakesSpectate + iFakesInTeam > limit) if (iPlayersSpectate + iPlayersInTeam + 4 < iFakesSpectate + iFakesInTeam || iFakesSpectate + iFakesInTeam > limit)
{ {
KickFakes(); KickFakes();
@ -479,12 +496,7 @@ public void ManageFakes(int iPlayersSpectate, int iPlayersInTeam, int iFakesInTe
else if (iPlayersSpectate + iPlayersInTeam > iFakesSpectate + iFakesInTeam && iFakesSpectate + iFakesInTeam < limit) else if (iPlayersSpectate + iPlayersInTeam > iFakesSpectate + iFakesInTeam && iFakesSpectate + iFakesInTeam < limit)
{ {
CreateFake(); CreateFake();
int max = 3; if (iPlayersSpectate + iFakesSpectate > limit || iPlayersInTeam + iFakesInTeam + 2 < iPlayersSpectate + iFakesSpectate)
if (iPlayersSpectate + iFakesSpectate > limit)
{
max = 7;
}
if (GetRandomInt(0, 10) <= max)
{ {
SetFakeToTeam(); SetFakeToTeam();
} }
@ -504,6 +516,27 @@ public void SetFakeToTeam()
} }
} }
public bool nightTime()
{
char sTime[8];
FormatTime(sTime, sizeof(sTime), "%H%M");
int CurTime = StringToInt(sTime);
int MinTime = 2000;
int MaxTime = 500;
//Wrap around.
CurTime = (CurTime <= MinTime) ? CurTime + 2400 : CurTime;
MaxTime = (MaxTime <= MinTime) ? MaxTime + 2400 : MaxTime;
if ((MinTime <= CurTime <= MaxTime))
{
return true;
}
return false;
}
public void CreateFake() public void CreateFake()
{ {
if (g_hNames.Length == 0 || g_hClanNames.Length == 0) if (g_hNames.Length == 0 || g_hClanNames.Length == 0)