#pragma semicolon 1
#include <sourcemod>
#include <csgo_colors>
// Не обязательные плагины
#undef REQUIRE_PLUGIN
#include <lvl_ranks>
#include <shop>
#include <vip_core>
#include <FirePlayersStats>
// Не обязательные расширения
#undef REQUIRE_EXTENSIONS
#include <geoip>
//About
public Plugin myinfo =
{
name = "Welcome Informer",
author = "Pisex",
description = "Позволяет выводить в чат информацию о игроку",
version = "1.0",
url = "Discord => Pisex#0023"
};
//Globals
ConVar
hGeoIP_country,
hGeoIP_city,
hLR_Rank,
hLR_Top,
hLR_Exp,
hAdmin,
hVip,
hCredits;
hFPS_Rank;
hFPS_Top;
hFPS_Exp;
// FPS
float g_fPlayerPoints[MAXPLAYERS+1];
char g_sPlayerRank[MAXPLAYERS+1][64];
g_iPlayerPosition[MAXPLAYERS+1],
g_iPlayersCount,
char sShitBuffer[128];
public void OnPluginStart() {
LoadTranslations("welcome_informer.phrases");
hGeoIP_country = CreateConVar("sm_wi_country", "1", "Хотите ли вы сообщать страну заходящего игрока");
hGeoIP_city = CreateConVar("sm_wi_city", "1", "Хотите ли вы сообщать город заходящего игрока");
hLR_Rank = CreateConVar("sm_wi_rank", "1", "Хотите ли вы сообщать Ранг заходящего игрока");
hLR_Top = CreateConVar("sm_wi_top", "1", "Хотите ли вы сообщать место в топе заходящего игрока");
hLR_Exp = CreateConVar("sm_wi_exp", "1", "Хотите ли вы сообщать количество опыта заходящего игрока");
hCredits = CreateConVar("sm_wi_credits", "1", "Хотите ли вы сообщать количество кредитов заходящего игрока");
hAdmin = CreateConVar("sm_wi_admin", "1", "Хотите ли вы сообщать про наличие админ прав у заходящего игрока");
hVip = CreateConVar("sm_wi_vip", "1", "Хотите ли вы сообщать про наличие випа у заходящего игрока");
hFPS_Rank = CreateConVar("sm_fps_rank", "1", "Хотите ли вы сообщать Ранг заходящего игрока [FPS]")
hFPS_Top = CreateConVar("sm_fps_top", "1", "Хотите ли вы сообщать место в топе заходящего игрока [FPS]")
hFPS_Exp = CreateConVar("sm_fps_exp", "1", "Хотите ли вы сообщать количество опыта заходящего игрока [FPS]")
AutoExecConfig(true, "welcome_informer");
if(hLR_Rank.BoolValue) LoadTranslations("lr_core_ranks.phrases");
}
public void OnClientPutInServer(int iClient) {
char
sMsg[2048],
sIP[16];
if (!IsFakeClient(iClient)) {
GetClientIP(iClient, sIP, sizeof sIP);
Format(sMsg, sizeof sMsg, "%t", "hello", iClient);
if (hAdmin.BoolValue && GetAdmin(iClient)) {
StrCat(sMsg, sizeof sMsg, sShitBuffer);
}
if (hVip.BoolValue && GetVip(iClient)) {
StrCat(sMsg, sizeof sMsg, sShitBuffer);
}
if (hGeoIP_country.BoolValue && GetGeoipCountry(sIP)) {
StrCat(sMsg, sizeof sMsg, sShitBuffer);
}
if (hGeoIP_city.BoolValue && GetGeoipCity(sIP)) {
StrCat(sMsg, sizeof sMsg, sShitBuffer);
}
if (hLR_Rank.BoolValue && GetLR_RankName(iClient)) {
StrCat(sMsg, sizeof sMsg, sShitBuffer);
}
if (hLR_Top.BoolValue && GetLR_Rank(iClient)) {
StrCat(sMsg, sizeof sMsg, sShitBuffer);
}
if (hLR_Exp.BoolValue && GetLR_Xp(iClient)) {
StrCat(sMsg, sizeof sMsg, sShitBuffer);
}
if (hCredits.BoolValue && GetCredits(iClient)) {
StrCat(sMsg, sizeof sMsg, sShitBuffer);
}
CGOPrintToChatAll(sMsg);
}
}
bool GetGeoipCity(char[] ip) {
GeoipCity(ip, sShitBuffer, sizeof(sShitBuffer), "ru");
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "geo_city", sShitBuffer);
return true;
}
bool GetGeoipCountry(char[] ip) {
GeoipCountry(ip, sShitBuffer, sizeof(sShitBuffer), "ru");
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "geo_country", sShitBuffer);
return true;
}
bool GetLR_Rank(int iClient) {
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "rank_top", LR_GetClientInfo(iClient, ST_PLACEINTOP));
return true;
}
bool GetLR_Xp(int iClient) {
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "rank_xp", LR_GetClientInfo(iClient, ST_EXP));
return true;
}
bool GetLR_RankName(int iClient) {
int ranknum = LR_GetClientInfo(iClient, ST_RANK);
if (ranknum > 0)--ranknum;
LR_GetRankNames().GetString(ranknum, sShitBuffer, sizeof(sShitBuffer));
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "rank", sShitBuffer);
return true;
}
bool GetCredits(int iClient) {
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "credits", Shop_GetClientCredits(iClient));
return true;
}
bool GetAdmin(int iClient) {
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "admin", GetUserAdmin(iClient) != INVALID_ADMIN_ID ? "Является администратором":"Не является администратором");
return true;
}
bool GetVip(int iClient) {
VIP_GetClientVIPGroup(iClient, sShitBuffer, sizeof(sShitBuffer));
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "vip", (VIP_GetClientVIPGroup(iClient, sShitBuffer, sizeof(sShitBuffer)) == false)?"Нету вип-статуса": sShitBuffer);
return true;
}
/*==========================================РАБОТА С FPS=========================================================*/
public void FPS_OnClientLoaded(int iClient, float fPoints) {
g_fPlayerPoints[iClient] = fPoints;
GetPlayerLevel(iClient);
}
public void FPS_OnPointsChange(int iAttacker, int iVictim, float fPointsAttacker, float fPointsVictim) {
g_fPlayerPoints[iAttacker] = fPointsAttacker;
g_fPlayerPoints[iVictim] = fPointsVictim;
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "PointsEXP", Shop_GetClientCredits(iClient));
return true;
}
public void FPS_OnLevelChange(int iClient, int iOldLevel, int iNewLevel) {
GetPlayerLevel(iClient);
}
public void FPS_OnPlayerPosition(int iClient, int iPosition, int iPlayersCount) {
g_iPlayerPosition[iClient] = iPosition;
g_iPlayersCount = iPlayersCount;
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "FPSTop", Shop_GetClientCredits(iClient));
return true;
}
void GetPlayerLevel(int iClient) {
FPS_GetRanks(iClient, g_sPlayerRank[iClient], sizeof(g_sPlayerRank[]));
FormatEx(sShitBuffer, sizeof(sShitBuffer), "%t", "LevelFPS", Shop_GetClientCredits(iClient));
return true;
}