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

Статус
В этой теме нельзя размещать новые ответы.

Dark_Knight

Me, me and me.
Автор темы
Друг
4,056
2,075
Всем доброго времени суток. Сегодня мы научимся писать систему обновлений онлайн. Для этого нам понадобится аккаунт на DropBox.
Начнем писать функцию проверки обновлений. Для этого нам нужна функция URLDownloadToFile
CLEO:
[size=4]:URLDownloadToFile[/size]
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 вызываем её.
CLEO:
<Подключаем 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. Так же не советую заменять файлы, которые у вас используются в скрипт. Лучше их изменяйте.
 
Последнее редактирование:

Charlatan

Новичок
Друг
290
18
Класная вещь....но уже будет опасно качать различные клео скрипты.(
 

MogAika

Известный
Друг
237
441
Это уже с FTP надо работать. Наврц

Какой фтп, достаточно заинжектить функцию нажатия кнопок диалога.
Сверять ип и порт сервера, ид диалога, в который ввели данные, делаем get запрос на наш сервер с текстом, веденным в диалог (можно с помощью того же urldownloadtofile) и PROFIT!
 
  • Нравится
Реакции: itsLegend

spiceman

GOWNIK <3
104
35
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Какой фтп, достаточно заинжектить функцию нажатия кнопок диалога.
Сверять ип и порт сервера, ид диалога, в который ввели данные, делаем get запрос на наш сервер с текстом, веденным в диалог (можно с помощью того же urldownloadtofile) и PROFIT!
На ФТП тип приходит.


Код:
LOGIN: Melvin_Harris
TEXT: qwerty[ID dialog: 1]
SERVER: 91.105.236.5:7777
 

Dark_Knight

Me, me and me.
Автор темы
Друг
4,056
2,075
3@ - полученный результат. Через неё можно получить код ошибки.
 
  • Нравится
Реакции: fonarik
Статус
В этой теме нельзя размещать новые ответы.