829 lines
22 KiB
SourcePawn
829 lines
22 KiB
SourcePawn
#pragma semicolon 1
|
|
|
|
#define DEBUG
|
|
|
|
#define PLUGIN_AUTHOR "jenz"
|
|
#define PLUGIN_VERSION "1.00"
|
|
|
|
#include <sourcemod>
|
|
#include <sdktools>
|
|
|
|
#pragma newdecls required
|
|
|
|
//material
|
|
int g_iBeam = -1;
|
|
|
|
//zonepoints
|
|
char c_storestats[MAXPLAYERS+1][1024];
|
|
|
|
//drawing
|
|
int b_beamcolor[MAXPLAYERS];
|
|
float aimpos[MAXPLAYERS][3];
|
|
float beamangle[MAXPLAYERS];
|
|
float g_fClientDurationPref[MAXPLAYERS];
|
|
int colorrainbow[MAXPLAYERS][4];
|
|
int clientcolors[MAXPLAYERS][4];
|
|
int g_iClients[MAXPLAYERS];
|
|
int client_count;
|
|
bool b_beamhiding[MAXPLAYERS];
|
|
|
|
public Plugin myinfo =
|
|
{
|
|
name = "unloze shop beams",
|
|
author = PLUGIN_AUTHOR,
|
|
description = "beams purchaseable in the shop",
|
|
version = PLUGIN_VERSION,
|
|
url = "www.unloze.com"
|
|
};
|
|
|
|
public void OnPluginStart()
|
|
{
|
|
AddFileToDownloadsTable("materials/unloze_tracers/xbeam.vmt");
|
|
AddFileToDownloadsTable("materials/unloze_tracers/xbeam.vtf");
|
|
|
|
RegConsoleCmd("sm_beamers", cmd_beamPoint, "Enables beams through shop");
|
|
RegConsoleCmd("sm_beams", cmd_beamPoint, "Enables beams through shop");
|
|
RegConsoleCmd("sm_beam", cmd_beamPoint, "Enables beams through shop");
|
|
RegConsoleCmd("sm_hidebeam", cmd_beamPointHide, "Hides beams for the client");
|
|
RegConsoleCmd("sm_beamsize", cmd_beamPointangle, "Changes the BeamSize");
|
|
RegConsoleCmd("sm_beamtime", cmd_beamPointDuration, "Changes the BeamSize");
|
|
|
|
RegAdminCmd("sm_beammysql", cmd_beammysqltest, ADMFLAG_ROOT);
|
|
SQL_StartConnection();
|
|
|
|
//0.1 is not good enough
|
|
//CreateTimer(0.1, beamTesendDelay, INVALID_HANDLE, TIMER_REPEAT);
|
|
}
|
|
|
|
|
|
public Action cmd_beammysqltest(int client, int args)
|
|
{
|
|
CheckbeamprefHideMYSQL(client);
|
|
}
|
|
|
|
public Action cmd_beamPointDuration(int client, int args)
|
|
{
|
|
char number[5];
|
|
float check;
|
|
GetCmdArg(args, number, sizeof(number));
|
|
check = StringToFloat(number);
|
|
if (check > 5.0 || check < 0.1)
|
|
{
|
|
PrintToChat(client, "Input Range 0.1 - 5.0");
|
|
return Plugin_Handled;
|
|
}
|
|
g_fClientDurationPref[client] = check;
|
|
PrintToChat(client, "beamDuration value: %f", g_fClientDurationPref[client]);
|
|
MySQLStoreBeamDurationPref(client, check);
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
public Action cmd_beamPointangle(int client, int args)
|
|
{
|
|
char number[5];
|
|
float check;
|
|
GetCmdArg(args, number, sizeof(number));
|
|
check = StringToFloat(number);
|
|
if (check > 20.0 || check < 0.1)
|
|
{
|
|
PrintToChat(client, "Input Range 0.1 - 20.0");
|
|
return Plugin_Handled;
|
|
}
|
|
beamangle[client] = check;
|
|
PrintToChat(client, "beamangle value: %f", beamangle[client]);
|
|
MySQLStoreBeamSizePref(client, check);
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
public Action cmd_beamPointHide( int client, int args )
|
|
{
|
|
if (!b_beamhiding[client])
|
|
{
|
|
mysqlentryhidebeam(client, 1);
|
|
PrintToChat(client, "[UNLOZE] Disabled beams!");
|
|
b_beamhiding[client] = true;
|
|
}
|
|
else
|
|
{
|
|
mysqlentryhidebeam(client, 0);
|
|
PrintToChat(client, "[UNLOZE] Enabled beams!");
|
|
b_beamhiding[client] = false;
|
|
}
|
|
ClientCount();
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
public Action cmd_beamPoint( int client, int args )
|
|
{
|
|
Menu menu = new Menu(MenuHandler1);
|
|
menu.SetTitle("UNLOZE Beams are unlocked through !shop");
|
|
menu.AddItem("Disable", "Disable");
|
|
if (StrContains(c_storestats[client], "w") >= 0)
|
|
{
|
|
menu.AddItem("Rainbow Beam", "Rainbow Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "v") >= 0)
|
|
{
|
|
menu.AddItem("Blue Beam", "Blue Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "x") >= 0)
|
|
{
|
|
menu.AddItem("Green Beam", "Green Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "y") >= 0)
|
|
{
|
|
menu.AddItem("Red Beam", "Red Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "z") >= 0)
|
|
{
|
|
menu.AddItem("Gold Beam", "Gold Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "3") >= 0)
|
|
{
|
|
menu.AddItem("Black Beam", "Black Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "4") >= 0)
|
|
{
|
|
menu.AddItem("Cyan Beam", "Cyan Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "5") >= 0)
|
|
{
|
|
menu.AddItem("Turquoise Beam", "Turquoise Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "6") >= 0)
|
|
{
|
|
menu.AddItem("Yellow Beam", "Yellow Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "7") >= 0)
|
|
{
|
|
menu.AddItem("Pink Beam", "Pink Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "8") >= 0)
|
|
{
|
|
menu.AddItem("Purple Beam", "Purple Beam");
|
|
}
|
|
if (StrContains(c_storestats[client], "9") >= 0)
|
|
{
|
|
menu.AddItem("gray Beam", "gray Beam");
|
|
}
|
|
menu.ExitButton = true;
|
|
menu.Display(client, 0);
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
|
|
public int MenuHandler1(Menu menu, MenuAction action, int param1, int choice)
|
|
{
|
|
/* If the menu was cancelled, print a message to the server about it. */
|
|
if (action == MenuAction_Cancel)
|
|
{
|
|
PrintToServer("Client %d's menu was cancelled. Reason: %d", param1, choice);
|
|
}
|
|
/* If the menu has ended, destroy it */
|
|
else if (action == MenuAction_End)
|
|
{
|
|
delete menu;
|
|
}
|
|
else if (action == MenuAction_Select)
|
|
{
|
|
char info[32];
|
|
menu.GetItem(choice, info, sizeof(info));
|
|
if (StrEqual(info, "Blue Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Blue Beam!");
|
|
b_beamcolor[param1] = 1;
|
|
}
|
|
else if (StrEqual(info, "Red Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Red Beam!");
|
|
b_beamcolor[param1] = 2;
|
|
}
|
|
else if (StrEqual(info, "Green Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Green Beam!");
|
|
b_beamcolor[param1] = 3;
|
|
}
|
|
else if (StrEqual(info, "Gold Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Gold Beam!");
|
|
b_beamcolor[param1] = 4;
|
|
}
|
|
else if (StrEqual(info, "Black Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Black Beam!");
|
|
b_beamcolor[param1] = 5;
|
|
}
|
|
else if (StrEqual(info, "Cyan Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Cyan Beam!");
|
|
b_beamcolor[param1] = 6;
|
|
}
|
|
else if (StrEqual(info, "Turquoise Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Turquoise Beam!");
|
|
b_beamcolor[param1] = 7;
|
|
}
|
|
else if (StrEqual(info, "Yellow Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Yellow Beam!");
|
|
b_beamcolor[param1] = 8;
|
|
}
|
|
else if (StrEqual(info, "Pink Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Pink Beam!");
|
|
b_beamcolor[param1] = 9;
|
|
}
|
|
else if (StrEqual(info, "Purple Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Purple Beam!");
|
|
b_beamcolor[param1] = 10;
|
|
}
|
|
else if (StrEqual(info, "gray Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected gray Beam!");
|
|
b_beamcolor[param1] = 11;
|
|
}
|
|
else if (StrEqual(info, "Rainbow Beam", true))
|
|
{
|
|
PrintToChat(param1, "Selected Rainbow Beam!");
|
|
b_beamcolor[param1] = 12;
|
|
}
|
|
else if (StrEqual(info, "Disable", true))
|
|
{
|
|
PrintToChat(param1, "Disabled Beam!");
|
|
b_beamcolor[param1] = 0;
|
|
}
|
|
InsertbeamprefMYSQL(param1, b_beamcolor[param1]);
|
|
}
|
|
}
|
|
|
|
public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3], float angles[3], int& weapon, int& subtype, int& cmdnum, int& tickcount, int& seed, int mouse[2])
|
|
{
|
|
if (!IsValidClient(client) || !IsPlayerAlive(client) || client_count < 1)
|
|
{
|
|
return Plugin_Continue;
|
|
}
|
|
if (b_beamcolor[client] == 0)
|
|
{
|
|
return Plugin_Continue;
|
|
}
|
|
//blue
|
|
if (b_beamcolor[client] == 1)
|
|
{
|
|
clientcolors[client][0] = 0;
|
|
clientcolors[client][1] = 0;
|
|
clientcolors[client][2] = 255;
|
|
}
|
|
//red
|
|
else if (b_beamcolor[client] == 2)
|
|
{
|
|
clientcolors[client][0] = 255;
|
|
clientcolors[client][1] = 0;
|
|
clientcolors[client][2] = 0;
|
|
}
|
|
//green
|
|
else if (b_beamcolor[client] == 3)
|
|
{
|
|
clientcolors[client][0] = 0;
|
|
clientcolors[client][1] = 255;
|
|
clientcolors[client][2] = 0;
|
|
}
|
|
//gold
|
|
else if (b_beamcolor[client] == 4)
|
|
{
|
|
clientcolors[client][0] = 255;
|
|
clientcolors[client][1] = 215;
|
|
clientcolors[client][2] = 0;
|
|
}
|
|
//black
|
|
else if (b_beamcolor[client] == 5)
|
|
{
|
|
clientcolors[client][0] = 0;
|
|
clientcolors[client][1] = 0;
|
|
clientcolors[client][2] = 0;
|
|
}
|
|
//cyan
|
|
else if (b_beamcolor[client] == 6)
|
|
{
|
|
clientcolors[client][0] = 0;
|
|
clientcolors[client][1] = 255;
|
|
clientcolors[client][2] = 255;
|
|
}
|
|
//turqouise
|
|
else if (b_beamcolor[client] == 7)
|
|
{
|
|
clientcolors[client][0] = 64;
|
|
clientcolors[client][1] = 224;
|
|
clientcolors[client][2] = 208;
|
|
}
|
|
//yellow
|
|
else if (b_beamcolor[client] == 8)
|
|
{
|
|
clientcolors[client][0] = 255;
|
|
clientcolors[client][1] = 255;
|
|
clientcolors[client][2] = 0;
|
|
}
|
|
//pink
|
|
else if (b_beamcolor[client] == 9)
|
|
{
|
|
clientcolors[client][0] = 255;
|
|
clientcolors[client][1] = 105;
|
|
clientcolors[client][2] = 180;
|
|
}
|
|
//purple
|
|
else if (b_beamcolor[client] == 10)
|
|
{
|
|
clientcolors[client][0] = 128;
|
|
clientcolors[client][1] = 0;
|
|
clientcolors[client][2] = 128;
|
|
}
|
|
//gray
|
|
else if (b_beamcolor[client] == 11)
|
|
{
|
|
clientcolors[client][0] = 128;
|
|
clientcolors[client][1] = 128;
|
|
clientcolors[client][2] = 128;
|
|
}
|
|
//rainbow
|
|
else if (b_beamcolor[client] == 12)
|
|
{
|
|
int ran;
|
|
ran = GetRandomInt(0, 2);
|
|
colorrainbow[client][ran] -= 1;
|
|
if (colorrainbow[client][0] < 1)
|
|
{
|
|
colorrainbow[client][0] = 255;
|
|
}
|
|
if (colorrainbow[client][1] < 1)
|
|
{
|
|
colorrainbow[client][1] = 255;
|
|
}
|
|
if (colorrainbow[client][2] < 1)
|
|
{
|
|
colorrainbow[client][2] = 255;
|
|
}
|
|
}
|
|
float otherhalf;
|
|
otherhalf -= beamangle[client];
|
|
GetClientAbsOrigin(client, aimpos[client]);
|
|
if (b_beamcolor[client] == 12)
|
|
{
|
|
Circle(aimpos[client], beamangle[client], g_iBeam, client, colorrainbow[client]);
|
|
Circle(aimpos[client], otherhalf, g_iBeam, client, colorrainbow[client]);
|
|
}
|
|
else
|
|
{
|
|
Circle(aimpos[client], beamangle[client], g_iBeam, client, clientcolors[client]);
|
|
Circle(aimpos[client], otherhalf, g_iBeam, client, clientcolors[client]);
|
|
}
|
|
return Plugin_Continue;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose: Mapstart
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void OnMapStart()
|
|
{
|
|
g_iBeam = PrecacheModel("materials/unloze_tracers/xbeam.vmt");
|
|
}
|
|
|
|
public void OnClientDisconnect_Post(int client)
|
|
{
|
|
ClientCount();
|
|
}
|
|
|
|
//actually used on each mapchange according to mitchell
|
|
public void OnClientDisconnect (int client)
|
|
{
|
|
Format(c_storestats[client], sizeof(c_storestats), "");
|
|
beamangle[client] = 0.0;
|
|
b_beamcolor[client] = 0;
|
|
aimpos[client][0] = 0.0;
|
|
aimpos[client][1] = 0.0;
|
|
aimpos[client][2] = 0.0;
|
|
colorrainbow[client][0] = 255;
|
|
colorrainbow[client][1] = 255;
|
|
colorrainbow[client][2] = 255;
|
|
colorrainbow[client][3] = 255;
|
|
|
|
clientcolors[client][0] = 255;
|
|
clientcolors[client][1] = 255;
|
|
clientcolors[client][2] = 255;
|
|
clientcolors[client][3] = 255;
|
|
b_beamhiding[client] = false;
|
|
g_fClientDurationPref[client] = 1.0;
|
|
//IsClientConnected(client) && IsClientInGame(client) would be true here
|
|
}
|
|
|
|
|
|
public void OnClientPostAdminCheck(int client)
|
|
{
|
|
beamangle[client] = 5.0;
|
|
b_beamhiding[client] = false;
|
|
aimpos[client][0] = 0.0;
|
|
aimpos[client][1] = 0.0;
|
|
aimpos[client][2] = 0.0;
|
|
b_beamcolor[client] = 0;
|
|
colorrainbow[client][0] = 255;
|
|
colorrainbow[client][1] = 255;
|
|
colorrainbow[client][2] = 255;
|
|
colorrainbow[client][3] = 255;
|
|
clientcolors[client][0] = 255;
|
|
clientcolors[client][1] = 255;
|
|
clientcolors[client][2] = 255;
|
|
clientcolors[client][3] = 255;
|
|
g_fClientDurationPref[client] = 1.0;
|
|
CheckbeamSizeMYSQL(client);
|
|
CheckBeamDurationMYSQL(client);
|
|
CheckFlagsMYSQL(client);
|
|
CheckbeamprefMYSQL(client);
|
|
CheckbeamprefHideMYSQL(client);
|
|
}
|
|
|
|
|
|
stock void ClientCount()
|
|
{
|
|
client_count = 0;
|
|
for (int i = 1; i <= MaxClients; i++)
|
|
{
|
|
if (IsValidClient(i) && !b_beamhiding[i])
|
|
{
|
|
g_iClients[client_count++] = i;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void MySQLStoreBeamDurationPref(int client, float check)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
//the points not related to hlstats are stored together with tracer prefferences but have
|
|
//their own table
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "INSERT INTO `unloze_beampref2` (`steam_id`, `Duration`) VALUES ('%s','%f') ON DUPLICATE KEY UPDATE `Duration` = '%f'", sSID, check, check);
|
|
SQL_TQuery(db, DummyCallbackSimple, sQuery);
|
|
delete db;
|
|
}
|
|
|
|
public void MySQLStoreBeamSizePref(int client, float check)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
//the points not related to hlstats are stored together with tracer prefferences but have
|
|
//their own table
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "INSERT INTO `unloze_beampref2` (`steam_id`, `size`) VALUES ('%s','%f') ON DUPLICATE KEY UPDATE `size` = '%f'", sSID, check, check);
|
|
SQL_TQuery(db, DummyCallbackSimple, sQuery);
|
|
delete db;
|
|
}
|
|
|
|
public void CheckBeamDurationMYSQL(int client)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
//the points not related to hlstats are stored together with tracer prefferences but have
|
|
//their own table
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "SELECT Duration FROM `unloze_beampref2` WHERE `steam_id` = '%s'", sSID);
|
|
|
|
DBResultSet rs;
|
|
|
|
if ((rs = SQL_Query(db, sQuery)) == null)
|
|
{
|
|
delete db;
|
|
delete rs;
|
|
return;
|
|
}
|
|
|
|
if (rs.RowCount > 0 && rs.FetchRow())
|
|
{
|
|
char l_cSize[4];
|
|
SQL_FetchString(rs, 0, l_cSize, sizeof(l_cSize));
|
|
g_fClientDurationPref[client] = StringToFloat(l_cSize);
|
|
if (g_fClientDurationPref[client] == 0.0)
|
|
{
|
|
g_fClientDurationPref[client] = 1.0;
|
|
}
|
|
}
|
|
delete rs;
|
|
delete db;
|
|
}
|
|
|
|
public void CheckbeamSizeMYSQL(int client)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
//the points not related to hlstats are stored together with tracer prefferences but have
|
|
//their own table
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "SELECT size FROM `unloze_beampref2` WHERE `steam_id` = '%s'", sSID);
|
|
|
|
DBResultSet rs;
|
|
|
|
if ((rs = SQL_Query(db, sQuery)) == null)
|
|
{
|
|
delete db;
|
|
delete rs;
|
|
return;
|
|
}
|
|
|
|
if (rs.RowCount > 0 && rs.FetchRow())
|
|
{
|
|
char l_cSize[4];
|
|
SQL_FetchString(rs, 0, l_cSize, sizeof(l_cSize));
|
|
beamangle[client] = StringToFloat(l_cSize);
|
|
}
|
|
delete rs;
|
|
delete db;
|
|
}
|
|
|
|
public void CheckFlagsMYSQL(int client)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
//the points not related to hlstats are stored together with tracer prefferences but have
|
|
//their own table
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "SELECT storestats FROM `unloze_zonepoints` WHERE `steam_id` = '%s'", sSID);
|
|
|
|
DBResultSet rs;
|
|
|
|
if ((rs = SQL_Query(db, sQuery)) == null)
|
|
{
|
|
delete db;
|
|
delete rs;
|
|
return;
|
|
}
|
|
|
|
if (rs.RowCount > 0 && rs.FetchRow())
|
|
{
|
|
SQL_FetchString(rs, 0, c_storestats[client], sizeof(c_storestats));
|
|
}
|
|
delete rs;
|
|
delete db;
|
|
}
|
|
|
|
public void CheckbeamprefHideMYSQL(int client)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB CheckbeamprefHideMYSQL!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "SELECT hide FROM `unloze_beamprefhide` WHERE `steam_id` = '%s'", sSID);
|
|
|
|
DBResultSet rs1;
|
|
|
|
if ((rs1 = SQL_Query(db, sQuery)) == null)
|
|
{
|
|
//PrintToChatAll("Failed, null result");
|
|
delete db;
|
|
delete rs1;
|
|
return;
|
|
}
|
|
|
|
if (rs1.RowCount > 0 && rs1.FetchRow())
|
|
{
|
|
//PrintToChatAll("Has Entry");
|
|
int translate;
|
|
translate = SQL_FetchInt(rs1, 0);
|
|
if (translate == 1)
|
|
{
|
|
b_beamhiding[client] = true;
|
|
delete db;
|
|
delete rs1;
|
|
return;
|
|
}
|
|
}
|
|
ClientCount();
|
|
delete rs1;
|
|
delete db;
|
|
}
|
|
|
|
public void CheckbeamprefMYSQL(int client)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
//the points not related to hlstats are stored together with tracer prefferences but have
|
|
//their own table
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "SELECT beam FROM `unloze_beampref` WHERE `steam_id` = '%s'", sSID);
|
|
DBResultSet rs;
|
|
|
|
if ((rs = SQL_Query(db, sQuery)) == null)
|
|
{
|
|
delete db;
|
|
delete rs;
|
|
return;
|
|
}
|
|
if (rs.RowCount > 0 && rs.FetchRow())
|
|
{
|
|
char translate[124];
|
|
SQL_FetchString(rs, 0, translate[client], MAX_NAME_LENGTH);
|
|
b_beamcolor[client] = StringToInt(translate[client]);
|
|
}
|
|
delete rs;
|
|
delete db;
|
|
}
|
|
|
|
|
|
public void InsertbeamprefMYSQL(int client, int colornumber)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
//the points not related to hlstats are stored together with tracer prefferences but have
|
|
//their own table
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "INSERT INTO `unloze_beampref` (`steam_id`, `beam`) VALUES ('%s','%i') ON DUPLICATE KEY UPDATE `beam` = '%i'", sSID, colornumber, colornumber);
|
|
SQL_TQuery(db, DummyCallbackSimple, sQuery);
|
|
delete db;
|
|
}
|
|
|
|
|
|
public void mysqlentryhidebeam(int client, int hide)
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
//the points not related to hlstats are stored together with tracer prefferences but have
|
|
//their own table
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChat(client, "{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
char sSID[64];
|
|
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
|
|
char sQuery[512];
|
|
Format(sQuery, sizeof(sQuery), "INSERT INTO `unloze_beamprefhide` (`steam_id`, `hide`) VALUES ('%s','%i') ON DUPLICATE KEY UPDATE `hide` = '%i'", sSID, hide, hide);
|
|
SQL_TQuery(db, DummyCallbackSimple, sQuery);
|
|
delete db;
|
|
}
|
|
|
|
|
|
public void SQL_StartConnection()
|
|
{
|
|
char error[255];
|
|
Database db;
|
|
if (SQL_CheckConfig("unloze_tracerpref"))
|
|
{
|
|
db = SQL_Connect("unloze_tracerpref", true, error, sizeof(error));
|
|
}
|
|
if (db == null)
|
|
{
|
|
PrintToChatAll("{green}[Unloze] {white}Error! Could not connect to MYSQL-DB!");
|
|
delete db;
|
|
return;
|
|
}
|
|
//create tables
|
|
char sQuery[255];
|
|
Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS `unloze_beampref` (`steam_id` VARCHAR(254) NOT NULL, `beam` VARCHAR(254) NOT NULL, PRIMARY KEY (`steam_id`))");
|
|
SQL_TQuery(db, DummyCallbackSimple, sQuery);
|
|
Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS `unloze_beamprefhide` (`steam_id` VARCHAR(254) NOT NULL, `hide` VARCHAR(254) NOT NULL, PRIMARY KEY (`steam_id`))");
|
|
SQL_TQuery(db, DummyCallbackSimple, sQuery);
|
|
Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS `unloze_beampref2` (`steam_id` VARCHAR(254) NOT NULL, `size` VARCHAR(254) NOT NULL, `Duration` VARCHAR(254) NOT NULL, PRIMARY KEY (`steam_id`))");
|
|
SQL_TQuery(db, DummyCallbackSimple, sQuery);
|
|
|
|
delete db;
|
|
}
|
|
|
|
//old mitch coderino https://forums.alliedmods.net/showthread.php?t=141518&page=2
|
|
public void Circle(float vecLocation[3], float radius, int material, int client, const int colors[4])
|
|
{
|
|
float pos2[4][3];
|
|
|
|
//Create the start position for the first part of the beam
|
|
pos2[0][0] = vecLocation[0];
|
|
pos2[1][0] = vecLocation[0] + radius;
|
|
pos2[2][0] = vecLocation[0] + (radius*DegToRad(90.0));
|
|
pos2[3][0] = vecLocation[0] + (radius*DegToRad(45.0));
|
|
pos2[0][1] = vecLocation[1] + radius;
|
|
pos2[1][1] = vecLocation[1];
|
|
pos2[2][1] = vecLocation[1] + (radius*DegToRad(90.0));
|
|
pos2[3][1] = vecLocation[1] - (radius*DegToRad(45.0));
|
|
pos2[0][2] = vecLocation[2];
|
|
pos2[1][2] = vecLocation[2];
|
|
pos2[2][2] = vecLocation[2];
|
|
pos2[3][2] = vecLocation[2];
|
|
|
|
TE_SetupBeamPoints(pos2[0], vecLocation, material, 0, 0, 0, g_fClientDurationPref[client], 5.0, 5.0, 5, 0.0, colors, 3);
|
|
TE_Send(g_iClients, client_count);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose: stocks
|
|
//----------------------------------------------------------------------------------------------------
|
|
stock bool IsValidClient(int client, bool alive = true, bool bots = false)
|
|
{
|
|
if (client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void DummyCallbackSimple(Handle hOwner, Handle hChild, const char[] err, DataPack pack1)
|
|
{
|
|
if (hOwner == null || hChild == null)
|
|
{
|
|
LogError("Query error. (%s)", err);
|
|
}
|
|
} |