Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама



**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 100руб/мес, Текстовая 50руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12
  1. #1
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    304
    Репутация:
    87 ±

    Проверка обновлений через HTTP

    Примечание: Этот мануал прежде был опубликован мной на другом форуме в начале 2016-го года. Возможно, это также будет кому-то полезно и здесь.
    Привет, сегодня пришла в голову идея, каким образом сделать проверку обновлений почти любого скрипта.
    В этом мануале мы будем делать проверку обновлений на примере сервера. Т.е. при запуске будет проверять, последняя ли у нас версия сервера, и если нет, то уведомлять об этом в консоль.

    И т.к. на оф. сайте я не нашёл отдельной страницы, где бы выводилась лишь текущая версия сервера/клиента, мне пришлось зарегать аккаунт на pastebin и уже на него заливать текст с версией (и при каждой новой версии мне придётся его обновлять).
    Всё это потому, что если считывать сервером, например, официальную страницу сампа целиком (а на ней последняя версия указана) - то размеры информации, присланной сайтом, повесят стек :(
    Собственно, и с пастебином было бы скорее всего тоже самое, если бы не трюк с режимом просмотра (где сайт отсылает только сам загруженный вами текст).

    Реализация:

    1. Ко всем forward
    PHP код:
    forward OnVersionChecked(indexresponse_codedata[]); 
    2. В OnGameModeInit():
    PHP код:
    HTTP(1000HTTP_GET"pastebin.com/raw/7wmiJKnG""""OnVersionChecked"); 
    3. Ну и в любую часть скрипта:
    PHP код:
    public OnVersionChecked(indexresponse_codedata[])
    {
        
    //Всё прошло успешно
        
    if(response_code == 200)
        {
            new 
    ver[16];
            
    GetServerVarAsString("version"versizeof ver);
            if(
    strcmp(dataver)) printf("[Обновление] Доступна новая версия сервера: %s"data);
            else print(
    "[Обновление] Вы используете последнюю версию сервера");
        }
        
    //Иначе
        
    else print("[Ошибка] Не удалось проверить обновления сервера!");

    Отлично, теперь при запуске сервера ниже версии 0.3.7-R2 в консоль будет писать следующее:
    PHP код:
    "[Обновление] Доступна новая версия сервера: 0.3.7-R2" 
    P.s. Забыл сказать, что для работоспособности кода выше нужно подключить "a_http.inc" (стандартный инклуд) таким образом:
    PHP код:
    #include <a_samp> //Ваш a_samp
    #include <a_http> 
    Надеюсь, было для кого-то полезно.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  2. #2
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,274
    Репутация:
    105 ±
    Что то не совсем понятно как оно работает
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  3. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,168
    Репутация:
    1274 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Что то не совсем понятно как оно работает
    На этом pastebin хранится версия SA-MP в виде текста. Туда отправляется запрос, который извлекает эту версию.
    pastebin этот зареган на автора темы и он обновит этот pastebin в случае, если выйдет новая версия SA-MP.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #4
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    304
    Репутация:
    87 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Что то не совсем понятно как оно работает
    Да всё довольно просто: регая аккаунт на пастебине можно создавать тексты с постоянной ссылкой, изменяя их в будущем без ограничений только со своего акка (но это скорее для тех, у кого личного сайта нет).
    Далее создаётся текст, куда пишется только текущая версия нужного скрипта. В нужном скрипте мы дефайним его текущую версию, затем подключаем http и отправляем запрос на наш текст на пастебине (только если текст находится, к примеру, по ссылке "pastebin.com/7wmiJKnG", то нам нужно переделать её в "pastebin.com/raw/7wmiJKnG", чтобы в ответ на запрос приходил только сам текст версии и ничего больше). Далее просто тупо сверяем пришедшую строку с сайта со своей версией: не совпадают - выводим инфу о существовании более новой версии.
    В свою очередь при обновлении скрипта нужно будет каждый раз изменять наш текст на пастебине, тем самым уведомление о новой версии появится при использовании старых.

    Это вкратце смысл мануала.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  5. #5
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,274
    Репутация:
    105 ±
    Хорошо, плывем дальше, шо за index в аргументах каллбека?)
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  6. #6
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    304
    Репутация:
    87 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Хорошо, плывем дальше, шо за index в аргументах каллбека?)
    С ним обязательно должен быть паблик, куда приходит ответ от сайтов
    Это своего рода ид запроса, если вдруг нужно слать много запросов с ответом в паблик с одним и тем же названием
    Последний раз редактировалось Nexius_Tailer; 12.12.2016 в 18:52.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  7. #7
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    830
    Репутация:
    594 ±
    Для GitHub пришлось создать небольшой скрипт, который позволяет узнать информацию о последнем релизе:
    PHP код:
    <?php

    $owner 
    $_GET['owner'];
    $repo $_GET['repo'];
    $elem $_GET['elem'];

    foreach (array(
    $owner$repo$elem) as $param) {
        if (!
    preg_match('/^[a-z0-9_-]+$/i'$param)) {
            exit(
    "Bad param.");
        }
    }

    if (!
    $owner || !$repo || !$elem) {
        exit();
    }

    $ch curl_init("https://api.github.com/repos/$owner/$repo/releases/latest");

    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36");
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);

    $result curl_exec($ch);

    curl_close($ch);

    if (
    $result !== FALSE) {
        
    $arr json_decode($result);
        echo 
    $arr->$elem;
    }
    Из плюсов - не нужно вручную где-то менять версию скрипта. Пример использования здесь.

  8. #8
    Аватар для _lizard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    191
    Репутация:
    26 ±
    Хороший скрипт, жалко конечно, что никогда не понадобится, ибо частота выхода новых версий стремится к нулю.

  9. #9
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    304
    Репутация:
    87 ±
    Цитата Сообщение от _lizard Посмотреть сообщение
    Хороший скрипт, жалко конечно, что никогда не понадобится, ибо частота выхода новых версий стремится к нулю.
    Так прелесть в том, что это можно использовать и для своих собственных скриптов тоже
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  10. #10
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    253
    Репутация:
    7 ±
    Новости сервера замутить можно с сайта, поменяв пару значений

 

 
Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •