PDA

Просмотр полной версии : [Include] [C++] SampFavorites - класс для работы со списком серверов (USERDATA.DAT)



ziggi
09.07.2016, 20:58
Описание

C++ класс, который предоставляет функции для работы со списком избранных серверов SA-MP лаунчера. Список избранных серверов находится по адресу %USERPROFILE%\Documents\GTA San Andreas User Files\SAMP\USERDATA.DAT.

Будет полезно для тех, кто создаёт или планирует создавать собственный лаунчер для SA-MP.

Спецификация формата хранения
Заголовок файла:



Размер (байт)
Описание


1
4
Тэг файла (SAMP)


2
4
Версия файла (1)


2
4
Количество серверов



Сервер:



Размер (байт)
Описание


1
4
Размер IP адреса


2
Зависит от значения №1
IP адрес


3
4
Порт


4
4
Размер названия сервера


5
Зависит от значения №4
Название сервера


6
4
Размер пароля


7
Зависит от значения №6
Пароль


8
4
Размер rcon-пароля


9
Зависит от значения №8
Rcon пароль



Использование


#include <iostream>
#include "SampFavorites.hpp"

int main()
{
SampFavorites data;
data.open("USERDATA.DAT");

if (!data.isOpen()) {
std::cout << "Error reading file" << std::endl;
return 1;
}

SampFavorites::Header header;
SampFavorites::Server server;

header = data.getHeader();

std::cout << header.fileTag << "\n"
<< header.fileVersion << "\n"
<< header.serversCount << "\n";

for (int i = 0; i < header.serversCount; i++) {
server = data.getServer(i);

std::cout << server.address << " | "
<< server.port << " | "
<< server.hostname << " | "
<< server.password << " | "
<< server.rcon << std::endl;
}

server.address = (char *)"999.000.111.32";
server.port = 4322;
server.hostname = (char *)"test host";
server.password = (char *)"pass22";
server.rcon = (char *)"rcon1";
data.addServer(server);

data.save("test.dat");
return 0;
}


Скачать


Последняя версия архивом: https://github.com/ziggi/SampFavorites/releases
Посмотреть не скачивая: SampFavorites.hpp (https://github.com/ziggi/SampFavorites/blob/master/SampFavorites.hpp), SampFavorites.cpp (https://github.com/ziggi/SampFavorites/blob/master/SampFavorites.cpp)