Иконка ресурса

nVault Array

Нет прав для скачивания
Авторы:

Требования:
AMX Mod X 1.8.2+

Описание​

Этот модуль решает проблему сохранения нескольких значений в nVault, позволяя хранить массивы напрямую. Поддерживаются типы int, bool, string, float. Массивы сохраняются в бинарном формате с кодированием для предотвращения null-байтов, поэтому их нельзя редактировать через стандартные nVault viewer.

Функции​

  • nvault_set_array(vault, key, array[], size) — сохранить массив.
  • nvault_get_array(vault, key, array[], size) — получить массив.
  • nvault_arraysize(vault, key) — получить размер массива.
  • nvault_isarray(vault, key) — проверить, является ли запись массивом.

Пример API​

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

#define MAX_PLAYERS    32

new g_Vault;

enum PlayerData
{
    pdName[ 32 ],
    pdSteamID[ 35 ],
    pdKills,
    pdDeaths,
    pdHeadShots,
    pdMoney,
    Float:pdLastOrigin[ 3 ]
}

//Player data array id=5 is used to store, data loaded into id=6
new pdData[ MAX_PLAYERS + 1 ][ PlayerData ];

//Arrays where data is being saved from
new iRegularArray[ 5 ];
new Float:fFloatArray[ 5 ];

//Arrays where data is being loaded in to
new iRegularArray2[ 5 ];
new Float:fFloatArray2[ 5 ];

public plugin_init()
{
    g_Vault = nvault_open( "nvault_array_demo" );
 
    register_concmd( "TestSet" , "TestSetFunc" );
    register_concmd( "TestGet" , "TestGetFunc" );
}

public plugin_end()
{
    nvault_close( g_Vault );
}

public TestSetFunc()
{
    new id = 5;

    //Fill array index with dummy player data
    copy( pdData[ id ][ pdName ] , charsmax( pdData[][ pdName ] ) , "bugsy" );
    copy( pdData[ id ][ pdSteamID ] , charsmax( pdData[][ pdSteamID ] ) , "STEAM_0:1:12345" );
    pdData[ id ][ pdKills ] = 524;
    pdData[ id ][ pdDeaths ] = 13;
    pdData[ id ][ pdHeadShots ] = 0;
    pdData[ id ][ pdMoney ] = 16000;
    pdData[ id ][ pdLastOrigin ][ 0 ] = _:12.34;
    pdData[ id ][ pdLastOrigin ][ 1 ] = _:56.78;
    pdData[ id ][ pdLastOrigin ][ 2 ] = _:90.12;
 
    //Display what was stored
    server_print( "SET %s" , pdData[ id ][ pdName ] );
    server_print( "SET %s" , pdData[ id ][ pdSteamID ] );
    server_print( "SET %d" , pdData[ id ][ pdKills ] );
    server_print( "SET %d" , pdData[ id ][ pdDeaths ] );
    server_print( "SET %d" , pdData[ id ][ pdHeadShots ] );
    server_print( "SET %d" , pdData[ id ][ pdMoney ] );
    server_print( "SET %f %f %f" , pdData[ id ][ pdLastOrigin ][ 0 ] , pdData[ id ][ pdLastOrigin ][ 1 ] , pdData[ id ][ pdLastOrigin ][ 2 ] );
 
    //Save array to nvault
    nvault_set_array( g_Vault , "TestSet" , pdData[ id ][ PlayerData:0 ] , sizeof( pdData[] ) );
 
    //Fill number arrays with dummy data and display
    for ( new i = 0 ; i < sizeof( iRegularArray ) ; i++ )
    {
        iRegularArray[ i ] = random( 545545 );
        fFloatArray[ i ] = random_float( -5000.0 , 20000.0 );
 
        server_print( "%d - SET Regular=%d Float=%f" , i , iRegularArray[ i ] , fFloatArray[ i ] );
    }
 
    //Save arrays to nvault
    nvault_set_array( g_Vault , "RegularArray" , iRegularArray , sizeof( iRegularArray ) );
    nvault_set_array( g_Vault , "FloatArray" , fFloatArray , sizeof( fFloatArray ) );
}

public TestGetFunc()
{
    //id=5 is holding the data that we manually loaded into it and we do not want to that that since it
    //will not tell us for sure that data successfully read into it from nvault.
    //id=6 will be used since it is empty.
    new id = 6;
 
    //Read array into array
    nvault_get_array( g_Vault , "TestSet" , pdData[ id ][ PlayerData:0 ] , sizeof( pdData[] ) );
 
    //Display data that was read
    server_print( "GET %s" , pdData[ id ][ pdName ] );
    server_print( "GET %s" , pdData[ id ][ pdSteamID ] );
    server_print( "GET %d" , pdData[ id ][ pdKills ] );
    server_print( "GET %d" , pdData[ id ][ pdDeaths ] );
    server_print( "GET %d" , pdData[ id ][ pdHeadShots ] );
    server_print( "GET %d" , pdData[ id ][ pdMoney ] );
    server_print( "GET %f %f %f" , pdData[ id ][ pdLastOrigin ][ 0 ] , pdData[ id ][ pdLastOrigin ][ 1 ] , pdData[ id ][ pdLastOrigin ][ 2 ] );

    //Read number arrays
    nvault_get_array( g_Vault , "RegularArray" , iRegularArray2 , sizeof( iRegularArray2 ) );
    nvault_get_array( g_Vault , "FloatArray" , fFloatArray2 , sizeof( fFloatArray2 ) );
 
    //Display number arrays read from vault
    for ( new i = 0 ; i < sizeof( iRegularArray ) ; i++ )
    {
        server_print( "%d - GET Regular=%d Float=%f" , i , iRegularArray2[ i ] , fFloatArray2[ i ] );
    }
}
Опубликовал
twisterniq
Скачивания
11
Просмотры
199
Первый выпуск
Обновление

Оценки

0,00 звёзд Оценок: 0

Другие ресурсы пользователя twisterniq

  • Paranoia2 Modelviewer
    Paranoia2 Modelviewer
    Просмотр моделей со встроенным редактором.
  • Regen HP AP for knife
    Regen HP AP for knife
    Регенерация HP/брони с ножом.
  • Combo On Kill
    Combo On Kill
    Эффект «комбо» при серии убийств: спрайт видно только киллеру.
  • Admins Kit
    Admins Kit
    5 плагинов для администраторов в одном AMXX-модуле.
Назад
Верх