Steam GSClient Bonus

Steam GSClient Bonus 1.0.5

Нет прав для скачивания
Сообщения
94
Реакции
13
Помог
2 раз(а)
d3m37r4, вы имеете ввиду что то типо этого?
C++:
public CBasePlayer_SetUserFlags(const Id, szNewName[]) {
    if(!is_user_connected(id)) return;

    new szOldName[32], c_GiveFlags[16], c_BonusType;
    get_entvar(pPlayer, var_netname, szOldName, charsmax(szOldName));
    c_BonusType = get_cvar_num("sgsc_bonus_type");
    get_cvar_string("sgsc_bonus_flags", c_GiveFlags, charsmax(c_GiveFlags));

    if(strcmp(szOldName, szNewName) && c_BonusType == 2) {
        #if defined ACCESS_FLAGS
        if(get_user_flags(id) & ACCESS_FLAGS)
            return;
        #endif
        set_user_flags(id, read_flags(c_GiveFlags));
    }
}
 

d3m37r4

111111
Сообщения
1,429
Реакции
1,169
Помог
10 раз(а)
D1m0n41k, нет, листай апи.
RG_CBasePlayer_SetClientUserInfoName
 
Сообщения
94
Реакции
13
Помог
2 раз(а)
d3m37r4, данный хук я указал в plugin_init уже. Я спрашивал именно про функцию.
RegisterHookChain(RG_CBasePlayer_SetClientUserInfoName, "CBasePlayer_SetUserFlags")
 

Ayk

Сообщения
763
Реакции
476
Помог
19 раз(а)
D1m0n41k, тебе же говорят АПИ смотреть.
Код:
    /*
    * Description:      -
    * Params:           (const this, infobuffer[], szNewName[])
    */
    RG_CBasePlayer_SetClientUserInfoName,
У каллбэка 3 параметра, и новое имя именно в 3-ем.
 
Сообщения
94
Реакции
13
Помог
2 раз(а)
Ayk, так а разве обязательно вписывать infobuffer[], если этот параметр не используется в функции?
 

d3m37r4

111111
Сообщения
1,429
Реакции
1,169
Помог
10 раз(а)
D1m0n41k, проверь, что у тебя случится, если ты его не впишешь.
 
Сообщения
94
Реакции
13
Помог
2 раз(а)
d3m37r4, при компилировании проблем не возникло. Выходит Вы имеете ввиду что в дальнейшем будут сбои в работе плагина?
20210
C++:
#include <amxmodx>
#include <authemu>
#include <reapi>

/* Настройки */
#define BONUS_TIME      5.0         // Время через которое будет выдана награда после входа игрока на сервер
#define ACCESS_FLAGS    ADMIN_USER  // Выдавать флаги только тем игрокам, у которых нет никаких других флагов (Игрок имеет флаг "z" - тогда выдаетются флаги)
                                    // Закомментируйте, если нужно выдавать даже игрокам с другими флагами
#define TYPE_JOB        2           /* Тип интеграции со система ранга
                                    1 - Army Ranks Ultimate
                                    2 - Advanced Expirience System
                                    3 - CMSStats Ranks
                                    4 - OciXCrom's Rank System (Награждать может только опытом, из-за отстутствия бонсоной системы) */
/* Далее настроек нет */

#if TYPE_JOB == 1
    native ar_set_user_addxp(id, addxp);
    native ar_add_user_anew(admin, player, anew);
#elseif TYPE_JOB == 2
    #include <aes_v>
#elseif TYPE_JOB == 3
    native cmsranks_set_user_addxp(id, value);
    native cmsranks_add_user_anew(id, value);
#elseif TYPE_JOB == 4
    #include <crxranks>
#endif

public plugin_init() {
    register_plugin("Steam_GSClient_Bonus", "1.0.4", "ApXuTekToR");

    RegisterHookChain(RG_CBasePlayer_SetClientUserInfoName, "CBasePlayer_SetUserFlags")

    register_cvar("sgsc_bonus_type",    "1");
    register_cvar("sgsc_bonus_money",   "500");
    register_cvar("sgsc_bonus_flags",   "t");
    register_cvar("sgsc_bonus_exp",     "1");
    #if TYPE_JOB != 4
    register_cvar("sgsc_bonus_anew",    "1");
    #endif

    new szConfigsDir[256];
    get_localinfo("amxx_configsdir", szConfigsDir, charsmax(szConfigsDir));
    server_cmd("exec %s/Steam_GSClient_Bonus.cfg", szConfigsDir);
    server_exec();

    register_srvcmd("SGSCBonus_lockmap", "Check_LockMap");
}

public client_putinserver(id) {
    set_task(BONUS_TIME, "GiveBonus", id);
}

