Проверка, есть ли плагин.

Сообщения
893
Реакции
149
Помог
25 раз(а)
Здравствуйте.
Задался таким вопросом: как грамотно сделать проверку: если плагина нету - останавливаем другой плагин.
К примеру: если у меня нету плагина 1.amxx, то плагин 2.amxx не будет работать.
Набросал такой код:
Код:
#include <amxmodx>
#include <reapi_v>

new const szPlInf[][] = {
    "[AMXX] AdminTools: GoToWatch Addon",
    "0.1",
    "ImmortalAmxx",
    "AmxxGoToCheck.amxx"
};

enum _:pCvars {
    STOP_TARGET,
    BSCREEN_TARGET
};

new g_pCvars[pCvars], g_pPlayerData[33][PlayerData];

public plugin_init() {
    if(is_plugin_loaded(szPlInf[3], true)) {
        register_plugin(
            .plugin_name = szPlInf[0],
            .version = szPlInf[1],
            .author = szPlInf[2]
        );
    }
    else {
        server_print("[%s] - No found plugin: %s", szPlInf[0], szPlInf[3]);
        server_print("[%s] - Plugins is paused", szPlInf[0]);
        pause("d");
    }
}
Но я подумал, что можно сделать просто плагин с названием "AmxxGoToCheck.amxx" и обойти эту проверку. Есть какая-то альтернатива этому?
 
Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
Benzogang_BabyTape, is_plugin_loaded() или get_plugin() + get_pluginsnum()

Есть вариант через либу. В ММ мистрика есть пример register_library() + #pragma reqlib . Можно дополнить set_module_filter(). Ещё есть is_module_loaded() для проверки без reqlib .
 
Сообщения
673
Реакции
242
Помог
11 раз(а)
Код:
if(is_plugin_loaded("CSStatsX SQL") != -1)
g_arrSetting[StatsSystem]    = 1;
else if(is_plugin_loaded("CsStats MySQL") != -1)
g_arrSetting[StatsSystem]    = 2;
else if(is_plugin_loaded("CMSStats_MySQL") != -1)
g_arrSetting[StatsSystem]    = 3;
Код:
switch(g_arrSetting[StatsSystem])
{
    case 0:    iRank    = get_user_stats(id, szStats, szStats);
    case 1:    iRank    = get_user_stats_sql(id, szStats, szStats);
    case 2:
    {
        new szStats2[22];
        iRank    = csstats_get_user_stats(id, szStats2);
    }
    case 3:    iRank    = cmsstats_get_user_stats(id, szStats, szStats);
}
 
Сообщения
1,572
Реакции
656
Помог
5 раз(а)
ну или перебор плагинов по названию функции но это если название плагина не известно, но известно название какой-либо функции внутри плагина
20 Июн 2022
Хотя это совсем маловероятно) Разве что только в том случае если кто-то специально изменил название плагина.
 

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

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