Пишем проверку обновлений скрипта и скачку его онлайн

Тема в разделе "CLEO", создана пользователем Владислав, 6 июл 2014.

  1. Владислав

    Владислав Member Основатель

    Регистрация:
    29 май 2014
    Сообщения:
    109
    Симпатии:
    0
    Сегодня мы научимся писать систему обновлений онлайн. Для этого нам понадобится аккаунт на DropBox.
    Начнем писать функцию проверки обновлений. Для этого нам нужна функция URLDownloadToFile
    Код:
    :URLDownloadToFile
    0AA2: 10@ = load_library "Urlmon.dll" // IF and SET
    0AA4: 11@ = get_proc_address "URLDownloadToFileA" 10@
    0AA7: address 11@ params 5 pop 0 /*params*/ 0 0 0@ 1@ 0 /*ret*/ 12@
    ret 1 12@
    Назвем нашу функцию CheckVersion.
    Код:
    :CheckVersion
    0ac8: 0@ = 256 //Выделяем память под строку пути сохранения файла
    0ac8: 1@ = 256 //Выделяем память под строку пути скачивания файлы
    0ad3: 0@ = "data\script\checkurl.bat" //Указываем куда будет скачан файл в папку и при этом она уже должна быть создан. Cоветую использовать стандартные папки GTA SA
    0ad3: 1@ = "https:%c%cdl.dropboxusercontent.com/s/rphirry5oee8693/testurl.bat" 47 47 // Указываем ссылку на файл с которой будем качать файл для проверки и после https: ставить 2 раза %с и после скобок ставим 47. Ид символа 47 - это "/". Просто чтобы SB не матерился
    call @URLDownloadToFile 2 0@ 1@ 2@ //Скачиваем файл где 0@ - это путь куда сохраняется файл
    0ac9: 0@ //Освобождаем память
    0ac9: 1@ //Освобождаем память
    3@ = file.Open("data\script\checkurl.bat", "at") //Открываем файл который мы скачали
    4@ = file.Open("data\script\checklocal.bat", "at") //Открываем файл в который будем записывать значение версии скрипта.
    0AF1: write_int 3 to_ini_file "data\script\checklocal.bat" section "Main" key "Version" // Записываем версии
    0AF0: 5@ = get_int_from_ini_file "data\script\checklocal.bat" section "Main" key "Version" // Получаем значение версии, которая на компе
    0AF0: 6@ = get_int_from_ini_file "data\script\checkurl.bat" section "Main" key "Version" // Получаем значение версии, которая на DropBox'e
    var
    5@ : int
    6@ : int
    end
    if
    6@ > 5@ //Сравниваем значение и если значение на DropBox'e больше чем на компе
    then //Тогда возраещаем правду
    0485: return_true
    else//Или ложь, если значение на DropBox'e не больше чем на компе.
    059A: return_false
    end
    //Удаляем файлы
    0B00: delete_file "data\script\checkurl.bat" /
    0B00: delete_file "data\script\checklocal.bat"
    ret 0
    Функцию мы написали. Теперь будем её использовать.
    В самом начале кода, после подключения SAMPFUNCS вызываем её.
    Код:
    <Подключаем SAMPFUNCS, если нужно>
    //Вызываем CheckVersion
    if
    call @CheckVersion 0
    then// Если условие правдивое, тогда ...
    0B3B: samp show_dialog id 1265 caption "Проверка обновлений" text "Вышла новая версия счетчика убийств" button_1 "Скачать" button_2 "Нет" style 0 //Создаем диалог
    repeat
    wait 0
    until samp.DialogRespond(1265, 0@, 0, 0) // Ждем пока закроет диалог
    if 0@ == 1 // Если нажата в диалоге 1265 кнопка 1, тогда
    then
    0B00: delete_file "Cleo\kill informator.cs" // Удаляем скрипт старой версии
    0AC8: 1@ = 128 //Выделяем память под строку пути сохранения файла
    0AC8: 2@ = 128 //Выделяем память под строку пути скачивания файлы
    0AD3: 1@ = "https:%c%cdl.dropboxusercontent.com/s/1ec7g64pvsmqlp2/kill informator.cs" 47 47
    0AD3: 2@ = "Cleo\kill informator.cs"
    call @URLDownloadToFile 2 2@ 1@ 3@
    repeat
    wait 0
    until 0AAB: file_exists "Cleo\kill informator.cs"
    0AD3: 2@ = "kill informator.cs" //Записываем в переменную полное название скрипта
    0A92: create_custom_thread 2@ // Запускаем скрипт
    message "Обновление Kill Informer прошло успешно." 0xFFF000 // Оповещаем пользователя что прошло успешно
    0ac9: 1@ //Освобождаем память
    0ac9: 2@ //Освобождаем память
    end_thread // Останавливаем скрипт
    end
    end
    Применичания: Чтобы получить прямую ссылку на файл нужно в dropbox'e получить ссылку на файл и вместо https://www.dropbox.com вставитьhttps://dl.dropboxusercontent.com. По мимо того вы должны не забывать, что если ссылка на ваши файлы в скрипте будут отличатся от тех который на DB, то не будет работать система обновлений. Для этого запомните следующие. После того как вы написали скрипт новой версии, то копирует исходник там где у вас лежит скрипт старой версии и обновляете его через SB. Так же не советую заменять файлы, которые у вас используются в скрипт. Лучше их изменяйте.
    Источник - BlastHack
     
    #1

Поделиться этой страницей