[PLUGIN] XML loader
Когда лазил по официальному форуму, я нашел этот плагин для работы с XML файлами. Данный плагин добавил на форум ZeeX и основан он на pugixml парсер/загрузчик разработанный Arseny Kapoulkine.
Функции плагина:
<player>
<profile>
<password>asdf8s9ad7f2</password>
<sex>male</sex>
<age>18</age>
</profile>
<ingame>
<saved_position>
<x>123.456</x>
<y>9871.8712</y>
<z>3.000</z>
</saved_position>
<money>100000</money>
<weapon name="Deagle" ammo="60" />
<weapon name="Minigun" ammo="5000" />
<weapon name="Chainsaw" ammo="0" />
</ingame>
</player>
Функции плагина:
Code
XML:xml_open(const filename[]) - Загрузить XML документ.
bool:xml_get_bool(XML:handle, const xpath[]) - Получает результат XPath запроса как логический и возвращает его.
xml_get_int(XML:handle, const xpath[]) - Получает результат XPath запроса как число и возвращает его.
Float:xml_get_float(XML:handle, const xpath[]) - Получает результат XPath запроса как число с плавающей запятой(float) и возвращает его.
xml_get_string(XML:handle, const xpath[], result[], size = sizeof result) - Получает результат XPath запроса как строка и возвращает его.
xml_close(XML:handle) - Удалить документ с памяти сервера.
bool:xml_get_bool(XML:handle, const xpath[]) - Получает результат XPath запроса как логический и возвращает его.
xml_get_int(XML:handle, const xpath[]) - Получает результат XPath запроса как число и возвращает его.
Float:xml_get_float(XML:handle, const xpath[]) - Получает результат XPath запроса как число с плавающей запятой(float) и возвращает его.
xml_get_string(XML:handle, const xpath[], result[], size = sizeof result) - Получает результат XPath запроса как строка и возвращает его.
xml_close(XML:handle) - Удалить документ с памяти сервера.
Пример использования:
Code
#include <xml>
// somewhere...
// Open file example_account.xml
new XML:xml = xml_open("example_account.xml");
// Check whether it was opened
if (xml)
{
new buf[100];
// Get some data...
xml_get_string(xml, "player/profile/sex", buf);
printf("sex=%s", buf);
printf("age=%d", xml_get_int(xml, "player/profile/age"));
printf("x pos=%f", xml_get_float(xml, "player/ingame/saved_position/x"));
printf("y pos=%f", xml_get_float(xml, "player/ingame/saved_position/y"));
printf("z pos=%f", xml_get_float(xml, "player/ingame/saved_position/z"));
xml_get_string(xml, "player/ingame/weapon[@ammo>100]/@name", buf);
printf(buf);
// Close when finished working
xml_close(xml);
}
// somewhere...
// Open file example_account.xml
new XML:xml = xml_open("example_account.xml");
// Check whether it was opened
if (xml)
{
new buf[100];
// Get some data...
xml_get_string(xml, "player/profile/sex", buf);
printf("sex=%s", buf);
printf("age=%d", xml_get_int(xml, "player/profile/age"));
printf("x pos=%f", xml_get_float(xml, "player/ingame/saved_position/x"));
printf("y pos=%f", xml_get_float(xml, "player/ingame/saved_position/y"));
printf("z pos=%f", xml_get_float(xml, "player/ingame/saved_position/z"));
xml_get_string(xml, "player/ingame/weapon[@ammo>100]/@name", buf);
printf(buf);
// Close when finished working
xml_close(xml);
}
example_account.xml:
Code
<player>
<profile>
<password>asdf8s9ad7f2</password>
<sex>male</sex>
<age>18</age>
</profile>
<ingame>
<saved_position>
<x>123.456</x>
<y>9871.8712</y>
<z>3.000</z>
</saved_position>
<money>100000</money>
<weapon name="Deagle" ammo="60" />
<weapon name="Minigun" ammo="5000" />
<weapon name="Chainsaw" ammo="0" />
</ingame>
</player>
Можно программировать на Lua в SAMP