public GiveBonus(id) {
    if(!is_user_connected(id))
        return;
    static c_BonusType, c_GiveMoney, c_GiveFlags[16], c_GiveExp;
#if TYPE_JOB != 4
    static c_GiveAnew;
#endif
    c_BonusType = get_cvar_num("sgsc_bonus_type");
    c_GiveMoney = get_cvar_num("sgsc_bonus_money");
    get_cvar_string("sgsc_bonus_flags", c_GiveFlags, charsmax(c_GiveFlags));
    c_GiveExp = get_cvar_num("sgsc_bonus_exp");
    #if TYPE_JOB != 4
    c_GiveAnew = get_cvar_num("sgsc_bonus_anew");
    #endif
    if(is_user_steam(id) || is_user_authemu(id)) {
        if(c_BonusType == 1) {
            rg_add_account(id, c_GiveMoney, AS_ADD, true);
            client_print_color(id, print_team_default, "^3[^4SGSC^3] ^1Вы получили ^3[^4%d ^1$^3] ^1за ^4Лицензионную ^1сборку", c_GiveMoney);
        } else if(c_BonusType == 2) {
            #if defined ACCESS_FLAGS
            if(get_user_flags(id) & ACCESS_FLAGS)
                return;
            #endif
            set_user_flags(id, read_flags(c_GiveFlags));
            client_print_color(id, print_team_default, "^3[^4SGSC^3] ^1Вы получили ^3[^4Флаги^3] ^1за ^4Лицензионную ^1сборку");
        } else if(c_BonusType == 3) {
            PlayerGivePlayerEXP(id, c_GiveExp);
            client_print_color(id, print_team_default, "^3[^4SGSC^3] ^1Вы получили ^3[^4%d ^1Exp^3] ^1за ^4Лицензионную ^1сборку", c_GiveExp);
        }
        #if TYPE_JOB != 4
        else if(c_BonusType == 4) {
            PlayerGivePlayerAnew(id, c_GiveAnew);
            client_print_color(id, print_team_default, "^3[^4SGSC^3] ^1Вы получили ^3[^4%d ^1Anew^3] ^1за ^4Лицензионную ^1сборку", c_GiveAnew);
        }
        #endif
    }
    return;
}

public CBasePlayer_SetUserFlags(const Id, szNewName[]) {
    if(!is_user_connected(Id)) return;

    new szOldName[32], c_GiveFlags[16], c_BonusType;
    get_entvar(Id, var_netname, szOldName, charsmax(szOldName));
    c_BonusType = get_cvar_num("sgsc_bonus_type");
    get_cvar_string("sgsc_bonus_flags", c_GiveFlags, charsmax(c_GiveFlags));

    if(strcmp(szOldName, szNewName) && c_BonusType == 2) {
        #if defined ACCESS_FLAGS
        if(get_user_flags(Id) & ACCESS_FLAGS)
            return;
        #endif
        set_user_flags(Id, read_flags(c_GiveFlags));
    }
}

stock PlayerGivePlayerEXP(index, count) {
    #if TYPE_JOB == 1
    ar_set_user_addxp(index, count);
    #elseif TYPE_JOB == 2
    aes_add_player_exp_f(index, count);
    #elseif TYPE_JOB == 3
    cmsranks_set_user_addxp(index, count);
    #elseif TYPE_JOB == 4
    crxranks_give_user_xp(index, count);
    #endif
}

#if TYPE_JOB != 4
stock PlayerGivePlayerAnew(index, count) {
    #if TYPE_JOB == 1
    ar_add_user_anew(-1, index, count);
    #elseif TYPE_JOB == 2
    aes_add_player_bonus_f(index, count);
    #elseif TYPE_JOB == 3
    cmsranks_add_user_anew(index, count);
    #endif
}
#endif

public Check_LockMap() {
    new getmap[32], map[32];
    read_args(getmap, charsmax(getmap));
    remove_quotes(getmap);
    get_mapname(map, charsmax(map));

    if(!strcmp(getmap, map, true)) {
        pause("ad");
    }
}
 

d3m37r4

111111
Сообщения
1,429
Реакции
1,169
Помог
10 раз(а)
D1m0n41k, от того, что ты второй аргумент назовешь szNewName, туда не будет прилетать имя какбэ.
Рано тебе плугены писать)
 
Сообщения
94
Реакции
13
Помог
2 раз(а)
d3m37r4, ну пробовать же стоит)
Тем более, для советов таких и пришел сюда. Путь элементарное, но все же.
Спасибо за подсказки.
 
Сообщения
80
Реакции
5
флаг почему то не выдается. компиляция успешная. может от версии реапи или регейм зависит, ну или админлоадер там хз? ReGameDLL version: 5.12.0.425-dev , ReHLDS version: 3.7.0.692-dev , ReAPI 5.11.0.190 .
 
Сообщения
94
Реакции
13
Помог
2 раз(а)
airat, не в этом дело. Я уже обновил ресурс, просто еще не одобрили обновление.
Я поправил выдачу флагов.
 
Сообщения
182
Реакции
9
Как тут сделать , чтобы выдавало флаг t и деньги? Или только одно что-то выбрать можно
 

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

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