g_NextUse

Сообщения
456
Реакции
81
Помог
4 раз(а)
Приветствую всех. Хотел бы узнать, как можно отловить g_NextUse при connect'e и сохранить до disconnect'a игрока. Объясню к чему такие действия, при connect'e игрока выдается сумма в 8000$ + установлен плагин на передачу денег (естественно на сервере нет лимита по $). Имеется так же меню, где можно взять $ (если имеется должный флаг), выставил g_NextUse, дабы по раундам не подходило (CSDM сервер) и заметил фишку, что люди начали пользоваться этим -> заходим на сервер и открываем меню (если есть доступ к флагам), далее нажимаем получить $, далее переводим их своему знакомому, далее reconnect'имся и проделываем точно также.:scratch_one-s_head:
 
Сообщения
1,182
Реакции
2,146
Помог
57 раз(а)
WILL_BE, TrieSetCell(), храним по ключу (SteamID игрока) время последнего "что там нужно хранить". Занесли запись когда нужно, далее при входе игрока на сервер берём его SteamID и смотрим, есть ли он в Trie. Если есть, восстанавливаем ему значение.
 
Сообщения
456
Реакции
81
Помог
4 раз(а)
BlackSignature, тяжеловато еще с такими массивами работать. Благодарю, пойду разбираться :good2:
 
Сообщения
271
Реакции
347
Помог
15 раз(а)
WILL_BE, пример я выше скинул, если что.
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
Пример: взятие денег через команду раз за карту, сохранение по Steam ID.

Код:
#include <amxmodx>
#include <reapi>

#if !defined MAX_AUTHID_LENGTH
    #define MAX_AUTHID_LENGTH 64
#endif

new Trie:g_tMoney;
new g_iMoneyAmount;

public plugin_init()
{
    register_plugin("Free Money Every Map", "1.0", "w0w");

    register_clcmd("say /money", "func_TakeMoney");
    register_clcmd("say_team /money", "func_TakeMoney");

    new pCvar = create_cvar("free_money_amount", "800", FCVAR_NONE, "Free Money Amount", true, 1.0, true, 2147483520.0);
    bind_pcvar_num(pCvar, g_iMoneyAmount);

    g_tMoney = TrieCreate();
}

public func_TakeMoney(id)
{
    new szAuthID[MAX_AUTHID_LENGTH];
    get_user_authid(id, szAuthID, charsmax(szAuthID));

    if(TrieKeyExists(g_tMoney, szAuthID))
    {
        client_print_color(id, print_team_red, "^3* ^1Вы уже брали деньги на этой карте");
        return PLUGIN_HANDLED;
    }

    TrieSetCell(g_tMoney, szAuthID, 0);
    rg_add_account(id, g_iMoneyAmount);
    client_print_color(id, print_team_default, "^3* ^1Вы успешно взяли ^4%d$^1. Ваш баланс: ^4%d$", g_iMoneyAmount, get_member(id, m_iAccount));

    return PLUGIN_HANDLED;
}

public plugin_end()
{
    TrieDestroy(g_tMoney)
}
 
Сообщения
456
Реакции
81
Помог
4 раз(а)
Не понимаю как с данным массивом учесть Next Use :crazy:
4 Апр 2019
Думаю вооооообще неверно
Код:
            new szAuthID[MAX_AUTHID_LENGTH];
            get_user_authid(id, szAuthID, charsmax(szAuthID))

            if(TrieKeyExists(g_tMoney, szAuthID) && g_NextUse[id] > get_systime(0))
            {
                client_print_color(id, print_team_default, "[^4VIP^1] ^3Недоступно^1. Подождите ^4%d ^1мин и^4 %02d ^1сек", (g_NextUse[id] - get_systime(0)) / 60, (g_NextUse[id] - get_systime(0)) % 60);
                return PLUGIN_HANDLED;
            }

            g_NextUse[id] = get_systime(MONEY_USE)
            TrieSetCell(g_tMoney, szAuthID, 0)
            rg_add_account(id, Money)
 
Сообщения
1,182
Реакции
2,146
Помог
57 раз(а)
WILL_BE,
Код:
const NEXT_USE_DELAY = 600 // куллдаун использования в секундах

new iNextTime, szAuthID[MAX_AUTHID_LENGTH];
get_user_authid(id, szAuthID, charsmax(szAuthID))

new iSysTime = get_systime()

if(TrieGetCell(g_tMoney, szAuthID, iNextTime) && iSysTime < iNextTime)
{
    // тут сам подумай как решить (не хочу сейчас соображать)
   // client_print_color(id, print_team_default, "[^4VIP^1] ^3Недоступно^1. Подождите ^4%d ^1мин и^4 %02d ^1сек", (g_NextUse[id] - get_systime(0)) / 60, (g_NextUse[id] - get_systime(0)) % 60);
    return PLUGIN_HANDLED;
}

iNextTime = iSysTime + NEXT_USE_DELAY // Сюда ты записываешь время, когда использование снова станет доступно
TrieSetCell(g_tMoney, szAuthID, iNextTime)
rg_add_account(id, Money)
 
Сообщения
456
Реакции
81
Помог
4 раз(а)
BlackSignature, благодарю, к сожалению я "деревянный" еще :haha: Теперь все по-полкам ясно :ok:
4 Апр 2019
BlackSignature, TrieDestroy не нужен?
4 Апр 2019
Туплю.. Понял, что это только кусок же :blush2:
 

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

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