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

SteamWorks - получение SteamID владельца при использовании Family Sharing 2020-04-23

Нет прав для скачивания
Steam Family Sharing
Это расширение никак не связано со SteamTools!

WTF?
Не так давно Valve добавили в Steam новую возможность - Steam Family Sharing, позволяющий делиться библиотекой игр с другими людьми. Аккаунты с VAC-баном не могут им воспользоваться.
Однако это ввело довольно серьезную проблему для администраторов - читер может зайти с другого аккаунта, поделившись библиотекой основного. Появились даже вот такие группы.
После обсуждения Valve ввели новую функцию в библиотеку авторизации - возможность получения SteamID основного аккаунта.
KyleS с AlliedModders сделал простое расширение, которое добавляет возможность использования этого forward'а в SM.

ВНИМАНИЕ!
Поскольку игры не обновлялись с момента добавления этой возможности, вам нужно будет заменить библиотеки авторизации на обновленные! Старые библиотеки будут выдавать мусор в переменной OwnerID. Библиотеки взяты из последнего Steamworks SDK (126a), их нужно скинуть в папку bin в корне сервера. Помните, что при запуске обновления через SteamCMD они могут замениться стандартными!

Поставил. Что теперь?
Теперь появился новый форвард SW_OnValidateClient(OwnerID, ClientID), который при авторизации (обычно после OnClientAuthorized) передает ID пользователя в формате, аналогичном нативу GetSteamAccountID

Если вы используете SourceBans, то вам нужно добавить в конец плагина sourcebans.sp следующий код:
Код:
Expand Collapse Copy
#include <SteamWorks>
public SW_OnValidateClient(OwnerSteamID, ClientSteamID)
{
    if(OwnerSteamID && OwnerSteamID!=ClientSteamID)
    {
        new tmp;
        for(new i = 1; i <= MaxClients; i++)
        {
            if(IsClientConnected(i))
            {
                tmp = GetSteamAccountID(i);
                if(tmp && tmp == ClientSteamID)
                {
                    decl String:steamid[32];
                    Format(steamid,sizeof(steamid),"STEAM_0:%d:%d",OwnerSteamID%2,OwnerSteamID/2);
                    LogMessage("[SB] Checking FamilySharing user %L Owner: %s (OSID: %d, CSID: %d)",i,steamid,OwnerSteamID,ClientSteamID);
                    OnClientAuthorized(i,steamid);
                    break;
                }
            }
        }
    }
}

Затем скопировать из архива SteamWorks.inc в папку scripting/include и скомпилировать плагин.
PS: плагин работает, но ругается добавление в лог банов..

Оригинал
Автор
hirowatch
Скачивания
1
Просмотры
160
Первый выпуск
Обновление

Оценки

0.00 звёзд 0 оценок
Назад
Сверху Снизу