[C++] SampFavorites - класс для работы со списком серверов (USERDATA.DAT)
Описание
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;
}
Скачать