diff --git a/VIP_Test/scripting/VIP_Test.sp b/VIP_Test/scripting/VIP_Test.sp
new file mode 100644
index 00000000..8af1b037
--- /dev/null
+++ b/VIP_Test/scripting/VIP_Test.sp
@@ -0,0 +1,222 @@
+#include <sourcemod>
+
+char g_sAdmGroup[32] = "Game-Donator";
+
+ConVar g_cvFreeVIPDuration;
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+public Plugin myinfo =
+{
+	name 		= "Unloze_VIP_Test",
+	author 		= "Neon",
+	description = "",
+	version 	= "1.0",
+	url 		= "https://steamcommunity.com/id/n3ontm"
+}
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+public void OnPluginStart()
+{
+	g_cvFreeVIPDuration = CreateConVar("sm_unloze_vip_test_duration", "1440", "", FCVAR_NONE);
+
+	RegConsoleCmd("sm_viptest", Command_VIP, "Activate free VIP period");
+	RegConsoleCmd("sm_testvip", Command_VIP, "Activate free VIP period");
+	RegConsoleCmd("sm_vip", Command_VIP, "Activate free VIP period");
+}
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+public Action Command_VIP(int iClient, int iArgs)
+{
+	if (!IsValidClient(iClient))
+		return Plugin_Handled;
+
+	CheckMYSQL(iClient, true);
+	return Plugin_Handled;
+}
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+public void OnRebuildAdminCache(AdminCachePart part)
+{
+	if (part != AdminCache_Admins)
+		return;
+
+	CreateTimer(1.0, OnRebuildAdminCachePost, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE);
+}
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+public void OnClientPostAdminFilter(int client)
+{
+	CheckMYSQL(client);
+}
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+bool CheckMYSQL(int client, bool add = false)
+{
+	if (client == 0)
+		return false;
+
+	char error[255];
+	Database db;
+
+	if (SQL_CheckConfig("testvip"))
+	{
+		db = SQL_Connect("testvip", true, error, sizeof(error));
+	}
+
+	if (db == null)
+	{
+		LogError("Could not connect to database: %s", error);
+		delete db;
+		return false;
+	}
+
+	if (!IsFakeClient(client) && !IsClientSourceTV(client))
+	{
+		char sSID[64];
+		GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
+
+		char sQuery[255];
+		Format(sQuery, sizeof(sQuery), "SELECT * FROM testvip_table WHERE steam_auth = '%s'", sSID);
+		DBResultSet rs;
+		if ((rs = SQL_Query(db, sQuery)) == null)
+		{
+			delete db;
+			delete rs;
+			LogError("Database Error: %s", error);
+			return false;
+		}
+		int iTimestamp = GetTime();
+		int iTimestampActivated = GetTime();
+		bool bFound = false;
+
+		if (!(rs.RowCount > 0))
+		{
+			if (add)
+			{
+				bool bHasVIP = false;
+				AdminId AdmID;
+
+				if ((AdmID = GetUserAdmin(client)) == INVALID_ADMIN_ID)
+					bHasVIP = false;
+				else
+				{
+					for (int i = 0; i <= GetAdminGroupCount(AdmID); i++)
+					{
+						char sGroup[32];
+						if ((GetAdminGroup(AdmID, i, sGroup, sizeof(sGroup)) != INVALID_GROUP_ID))
+						{
+							if (StrEqual(sGroup, g_sAdmGroup))
+								bHasVIP = true;
+						}
+					}
+				}
+
+				if (!bHasVIP)
+				{
+					Format(sQuery, sizeof(sQuery), "INSERT INTO testvip_table (steam_auth, activated) VALUES ('%s', '%d')", sSID, iTimestamp);
+					SQL_FastQuery(db, sQuery);
+					
+					ApplyGroupFlags(client);
+					PrintToChat(client, "[Unloze] Your TEST VIP will expire in %d minutes!", g_cvFreeVIPDuration.IntValue - (iTimestamp - iTimestampActivated) / 60);
+					PrintToChat(client, "[Unloze] You have now access to !zclass, !tag and !glow.");
+				}
+				else
+				{
+					PrintToChat(client, "[Unloze] You already have VIP activated!");
+					delete db;
+					delete rs;
+					return false;
+				}
+
+			}
+		}
+		else
+		{
+			int iField;
+			rs.FetchRow();
+			rs.FieldNameToNum("activated", iField);
+			iTimestampActivated = rs.FetchInt(iField);
+			bFound = true;
+		}
+		delete rs;
+
+		if (bFound)
+		{
+			if ((iTimestamp - iTimestampActivated) < g_cvFreeVIPDuration.IntValue *60)
+			{
+				ApplyGroupFlags(client);
+				PrintToChat(client, "[Unloze] Your TEST VIP will expire in %d minutes!", g_cvFreeVIPDuration.IntValue - (iTimestamp - iTimestampActivated) / 60);
+			}
+			else
+			{
+				if (add)
+					PrintToChat(client, "[Unloze] Your TEST VIP expired already!", g_cvFreeVIPDuration.IntValue - (iTimestamp - iTimestampActivated) / 60);
+			}
+		}
+	}
+	delete db;
+	return true;
+}
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+stock void ApplyGroupFlags(int client)
+{
+	AdminId AdmID;
+	GroupId GrpID;
+
+	if ((AdmID = GetUserAdmin(client)) == INVALID_ADMIN_ID)
+	{
+		LogMessage("Creating new admin for %L", client);
+
+		AdmID = CreateAdmin("");
+		SetUserAdmin(client, AdmID, true);
+	}
+
+	if ((GrpID = FindAdmGroup(g_sAdmGroup)) != INVALID_GROUP_ID)
+	{
+		if (AdminInheritGroup(AdmID, GrpID))
+			LogMessage("%L added to group %s", client, g_sAdmGroup);
+	}
+	else
+	{
+		LogMessage("%L group not found %s", client, g_sAdmGroup);
+	}
+}
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+public Action OnRebuildAdminCachePost(Handle hTimer)
+{
+	for (int client = 1; client <= MaxClients; client++)
+	{
+		if (IsValidClient(client))
+			CheckMYSQL(client);
+	}
+}
+
+//----------------------------------------------------------------------------------------------------
+// Purpose:
+//----------------------------------------------------------------------------------------------------
+stock int IsValidClient(int client, bool nobots = true)
+{
+	if (client <= 0 || client > MaxClients || !IsClientConnected(client) || (nobots && IsFakeClient(client)))
+	{
+		return false;
+	}
+	return IsClientInGame(client);
+}
\ No newline at end of file