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