• Пожалуйста, создайте название темы отражающее ее смысл
  • Для ускорения решения Вашего вопроса заполните обязательные поля и подробно опишите возникшую проблему

Помощь GameCMS API Выдача прав Steam/GSClient

klopikus

Участник
Сообщения
59
Реакции
14
Баллы
8
Можно сделать в Api распознавать Steam и GSClient
и так же выдавать им флаги как и HLTV отдельно не давая им группу?

И так использую
#define USE_USERS_GROUPS //использование групп пользователей для выдачи флагов доступа

Столкнулся с такой ситуацией

cms_add_user_group 2 "tu" //2 Steam\GSclient\Зарег. Пользователь на сайте

1 создать услугу чтоб всем зарегистрированным пользователям автоматом выдавалось tu там в меню просто этого нету =(
Screenshot_17.png
На сайте Группа есть Пользователь а в услугах нету =(

И помню читал что в услугах должны быть указаны полностью те флаги что и в кфг и наче не будет создана учётная запись (Отлично!!!)
я так понял для меня это + если игрок не регался зачем ему это нужно =)

Мне нужно выдавать Steam и GSClient такие же флаги tu и не создавать пользователей и услуг =)

Но как это сделать ?
Так как мне неизвестен вариант решения этой проблемы =(
 
хм... А может быть сделать просто выдачу флагов на карту? И выдавать каждую карту просто? Ну выдаваться будет автоматически.
Если правильно помню public client_connect(id) вызывается в момент подключения игрока. Добавить проверки на стим и на GSClient и если игроки такими являются, то выдавать флаги.
Получается небольшой такой плагин.
 
Последнее редактирование:
Что то типо такого:
C++:
#include <amxmodx>
#include <gamecms5>
#include <authemu>

new Trie:g_tUserData

public plugin_init() {
    register_plugin("NamePlugin", "Version", "Author");

    g_tUserData = TrieCreate();
}

public client_connect(id) {        // В данном случае будут проверяться все игроки заходящие на сервер.
    new szAuthId[MAX_AUTHID_LENGTH];
    get_user_authid(id, szAuthId, charsmax(szAuthId));
    if(is_user_steam(id) || !TrieKeyExists(g_tUserData, szAuthId)){
        cmsapi_set_user_flags(id, "tu", -1, "За Steam и GSClient", false, true);

        TrieSetCell(g_tUserData, szAuthId, true);
    }
}

stock bool:is_user_steam(id) {
    static dp_pointer;
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider"))) {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    return false;
}

Если нужно сделать тоже самое, но только для зарегистрированных пользователей, тогда вместо client_connect(id); можно использовать OnAPIMemberConnected(id, memberId, memberName[]); и тогда получается примерно так:
C++:
#include <amxmodx>
#include <gamecms5>
#include <authemu>

new Trie:g_tUserData

public plugin_init() {
    register_plugin("NamePlugin", "Version", "Author");
   
    g_tUserData = TrieCreate();
}

public OnAPIMemberConnected(id) {    // В таком случае проверяются только зарегистрированные игроки
    new szAuthId[MAX_AUTHID_LENGTH];
    get_user_authid(id, szAuthId, charsmax(szAuthId));
    if(is_user_steam(id) || !TrieKeyExists(g_tUserData, szAuthId)){
        cmsapi_set_user_flags(id, "tu", -1, "За Steam и GSClient", false, true);

        TrieSetCell(g_tUserData, szAuthId, true);
    }
}

stock bool:is_user_steam(id)
{
    static dp_pointer;
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    return false;
}

Примерно как то так... Если в чем то ошибся, думаю более опытные пользователи подскажут :unsure:;)
 
Последнее редактирование:
zhorzh78, я пример проверки взял из плагина GSClient: Money Bonus, и если я правильно понял, то проверка там реализована вот так if(!TrieKeyExists(g_tUserData, szAuthId)). Я не сталкивался еще с GSClient, по этому решил что такая проверка, взятая из другого плагина, подойдет.
 
zhorzh78, тогда если я верно прочел нативы, тогда выходит так:
C++:
#include <amxmodx>
#include <gamecms5>
#include <authemu>

public plugin_init() {
    register_plugin("NamePlugin", "Version", "Author");
}

public client_connect(id) {
    if(is_user_steam(id) || is_user_authemu(id)) {
        cmsapi_set_user_flags(id, "tu", -1, "За Steam и GSClient", false, true);

        TrieSetCell(g_tUserData, szAuthId, true);
    }
}

stock bool:is_user_steam(id)
{
    static dp_pointer;
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    return false;
}
 
Последнее редактирование:
Работает =)
Спасибо огромное !!!
D1m0n41k, Предлагаю вывесить плагин =)


