Проблема с работой плагина MML

Сообщения
315
Реакции
104
Помог
2 раз(а)
Всем доброго времени суток.
Решил переписал с нуля плагин https://dev-cs.ru/resources/1036/, спасибо fantom за советы по плагину!
Исходный код, разумеется, прилагаю ниже.
В чем проблема?!
1) Не отображается в ЧАТЕ фраза о получении увеличенной награде, даже при #define CHAT 1
2) Странно, но изменения значений КВАРОВ (когда получать награду) - не влияют. Значение mml_round не влияет на плагин... При этом, если mml_round = 1 (тестировал в консоли сервера на хостинге), будет считаться, что оно 4, как в исходнике (ВЫЯВЛЕНО по тестам плагина). И награда будет выдаваться через 4 раунда, а не через 1, как прописано в кваре
3) Дебагов нет. Ошибок нет. Плагин работает стабильно (amxx plugins в консоле)
-------------
Прошу вас , кто захочет помочь- пишите по делу, че нужно исправить.
-------------
Код:
#include <amxmodx>
#include <reapi>

#define CHAT 1 // добавлять ли вывод фразы из .txt в чат? (обрезает часть кода, уменьшает нагрузку)

enum eData_Team {
    teamTer = 0,
    teamCTer = 1
};

enum eData_Cvars {
    cvar_status = 0,
    cvar_multiply,
    cvar_round,
    cvar_allowance
};

new g_pCvar[eData_Cvars], g_iWinNumber[eData_Team], g_iRound;
#if CHAT == 1
new g_iMaxPlayers;
#endif

public plugin_init() {
    register_dictionary("mm_lang.txt");
    register_plugin("Money Multiplier Looser", "1.1.0", "SNauPeR");

    g_pCvar[cvar_status] = register_cvar("mml_enabled", "1");
    g_pCvar[cvar_multiply] = register_cvar("mml_multiply", "2.0");
    g_pCvar[cvar_round] = register_cvar("mml_round", "4");
    g_pCvar[cvar_allowance] = register_cvar("mml_allowance", "3");
   
    new szFileDir[128];
    get_localinfo("amxx_configsdir", szFileDir, charsmax(szFileDir));
    formatex(szFileDir, charsmax(szFileDir), "%s/mml/config.cfg", szFileDir);
    switch(file_exists(szFileDir)) {
        case 0: log_amx("[MML] Файл ^"%s^" не найден.", szFileDir);  
        case 1: server_cmd("exec %s", szFileDir);
    }
    register_logevent("LogEvent_RestartGame", 2, "1=Game_Commencing", "1&Restart_Round_");
    RegisterHookChain(RG_RoundEnd, "ReAPI_RoundEnd", 0);
    state dRound: Disabled;
   
    #if CHAT == 1
    g_iMaxPlayers = get_maxplayers();
    #endif
}

public LogEvent_RestartGame() state dRound: Disabled;
public ReAPI_RoundEnd(WinStatus:iWinTeam, ScenarioEventEndRound:hEvent, Float:ftmDelay) <> {}
public ReAPI_RoundEnd(WinStatus:iWinTeam, ScenarioEventEndRound:hEvent, Float:ftmDelay) <dRound: Disabled> {
    if(!get_pcvar_num(g_pCvar[cvar_status])) {
        log_amx("plugin has been disabled");
        pause("a");
        return;
    }
    if(++g_iRound >= get_pcvar_num(g_pCvar[cvar_round])) {
        state dRound: Enabled;
        g_iRound = 0;
        g_iWinNumber[teamCTer] = 0;
        g_iWinNumber[teamTer] = 0;
    }
}
public ReAPI_RoundEnd(WinStatus:iWinTeam, ScenarioEventEndRound:hEvent, Float:ftmDelay) <dRound: Enabled> {
    if(!get_pcvar_num(g_pCvar[cvar_status])) {
        log_amx("plugin has been disabled");
        pause("a");
        return;
    }
   
    switch(iWinTeam) {
        case WINSTATUS_CTS: g_iWinNumber[teamCTer]++;
        case WINSTATUS_TERRORISTS: g_iWinNumber[teamTer]++;
        default: return;
    }
   
    if(g_iWinNumber[teamTer] && g_iWinNumber[teamCTer]) {
        g_iWinNumber[teamTer] = 0;
        g_iWinNumber[teamCTer] = 0;
    }

    static iAllowance; iAllowance = get_pcvar_num(g_pCvar[cvar_allowance]);
    if(g_iWinNumber[teamTer] >= iAllowance && !g_iWinNumber[teamCTer] || g_iWinNumber[teamCTer] >= iAllowance && !g_iWinNumber[teamTer]) {
        rg_set_account_rules(RR_LOSER_BONUS_DEFAULT, min(16000, (rg_get_account_rules(RR_LOSER_BONUS_DEFAULT) * floatround(get_pcvar_float(g_pCvar[cvar_multiply])))));
        #if CHAT == 1
            for(new pId = 1; pId <= g_iMaxPlayers; pId++) {
                if(is_user_connected(pId) && WinStatus:get_user_team(pId) != iWinTeam && get_user_team(pId) != 3)
                    client_print_color(pId, pId, "%L %L", pId, "MSG_MML_PREFIX", pId, "MSG_MML", get_pcvar_float(g_pCvar[cvar_multiply]));
            }
        #endif
    }
}
 
Сообщения
2,491
Реакции
2,795
Помог
61 раз(а)
SNauPeR, логгируйте все до условия, и смотрите выполняется ли оно. Уже внутри выводить что либо бесмысленно. А также вместо пересчета всех игроков можно указать 0
 
Сообщения
315
Реакции
104
Помог
2 раз(а)
fantom, если я поставлю "0", то будет выводиться фраза обоим командам, а не только проигравшей
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу