734 lines
17 KiB
SourcePawn
734 lines
17 KiB
SourcePawn
/* Plugin Template generated by Pawn Studio */
|
|
|
|
#include <sourcemod>
|
|
#include <mapchooser>
|
|
|
|
new Handle:g_NextMap = INVALID_HANDLE;
|
|
new Handle:g_ChangeMap = INVALID_HANDLE;
|
|
new Handle:g_NominationMap = INVALID_HANDLE;
|
|
|
|
new Handle:cv_serverid, Handle:cv_lotto;
|
|
|
|
new price_nomination = 25;
|
|
new price_mapvote = 100;
|
|
new price_nextmap = 150;
|
|
new price_changelevel = 200;
|
|
|
|
new String:MapchangeTo[100];
|
|
|
|
public Plugin:myinfo =
|
|
{
|
|
name = "Beer System",
|
|
author = "Chefe",
|
|
description = "System that gives Players Points for they Playtime.",
|
|
version = "2.4",
|
|
url = "www.the-bos.de"
|
|
}
|
|
|
|
public OnPluginStart()
|
|
{
|
|
CreateTimer(300.0, Abbrechnung, _, TIMER_REPEAT);
|
|
RegConsoleCmd("sm_beer", CommandLP, "Shows you your liter Beer!");
|
|
cv_serverid = CreateConVar("sm_beer_serverid", "0", "Serverid for remove liter");
|
|
cv_lotto = CreateConVar("sm_beer_lotto", "0", "Lotto I/0");
|
|
//HookEvent("player_activate", Event_PlayerActivate);
|
|
|
|
if (GetConVarBool(cv_lotto))
|
|
{
|
|
CreateTimer(7200.0, LottoZiehung, _, TIMER_REPEAT);
|
|
}
|
|
|
|
if (CheckCon())
|
|
{
|
|
PrintToServer("[BEER] Connection sucessfull!");
|
|
}
|
|
else
|
|
{
|
|
SetFailState("Can't etablish connection to Database");
|
|
}
|
|
|
|
AutoExecConfig(true);
|
|
}
|
|
|
|
public OnMapStart()
|
|
{
|
|
MapchangeTo = NULL_STRING;
|
|
g_NextMap = BuildMapMenu(Menu_NextMap);
|
|
g_ChangeMap = BuildMapMenu(Menu_ChangeMap);
|
|
g_NominationMap = BuildMapMenu(Menu_NominateMap);
|
|
}
|
|
|
|
public OnMapEnd()
|
|
{
|
|
if (g_NextMap != INVALID_HANDLE)
|
|
{
|
|
CloseHandle(g_NextMap);
|
|
g_NextMap = INVALID_HANDLE;
|
|
}
|
|
|
|
if (g_ChangeMap != INVALID_HANDLE)
|
|
{
|
|
CloseHandle(g_ChangeMap);
|
|
g_ChangeMap = INVALID_HANDLE;
|
|
}
|
|
|
|
if (g_NominationMap != INVALID_HANDLE)
|
|
{
|
|
CloseHandle(g_NominationMap);
|
|
g_NominationMap = INVALID_HANDLE;
|
|
}
|
|
}
|
|
|
|
Handle:BuildMapMenu(MenuHandler:handel)
|
|
{
|
|
/* Open the file */
|
|
new Handle:file = OpenFile("mapcycle.txt", "rt");
|
|
if (file == INVALID_HANDLE)
|
|
{
|
|
return INVALID_HANDLE;
|
|
}
|
|
|
|
/* Create the menu Handle */
|
|
new Handle:menu = CreateMenu(handel);
|
|
new String:mapname[255];
|
|
while (!IsEndOfFile(file) && ReadFileLine(file, mapname, sizeof(mapname)))
|
|
{
|
|
if (mapname[0] == ';' || !IsCharAlpha(mapname[0]))
|
|
{
|
|
continue;
|
|
}
|
|
/* Cut off the name at any whitespace */
|
|
new len = strlen(mapname);
|
|
for (new i=0; i<len; i++)
|
|
{
|
|
if (IsCharSpace(mapname[i]))
|
|
{
|
|
mapname[i] = '\0';
|
|
break;
|
|
}
|
|
}
|
|
/* Check if the map is valid */
|
|
if (!IsMapValid(mapname))
|
|
{
|
|
continue;
|
|
}
|
|
/* Add it to the menu */
|
|
AddMenuItem(menu, mapname, mapname);
|
|
}
|
|
/* Make sure we close the file! */
|
|
CloseHandle(file);
|
|
|
|
/* Finally, set the title */
|
|
SetMenuTitle(menu, "Please select a map:");
|
|
|
|
return menu;
|
|
}
|
|
|
|
public OnClientAuthorized(client, const String:auth[])
|
|
{
|
|
new String:sqlstring[255];
|
|
Format(sqlstring, sizeof(sqlstring), "SELECT id FROM lp WHERE steamid = '%s'", auth);
|
|
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
new Handle:sql = SQL_Query(db, sqlstring);
|
|
|
|
if (SQL_GetRowCount(sql) == 0)
|
|
{
|
|
new String:create[250];
|
|
Format(create, sizeof(create), "INSERT INTO lp(steamid, points) VALUES ('%s',0)", auth);
|
|
SQL_FastQuery(db, create);
|
|
}
|
|
|
|
CloseHandle(sql);
|
|
CloseHandle(db);
|
|
}
|
|
|
|
public Action:CommandLP(client, args)
|
|
{
|
|
new String:s_menu1[100];
|
|
Format(s_menu1, sizeof(s_menu1), "SNomination (%i l)", price_nomination);
|
|
new String:s_menu2[100];
|
|
Format(s_menu2, sizeof(s_menu2), "Force Mapvote (%i l)", price_mapvote);
|
|
new String:s_menu3[100];
|
|
Format(s_menu3, sizeof(s_menu3), "Set Nextmap (%i l)", price_nextmap);
|
|
new String:s_menu4[100];
|
|
Format(s_menu4, sizeof(s_menu4), "Change Map (%i l)", price_changelevel);
|
|
|
|
new Handle:menu = CreateMenu(MenuHandler);
|
|
SetMenuTitle(menu, "Loyality Points System");
|
|
AddMenuItem(menu, "1", "Show Liter Beer");
|
|
AddMenuItem(menu, "2", s_menu1);
|
|
AddMenuItem(menu, "3", s_menu2);
|
|
AddMenuItem(menu, "4", s_menu3);
|
|
AddMenuItem(menu, "5", s_menu4);
|
|
new bool:have_rs = HaveClientRS(client);
|
|
|
|
if (have_rs)
|
|
{
|
|
new String:s_menu5[100];
|
|
Format(s_menu5, sizeof(s_menu5), "Your RS access end in %i min", GetRSMIN(client));
|
|
AddMenuItem(menu, "6", s_menu5, ITEMDRAW_DISABLED);
|
|
}
|
|
else if (!have_rs)
|
|
{
|
|
AddMenuItem(menu, "7", "Reserved Slot");
|
|
}
|
|
|
|
DisplayMenu(menu, client, MENU_TIME_FOREVER);
|
|
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
public MenuHandler(Handle:menu, MenuAction:action, param1, param2)
|
|
{
|
|
/* If an option was selected, tell the client about the item. */
|
|
if (action == MenuAction_Select)
|
|
{
|
|
new String:info[32];
|
|
GetMenuItem(menu, param2, info, sizeof(info));
|
|
|
|
switch(StringToInt(info))
|
|
{
|
|
case 1:
|
|
{
|
|
new lp = GetLP(param1);
|
|
PrintToChatAll("\x04[BEER]\x01 %N, you have %i Liter Beer!", param1, lp);
|
|
}
|
|
case 2:
|
|
{
|
|
new lp = GetLP(param1);
|
|
|
|
if (lp >= price_nomination)
|
|
{
|
|
DisplayMenu(g_NominationMap, param1, MENU_TIME_FOREVER);
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have %i liter, but you need %i l to nominate!", lp, price_nomination);
|
|
}
|
|
}
|
|
case 3:
|
|
{
|
|
new lp = GetLP(param1);
|
|
|
|
if (lp >= price_mapvote)
|
|
{
|
|
RemoveLP(param1, price_mapvote);
|
|
|
|
PrintToChatAll("\x04[BEER]\x01 %N forced Mapvote!", param1)
|
|
|
|
InitiateMapChooserVote(MapChange_Instant);
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have %i liter, but you need %i l to force Mapvote!", lp, price_mapvote);
|
|
}
|
|
}
|
|
case 4:
|
|
{
|
|
new lp = GetLP(param1);
|
|
|
|
if (lp >= price_nextmap)
|
|
{
|
|
DisplayMenu(g_NextMap, param1, MENU_TIME_FOREVER);
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have %i liter, but you need %i l to set Nextmap!", lp, price_nextmap);
|
|
}
|
|
}
|
|
case 5:
|
|
{
|
|
new lp = GetLP(param1);
|
|
|
|
if (lp >= price_changelevel)
|
|
{
|
|
DisplayMenu(g_ChangeMap, param1, MENU_TIME_FOREVER);
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have %i liter, but you need %i l to change the Map!", lp, price_changelevel);
|
|
}
|
|
}
|
|
case 6:
|
|
{
|
|
|
|
}
|
|
case 7:
|
|
{
|
|
new Handle:menu2 = CreateMenu(MenuRS);
|
|
SetMenuTitle(menu2, "Select RS-time");
|
|
AddMenuItem(menu2, "1", "1 Day (100 l)");
|
|
AddMenuItem(menu2, "2", "5 Days (450 l)");
|
|
AddMenuItem(menu2, "3", "14 Days (800 l)");
|
|
AddMenuItem(menu2, "4", "30 Days (999 l)");
|
|
DisplayMenu(menu2, param1, MENU_TIME_FOREVER);
|
|
}
|
|
}
|
|
}
|
|
/* If the menu has ended, destroy it */
|
|
else if (action == MenuAction_End)
|
|
{
|
|
CloseHandle(menu);
|
|
}
|
|
}
|
|
|
|
public Menu_NextMap(Handle:menu, MenuAction:action, param1, param2)
|
|
{
|
|
if (action == MenuAction_Select)
|
|
{
|
|
new String:info[32];
|
|
|
|
/* Get item info */
|
|
GetMenuItem(menu, param2, info, sizeof(info));
|
|
RemoveLP(param1, price_nextmap);
|
|
PrintToChatAll("\x04[BEER]\x01 %N changed the nextmap to %s!", param1, info);
|
|
SetNextMap(info);
|
|
}
|
|
/* If the menu has ended, destroy it */
|
|
else if (action == MenuAction_End)
|
|
{
|
|
CloseHandle(menu);
|
|
}
|
|
}
|
|
|
|
public Menu_ChangeMap(Handle:menu, MenuAction:action, param1, param2)
|
|
{
|
|
if (action == MenuAction_Select)
|
|
{
|
|
new String:info[32];
|
|
|
|
/* Get item info */
|
|
GetMenuItem(menu, param2, info, sizeof(info));
|
|
RemoveLP(param1, price_changelevel);
|
|
PrintToChatAll("\x04[BEER]\x01 %N forced mapchange to %s!", param1, info);
|
|
|
|
if (!strcmp(MapchangeTo, NULL_STRING, false))
|
|
{
|
|
MapchangeTo = info;
|
|
CreateTimer(5.0, Timer_Changelevel);
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 Mapchange already in Progress");
|
|
}
|
|
}
|
|
/* If the menu has ended, destroy it */
|
|
else if (action == MenuAction_End)
|
|
{
|
|
CloseHandle(menu);
|
|
}
|
|
}
|
|
|
|
public Action:Timer_Changelevel(Handle:timer)
|
|
{
|
|
ForceChangeLevel(MapchangeTo, "BEER");
|
|
}
|
|
|
|
public Menu_NominateMap(Handle:menu, MenuAction:action, param1, param2)
|
|
{
|
|
if (action == MenuAction_Select)
|
|
{
|
|
new String:info[32];
|
|
|
|
/* Get item info */
|
|
GetMenuItem(menu, param2, info, sizeof(info));
|
|
RemoveLP(param1, price_nomination);
|
|
PrintToChatAll("\x04[BEER]\x01 %N nominated %s!", param1, info);
|
|
NominateMap(info, true, 0);
|
|
}
|
|
/* If the menu has ended, destroy it */
|
|
else if (action == MenuAction_End)
|
|
{
|
|
CloseHandle(menu);
|
|
}
|
|
}
|
|
|
|
public MenuRS(Handle:menu, MenuAction:action, param1, param2)
|
|
{
|
|
/* If an option was selected, tell the client about the item. */
|
|
if (action == MenuAction_Select)
|
|
{
|
|
new String:info[32];
|
|
GetMenuItem(menu, param2, info, sizeof(info));
|
|
|
|
new lp = GetLP(param1)
|
|
|
|
switch(StringToInt(info))
|
|
{
|
|
case 1:
|
|
{
|
|
if (lp >= 100)
|
|
{
|
|
|
|
RemoveLP(param1, 100)
|
|
GiveRS(param1, 1440);
|
|
|
|
if (IsClientInGame(param1))
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have bouth RS! If Server is full, connect via console, and you can connect!")
|
|
}
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have %i liter, but you need 100 l for 1 Day RS!", lp);
|
|
}
|
|
}
|
|
case 2:
|
|
{
|
|
if (lp >= 450)
|
|
{
|
|
|
|
RemoveLP(param1, 450)
|
|
GiveRS(param1, 7200);
|
|
|
|
if (IsClientInGame(param1))
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have bouth RS! If Server is full, connect via console, and you can connect!")
|
|
}
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have %i liter, but you need 450 l for 5 Days RS!", lp);
|
|
}
|
|
}
|
|
case 3:
|
|
{
|
|
if (lp >= 800)
|
|
{
|
|
|
|
RemoveLP(param1, 800)
|
|
GiveRS(param1, 20160);
|
|
|
|
if (IsClientInGame(param1))
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have bouth RS! If Server is full, connect via console, and you can connect!")
|
|
}
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have %i liter, but you need 800 l for 14 Days RS!", lp);
|
|
}
|
|
}
|
|
case 4:
|
|
{
|
|
if (lp >= 100)
|
|
{
|
|
|
|
RemoveLP(param1, 999)
|
|
GiveRS(param1, 43200);
|
|
|
|
if (IsClientInGame(param1))
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have bouth RS! If Server is full, connect via console, and you can connect!")
|
|
}
|
|
}
|
|
else
|
|
{
|
|
PrintToChat(param1, "\x04[BEER]\x01 You have %i liter, but you need 999 l for 30 Days RS!", lp);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/* If the menu has ended, destroy it */
|
|
else if (action == MenuAction_End)
|
|
{
|
|
CloseHandle(menu);
|
|
}
|
|
}
|
|
|
|
public Action:Abbrechnung(Handle:timer)
|
|
{
|
|
new players = GetClientCount(false);
|
|
new players_max = GetMaxClients();
|
|
|
|
if (players <= (players_max / 4))
|
|
{
|
|
GiveLP(3);
|
|
}
|
|
else if (players <= (players_max / 2))
|
|
{
|
|
GiveLP(2);
|
|
}
|
|
else
|
|
{
|
|
GiveLP(1);
|
|
}
|
|
|
|
RemoveRSMIN(5)
|
|
|
|
PrintToChatAll("\x04[Oktoberfest]\x01 Our Server running the \x04Beer!\x01 System to reward Players.");
|
|
PrintToChatAll("\x04[BEER]\x01 Type \x04!beer\x01 to get up the Beer! menu with more options.");
|
|
PrintHintTextToAll("[BEER] ONLINE");
|
|
}
|
|
|
|
GetLP(client)
|
|
{
|
|
new String:steamid[125];
|
|
GetClientAuthString(client, steamid, sizeof(steamid));
|
|
new String:sqlstring[255];
|
|
Format(sqlstring, sizeof(sqlstring), "SELECT points FROM lp WHERE steamid = '%s'", steamid);
|
|
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
new Handle:sql = SQL_Query(db, sqlstring);
|
|
|
|
SQL_FetchRow(sql);
|
|
new lp = SQL_FetchInt(sql, 0);
|
|
|
|
CloseHandle(sql);
|
|
CloseHandle(db);
|
|
|
|
return lp;
|
|
}
|
|
|
|
GiveLP(amount)
|
|
{
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
|
|
new i = 1;
|
|
|
|
while (i != (MaxClients+1))
|
|
{
|
|
new client = i;
|
|
if (IsClientInGame(client))
|
|
{
|
|
new String:steamid[50];
|
|
GetClientAuthString(client, steamid, sizeof(steamid))
|
|
new String:sqlstring[256];
|
|
Format(sqlstring, sizeof(sqlstring), "UPDATE lp SET points = points + %i WHERE steamid = '%s'", amount, steamid);
|
|
|
|
if (!SQL_FastQuery(db, sqlstring))
|
|
{
|
|
new String:error[255];
|
|
SQL_GetError(db, error, sizeof(error));
|
|
PrintToServer("Failed to query (error: %s)", error);
|
|
}
|
|
|
|
PrintToServer("[BEER] Gived %N %i l (client %i)", client, amount, i);
|
|
}
|
|
i = i + 1;
|
|
}
|
|
|
|
CloseHandle(db);
|
|
}
|
|
|
|
RemoveLP(client, amount)
|
|
{
|
|
if (IsClientInGame(client))
|
|
{
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
|
|
new String:steamid[50];
|
|
GetClientAuthString(client, steamid, sizeof(steamid))
|
|
new String:sqlstring[256];
|
|
Format(sqlstring, sizeof(sqlstring), "UPDATE lp SET points = points - %i WHERE steamid = '%s'", amount, steamid);
|
|
|
|
if (!SQL_FastQuery(db, sqlstring))
|
|
{
|
|
new String:error[255];
|
|
SQL_GetError(db, error, sizeof(error));
|
|
PrintToServer("Failed to query (error: %s)", error);
|
|
}
|
|
CloseHandle(db);
|
|
}
|
|
}
|
|
|
|
GiveRS(client, min)
|
|
{
|
|
if (IsClientInGame(client))
|
|
{
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
|
|
// In die lp-Datenbank eintragen (Step 1)
|
|
new String:steamid[50];
|
|
GetClientAuthString(client, steamid, sizeof(steamid))
|
|
new String:sqlstring[256];
|
|
Format(sqlstring, sizeof(sqlstring), "UPDATE lp SET rs = 1, rsmin = %i, serverid = %i WHERE steamid = '%s'", min, GetConVarInt(cv_serverid), steamid);
|
|
|
|
if (!SQL_FastQuery(db, sqlstring))
|
|
{
|
|
new String:error[255];
|
|
SQL_GetError(db, error, sizeof(error));
|
|
PrintToServer("Failed to query (error: %s)", error);
|
|
}
|
|
|
|
// In die Sm-Admin Datenbank eintragen (Step 2)
|
|
|
|
Format(sqlstring, sizeof(sqlstring), "INSERT INTO sm_admins(authtype, identity, flags, name, immunity) VALUES ('steam','%s', 'b,a', '%N', 5)", steamid, client);
|
|
|
|
if (!SQL_FastQuery(db, sqlstring))
|
|
{
|
|
new String:error[255];
|
|
SQL_GetError(db, error, sizeof(error));
|
|
PrintToServer("Failed to query (error: %s)", error);
|
|
}
|
|
|
|
CloseHandle(db);
|
|
|
|
ServerCommand("sm_reloadadmins");
|
|
}
|
|
}
|
|
|
|
bool:HaveClientRS(client)
|
|
{
|
|
if (IsClientInGame(client))
|
|
{
|
|
new String:steamid[50];
|
|
GetClientAuthString(client, steamid, sizeof(steamid))
|
|
new String:sqlstring[255];
|
|
Format(sqlstring, sizeof(sqlstring), "SELECT id FROM lp WHERE steamid = '%s' AND rs = '1'", steamid);
|
|
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
new Handle:sql = SQL_Query(db, sqlstring);
|
|
new rs_bool = SQL_GetRowCount(sql);
|
|
CloseHandle(sql);
|
|
CloseHandle(db);
|
|
|
|
if (rs_bool >= 1)
|
|
{
|
|
return true;
|
|
}
|
|
else if (rs_bool == 0)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
GetRSMIN(client)
|
|
{
|
|
new String:steamid[50];
|
|
GetClientAuthString(client, steamid, sizeof(steamid));
|
|
new String:sqlstring[200];
|
|
Format(sqlstring, sizeof(sqlstring), "SELECT rsmin FROM lp WHERE steamid = '%s'", steamid);
|
|
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
new Handle:sql = SQL_Query(db, sqlstring);
|
|
|
|
SQL_FetchRow(sql);
|
|
new rsmin = SQL_FetchInt(sql, 0);
|
|
|
|
CloseHandle(sql);
|
|
CloseHandle(db);
|
|
|
|
return rsmin;
|
|
}
|
|
|
|
RemoveRSMIN(min)
|
|
{
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
|
|
new String:sqlstring[256];
|
|
Format(sqlstring, sizeof(sqlstring), "UPDATE lp SET rsmin = rsmin - %i WHERE rs = 1 AND serverid = %i", min, GetConVarInt(cv_serverid));
|
|
|
|
if (!SQL_FastQuery(db, sqlstring))
|
|
{
|
|
new String:error[255];
|
|
SQL_GetError(db, error, sizeof(error));
|
|
PrintToServer("Failed to query (error: %s)", error);
|
|
}
|
|
|
|
new String:sqlstring2[150];
|
|
Format(sqlstring2, sizeof(sqlstring2), "SELECT steamid FROM lp WHERE rs = 1 AND serverid = %i AND rsmin <= 0", GetConVarInt(cv_serverid));
|
|
|
|
new Handle:sql = SQL_Query(db, sqlstring2);
|
|
new nummber = SQL_GetRowCount(sql);
|
|
|
|
if (nummber != 0)
|
|
{
|
|
for (new a = 0; a != nummber; a++)
|
|
{
|
|
new String:steamid[256];
|
|
SQL_FetchRow(sql);
|
|
SQL_FetchString(sql, 0, steamid, sizeof(steamid));
|
|
|
|
// Aus der LP-Datenbank austragen (Step 1)
|
|
new String:sqlstr[256];
|
|
Format(sqlstr, sizeof(sqlstr), "UPDATE lp SET rs = 0, rsmin = 0, serverid = 0 WHERE steamid = '%s'", steamid);
|
|
|
|
if (!SQL_FastQuery(db, sqlstr))
|
|
{
|
|
new String:ero[255];
|
|
SQL_GetError(db, ero, sizeof(ero));
|
|
PrintToServer("Failed to query (error: %s)", ero);
|
|
}
|
|
|
|
// Aus der SM-Admin Datenbank austragen (Step 2)
|
|
new String:sqlstr2[150];
|
|
Format(sqlstr2, sizeof(sqlstr2), "DELETE FROM sm_admins WHERE identity = '%s'", steamid);
|
|
|
|
if (!SQL_FastQuery(db, sqlstr2))
|
|
{
|
|
new String:ero2[255];
|
|
SQL_GetError(db, ero2, sizeof(ero2));
|
|
PrintToServer("Failed to query (error: %s)", ero2);
|
|
}
|
|
}
|
|
ServerCommand("sm_reloadadmins");
|
|
}
|
|
|
|
CloseHandle(sql);
|
|
CloseHandle(db);
|
|
}
|
|
|
|
public Action:LottoZiehung(Handle:timer)
|
|
{
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
|
|
for (new i = 1; i != (GetMaxClients()+1); i++)
|
|
{
|
|
if (IsClientInGame(i))
|
|
{
|
|
if (0.25 >= GetRandomFloat(0.1, 1.0))
|
|
{
|
|
new String:steamid[50];
|
|
GetClientAuthString(i, steamid, sizeof(steamid))
|
|
new String:sqlstring[256];
|
|
Format(sqlstring, sizeof(sqlstring), "UPDATE lp SET points = points + 500 WHERE steamid = '%s'", steamid);
|
|
|
|
if (!SQL_FastQuery(db, sqlstring))
|
|
{
|
|
new String:error[255];
|
|
SQL_GetError(db, error, sizeof(error));
|
|
PrintToServer("Failed to query (error: %s)", error);
|
|
}
|
|
|
|
PrintToChat(i, "\x01[\x04BEER\x01] Congratulations, you have won in the BEER Lottery! You got \x04500 l\x01 add to your beer stock!");
|
|
PrintToChatAll("\x01[\x04BEER\x01] %N won in the BEER Lottery!", i);
|
|
}
|
|
}
|
|
}
|
|
CloseHandle(db);
|
|
}
|
|
|
|
CheckCon()
|
|
{
|
|
new String:error_connect[255];
|
|
new Handle:db = SQL_Connect("db", false, error_connect, sizeof(error_connect));
|
|
|
|
if (db != INVALID_HANDLE)
|
|
{
|
|
CloseHandle(db);
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
CloseHandle(db);
|
|
return 0;
|
|
}
|
|
} |