L 12/12/2019 - 18:48:47: [gamecms_api_5.3.5.amxx] Загружено из базы данных: услуг по флагам 45 шт. / других услуг: 2 шт.
L 12/12/2019 - 18:48:47: [gamecms_api_5.3.5.amxx] Авторизация... "<ECOO*><STEAM_>" (аккаунт "STEAM_99:0:" / id= 4327) (флаги "defghijklmnopqrstu") (услуга "Зам Админы")
L 12/12/2019 - 18:48:47: [gamecms_api_5.3.5.amxx] Авторизация... "<oLe_tt><STEAM_99:1:>" (аккаунт "STEAM_99:1:" / id= 0) (флаги "tu") (услуга "За Steam и GSClient")
L 12/12/2019 - 18:48:47: [gamecms_api_5.3.5.amxx] Авторизация... "<peplene59><STEAM_99:0:>" (аккаунт "STEAM_99:0:" / id= 0) (флаги "tu") (услуга "За Steam и GSClient")
L 12/12/2019 - 18:48:47: [gamecms_api_5.3.5.amxx] Авторизация... "<ВЛАСТЕЛИН ЯИЦ><VALVE_13:0:>" (аккаунт "VALVE_13:0:" / id= 0) (флаги "tu") (услуга "За Steam и GSClient")
L 12/12/2019 - 18:48:47: [gamecms_api_5.3.5.amxx] Авторизация... "<aqua><VALVE_13:1:>" (аккаунт "VALVE_13:1:" / id= 0) (флаги "tu") (услуга "За Steam и GSClient")
L 12/12/2019 - 18:48:47: [gamecms_api_5.3.5.amxx] Авторизация... "<GSClient><VALVE_13:1:>" (аккаунт "VALVE_13:1:" / id= 0) (флаги "tu") (услуга "За Steam и GSClient")
 
zhorzh78, тогда если я верно прочел нативы, тогда выходит так:
C++:
#include <amxmodx>
#include <gamecms5>
#include <authemu>

public plugin_init() {
    register_plugin("NamePlugin", "Version", "Author");
}

public client_connect(id) {
    if(is_user_steam(id) || is_user_authemu(id)) {
        cmsapi_set_user_flags(id, "tu", -1, "За Steam и GSClient", false, true);

        TrieSetCell(g_tUserData, szAuthId, true);
    }
}

stock bool:is_user_steam(id)
{
    static dp_pointer;
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    return false;
}
2021-01-22_125757.jpg Не компилит локально
 
TauJieP, удалите строку
TrieSetCell(g_tUserData, szAuthId, true);
Почему то не выдает. Стим и GS игроки есть на сервере
L 01/22/2021 - 12:48:21: [gamecms_api_5.4.9.amxx] "37" services was 'Loaded' from database. Total on server: "37" services.
L 01/22/2021 - 12:48:21: [gamecms_api_5.4.9.amxx] Authentication... "<Smert` starshy9 | ^-^><STEAM_0:0:458603904>" (Account name "STEAM_0:0:458603904" / Admin index "154") (Service flags "d") (Service name "Смотритель")
L 01/22/2021 - 12:48:21: [gamecms_api_5.4.9.amxx] Authentication... "<Beast | TauJIeP><STEAM_0:1:61333168>" (Account name "STEAM_0:1:61333168" / Admin index "169") (Service flags "adlpqrst") (Service name "Системный администратор")
L 01/22/2021 - 12:48:21: [gamecms_api_5.4.9.amxx] Authentication... "<~Pantera><STEAM_1:0:1501488869>" (Account name "STEAM_1:0:1501488869" / Admin index "144") (Service flags "qpstad") (Service name "Дополнительный опыт + Gold привилегии")
L 01/22/2021 - 12:48:22: [gamecms_api_5.4.9.amxx] Authentication... "<_._milaxa_._><STEAM_1:0:1986107206>" (Account name "STEAM_1:0:1986107206" / Admin index "105") (Service flags "gpst") (Service name "Girl")
L 01/22/2021 - 12:48:26: [gamecms_api_5.4.9.amxx] Authentication... "<~Pantera><STEAM_1:0:1501488869>" (Account name "STEAM_1:0:1501488869" / Admin index "144") (Service flags "qpstad") (Service name "Дополнительный опыт + Gold привилегии")
L 01/22/2021 - 12:48:27: [csstatsx_sql.amxx] deleted 27 inactive entries
L 01/22/2021 - 12:48:28: [gamecms_api_5.4.9.amxx] Authentication... "<Beast | TauJIeP><STEAM_0:1:61333168>" (Account name "STEAM_0:1:61333168" / Admin index "169") (Service flags "adlpqrst") (Service name "Системный администратор")
L 01/22/2021 - 12:48:29: [gamecms_api_5.4.9.amxx] Authentication... "<_._milaxa_._><STEAM_1:0:1986107206>" (Account name "STEAM_1:0:1986107206" / Admin index "105") (Service flags "gpst") (Service name "Girl")
L 01/22/2021 - 12:48:29: [gamecms_api_5.4.9.amxx] Authentication... "<Smert` starshy9 | ^-^><STEAM_0:0:458603904>" (Account name "STEAM_0:0:458603904" / Admin index "154") (Service flags "d") (Service name "Смотритель")
L 01/22/2021 - 12:48:34: [gamecms_api_5.4.9.amxx] Authentication... "<~Pantera><STEAM_1:0:1501488869>" (Account name "STEAM_1:0:1501488869" / Admin index "144") (Service flags "qpstad") (Service name "Дополнительный опыт + Gold привилегии")
 
Назад
Сверху