• Гость, перед открытием темы прочитай описание раздела, чтобы не ошибиться. Любые вопросы по настройке сервера создаются в разделе Технической Поддержки.

Помощь не работает плагин

maaaxru

Участник
Сообщения
67
Симпатии
9
Баллы
69
#1
Всем здарова, вот есть плагин Admin Menu for CSDM , установил на сервер (amx 1.8.2), но что то не работает, меню открывается и показывает время с начала карты через которое можно воспользоваться пунктами, но по истечению этого времени не работает команды, т.е нажимаю 1 или 2 и нечего не происходит и там где ограничение на количество использования за карту стоит 0, может кто подсказать вчем проблема? вот сам плагин
Код:
#include <amxmodx>

#include <fakemeta>

#if AMXX_VERSION_NUM < 183

    #include <dhudmessage>

#endif



#define ADMIN_ACCESS    ADMIN_LEVEL_A

#define VIP_ACCESS        ADMIN_LEVEL_H



#define X                -1.0    // Координата икс

#define Y                0.25    // Координата игрик

#define HOLDTIME        10.0    // Интервал обновления сообщения

#define FADEOUTTIME        3.0        // Время плавного исчезновения сообщения (не должен привышать половины времени от HOLDTIME)

#define FADEINTIME        3.0        // Время плавного появления сообщения (не должен привышать половины времени от HOLDTIME)



#if cellbits == 32

    #define OFFSET_CSMONEY    115

#else

    #define OFFSET_CSMONEY    140

#endif



new g_iStartPlugin, g_pMoneyDelay;

new CountHpAp[33], CountMoney[33];



new Trie:g_tMoney;

new Trie:g_tHpAp;



public plugin_init()

{

        #define PLUGIN "Admin Menu"

        #define VERSION "1.0.4"



    register_plugin(PLUGIN, VERSION, "Realution");



    register_clcmd("menu_admin", "Check_Player");

    register_clcmd("menu_vip", "Check_Player");



    g_pMoneyDelay = register_cvar("am_money_delay", "5");



    register_message(get_user_msgid("ScoreAttrib"), "MessageScoreAttrib");

    register_menucmd(register_menuid(PLUGIN), MENU_KEY_1|MENU_KEY_2|MENU_KEY_0, "HandleMenu");



    g_iStartPlugin = get_systime();



    g_tMoney = TrieCreate();

    g_tHpAp = TrieCreate();

}



public client_disconnect(id)

{

    new auth_id[32];

    get_user_authid(id, auth_id, 31);



    TrieSetCell(g_tMoney, auth_id, CountMoney[id]);

    TrieSetCell(g_tHpAp, auth_id, CountHpAp[id]);



    CountHpAp[id] = 0;

    CountMoney[id] = 0;

}



public client_authorized(id)

{

    new name[32]; get_user_name(id, name, 31);

    new auth_id[32]; get_user_authid(id, auth_id, 31);

    if(get_user_flags(id) & VIP_ACCESS && get_user_flags(id) & ADMIN_ACCESS)

    {

        set_dhudmessage(209, 0, 255, X, Y, 0, 0.0, HOLDTIME-FADEINTIME-FADEOUTTIME, FADEINTIME, FADEOUTTIME);

        show_dhudmessage(0, "Админ + Вип [ ^4%s^1 ] зашел на сервер!", name);

   

        if(TrieKeyExists(g_tMoney, auth_id))

        {

            TrieGetCell(g_tMoney, auth_id, CountMoney[id]);

        }

        else

        {

            CountMoney[id] = 10;

        }



        if(TrieKeyExists(g_tHpAp, auth_id))

        {

            TrieGetCell(g_tHpAp, auth_id, CountHpAp[id]);

        }

        else

        {

            CountHpAp[id] = 25;

        }

    }

    else if(get_user_flags(id) & ADMIN_ACCESS)

    {

        set_dhudmessage(255, 0, 0, X, Y, 0, 0.0, HOLDTIME-FADEINTIME-FADEOUTTIME, FADEINTIME, FADEOUTTIME);

        show_dhudmessage(0, "Админ [ ^4%s^1 ] зашел на сервер!", name);



        if(TrieKeyExists(g_tMoney, auth_id))

        {

            TrieGetCell(g_tMoney, auth_id, CountMoney[id]);

        }

        else

        {

            CountMoney[id] = 5;

        }

   

        if(TrieKeyExists(g_tHpAp, auth_id))

        {

            TrieGetCell(g_tHpAp, auth_id, CountHpAp[id]);

        }

        else

        {

            CountHpAp[id] = 15;

        }

    }

    else if(get_user_flags(id) & VIP_ACCESS)

    {

        set_dhudmessage(0, 255, 0, X, Y, 0, 0.0, HOLDTIME-FADEINTIME-FADEOUTTIME, FADEINTIME, FADEOUTTIME);

        show_dhudmessage(0, "Вип [ ^4%s^1 ] зашел на сервер!", name);



        if(TrieKeyExists(g_tMoney, auth_id))

        {

            TrieGetCell(g_tMoney, auth_id, CountMoney[id]);

        }

        else

        {

            CountMoney[id] = 5;

        }

   

        if(TrieKeyExists(g_tHpAp, auth_id))

        {

            TrieGetCell(g_tHpAp, auth_id, CountHpAp[id]);

        }

        else

        {

            CountHpAp[id] = 15;

        }

    }

}



