sm-plugins/ConnectAnnounce/scripting/ConnectAnnounceNewPlayers.sp

100 lines
2.6 KiB
SourcePawn
Raw Normal View History

2019-05-27 02:11:27 +02:00
#pragma semicolon 1
#include <sourcemod>
#include <multicolors>
2019-05-27 12:09:45 +02:00
bool g_bNewPlayer[MAXPLAYERS + 1] = { false, ... };
2019-05-27 02:11:27 +02:00
Database g_hDatabase;
public Plugin myinfo =
{
name = "ConnectAnnounceNewPlayers",
author = "Dogan",
2019-05-27 02:11:27 +02:00
description = "Connect Announcer for new Players",
version = "1.0.0",
url = ""
}
public void OnPluginStart()
{
Database.Connect(SQL_OnDatabaseConnect, "unloze_newplayers");
}
public void OnClientPostAdminCheck(int client)
{
if(IsFakeClient(client) || IsClientSourceTV(client))
return;
char sAuthID[32];
GetClientAuthId(client, AuthId_Steam2, sAuthID, sizeof(sAuthID));
char sQuery[512];
Format(sQuery, sizeof(sQuery), "SELECT * FROM connections WHERE auth='%s'", sAuthID);
g_hDatabase.Query(SQL_OnQueryCompleted, sQuery, GetClientSerial(client), DBPrio_Low);
}
public void SQL_OnDatabaseConnect(Database db, const char[] error, any data)
{
if(!db || strlen(error))
{
LogError("Database error: %s", error);
return;
}
g_hDatabase = db;
char sQuery[512];
Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS connections (`auth` varchar(32))");
g_hDatabase.Query(SQL_OnQueryCompleted, sQuery, _, DBPrio_Low);
}
public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] error, any data)
{
if(!db || strlen(error))
{
LogError("Query error: %s", error);
return;
}
int client;
if ((client = GetClientFromSerial(data)) == 0)
return;
char sAuthID[32];
GetClientAuthId(client, AuthId_Steam2, sAuthID, sizeof(sAuthID));
if(results.RowCount && results.FetchRow())
{
int iFieldNum;
char sResultAddress[32];
results.FieldNameToNum("auth", iFieldNum);
results.FetchString(iFieldNum, sResultAddress, sizeof(sResultAddress));
if(StrEqual(sAuthID, sResultAddress, true))
return;
}
2019-05-27 12:09:45 +02:00
g_bNewPlayer[client] = true;
2019-05-27 02:11:27 +02:00
NewPlayerMessage(client);
char sQuery[512];
Format(sQuery, sizeof(sQuery), "INSERT INTO connections (auth) VALUES ('%s')" , sAuthID);
g_hDatabase.Query(SQL_OnQueryCompleted, sQuery, _, DBPrio_Low);
}
public Action NewPlayerMessage(int client)
{
char sName[128];
GetClientName(client, sName, sizeof(sName));
2019-05-27 12:09:45 +02:00
CPrintToChatAll("{cyan}Player {midnightblue}%s {cyan}has just connected an UNLOZE Server for the first time! Welcome!", sName);
2019-05-27 02:11:27 +02:00
CPrintToChat(client, "{cyan}Hi %s. Welcome to the {midnightblue}Unloze Zombie Escape Server{cyan}! We hope you enjoy your stay here and add our server to your favorites. Make sure to check out our website at {midnightblue}www.unloze.com{cyan}.", sName);
2019-05-27 12:09:45 +02:00
}
public void OnClientDisconnect(int client)
{
g_bNewPlayer[client] = false;
2019-05-27 02:11:27 +02:00
}