Получение переменной сервера для вывода ее в чат.

8Ahnenerbe8

Участник
Сообщения
113
Реакции
30
Как получить переменную сервера для вывода ее в чат?
Как пример можно взять команду sv_airaccelerate.


И еще вот такой вопрос:
Насколько я понял,то OnClientPutInServer вызывается всегда при заходе игрока на сервер,следовательно и при смене карты тоже будет происходить вызов.
А мне нужно сделать так,чтобы действие срабатывало только один раз при заходе игрока на сервер,то есть при смене карты оно повторно не выполнялось.
Что тогда вместо OnClientPutInServer использовать?
 
Последнее редактирование:

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
1. Использовать необходимую функцию в зависимости от типа переменной конвара:
tree_mid.gif
GetConVarBool
tree_mid.gif
GetConVarInt
tree_mid.gif
GetConVarFloat
tree_mid.gif
GetConVarString

2. Подключение игрока:
PHP:
HookEvent("player_connect", ...);
и аналогичное событие при выходе игрока (вызывается только один раз):
PHP:
HookEvent("player_disconnect", ...);
 

8Ahnenerbe8

Участник
Сообщения
113
Реакции
30
@Reiko1231, благодарю
--- Добавлено позже ---
@Reiko1231,
Хм,почему-то при смене карты все равно выполняется функция - вывод в чат.
В чем проблема?
Может потому что событие OnPluginStart вызывается всегда после смены?
PHP:
#include <sourcemod>

float g_flTickRate;

public OnPluginStart()
{
    HookEvent("player_connect", Event_PlayerTeam, EventHookMode_Post);
 
    g_flTickRate = 1 / GetTickInterval();
}

public Action:Event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
    HookEvent("player_team", Event_PlayerTeam_Post, EventHookMode_Post);
}

public Action:Event_PlayerTeam_Post(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client  = GetClientOfUserId(GetEventInt(event, "userid"));
 
    if(0 < client <= MaxClients)
    {
        if(IsClientInGame(client))
        {
            new oldteam = GetEventInt(event, "oldteam");
            if(oldteam == 0)
            { 
                {
                    PrintToChat(client, "Server settings: %.0ftick", g_flTickRate);
                }
            }
        }
    }
}
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
public Action:Event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
HookEvent("player_team", Event_PlayerTeam_Post, EventHookMode_Post);
}
Нельзя так делать, хук здесь осуществляется при каждом подключении игрока, а должен лишь 1 раз.
Если необходимо отсылать разовое сообщение тому игроку, кто подключается, то лучше использовать:
PHP:
OnClientPostAdminCheck(client)
С блокировкой повторного показа при смене карты, путём изменения значения глобальной переменной клиента из массива:
PHP:
new bool:g_bBlockMessage[MAXPLAYERS + 1];

public OnPluginStart() HookEvent("player_connect",	Event_PlayerConnect);

public Event_PlayerConnect(Handle:event, String:name[], bool:dontBroadcast) g_bBlockMessage[GetEventInt(event, "index") + 1] = false;

public OnClientPostAdminCheck(client)
{
	if (!g_bBlockMessage[client])
	{
		PrintToChat(client, "Это сообщение Вы получите 1 раз при входе на сервер.")
		g_bBlockMessage[client] = true;
	}
}
 
Сверху Снизу