#include <amxmodx>
#include <reapi>
#pragma semicolon 1
new const szPluginInfo[][] = {"TeamBets_BonusAnew", "1.0", "ApXuTekToR"};
enum _:eTeamBets { NONE = 0, T, CT };
/* Настройки */
#define TYPE_JOB 2 /* Тип интеграции со пытом
1 - Army Ranks Ultimate
2 - Advanced Expirience System
3 - CMSStats Ranks */
new szBetsMoney[ ] = { 5, 25, 50, 100, 500, 1000 }; // Шаг ставки
new szTeamName[eTeamBets][ ] = { "Никто", "Теры", "Контры" }; // Название команд
/* Далее настроек нет */
#if TYPE_JOB == 1
#include <army_ranks_ultimate>
#endif
#if TYPE_JOB == 2
#include <aes_v>
#endif
#if TYPE_JOB == 3
#include <cmsstats_ranks>
#endif
new szBetsMoneyID[33], iBetsTeam[33], bool:bSetBest[33] = false;
new g_iMaxPlayers;
enum e_Cvars {
g_ChatPrefix[16],
Float:c_RatioWin,
g_PlaySounds,
c_PlaySound_Death,
c_PlaySound_Successful,
c_PlaySound_failure,
}
new Cvars[e_Cvars];
public plugin_init() {
register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);
RegisterHookChain(RG_CBasePlayer_Killed, "Hook_Player_Killed", true);
register_event("SendAudio", "EventHook_TWin", "a", "2&%!MRAD_terwin");
register_event("SendAudio", "EventHook_CtWin", "a", "2&%!MRAD_ctwin");
register_event("TextMsg", "EventHook_RoundEnd", "a", "2&#Game_C", "2&#Game_w", "2&#Game_will_restart_in");
g_iMaxPlayers = get_maxplayers();
register_srvcmd("teambets_lockmap", "Check_LockMap");
register_clcmd("bet", "Bet_ShowMenu", -1, "Open bets menu");
register_clcmd("say /bet", "Bet_ShowMenu", -1, "Open bets menu");
register_clcmd("say_team /bet", "Bet_ShowMenu", -1, "Open bets menu");
initCvars();
new szConfigsDir[256];
get_localinfo("amxx_configsdir", szConfigsDir, charsmax(szConfigsDir));
server_cmd("exec %s/Team_Bets.cfg", szConfigsDir);
server_exec();
}
initCvars() {
register_cvar("TeamBets_ChatPrefix", "Ставки");
register_cvar("TeamBets_RatioWin", "2.0");
register_cvar("TeamBets_PlaySounds", "1");
register_cvar("TeamBets_PlaySound_Death", "0");
register_cvar("TeamBets_PlaySound_Successful", "1");
register_cvar("TeamBets_PlaySound_failure", "1");
get_cvar_string("TeamBets_ChatPrefix", Cvars[g_ChatPrefix], charsmax(Cvars[g_ChatPrefix]));
Cvars[c_RatioWin] = get_cvar_float("TeamBets_RatioWin");
Cvars[g_PlaySounds] = get_cvar_num("TeamBets_PlaySounds");
Cvars[c_PlaySound_Death] = get_cvar_num("TeamBets_PlaySound_Death");
Cvars[c_PlaySound_Successful] = get_cvar_num("TeamBets_PlaySound_Successful");
Cvars[c_PlaySound_failure] = get_cvar_num("TeamBets_PlaySound_failure");
}
public Hook_Player_Killed(const VictimID) {
if (!is_user_connected(VictimID)) return;
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_Death]) rg_send_audio(VictimID, "/sound/events/tutor_msg.wav", PITCH_NORM);
client_print_color(VictimID, 0, "^3[^4%s^3] ^1Напишите в чате ^4/bet ^1чтобы сделать ставку", Cvars[g_ChatPrefix]);
return;
}
public EventHook_TWin() EndRound(T);
public EventHook_CtWin() EndRound(CT);
public EventHook_RoundEnd() EndRound(NONE);
public Bet_ShowMenu(const iPlayer) {
if (Check_1x1()) {
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_failure]) rg_send_audio(iPlayer, "/sound/events/friend_died.wav", PITCH_NORM);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^4Ставки сделаны^1. ^3Ожидайте окончания боя^4!", Cvars[g_ChatPrefix]);
return PLUGIN_HANDLED;
}
if (is_user_alive(iPlayer)) {
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_failure]) rg_send_audio(iPlayer, "/sound/events/friend_died.wav", PITCH_NORM);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^3Только мертвые могут делать ставки^4!", Cvars[g_ChatPrefix]);
return PLUGIN_HANDLED;
}
new Buffer[256], MenuID;
#if TYPE_JOB == 1
new player_Anew = ar_get_user_anew(iPlayer);
#endif
#if TYPE_JOB == 2
new player_Anew = aes_get_player_bonus(iPlayer);
#endif
#if TYPE_JOB == 3
new player_Anew = cmsranks_get_user_anew(iPlayer);
#endif
formatex(Buffer, charsmax(Buffer), "\wСтавки:^n\yУ Вас на счету: \w[\r%d Anew\w]^n\yНоминал ставки: \w[\r%i$\w]^n\yКоманда: \w[\r%s\w]", player_Anew, szBetsMoney[ szBetsMoneyID[iPlayer] ], szTeamName[iBetsTeam[iPlayer]]);
MenuID = menu_create(Buffer, "BetsHandler");
menu_additem(MenuID, "Терористы", "1");
menu_additem(MenuID, "Контры", "2");
menu_additem(MenuID, "Изменить сумму^n", "3");
formatex(Buffer, charsmax(Buffer), "%s", bSetBest[iPlayer] ? "*\d Вы Уже сделали ставку" : "* \yСделать \rставку");
menu_additem(MenuID, Buffer, "4");
menu_setprop(MenuID, MPROP_EXITNAME, "Выход");
menu_display(iPlayer, MenuID, 0);
return PLUGIN_HANDLED;
}
public BetsHandler(const iPlayer, const iMenu, const iItem) {
if(iItem == MENU_EXIT) {
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
if (bSetBest[iPlayer]) {
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_failure]) rg_send_audio(iPlayer, "/sound/events/friend_died.wav", PITCH_NORM);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^3Вы уже сделали ставку", Cvars[g_ChatPrefix]);
return PLUGIN_HANDLED;
}
new szData[6], szName[64], iCallback, iAcces, iKey;
new iMoney; iMoney = get_member(iPlayer, m_iAccount);
menu_item_getinfo(iMenu, iItem, iAcces, szData, charsmax(szData), szName, charsmax(szName), iCallback);
iKey = str_to_num(szData);
switch (iKey) {
case 1: iBetsTeam[iPlayer] = T;
case 2: iBetsTeam[iPlayer] = CT;
case 3: {
new iTemp = szBetsMoneyID[iPlayer] += 1;
szBetsMoneyID[iPlayer] = ( iTemp > charsmax(szBetsMoney) ) ? 0 : iTemp;
}
case 4: {
if (iBetsTeam[iPlayer] < T || iBetsTeam[iPlayer] > CT) {
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_failure]) rg_send_audio(iPlayer, "/sound/events/friend_died.wav", PITCH_NORM);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^3Сначало нужно выбрать команду^4!", Cvars[g_ChatPrefix]);
Bet_ShowMenu(iPlayer);
return PLUGIN_HANDLED;
}
if (iMoney < szBetsMoney[ szBetsMoneyID[iPlayer] ]) {
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_failure]) rg_send_audio(iPlayer, "/sound/events/friend_died.wav", PITCH_NORM);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^3Такая ставка тебе не по карману^4!", Cvars[g_ChatPrefix]);
Bet_ShowMenu(iPlayer);
return PLUGIN_HANDLED;
}
bSetBest[iPlayer] = true;
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_Successful]) rg_send_audio(iPlayer, "/sound/events/tutor_msg.wav", PITCH_NORM);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^1Ставка сделана^4:^3 %i^4Anew ^1на ^3%s", Cvars[g_ChatPrefix], szBetsMoney[ szBetsMoneyID[iPlayer] ], szTeamName[iBetsTeam[iPlayer]]);
}
}
menu_destroy(iMenu);
Bet_ShowMenu(iPlayer);
return PLUGIN_HANDLED;
}
public EndRound(const iWinTeam) {
for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) {
if (bSetBest[iPlayer]) {
if (iWinTeam == NONE) {
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_Successful]) rg_send_audio(iPlayer, "/sound/events/tutor_msg.wav", PITCH_NORM);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^1Победила дружба", Cvars[g_ChatPrefix]);
}
else if (iBetsTeam[iPlayer] == iWinTeam) {
new iAward;
if(Cvars[c_RatioWin] > 0) {
iAward = floatround(szBetsMoney[ szBetsMoneyID[iPlayer] ] * Cvars[c_RatioWin]);
} else {
iAward = szBetsMoney[szBetsMoneyID[iPlayer]];
}
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_Successful]) rg_send_audio(iPlayer, "/sound/events/tutor_msg.wav", PITCH_NORM);
PlayerGivePlayerAnew(iPlayer, iAward);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^1Ваш выгрыш составляет:^3 %i^4Anew", Cvars[g_ChatPrefix], iAward);
}
else if (iBetsTeam[iPlayer] != iWinTeam) {
if(Cvars[g_PlaySounds] && Cvars[c_PlaySound_failure]) rg_send_audio(iPlayer, "/sound/events/friend_died.wav", PITCH_NORM);
PlayerGivePlayerAnew(iPlayer, -szBetsMoney[szBetsMoneyID[iPlayer]]);
client_print_color(iPlayer, 0, "^3[^4%s^3] ^1Вы ^3проиграли^1. В следующий раз точно повезёт^3! ^4=)", Cvars[g_ChatPrefix]);
}
}
bSetBest[iPlayer] = false;
iBetsTeam[iPlayer] = NONE;
szBetsMoneyID[iPlayer] = NONE;
}
}
public client_authorized(iPlayer) {
bSetBest[iPlayer] = false;
iBetsTeam[iPlayer] = NONE;
szBetsMoneyID[iPlayer] = NONE;
}
public client_disconnected(iPlayer) {
bSetBest[iPlayer] = false;
iBetsTeam[iPlayer] = NONE;
szBetsMoneyID[iPlayer] = NONE;
}
stock bool:Check_1x1() {
new iNum[2];
for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) {
if(!is_user_connected(iPlayer) || !is_user_alive(iPlayer))
continue;
switch(get_user_team(iPlayer)) {
case 1: ++iNum[0];
case 2: ++iNum[1];
}
}
if((iNum[0] == 1) && (iNum[1] == 1))
return true;
return false;
}
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
}
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");
}
}