mirror of
https://codeberg.org/spire/autoexec.git
synced 2026-08-02 12:14:52 +02:00
automatically switch gamemode on ready up when appropriate
This commit is contained in:
parent
563392a7e8
commit
781d3a214f
2 changed files with 70 additions and 13 deletions
Binary file not shown.
|
|
@ -122,6 +122,11 @@ public Action:HandleExecAction(args) {
|
||||||
SetConVarString(CvarMode, "4v4");
|
SetConVarString(CvarMode, "4v4");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StrContains(cfg, "ultiduo") > 0) {
|
||||||
|
PrintToChatAll("Setting game mode to 2v2");
|
||||||
|
SetConVarString(CvarMode, "2v2");
|
||||||
|
}
|
||||||
|
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -233,8 +238,8 @@ public Action clearInAutoExec(Handle timer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnReadyUp(Event event, const String:name[], bool:dontBroadcast) {
|
public void OnReadyUp(Event event, const String:name[], bool:dontBroadcast) {
|
||||||
bool redReady = GameRules_GetProp("m_bTeamReady", 1, .element=2) != 0;
|
bool redReady = GameRules_GetProp("m_bTeamReady", 1, .element = 2) != 0;
|
||||||
bool blueReady = GameRules_GetProp("m_bTeamReady", 1, .element=3) != 0;
|
bool blueReady = GameRules_GetProp("m_bTeamReady", 1, .element = 3) != 0;
|
||||||
|
|
||||||
CheckWhitelist();
|
CheckWhitelist();
|
||||||
|
|
||||||
|
|
@ -248,19 +253,35 @@ public void OnReadyUp(Event event, const String:name[], bool:dontBroadcast) {
|
||||||
|
|
||||||
public void CheckPlayerCount(int team) {
|
public void CheckPlayerCount(int team) {
|
||||||
int playerCount = GetTeamClientCount(team);
|
int playerCount = GetTeamClientCount(team);
|
||||||
|
int otherPlayerCount = GetTeamClientCount(OtherTeam(team));
|
||||||
|
decl String:gameMode[8];
|
||||||
|
GetConVarString(CvarMode, gameMode, sizeof(gameMode));
|
||||||
|
|
||||||
decl String:gamemode[8];
|
int expected = ExpectedPlayerCount(gameMode);
|
||||||
GetConVarString(CvarMode, gamemode, sizeof(gamemode));
|
|
||||||
|
if (playerCount != expected) {
|
||||||
|
decl String:expectedMode[8];
|
||||||
|
decl String:expectedModeOther[8];
|
||||||
|
|
||||||
|
ExpectedGameMode(playerCount, expectedMode);
|
||||||
|
ExpectedGameMode(otherPlayerCount, expectedModeOther);
|
||||||
|
|
||||||
|
bool gotExpectedMode = !(strncmp("unknown", expectedMode, sizeof(expectedMode)) == 0);
|
||||||
|
|
||||||
|
if (gotExpectedMode && strncmp(expectedMode, expectedModeOther, strlen(expectedMode)) == 0) {
|
||||||
|
PrintToChatAll("Switching config to %s", expectedMode);
|
||||||
|
SetConVarString(CvarMode, expectedMode);
|
||||||
|
ExecMapCfg();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expected != 0 && !warned[team]) {
|
||||||
|
if (playerCount != expected) {
|
||||||
|
|
||||||
if (!warned[team]) {
|
|
||||||
if (strcmp(gamemode, "9v9") == 0 && playerCount != 9) {
|
|
||||||
warned[team] = true;
|
warned[team] = true;
|
||||||
PrintToChatAll("Warning, config is set to 9v9 but you readied up with %d players", playerCount);
|
PrintToChatAll("Warning, config is set to %s but you readied up with %d players", gameMode, playerCount);
|
||||||
GameRules_SetProp("m_bTeamReady", 0, _ , team, true);
|
GameRules_SetProp("m_bTeamReady", 0, _ , team, true);
|
||||||
} else if (strcmp(gamemode, "6v6") == 0 && playerCount != 6) {
|
|
||||||
warned[team] = true;
|
|
||||||
GameRules_SetProp("m_bTeamReady", 0, _ , team, true);
|
|
||||||
PrintToChatAll("Warning, config is set to 6v6 but you readied up with %d players", playerCount);
|
|
||||||
} else {
|
} else {
|
||||||
warned[team] = true;
|
warned[team] = true;
|
||||||
}
|
}
|
||||||
|
|
@ -287,14 +308,50 @@ public GetExpectedWhitelist(String:whitelist[128]) {
|
||||||
if (strncmp("ugc", league, strlen(league)) == 0) {
|
if (strncmp("ugc", league, strlen(league)) == 0) {
|
||||||
if (strncmp("9v9", gamemode, strlen(gamemode)) == 0) {
|
if (strncmp("9v9", gamemode, strlen(gamemode)) == 0) {
|
||||||
whitelist = "cfg/item_whitelist_ugc_HL.txt";
|
whitelist = "cfg/item_whitelist_ugc_HL.txt";
|
||||||
} else if (strncmp("6v6", gamemode, strlen(gamemode)) == 0) { {
|
} else if (strncmp("6v6", gamemode, strlen(gamemode)) == 0) {
|
||||||
whitelist = "cfg/item_whitelist_ugc_6v6.txt";
|
whitelist = "cfg/item_whitelist_ugc_6v6.txt";
|
||||||
}
|
}
|
||||||
} else if (strncmp("etf2l", league, strlen(league)) == 0) {
|
} else if (strncmp("etf2l", league, strlen(league)) == 0) {
|
||||||
if (strncmp("9v9", gamemode, strlen(gamemode)) == 0) {
|
if (strncmp("9v9", gamemode, strlen(gamemode)) == 0) {
|
||||||
whitelist = "cfg/etf2l_whitelist_9v9.txt";
|
whitelist = "cfg/etf2l_whitelist_9v9.txt";
|
||||||
} else if (strncmp("6v6", gamemode, strlen(gamemode)) == 0) { {
|
} else if (strncmp("6v6", gamemode, strlen(gamemode)) == 0) {
|
||||||
whitelist = "cfg/etf2l_whitelist_6v6.txt";
|
whitelist = "cfg/etf2l_whitelist_6v6.txt";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int OtherTeam(int team) {
|
||||||
|
if (team == 2) {
|
||||||
|
return 3;
|
||||||
|
} else {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int ExpectedPlayerCount(String:gamemode[8]) {
|
||||||
|
if (strcmp(gamemode, "9v9") == 0) {
|
||||||
|
return 9;
|
||||||
|
} else if (strcmp(gamemode, "6v6") == 0) {
|
||||||
|
return 6;
|
||||||
|
} else if (strcmp(gamemode, "4v4") == 0) {
|
||||||
|
return 4;
|
||||||
|
} else if (strcmp(gamemode, "2v2") == 0) {
|
||||||
|
return 2;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ExpectedGameMode(int count, String:mode[8]) {
|
||||||
|
if (count == 9 || count == 8) {
|
||||||
|
mode = "9v9";
|
||||||
|
} else if (count == 5 || count == 6) {
|
||||||
|
mode = "6v6";
|
||||||
|
} else if (count == 3 || count == 4) {
|
||||||
|
mode = "4v4";
|
||||||
|
} else if (count == 2) {
|
||||||
|
mode = "2v2";
|
||||||
|
} else {
|
||||||
|
mode = "unknown";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue