Skip to content

Commit

Permalink
Added stages and bonuses
Browse files Browse the repository at this point in the history
Big thanks to @BlackV1ruZ for query
  • Loading branch information
qawery-just-sad committed Jun 13, 2020
1 parent fa5db1f commit 70df913
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 26 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
*.inc
*.exe
*.dat
*.smx
46 changes: 35 additions & 11 deletions addons/sourcemod/scripting/mapchooser.sp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/**
* vim: set ts=4 :
/*
* =============================================================================
* SourceMod Mapchooser Plugin
* Creates a map vote at appropriate times, setting sm_nextmap to the winning
Expand Down Expand Up @@ -43,9 +42,9 @@
public Plugin myinfo =
{
name = "SurfTimer MapChooser",
author = "AlliedModders LLC & Ace",
author = "AlliedModders LLC & SurfTimer Contributors",
description = "Automated Map Voting",
version = SOURCEMOD_VERSION,
version = "1.2",
url = "http://www.sourcemod.net/"
};

Expand Down Expand Up @@ -107,6 +106,11 @@ Handle g_MapVoteStartedForward = null;
Handle g_hDb = null;
#define PERCENT 0x25

//SQL Queries
char sql_SelectMapListSpecific[] = "SELECT ck_zones.mapname, tier, count(ck_zones.mapname), bonus FROM `ck_zones` INNER JOIN ck_maptier on ck_zones.mapname = ck_maptier.mapname LEFT JOIN ( SELECT mapname as map_2, MAX(ck_zones.zonegroup) as bonus FROM ck_zones GROUP BY mapname ) as a on ck_zones.mapname = a.map_2 WHERE (zonegroup = 0 AND zonetype = 1 or zonetype = 3) AND tier = %s GROUP BY ck_zones.mapname ORDER BY tier ASC, mapname ASC";
char sql_SelectMapListRange[] = "SELECT ck_zones.mapname, tier, count(ck_zones.mapname), bonus FROM `ck_zones` INNER JOIN ck_maptier on ck_zones.mapname = ck_maptier.mapname LEFT JOIN ( SELECT mapname as map_2, MAX(ck_zones.zonegroup) as bonus FROM ck_zones GROUP BY mapname ) as a on ck_zones.mapname = a.map_2 WHERE (zonegroup = 0 AND zonetype = 1 or zonetype = 3) AND tier >= %s AND tier <= %s GROUP BY ck_zones.mapname ORDER BY tier ASC, mapname ASC";
char sql_SelectMapList[] = "SELECT ck_zones.mapname, tier, count(ck_zones.mapname), bonus FROM `ck_zones` INNER JOIN ck_maptier on ck_zones.mapname = ck_maptier.mapname LEFT JOIN ( SELECT mapname as map_2, MAX(ck_zones.zonegroup) as bonus FROM ck_zones GROUP BY mapname ) as a on ck_zones.mapname = a.map_2 WHERE (zonegroup = 0 AND zonetype = 1 or zonetype = 3) GROUP BY ck_zones.mapname ORDER BY tier ASC, mapname ASC";

/* Upper bound of how many team there could be */
#define MAXTEAMS 10
int g_winCount[MAXTEAMS];
Expand Down Expand Up @@ -1246,17 +1250,20 @@ public void db_setupDatabase()

public void SelectMapList()
{
char szQuery[256], szTier[16], szBuffer[2][32];
char szQuery[512], szTier[16], szBuffer[2][32];

GetConVarString(g_Cvar_ServerTier, szTier, sizeof(szTier));
ExplodeString(szTier, ".", szBuffer, 2, 32);

if (StrEqual(szBuffer[1], "0"))
Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier WHERE tier = %s ORDER BY tier asc, mapname asc;", szBuffer[0]);
// OLD QUERY Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier WHERE tier = %s ORDER BY tier asc, mapname asc;", szBuffer[0]);
Format(szQuery, sizeof(szQuery), sql_SelectMapListSpecific, szBuffer[0]);
else if (strlen(szBuffer[1]) > 0)
Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier WHERE tier >= %s AND tier <= %s ORDER BY tier asc, mapname asc;", szBuffer[0], szBuffer[1]);
// OLD QUERY Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier WHERE tier >= %s AND tier <= %s ORDER BY tier asc, mapname asc;", szBuffer[0], szBuffer[1]);
Format(szQuery, sizeof(szQuery), sql_SelectMapListRange, szBuffer[0], szBuffer[1]);
else
Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier ORDER BY tier asc, mapname asc;");
// OLD QUERY Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier ORDER BY tier asc, mapname asc;");
Format(szQuery, sizeof(szQuery), sql_SelectMapList);

SQL_TQuery(g_hDb, SelectMapListCallback, szQuery, DBPrio_Low);
}
Expand All @@ -1274,13 +1281,30 @@ public void SelectMapListCallback(Handle owner, Handle hndl, const char[] error,
g_MapList.Clear();
g_MapListTier.Clear();

char szMapName[128], szValue[256];
int tier = 0;
char szMapName[128], szValue[256], stages[128], bonuses[128];
int tier, zones, bonus;
while (SQL_FetchRow(hndl))
{
SQL_FetchString(hndl, 0, szMapName, sizeof(szMapName));
tier = SQL_FetchInt(hndl, 1);
Format(szValue, sizeof(szValue), "%s - Tier %d", szMapName, tier);
zones = SQL_FetchInt(hndl, 2);
bonus = SQL_FetchInt(hndl, 3);

if (zones == 1)
{
Format(stages, sizeof(stages), "- Linear");
}
else
Format(stages, sizeof(stages), "- Stages %d", zones);

if (bonus == 0)
{
Format(bonuses, sizeof(bonuses), "");
}
else
Format(bonuses, sizeof(bonuses), "- Bonuses %d", bonus);

Format(szValue, sizeof(szValue), "%s - Tier %d %s %s", szMapName, tier, stages, bonuses);
g_MapList.PushString(szMapName);
g_MapListTier.PushString(szValue);
}
Expand Down
47 changes: 36 additions & 11 deletions addons/sourcemod/scripting/nominations.sp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/**
* vim: set ts=4 :
/*
* =============================================================================
* SourceMod Rock The Vote Plugin
* Creates a map vote when the required number of players have requested one.
Expand Down Expand Up @@ -40,9 +39,9 @@
public Plugin myinfo =
{
name = "SurfTimer Nominations",
author = "AlliedModders LLC & Ace",
author = "AlliedModders LLC & SurfTimer Contributors",
description = "Provides Map Nominations",
version = SOURCEMOD_VERSION,
version = "1.2",
url = "http://www.sourcemod.net/"
};

Expand All @@ -67,6 +66,11 @@ StringMap g_mapTrie = null;
Handle g_hDb = null;
#define PERCENT 0x25

//SQL Queries
char sql_SelectMapListSpecific[] = "SELECT ck_zones.mapname, tier, count(ck_zones.mapname), bonus FROM `ck_zones` INNER JOIN ck_maptier on ck_zones.mapname = ck_maptier.mapname LEFT JOIN ( SELECT mapname as map_2, MAX(ck_zones.zonegroup) as bonus FROM ck_zones GROUP BY mapname ) as a on ck_zones.mapname = a.map_2 WHERE (zonegroup = 0 AND zonetype = 1 or zonetype = 3) AND tier = %s GROUP BY ck_zones.mapname ORDER BY tier ASC, mapname ASC";
char sql_SelectMapListRange[] = "SELECT ck_zones.mapname, tier, count(ck_zones.mapname), bonus FROM `ck_zones` INNER JOIN ck_maptier on ck_zones.mapname = ck_maptier.mapname LEFT JOIN ( SELECT mapname as map_2, MAX(ck_zones.zonegroup) as bonus FROM ck_zones GROUP BY mapname ) as a on ck_zones.mapname = a.map_2 WHERE (zonegroup = 0 AND zonetype = 1 or zonetype = 3) AND tier >= %s AND tier <= %s GROUP BY ck_zones.mapname ORDER BY tier ASC, mapname ASC";
char sql_SelectMapList[] = "SELECT ck_zones.mapname, tier, count(ck_zones.mapname), bonus FROM `ck_zones` INNER JOIN ck_maptier on ck_zones.mapname = ck_maptier.mapname LEFT JOIN ( SELECT mapname as map_2, MAX(ck_zones.zonegroup) as bonus FROM ck_zones GROUP BY mapname ) as a on ck_zones.mapname = a.map_2 WHERE (zonegroup = 0 AND zonetype = 1 or zonetype = 3) GROUP BY ck_zones.mapname ORDER BY tier ASC, mapname ASC";

public void OnPluginStart()
{
LoadTranslations("common.phrases");
Expand Down Expand Up @@ -457,23 +461,26 @@ public void db_setupDatabase()

public void SelectMapList()
{
char szQuery[256], szTier[16], szBuffer[2][32];
char szQuery[512], szTier[16], szBuffer[2][32];

g_Cvar_ServerTier = FindConVar("sm_server_tier");
GetConVarString(g_Cvar_ServerTier, szTier, sizeof(szTier));
ExplodeString(szTier, ".", szBuffer, 2, 32);

if (StrEqual(szBuffer[1], "0"))
Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier WHERE tier = %s ORDER BY tier asc, mapname asc;", szBuffer[0]);
// OLD QUERY Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier WHERE tier = %s ORDER BY tier asc, mapname asc;", szBuffer[0]);
Format(szQuery, sizeof(szQuery), sql_SelectMapListSpecific, szBuffer[0]);
else if (strlen(szBuffer[1]) > 0)
Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier WHERE tier >= %s AND tier <= %s ORDER BY tier asc, mapname asc;", szBuffer[0], szBuffer[1]);
// OLD QUERY Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier WHERE tier >= %s AND tier <= %s ORDER BY tier asc, mapname asc;", szBuffer[0], szBuffer[1]);
Format(szQuery, sizeof(szQuery), sql_SelectMapListRange, szBuffer[0], szBuffer[1]);
else
Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier ORDER BY tier asc, mapname asc;");
// OLD QUERY Format(szQuery, sizeof(szQuery), "SELECT mapname, tier FROM ck_maptier ORDER BY tier asc, mapname asc;");
Format(szQuery, sizeof(szQuery), sql_SelectMapList);

SQL_TQuery(g_hDb, SelectMapListCallback, szQuery, DBPrio_Low);
}

public void SelectMapListCallback(Handle owner, Handle hndl, const char[] error, any tier)
public void SelectMapListCallback(Handle owner, Handle hndl, const char[] error, any data)
{
if (hndl == null)
{
Expand All @@ -486,12 +493,30 @@ public void SelectMapListCallback(Handle owner, Handle hndl, const char[] error,
g_MapList.Clear();
g_MapListTier.Clear();

char szValue[256], szMapName[128];
int tier, zones, bonus;
char szValue[256], szMapName[128], stages[128], bonuses[128];
while (SQL_FetchRow(hndl))
{
SQL_FetchString(hndl, 0, szMapName, sizeof(szMapName));
tier = SQL_FetchInt(hndl, 1);
Format(szValue, sizeof(szValue), "%s - Tier %d", szMapName, tier);
zones = SQL_FetchInt(hndl, 2);
bonus = SQL_FetchInt(hndl, 3);

if (zones == 1)
{
Format(stages, sizeof(stages), "- Linear");
}
else
Format(stages, sizeof(stages), "- Stages %d", zones);

if (bonus == 0)
{
Format(bonuses, sizeof(bonuses), "");
}
else
Format(bonuses, sizeof(bonuses), "- Bonuses %d", bonus);

Format(szValue, sizeof(szValue), "%s - Tier %d %s %s", szMapName, tier, stages, bonuses);
g_MapList.PushString(szMapName);
g_MapListTier.PushString(szValue);
}
Expand Down
7 changes: 3 additions & 4 deletions addons/sourcemod/scripting/rockthevote.sp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/**
* vim: set ts=4 :
/*
* =============================================================================
* SourceMod Rock The Vote Plugin
* Creates a map vote when the required number of players have requested one.
Expand Down Expand Up @@ -42,9 +41,9 @@
public Plugin myinfo =
{
name = "SurfTimer Rock The Vote",
author = "AlliedModders LLC & Ace",
author = "AlliedModders LLC & SurfTimer Contributors",
description = "Provides RTV Map Voting",
version = SOURCEMOD_VERSION,
version = "1.2",
url = "http://www.sourcemod.net/"
};

Expand Down

0 comments on commit 70df913

Please sign in to comment.