public Check_Player(id)

{

    if(!is_user_alive(id))

        return ChatColor(id, "^1[^4%s^1] ^1Вы должны быть живы, чтобы использовать меню!", PLUGIN, PLUGIN);

    if(!(get_user_flags(id) & (ADMIN_ACCESS | VIP_ACCESS)))
        return ChatColor(id, "^1[^4%s^1] ^1Прежде купите^3 Админку^1 или^3 Випку^1. Скайп:^4 ilyha778", PLUGIN);

    return AdminMenu(id);
}
public AdminMenu(id)
{
    new szMenu[512], szName[32], iLen, iKeys = MENU_KEY_0;
    get_user_name(id, szName, 31)
    iLen = formatex(szMenu, charsmax(szMenu), "\rМеню привелегий^n\wДля\d: \r%s^n^n", szName);
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wВзять \r[\y255 жизни + брони\r] \d[\r%d\d]^n", CountHpAp[id]);

    if(get_systime() - g_iStartPlugin < get_pcvar_num(g_pMoneyDelay) * 60)
    {
        new iMin = 1 + (get_pcvar_num(g_pMoneyDelay) * 60 - (get_systime() - g_iStartPlugin)) / 60;
        new szMin[16]; get_ending(iMin, "минут", "минута", "минуты", szMin, charsmax(szMin));
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wВзять \r[\y16000$\r] \d[\rподождите: %d %s\d]^n^n", iMin, szMin);
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wВзять \r[\y16000$\r] \d[\r%d\d]^n^n", CountMoney[id]);
        iKeys |= MENU_KEY_2;
    }
    iKeys |= MENU_KEY_1;

    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
    return show_menu(id, iKeys, szMenu, -1, PLUGIN);
}
public HandleMenu(id, iKey)
{
    switch(iKey)
    {
        case 0:
        {
            if(CountHpAp[id] == 0) return AdminMenu(id);
            fm_set_user_health(id, 255);
            fm_set_user_armor(id, 255);
            CountHpAp[id] = CountHpAp[id]-1;
            ChatColor(id, "^1[^4%s^1] ^1Вы взяли ^4жизни и броню^1! Осталось раз: ^4%d^1.", PLUGIN, CountHpAp[id]);
            AdminMenu(id);
        }
        case 1:
        {
            if(CountMoney[id] == 0) return AdminMenu(id);
            fm_set_user_money(id, fm_get_user_money(id) + 16000);
            CountMoney[id] = CountMoney[id]-1;
            ChatColor(id, "^1[^4%s^1] ^1Вы взяли^4 16000$^1! Осталось раз: ^4%d^1.", PLUGIN, CountMoney[id]);
            AdminMenu(id);
        }
    }
    return PLUGIN_HANDLED;
}
public MessageScoreAttrib(iMsgId, iDest, iReceiver)
{
    if(get_user_flags(get_msg_arg_int(1)) & VIP_ACCESS && !get_msg_arg_int(2))
        set_msg_arg_int(2, ARG_BYTE, 4);
}
stock fm_set_user_armor(id, armor)
{
    set_pev(id, pev_armorvalue, float(armor));
    return 1;
}
stock fm_set_user_health(id, health)
{
    health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);
    return 1;
}
stock fm_set_user_money(id, money, flash = 0)
{
    set_pdata_int(id, OFFSET_CSMONEY, money, 5);
    message_begin(MSG_ONE, get_user_msgid("Money"), {0,0,0}, id);
    write_long(money);
    write_byte(flash);
    message_end();
}

stock fm_get_user_money(id)
    return get_pdata_int(id, OFFSET_CSMONEY, 5);

stock get_ending(num, const a[], const b[], const c[], output[], lenght)

{
    new num100 = num % 100, num10 = num % 10;
    if(num100 >=5 && num100 <= 20 || num10 == 0 || num10 >= 5 && num10 <= 9) format(output, lenght, "%s", a);
    else if(num10 == 1) format(output, lenght, "%s", b);
    else if(num10 >= 2 && num10 <= 4) format(output, lenght, "%s", c);
}

stock ChatColor(const id, const szMessage[], any:...)
{
    static pnum, players[32], szMsg[190], IdMsg;
    vformat(szMsg, charsmax(szMsg), szMessage, 3);
    if(!IdMsg) IdMsg = get_user_msgid("SayText");
    if(id)
    {
        players[0] = id;
        pnum = 1;
    }
    else get_players(players, pnum, "ch");
    for(new i; i < pnum; i++)
    {
        message_begin(MSG_ONE, IdMsg, .player = players[i]);
        write_byte(players[i]);
        write_string(szMsg);

        message_end();

    }

    return 1;

}
есть кто живой?
 

Вложения

Последнее редактирование модератором:
Сверху