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