plane/test.sp

231 lines
6.1 KiB
SourcePawn
Raw Normal View History

#include <sourcemod>
#include <clients>
#include <cstrike>
#include <sdktools>
#include "socket.inc"
#define MY_SOCKET_IP "localhost"
2021-05-19 22:53:06 +00:00
//#define MY_SOCKET_IP "127.0.0.1"
#define MY_SOCKET_PORT 3500
2021-05-16 10:39:31 +00:00
#define STEAMID_LENGTH 128
char teamCT[6][150];
char teamT[6][150];
char clientId[128];
2021-05-18 22:30:56 +00:00
int port = -1;
public Plugin myinfo =
{
name = "InfoLan 2021 Bot",
author = "rick@gnous.eu",
description = "Bot communiquant avec le bot discord \
https://github.com/Lunki51/cs-picker afin dautomatiser \
lInfoLan 2021",
version = "1.3",
url = "https://git.gnous.eu/Rick/infolanBot"
};
2021-05-18 13:43:05 +00:00
public void OnPluginStart()
{
HookEvent("cs_win_panel_match", ServeurLibre);
2021-05-19 22:53:06 +00:00
HookEvent("player_activate", SetTeamPlayer);
HookEvent("cs_win_panel_round", UpdateScoreBoard);
2021-05-18 13:43:05 +00:00
RegServerCmd("!team", SetTeam);
2021-05-19 22:53:06 +00:00
RegServerCmd("!tests", TestSocket);
RegServerCmd("!testsA", TestSocketA);
2021-05-18 13:43:05 +00:00
PrintToServer("Hello world!");
}
2021-05-18 22:30:56 +00:00
public void OnConfigsExecuted()
{
if (port < 0)
port = GetConVarInt(FindConVar("hostport"));
}
//public void OnClientAuthorized(int client, const char[] auth)
2021-05-19 22:53:06 +00:00
public void SetTeamPlayer(Event event, const char[] name, bool dontBroadcast)
2021-05-16 10:39:31 +00:00
{
int client = GetClientOfUserId(event.GetInt("userid"));
GetClientAuthId(client, AuthId_Steam2, clientId, sizeof(clientId));
if (!strcmp(clientId, "BOT", true)) { return; }
if (FindAdminByIdentity("steam", clientId) != INVALID_ADMIN_ID)
2021-05-16 10:39:31 +00:00
{
ChangeClientTeam(client, CS_TEAM_SPECTATOR);
}
else
{
bool allGood = GetClientAuthId(client, AuthId_SteamID64, clientId, sizeof(clientId));
if (allGood)
2021-05-16 10:39:31 +00:00
{
allGood = false;
2021-05-19 22:53:06 +00:00
int i = 0;
while (!allGood && i < sizeof(teamCT))
{
if (!strcmp(teamCT[i], clientId, false))
{
ChangeClientTeam(client, CS_TEAM_CT);
allGood = true;
}
else if (!strcmp(teamT[i], clientId, false))
{
ChangeClientTeam(client, CS_TEAM_T);
allGood = true;
}
i++;
}
if (!allGood)
{
KickClient(client, "Vous nêtes pas autorisé à suivre / jouer \
sur ce serveur");
}
2021-05-16 10:39:31 +00:00
}
}
}
/*
* !team
*
*
*/
public Action SetTeam(int args)
{
char arg[128];
2021-05-16 10:39:31 +00:00
GetCmdArg(1, arg, sizeof(arg));
int team = (!strcmp(arg, "ct", false) ? 1 : 2);
GetCmdArg(2, arg, sizeof(arg));
if (team == 1)
ServerCommand("mp_teamname_1 %s", arg)
else
ServerCommand("mp_teamname_2 %s", arg)
2021-05-19 22:53:06 +00:00
2021-05-16 10:39:31 +00:00
if (args == 7)
{
for(int i = 3; i <= args; i++)
2021-05-16 10:39:31 +00:00
{
GetCmdArg(i, arg, sizeof(arg));
if (team == 1)
teamCT[i - 3] = arg;
2021-05-16 10:39:31 +00:00
else
teamT[i - 3] = arg;
2021-05-16 10:39:31 +00:00
}
}
else
{
2021-05-16 10:39:31 +00:00
PrintToServer("Erreur, pas assez dargs");
}
return Plugin_Handled;
}
/* envoie information plugin */
public void OnMapEnd()
{
PrintToServer("======= FIN ======");
/* kick tout le monde */
}
2021-05-18 13:43:05 +00:00
public void ServeurLibre(Event event, const char[] name, bool dontBroadcast)
{
// requete post pour match fini et serveur libre
Handle socket = SocketCreate(SOCKET_TCP, OnSocketError);
2021-05-18 22:30:56 +00:00
SocketConnect(socket, SocketEnvoieVictoire, OnSocketReceive, OnSocketDisconnected, MY_SOCKET_IP, MY_SOCKET_PORT);
2021-05-18 13:43:05 +00:00
}
2021-05-19 22:53:06 +00:00
public void UpdateScoreBoard(Event event, const char[] name, bool dontBroadcast)
2021-05-18 22:30:56 +00:00
{
2021-05-19 22:53:06 +00:00
// request post avec les scores des 2 équipes
PrintToServer("Coucou, je souis là");
Handle socket = SocketCreate(SOCKET_TCP, OnSocketError);
SocketConnect(socket, SocketUpdateScore, OnSocketReceive, OnSocketDisconnected, MY_SOCKET_IP, MY_SOCKET_PORT);
}
public Action TestSocket(int args)
{
PrintToServer("envoie socket");
Handle socket = SocketCreate(SOCKET_TCP, OnSocketError);
SocketConnect(socket, SocketUpdateScore, OnSocketReceive, OnSocketDisconnected, MY_SOCKET_IP, MY_SOCKET_PORT);
//CloseHandle(socket);
return Plugin_Handled;
}
public Action TestSocketA(int args)
{
Handle socket = SocketCreate(SOCKET_TCP, OnSocketError);
SocketConnect(socket, SocketEnvoieVictoire, OnSocketReceive, OnSocketDisconnected, MY_SOCKET_IP, MY_SOCKET_PORT);
//CloseHandle(socket);
return Plugin_Handled;
}
public void SocketUpdateScore(Handle socket, any arg)
{
char requestStr[2048];
2021-05-18 22:30:56 +00:00
FormatEx(
requestStr,
sizeof(requestStr),
2021-05-19 22:53:06 +00:00
"POST /api/csgo/updatescore HTTP/1.1\r\n\
Content-Type: application/json\r\n\
Content-Length: 32\r\n\r\n\
{\"port\": %d, \"ct\": %d, \"t\": %d}",
port, CS_GetTeamScore(CS_TEAM_CT), CS_GetTeamScore(CS_TEAM_T)
2021-05-18 22:30:56 +00:00
);
2021-05-19 22:53:06 +00:00
SocketSend(socket, requestStr, 2048);
SocketDisconnect(socket);
CloseHandle(socket);
2021-05-18 22:30:56 +00:00
}
2021-05-18 13:43:05 +00:00
2021-05-18 22:30:56 +00:00
public void SocketEnvoieVictoire(Handle socket, any arg)
2021-05-18 13:43:05 +00:00
{
char requestStr[512];
FormatEx(
requestStr,
sizeof(requestStr),
"POST /api/csgo/matchend HTTP/1.0\r\n\
Content-type: text/json\r\n\
2021-05-19 22:53:06 +00:00
{\"serverport\": 512, \"available\": true}", port
2021-05-18 22:30:56 +00:00
);
2021-05-19 22:53:06 +00:00
SocketSend(socket, requestStr, 512);
SocketDisconnect(socket);
CloseHandle(socket);
2021-05-18 13:43:05 +00:00
}
public void OnSocketConnected(Handle socket, any arg)
{
char requestStr[150];
Format(requestStr, sizeof(requestStr), "%s", "Source Engine Query");
/*
FormatEx(
requestStr,
sizeof(requestStr),
"GET /%s HTTP/1.0\r\nHost: %s\r\nConnection: close\r\n\r\n",
"prout",
"mario"
);
*/
SocketSend(socket, requestStr, 150);
}
2021-05-19 22:53:06 +00:00
public void OnSocketReceive(Handle socket, const char[] datas, const int data, any arg)
{
2021-05-19 22:53:06 +00:00
PrintToServer("=== INFO ===\n%s", datas);
}
2021-05-19 22:53:06 +00:00
public OnSocketDisconnected(Handle socket, any arg)
{
2021-05-19 22:53:06 +00:00
PrintToServer("Salut mon pote");
CloseHandle(socket);
}
2021-05-19 22:53:06 +00:00
public void OnSocketError(Socket socket, const int errorType, const int errorNum, any hFile) {
// a socket error occured
PrintToServer("socket error %d (errno %d)", errorType, errorNum);
CloseHandle(hFile);
CloseHandle(socket);
}