Team Bets

Плагин АМХХ Team Bets 1.0

Нет прав для скачивания
Поскольку все плагины абсолютно идентичны, выкладываю исходный код только от одного.
C++:
#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");
    }
}
Назад
Сверху