В последнее время, я искал разные файловые системы, некоторые из них были медленные, некоторые неудобные, поэтому я решил написать свою.
Как использовать?:
Для начала, скачайте файл с инклудом, поместите его в папку includes(pawno/includes).
Затем напишите это в самый верх вашего скрипта (после инклуда a_samp):
1 2 3 4 | #include <mfiles> |
1 2 3 4 | #include <a_samp> #include <mfiles> // Другие инклуды |
Настройки:
Я создал несколько дефайнов в инклуда, я советую вам оставить всё как есть, но если вам очень нужно, то можете настроить их под себя.
1 2 3 4 5 6 7 8 | #define MAX_FILE_READ_STRING 255 // Число ячеек, которые будут использоваться при чтении / записи. #define MAX_KEY_LEN 32 // Максимальная длинна ключа. #define MAX_VAL_LEN 128 // Максимальная длинна значения. #define KEY_IGNORECASE false |
Версия:
mFiles v1.0 - Первый релиз
Скачать:
Mediafire: http://www.mediafire.com/?u4xcoh45wkrbqh5
Примеры:
ЗАПИСЬ:
Запись происходит очень просто, мы открываем файл, записываем в него, затем закрываем файл.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | new file[] = "settings.ini" ; // Проверяем существует ли файл, если нет - создаём его. if (!File_Exists(file)) File_Create(file); // Начинаем писать в файл. File_Write(file); // Пишем... File_WriteString( "hostname" , "gamemode_0" ); File_WriteInt( "maxplayers" , 50); File_WriteFloat( "gravity" , 0.08); File_WriteBool( "allow_connect" , true ); File_WriteHex( "spawn_color" , 0xFFFFFF); File_WriteBin( "binary_info" , 0b1110110); // Заканчиваем писать, сохраняем и закрываем. File_WriteFinish(file); |
ЧТЕНИЕ:
Чтение это тоже самое, только мы открываем файл, читаем из него и закрываем файл.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | new hostname[11], maxplayers, Float:gravity, bool :allow_connect, file[] = "settings.ini" ; // Проверяем создан ли файл. if (File_Exists(file)) { // Открываем файл. File_Open(file); // Читаем... File_GetStringEx( "hostname" , hostname); maxplayers = File_GetInt( "maxplayers" ); gravity = File_GetFloat( "gravity" ); allow_connect = File_GetBool( "allow_connect" ); // Закрываем файл. File_Close(); } |
Функции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | native File_Create(filename[]); native File_Rename(filename[], newfile[]); native File_Copy(filename[], copyname[], bool :remove_original = false , bool :content_only = false ); native File_Exists(filename[]); native File_Write(filename[]); native File_WriteInt(key[], value); native File_WriteFloat(key[], Float:value, accuracy = 6); native File_WriteString(key[], value[]); native File_WriteHex(key[], value); native File_WriteBool(key[], bool :value); native File_WriteBin(key[], value); native File_WriteFinish(filename[]); native File_Open(filename[]); native File_GetInt(key[]); native File_GetFloat(key[]); native File_GetString(key[]); native File_GetStringEx(key[], dest[], size = sizeof (dest), bool :pack = false ); native File_GetHex(key[]); native File_GetBool(key[]); native File_GetBin(key[]); native File_Close(); |
Тест скорости:
Запустим этот скрипт: http://pastebin.com/J5X7n9Xz
ЗАПИСЬ:
Записываем 100 строк в бланк(чистый файл):
Code
4 (ms)
Записываем(заменяем) 100 строк в файле:
Code
50-60 (ms)
ЧТЕНИЕ:
Читаем 100 строк из файла:
Code
20-40 (ms)