[Zp 4.3] Extra Items | Ограничение на покупку по времени. (Лимит)

Статус
В этой теме нельзя размещать новые ответы.

uyra1999

Пользователь
Регистрация
1 Апр 2020
Сообщения
4
Симпатии
0
Добрый день, подскажите как сделать ограничение на покупку предмета в [Extra Items] по времени.
К примеру: Можно купить "Buy HP!" 1 раз, в 60 секунд.
Если игрок пытается купить "Buy HP!" не дождавшись окончания лимита на покупку, то ему в чат выводит сообщение с цветным текстом о том, что необходимо подождать "n" секунд.
Значение "n" меняется в зависимости от того, сколько времени осталось до следующей покупки.
Лимит на покупку у каждого игрока свой.
То есть, если "Игрок№1" купил предмет, то его покупка никак не влияет на покупку того же предмета "Игроку№2"

Если можно, подскажите на примере этого Плагина:
 

Вложения

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
2.578
Симпатии
914
Пол
Женский
Добрый день, подскажите как сделать ограничение на покупку предмета в [Extra Items] по времени.
К примеру: Можно купить "Buy HP!" 1 раз, в 60 секунд.
Если игрок пытается купить "Buy HP!" не дождавшись окончания лимита на покупку, то ему в чат выводит сообщение с цветным текстом о том, что необходимо подождать "n" секунд.
Значение "n" меняется в зависимости от того, сколько времени осталось до следующей покупки.
Лимит на покупку у каждого игрока свой.
То есть, если "Игрок№1" купил предмет, то его покупка никак не влияет на покупку того же предмета "Игроку№2"

Если можно, подскажите на примере этого Плагина:
Покажите попытки
 

uyra1999

Пользователь
Регистрация
1 Апр 2020
Сообщения
4
Симпатии
0
Покажите попытки
Вот моя работа, но немного в другом направлении.
Сделал покупку этого "Items" 1 раз за раунд, и добавил возврат "Ammo" при повторной, неудачной покупки.
Если не смогу найти способ как сделать таймер в 60 секунд, то придется остановится на таком варианте.
 

Вложения

Flymic24

Пользователь
Регистрация
15 Июн 2017
Сообщения
85
Симпатии
43
Пол
Мужской
Код:
#include <amxmodx>
#include <fun>
#include <zombieplague>

new g_itemid_buyhp, hpamount;
new iAmmoCost = 5;    //    Цена
new iNexUse = 30;    //    Через сколько секунд можно сново пользоваться
new iLastTimeBuy[33];

public plugin_init()
{
    register_plugin("[ZP] Buy Health Points", "1.0", "T[h]E Dis[as]teR");
    hpamount = register_cvar("zp_buyhp_amount", "1000");
    g_itemid_buyhp = zp_register_extra_item("Buy HP!", iAmmoCost, ZP_TEAM_ZOMBIE);
}

public client_authorized(pPlayer)    iLastTimeBuy[pPlayer] = 0;

public zp_extra_item_selected(pPlayer,itemid)
{
    if (itemid != g_itemid_buyhp)    {
        return PLUGIN_CONTINUE;
    }
    
    if(!is_user_alive(pPlayer))    {
        ChatColor(pPlayer, "Тебя это не спасёт )) Мертвец");
        return ZP_PLUGIN_HANDLED;
    }
    
    new iSysTime = get_systime();
    if (iLastTimeBuy[pPlayer] > iSysTime)    {
        new iTime = iLastTimeBuy[pPlayer] - iSysTime;       
        new iMin, iSec;    get_minutes(iTime, iMin, iSec);
        ChatColor(pPlayer, "Ожидай ещё !team%i!y мин | !team%i!y сек", iMin, iSec);
        return ZP_PLUGIN_HANDLED;
    }
    
    iLastTimeBuy[pPlayer] = get_systime(iNexUse);
    set_user_health(pPlayer, get_user_health(pPlayer) + get_pcvar_num(hpamount));
    
    return PLUGIN_CONTINUE;
}

get_minutes(const iInSecond, &iOutMin, &iOutSec)
{
    iOutMin = iInSecond / 60;
    iOutSec = iInSecond % 60;
}

stock ChatColor(const iPlayer,  const szInput[],  any:...)
{
    new iCount = 1, szPlayers[32];
    static szMessage[191];
    
    vformat(szMessage, charsmax(szMessage), szInput, 3);
    
    replace_all(szMessage, charsmax(szMessage), "!g", "^4");    // Green Color
    replace_all(szMessage, charsmax(szMessage), "!y", "^1");    // Default Color
    replace_all(szMessage, charsmax(szMessage), "!team", "^3");    // Team Color
    replace_all(szMessage, charsmax(szMessage), "!team2", "^0");    // Team2 Color
    
    if(iPlayer) szPlayers[0] = iPlayer; else get_players(szPlayers, iCount, "ch");
    {
        for(new i = 0; i < iCount; i++)
        {
            if(!is_user_connected(szPlayers[i]))    continue;
            
            static g_MsgSayText;
            if(g_MsgSayText || (g_MsgSayText = get_user_msgid("SayText")))
            {
                message_begin(MSG_ONE_UNRELIABLE, g_MsgSayText, _, szPlayers[i]);
                write_byte(szPlayers[i]);
                write_string(szMessage);
                message_end();
            }
        }
    }
}
 

uyra1999

Пользователь
Регистрация
1 Апр 2020
Сообщения
4
Симпатии
0
Flymic24, спасибо тебе Хороший человек ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу