Double Experience

Плагин АМХХ Double Experience 1.0

Нет прав для скачивания
C++:
#include <amxmodx>
#include <reapi>
#include <gamecms5>

#pragma semicolon 1

new const szPluginInfo[][] = {"Double Experience", "1.0", "SevCorp"};

#define TYPE_JOB 2    /* Тип интеграции со пытом
                    1 - Army Ranks Ultimate
                    2 - Advanced Expirience System
                    3 - CMSStats Ranks */

#if TYPE_JOB == 1
native ar_set_user_addxp(id, addxp);
#endif

#if TYPE_JOB == 2
#include <aes_v>
#define ar_set_user_addxp(%0,%1) aes_set_player_exp(%0,aes_get_player_exp(%0) + float(%1))
#endif

#if TYPE_JOB == 3
native cmsranks_set_user_addxp(id, value);
native cmsranks_add_user_anew(id, value);
#endif

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);
    #endif
}

enum e_cvars{ gChatPrefix[16], c_giveExp_Aktive, c_giveExp_Aktive_Mess, c_giveExp_Num, c_giveExp_Flag[16], c_giveExp_Service[32] }
new cvars[e_cvars];

public plugin_init(){
    RegisterHookChain(RG_CBasePlayer_Killed, "uKilled", true);
}

public plugin_precache(){
    register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);
    initCvars();
}

public uKilled(victim, killer, gib){
    if(killer == victim || !is_user_connected(killer) || !is_user_connected(victim)) return;

    static Array:Services; Services = cmsapi_get_user_services(killer, "", cvars[c_giveExp_Service]);

    if(Services || checkAccess(killer, cvars[c_giveExp_Flag])) {
        PlayerGivePlayerEXP(killer, cvars[c_giveExp_Num]);
        if(cvars[c_giveExp_Aktive_Mess] == 1) {
            client_print_color(killer, print_team_default, "^4[^3%s^4] ^1Вам начисле доп. опыт в размере^3: ^4%d ^1очков", cvars[gChatPrefix], cvars[c_giveExp_Num]);
        }
    }
}

initCvars() {
    bind_pcvar_string(create_cvar("DoubleExp_gChatPrefix",                 "Double",         FCVAR_NONE, "Префикс для час соробщений"), cvars[gChatPrefix], charsmax(cvars[gChatPrefix]));

    bind_pcvar_num(create_cvar("DoubleExp_GiveExp_Aktive_Mess",            "0",             FCVAR_NONE, "Включить\\Выключить оповещение игроков в чате о начислении доп. опыта"                                                    ), cvars[c_giveExp_Aktive_Mess]);
    bind_pcvar_string(create_cvar("DoubleExp_GiveExp_Flag",             "t",             FCVAR_NONE, "'Игроку достаточно иметь либо флаг, либо услугу, чтобы получать доп.опыт'^n^nФлаг доступа для начисления доп. опыта"    ), cvars[c_giveExp_Flag],        charsmax(cvars[c_giveExp_Flag]));
    bind_pcvar_string(create_cvar("DoubleExp_giveExp_Service",             "_DoubleExp",    FCVAR_NONE, "Название услуги для начисления доп. опыта"                                                                                ), cvars[c_giveExp_Service],    charsmax(cvars[c_giveExp_Service]));
    bind_pcvar_num(create_cvar("DoubleExp_GiveExp_Num",                 "10",             FCVAR_NONE, "Количество дополнительного опыта"                                                                                        ), cvars[c_giveExp_Num]);

    AutoExecConfig(true, "DoubleExp", "SevCorp");
}

checkAccess(id, const flags[]){
    return (get_user_flags(id) & read_flags(flags));
}
Назад
Сверху