Спасибо. Проглядел его.Все вызываются, кроме player_connect. ОффтопЕщё его "прототип" ввели.
Сервер отключает игроков от себя каждый раз при смене карты, и в итоге они подключаются вновь после смены карты, поэтому эти форварды и вызываются каждую смену карты.OnClientPutInServer OnClientConnect OnClientConnected все это вызывается каждый раз в начале карты.
Нет разницы, просто добавили новое поле в событие.Кроме как отсутствия ip:port разницы не вижу, в чем соль?
public void OnPluginStart()
{
HookEvent("player_connect", eV_player_connect);
}
public void eV_player_connect(Handle event, const char[] name, bool DB)
{
int userid = GetEventInt(event, "userid");
int client = GetClientOfUserId(userid);
int client2 = GetEventInt(event, "index");
char networkid[32];
GetEventString(event, "networkid", networkid, sizeof(networkid));
dbgMsg("%i %i %i %s", client, client2, userid, networkid);
}
0 0 20 STEAM_1:0:40849190
0 1 21 BOT
0 1 22 BOT
0 2 23 BOT
0 3 24 BOT
0 4 25 BOT
0 5 26 BOT
0 6 27 STEAM_1:0:77465821
GetEventInt(event, "index") + 1 будет ли правильным индексом.Нельзя так получить индекс игрока в этом событии. Слишком рано, получение идёт от OnClientConnect.
public void OnClientAuthorized(int client, const char[] auth)
{
if (GetClientTime(client) < 1.0) // пробовал меньше секунды, может не успеть сработать.
{
char steamid[32];
Format(steamid, sizeof(steamid), "%s", auth);
dbgMsg("%i %s", client, auth);
}
}
В плане надёжности рекомендуется получать стим вручную при помощи GetClientAuthId, поскольку OnClientAuthorized передает стим в формате, которое сделали Valve. Таким образом, при всех их сменах форматов (как это было при смене с Steam2 на Steam3) плагины продолжат работать корректно.Какой способ рациональнее использовать в плане надежности и производительности?
public void OnPluginStart()
{
HookEvent("player_connect", eV_player_connect);
}
public void eV_player_connect(Handle event, const char[] name, bool DB)
{
int client = GetEventInt(event, "index") + 1;
char steamid[32];
GetEventString(event, "networkid", networkid, sizeof(steamid));
dbgMsg("%i %s", client, steamid);
}