GetClientSerial vs GetClientUserId

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #2
Преимущество первого вроде как в том, что он возвращает постоянный идентификатор клиента. И по нему же позволяет легко найти клиента. Как Стим, короче, но внутридвижковая шняга.
 

Dragokas

Добрая душа
Сообщения
229
Реакции
213
Хмммм, только что попробовал...

C-подобный:
public void OnPluginStart()
{
    RegAdminCmd("sm_entlog",    CmdLog,     ADMFLAG_ROOT);
}

public Action CmdLog(int client, int args)
{
    PrintToChat(client, "Serial: %i", GetClientSerial(client));
    PrintToChat(client, "UserId: %i", GetClientUserId(client));
    return Plugin_Handled;
}

Первый заход:

Переход на следующую карту ("серийник" поменялся) :D

Перезаход на сервер:
 

Reg1oxeN

Участник
Сообщения
403
Реакции
319
UserId уникальный идентификатор подключения клиента.
Serial уникальный идентификатор созданного entity. не знаю зачем они сделали его только для работы с клиентами.
все entity пересоздаются при смене карты.
 

Dragokas

Добрая душа
Сообщения
229
Реакции
213
Мда, если бы я был новичком, то уже поехала бы крыша...
Спрашивается, тогда ведь, уже есть индексы от 0 до GetMaxEntities(), которые и являются теми самыми уникальными идентификаторами сущностей
+ EntIndexToEntRef() для проверки, не подменилась ли сущность. Зачем ещё одна система "альтернативной" идентификации...
 

Reg1oxeN

Участник
Сообщения
403
Реакции
319
Спрашивается, тогда ведь, уже есть индексы от 0 до GetMaxEntities(), которые и являются теми самыми уникальными идентификаторами сущностей
представь ситуацию: у тебя стоит таймер, в него заложен индекс допустим какого-то оружия.
завершился раунд, оружие благополучно уничтожилось и на этом же индексе создалось то же оружие или что-то другое, а у тебя таймер закончил работу и уже пытается что-то сделать с этой новой сущностью.

EntIndexToEntRef() для проверки, не подменилась ли сущность
это функция возвращает смесь значений индекса и серийника
 
Сверху Снизу