news about free vip steam

Сообщения
542
Реакции
50
Предупреждения
2
Помог
4 раз(а)
Код:
#include <amxmodx>
#include <amxmisc>
#tryinclude <reapi>

#pragma semicolon 1

new const PLUGIN_NAME[] = "Auto Set Steam Flag";
new const PLUGIN_VERSION[] = "1.0.0";
new const PLUGIN_AUTHOR[] = "w0w";

/****************************************************************************************
****************************************************************************************/

new const g_szConfigName[] = "auto_set_steam_flag";

new g_szAccess[32];

public plugin_init()
{
    register_plugin(
        .plugin_name = PLUGIN_NAME,
        .version = PLUGIN_VERSION,
        .author = PLUGIN_AUTHOR
    );

    new pCvar = create_cvar("auto_set_steam_flag", "t", FCVAR_NONE, "Flags to set");
    bind_pcvar_string(pCvar, g_szAccess, charsmax(g_szAccess));

    AutoExecConfig(true, g_szConfigName);

    new szPath[PLATFORM_MAX_PATH];
    get_configsdir(szPath, charsmax(szPath));

    server_cmd("exec %s/plugins/%s.cfg", szPath, g_szConfigName);
    server_exec();
}

public client_putinserver(id)
{
    if(is_user_steam(id))
        set_user_flags(id, read_flags(g_szAccess));
}

#if !defined _reapi_included
stock 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) ? 1 : 0;
    }

    return 0;
}
#endif

new pCvar = create_cvar("auto_set_steam_flag", "t", FCVAR_NONE, "Flags to set");

where t the flag to set
 
Сообщения
337
Реакции
174
Помог
11 раз(а)
Artemich, я бы добавил:

Код:
new iBitFlags = read_flags("z");

remove_user_flags(id,iBitFlags);
Нам же не надо, чтобы VIP-Steam бегал с флагами zt
 
Сообщения
494
Реакции
340
Помог
11 раз(а)
Всё намного проще.
В reapi есть хук, который вызывается во время присоединения к игре.
А также натив is_user_steam всё же лучше брать от reunion (встроенный макросом при использовании reapi).

Код:
#include <amxmodx>
#include <reapi>

new const STEAM_VIP_GIVE_FLAGS[] = "t"; // which access flags to issue?

new g_iSteamVipGiveFlags;

public plugin_init()
{
    RegisterHookChain(RG_CBasePlayer_GetIntoGame, "@CBasePlayer_GetIntoGame_Post", true);

    g_iSteamVipGiveFlags = read_flags(STEAM_VIP_GIVE_FLAGS);
}

@CBasePlayer_GetIntoGame_Post(pPlayer)
{
    if(get_user_flags(pPlayer) & g_iSteamVipGiveFlags == g_iSteamVipGiveFlags)
        return;

    if(!is_user_steam(pPlayer))
        return;

    set_user_flags(pPlayer, g_iSteamVipGiveFlags);
    client_print_color(pPlayer, print_team_default, "^1For using ^4Steam ^1you get ^4VIP");
}
15 Окт 2022
А попытки отлова через jointeam/joinclass, event TeamInfo и таски не комильфо.
 
Сообщения
49
Реакции
32
bizon, тон, может, и дурной. Но в целом-то, мы все равно попадаем в GetIntoGame через JoiningThink, отлавливая cmd joinclass. Человек изначально прислал плагин без модуля реапи, кто его знает, что у него там стоит и какой версии. А потом уже поналетело несколько еще готовых помочь, причем настолько, что запутали человека вовсе. И тут уж хоть как-нибудь бы заработало у него :D
 
Сообщения
494
Реакции
340
Помог
11 раз(а)
UrShade, reapi позволяет в две строчки поймать этот момент без доп. проверок костыльных и выкрутасов. Да и в целом модуль во многих случаях позволяет делать нечто подобное.
Нежелание владельцев серверов использовать reapi вполне обоснованно - им пофиг, что этот модуль что-то там упрощает и облегчает, не они же пишут плагины, а специально обученные и не только люди.
Так и живём. Припеваючи.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу