Иконка ресурса

Players count in hostname 1.2

rJIa3

Участник
Сообщения
169
Реакции
180
  • Автор ресурса
  • #1
Players count in hostname

Описание:
Плагин изменяет имя сервера показывая текущее количество игроков и версию игры.

Требования:
SourceMod

Поддерживаются игры:
  • CS: Source
  • CS: GO
  • Team Fortress 2
  • Day of Defeat: Source
  • L4D1/2

Установка:
  1. Скопировать файл playerscount_version_in_hostname.smx в директорию cstrike/addons/sourcemod/plugins/
  2. Скопировать файл playerscount_version_in_hostname.sp в директорию addons/sourcemod/scripting

Переменные:
%d - текущее кол-во игроков на сервере
%d - кол-во игроков sv_visiblemaxplayers
%s - версия сервера
sm_formatted_hostname ""
Пример:
sm_formatted_hostname "My Server %d/%d (%s)"
"My Server %d/%d" => "My Server 5/8"
прописать можно в server.cfg


Оригинал
 
Последнее редактирование модератором:

sintez

★CS.ORG.RU★
Сообщения
272
Реакции
45
не кто не знает? как исправить чтобы показывало вот так
 

Вложения

  • Снимок.PNG
    Снимок.PNG
    189 байт · Просмотры: 638

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
PHP:
public Plugin:myinfo = 
{
	name = "Players count in hostname",
	author = "D1maxa",
	description = "Showing number of players and version in name of server",
	version = "1.22",
	url = "http://forums.alliedmods.net/showthread.php?t=126060"
};

new g_NumClients=0;
new Handle:hostname = INVALID_HANDLE;
new Handle:formatted_hostname = INVALID_HANDLE;
new String:version[16] = "";

public OnPluginStart()
{
	hostname = FindConVar("hostname");
	formatted_hostname=CreateConVar("sm_formatted_hostname", "My Server %d/%d (%s)", "Formatted string for dynamic hostname",FCVAR_PLUGIN);
	GetVersion();
}

public OnMapStart()
{
	g_NumClients=0;
}
 
 public OnConfigsExecuted()
{
	SetNumberOfPlayersInHostname();
}
 
public OnClientConnected(client)
{
	if(!IsFakeClient(client))
	{
		g_NumClients++;
		SetNumberOfPlayersInHostname();
	}
}

public OnClientDisconnect(client)
{
	if(!IsFakeClient(client))
	{		
		g_NumClients--;
		SetNumberOfPlayersInHostname();
	}
}

SetNumberOfPlayersInHostname()
{
	decl String:my_buf[64];
	decl String:f_hostname[64];
	GetConVarString(formatted_hostname,f_hostname,sizeof(f_hostname));
	Format(my_buf,sizeof(my_buf),f_hostname,g_NumClients,MaxClients,version);
	SetConVarString(hostname,my_buf);
	ServerCommand("heartbeat");
}

GetVersion()
{
	new Handle:steaminf = OpenFile("steam.inf","r");  
	if(steaminf == INVALID_HANDLE)
	{
		LogError("Cannot open steam.inf");			
		return;  			
	}	
	new String:buffer[128];
	while(ReadFileLine(steaminf, buffer, sizeof(buffer)) && (StrContains(buffer,"PatchVersion=",false) == -1))
	{}
	CloseHandle(steaminf);
	if(StrContains(buffer,"PatchVersion=",false) != -1)
	{
		new i = FindCharInString(buffer,'=') + 1;
		new j = 0;
		do
		{
			version[j++] = buffer[i++];
		}
		while(buffer[i] != '\0' && j<sizeof(version));
		version[7] = '\0';
	}		
}
 

master117

Участник
Сообщения
275
Реакции
10
Подправьте код и выложите пожалуйста, мне нужно убрать проверку на ботов.
 

master117

Участник
Сообщения
275
Реакции
10
Спасибо!

Добавлено через 19 минут
Игра CS:GO боты есть на сервере, а в скобках не показывает их кол-во там где название сервера, как подправить? =)
 
Последнее редактирование:

BloodyAngel

Участник
Сообщения
73
Реакции
54
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>

public Plugin myinfo =
{
    name = "Players count in hostname",
    author = "D1maxa",
    description = "Showing number of players and version in name of server",
    version = "1.21",
    url = "http://forums.alliedmods.net/showthread.php?t=126060"
};

int g_iNumClients = 0, g_iVisibleMaxPlayers = 0;
ConVar hostname, sv_visiblemaxplayers, formatted_hostname;
char cVersion[16] = "", cBuf[64], cHostName[64];

public void OnPluginStart()
{
    formatted_hostname = CreateConVar("sm_formatted_hostname", "My Server %d/%d (%s)", "Formatted string for dynamic hostname", FCVAR_NOTIFY);

    AutoExecConfig(true, "players_count_in_hostname");

    formatted_hostname.AddChangeHook(OnConVarsChanged);

    hostname = FindConVar("hostname");
    sv_visiblemaxplayers = FindConVar("sv_visiblemaxplayers");
    sv_visiblemaxplayers.AddChangeHook(OnConVarsChanged);

    File steaminf = OpenFile("steam.inf", "r");
    if(steaminf == null)
    {
        LogError("Cannot open steam.inf");           
        return;             
    }

    char buffer[128];
    while(steaminf.ReadLine(buffer, sizeof(buffer)) && (StrContains(buffer, "PatchVersion=", false) == -1))
    {}
    steaminf.Close();

    if(StrContains(buffer, "PatchVersion=", false) != -1)
    {
        int j = 0, i = FindCharInString(buffer, '=') + 1;
        do
        {
            cVersion[j++] = buffer[i++];
        }
        while(buffer[i] != '\0' && j < sizeof(cVersion));
        cVersion[7] = '\0';
    }
}

public void OnMapStart()
{
    g_iNumClients = 0;
}

public void OnConfigsExecuted()
{
    OnConVarHostnameChanged(formatted_hostname, "", "");
    OnConVarHostnameChanged(sv_visiblemaxplayers, "", "");
}

void OnConVarHostnameChanged(ConVar cvar, const char[] oldVal, const char[] newVal)
{
    if(cvar == formatted_hostname)
    {
        cvar.GetString(cHostName, sizeof(cHostName));
    }
    else if(cvar == sv_visiblemaxplayers)
    {
        g_iVisibleMaxPlayers = cvar.IntValue;
    }
    SetNumberOfPlayersInHostname();
}
 
public void OnClientConnected(int client)
{
    if(!IsFakeClient(client))
    {
        g_iNumClients++;
        SetNumberOfPlayersInHostname();
    }
}

public void OnClientDisconnect(int client)
{
    if(!IsFakeClient(client))
    {
        g_iNumClients--;
        SetNumberOfPlayersInHostname();
    }
}

void SetNumberOfPlayersInHostname()
{
    Format(cBuf, sizeof(cBuf), cHostName, g_iNumClients, g_iVisibleMaxPlayers, cVersion);
    hostname.SetString(cBuf);
    ServerCommand("heartbeat");
}
 
Сверху Снизу