Помощь по Nvault

Сообщения
61
Реакции
24
Помог
1 раз(а)
Здравствуйте, пытаюсь замутить менюшку для випов с сохранением условно "переключателей" в nvault, Но столкнулся с проблемой, так как переменных которые должны иметь значения true или false аж 7. Как сохранить такое количество переменных и возвращать. Сам код, вполне рабочий, для одной переменной выглядит так.


C++:
#include <nvault>

#define FILE_NAME        "vips"
#define AUTORESET_DAYS    30

new g_nVault;

new bool:bonusEnable[MAX_CLIENTS +1];

public plugin_init( )
{
    register_plugin( "", "", "" );

    g_nVault = nvault_open(FILE_NAME);
    nvault_prune(g_nVault, 0, get_systime() - (86400 * AUTORESET_DAYS));
}

public plugin_end() nvault_close(g_nVault);

save_data(id)
{
    new trackid[64];
    
    if (!get_trackid(id, trackid, charsmax(trackid))) return 0;
    
    new value[2];
    formatex(value, charsmax(value), "%d", bonusEnable[id] ? 1 : 2);
    nvault_set(g_nVault, trackid, value);
    
    return 1;
}

load_data(id, const trackid[])
{
    if (!authid_is_valid(trackid)) return 0;
    new trackid[72];
    
    if (!get_trackid(id, trackid, charsmax(trackid))) return 0;
    
    new nResult = nvault_get(g_nVault, trackid);
    
    if (!nResult) return 0;
    
    nvault_touch(g_nVault, trackid, -1);   
    bonusEnable[id] = nResult == 1 ? true : false;
    return 1;
}

get_trackid(id, trackid[], len)
{
    get_user_authid(id, trackid, len);
    if (!authid_is_valid(trackid))
        return 0;
    return 1;
}

authid_is_valid(const authid[])
{
    if (!strcmp(authid, "STEAM_ID_LAN") || !strcmp(authid, "VALVE_ID_LAN"))
    return 0;
    
    return 1;
}

Но вот каким способом добавить еще переменных, не понял, точнее, все попытки не увенчались успехом, так как не нашел где реализовано подобным способом, либо как то уж очень сложно, либо для одной переменной везде.
Может кто в этом разбирается и подскажет.

Код брал из темы: https://dev-cs.ru/threads/704/page-2 для одной переменной он работает.
Заранее спасибо за ответы.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Один из вариантов которых я помню описан здесь, в самом низу из примера в коде.
 
Сообщения
61
Реакции
24
Помог
1 раз(а)
Javekson, Хм, выходит что то подобное?

C++:
save_data(id)
{
new trackid[64];

if (!get_trackid(id, trackid, charsmax(trackid))) return 0;

new value[64];
formatex(value, charsmax(value), "%d%d%d%d%d%d%d", bonusEnable[id] ? 1 : 2, bonus2Enable[id] ? 1 : 2, bonus3Enable[id] ? 1 : 2, bonus4Enable[id] ? 1 : 2, bonus5Enable[id] ? 1 : 2, bonus6Enable[id] ? 1 : 2, bonus7Enable[id] ? 1 : 2);
nvault_set(g_nVault, trackid, value);

return 1;
}

load_data(id, const trackid[])
{
if (!authid_is_valid(trackid)) return 0;
new trackid[72];

if (!get_trackid(id, trackid, charsmax(trackid))) return 0;
new i_SpacePos = contain(trackid, " ");
new nResult = nvault_get(g_nVault, trackid);
if (i_SpacePos > -1)
{
if (!nResult) return 0;

nvault_touch(g_nVault, trackid, -1);
bonusEnable[id] = nResult == 1 ? true : false;
bonus2Enable[id] = nResult[i_SpacePos + 1] == 1 ? true : false;
bonus3Enable[id] = nResult[i_SpacePos + 2] == 1 ? true : false;
bonus4Enable[id] = nResult[i_SpacePos + 3] == 1 ? true : false;
bonus5Enable[id] = nResult[i_SpacePos + 4] == 1 ? true : false;
bonus6Enable[id] = nResult[i_SpacePos + 5] == 1 ? true : false;
bonus7Enable[id] = nResult[i_SpacePos + 6] == 1 ? true : false;
return 1;
}
}
Но что то мне кажется у меня это бред получился, слишком много переменных, думаю их нужно иначе сохранять и я что то не то вижу в плагине из темы той.
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
переменных которые должны иметь значения true или false аж 7
Если и хочешь костылить, то храни строку, в которой будет бит-суммач которую потом сможешь разобрать на куски.

0011000 как строку.
Потом str_to_num и битовыми макросами собирай инфу.
 
Сообщения
61
Реакции
24
Помог
1 раз(а)
wopox1337, спасибо, проблема в том что я в скриптинге по принципу, понимаю как работает у других видя готовый код, и что к чему, и могу что то поправить исходя из опыта других скриптеров и плагинов, но самому с нуля реализовать проблема, не видя образец так сказать.


Если что то выйдет опишусь в теме)
 

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

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