Примечание: По состоянию на 2023 год pastebin полностью перешёл на https и отдаёт любые ответы на нём, что SA-MP сервером, увы, не поддерживается (он из коробки поддерживает лишь голый http). Есть реализация https в стороннем плагине pawn-requests, но смысл описываемой в статье концепции крохотной системы, которая до этого не требовала ничего лишнего, практически полностью теряется, если появляется нужда тянуть за ней какие-то доп. плагины. Тем не менее, на open.mp сервере всё нижеописанное работает без каких-то изменений, поскольку он поддерживает https из коробки.
Привет, сегодня пришла в голову идея, каким образом сделать проверку обновлений почти любого скрипта.
В этом мануале мы будем делать проверку обновлений на примере сервера. Т.е. при запуске будет проверять, последняя ли у нас версия сервера, и если нет, то уведомлять об этом в консоль.
И т.к. на оф. сайте я не нашёл отдельной страницы, где бы выводилась лишь текущая версия сервера/клиента, мне пришлось зарегать аккаунт на pastebin и уже на него заливать текст с версией (и при каждой новой версии мне придётся его обновлять).
Всё это потому, что если считывать сервером, например, официальную страницу сампа целиком (а на ней последняя версия указана) - то размеры информации, присланной сайтом, повесят стек :(
Собственно, и с пастебином было бы скорее всего тоже самое, если бы не трюк с режимом просмотра (где сайт отсылает только сам загруженный вами текст).
Реализация:
1. Ко всем forward
PHP код:
forward OnVersionChecked(index, response_code, data[]);
2. В OnGameModeInit():
PHP код:
HTTP(1000, HTTP_GET, "pastebin.com/raw/7wmiJKnG", "", "OnVersionChecked");
3. Ну и в любую часть скрипта:
PHP код:
public OnVersionChecked(index, response_code, data[])
{
//Всё прошло успешно
if(response_code == 200)
{
new ver[16];
GetServerVarAsString("version", ver, sizeof ver);
if(strcmp(data, ver)) printf("[Обновление] Доступна новая версия сервера: %s", data);
else print("[Обновление] Вы используете последнюю версию сервера");
}
//Иначе
else print("[Ошибка] Не удалось проверить обновления сервера!");
}
Отлично, теперь при запуске сервера ниже версии 0.3.7-R2 в консоль будет писать следующее:
Код:
"[Обновление] Доступна новая версия сервера: 0.3.7-R2"
P.s. Забыл сказать, что для работоспособности кода выше нужно подключить "a_http.inc" (стандартный инклуд) таким образом:
PHP код:
#include <a_samp> //Ваш a_samp
#include <a_http>
Надеюсь, было для кого-то полезно.