|  |  |  | @ -1,24 +1,22 @@ | 
			
		
	
		
			
				
					|  |  |  |  | script_name("easy-cruise") | 
			
		
	
		
			
				
					|  |  |  |  | script_author("rubin") | 
			
		
	
		
			
				
					|  |  |  |  | script_version("22.10.26.1") | 
			
		
	
		
			
				
					|  |  |  |  | script_version("23.10.26.1") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | encoding = require "encoding" | 
			
		
	
		
			
				
					|  |  |  |  | encoding.default = "CP1251" | 
			
		
	
		
			
				
					|  |  |  |  | u8 = encoding.UTF8 | 
			
		
	
		
			
				
					|  |  |  |  | inicfg              = require "inicfg" | 
			
		
	
		
			
				
					|  |  |  |  | dlstatus            = require("moonloader").download_status | 
			
		
	
		
			
				
					|  |  |  |  | vkeys               = require "vkeys" | 
			
		
	
		
			
				
					|  |  |  |  | encoding            = require "encoding" | 
			
		
	
		
			
				
					|  |  |  |  | encoding.default    = "CP1251" | 
			
		
	
		
			
				
					|  |  |  |  | u8                  = encoding.UTF8 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | dlstatus = require("moonloader").download_status | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | vkeys = require("vkeys") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | main_key_start = { "VK_LSHIFT" } | 
			
		
	
		
			
				
					|  |  |  |  | additional_key_start = { "VK_W", "VK_S", "VK_SPACE" } | 
			
		
	
		
			
				
					|  |  |  |  | cruise = false | 
			
		
	
		
			
				
					|  |  |  |  | main_key_start =        { "VK_LSHIFT" } | 
			
		
	
		
			
				
					|  |  |  |  | additional_key_start =  { "VK_W", "VK_S", "VK_SPACE" } | 
			
		
	
		
			
				
					|  |  |  |  | cruise =                false | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function main() | 
			
		
	
		
			
				
					|  |  |  |  |     repeat wait(0) until isSampAvailable() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     lua_thread.create(update_check) -->> Удалить чтобы скрипт не проверял обновления | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     lua_thread.create(script_update.main) -->> Удалить чтобы скрипт не проверял обновления | 
			
		
	
		
			
				
					|  |  |  |  |     while true do | 
			
		
	
		
			
				
					|  |  |  |  |         wait(0) | 
			
		
	
		
			
				
					|  |  |  |  |         doCruise() | 
			
		
	
	
		
			
				
					|  |  |  | @ -66,7 +64,53 @@ function check_press_key(table) | 
			
		
	
		
			
				
					|  |  |  |  |     return result, result_key_text | 
			
		
	
		
			
				
					|  |  |  |  | end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function download(url, fpath) | 
			
		
	
		
			
				
					|  |  |  |  | script_update = { | 
			
		
	
		
			
				
					|  |  |  |  |     check_update = false, | 
			
		
	
		
			
				
					|  |  |  |  |     check_update_url = "https://git.deadpoo.net/rubin/easy-cruise/raw/branch/master/version", | 
			
		
	
		
			
				
					|  |  |  |  |     auto_update = false, | 
			
		
	
		
			
				
					|  |  |  |  |     auto_update_url = "https://git.deadpoo.net/rubin/easy-cruise/raw/branch/master/easy-cruise.lua", | 
			
		
	
		
			
				
					|  |  |  |  |     address_ini = "rubin-scripts-updates.ini", | 
			
		
	
		
			
				
					|  |  |  |  |     main = function() | 
			
		
	
		
			
				
					|  |  |  |  |         local name = thisScript().name | 
			
		
	
		
			
				
					|  |  |  |  |         local ini = inicfg.load({ | 
			
		
	
		
			
				
					|  |  |  |  |             [name] = { | 
			
		
	
		
			
				
					|  |  |  |  |                 check_update = true, | 
			
		
	
		
			
				
					|  |  |  |  |                 auto_update = true | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         }, script_update.address_ini) | 
			
		
	
		
			
				
					|  |  |  |  |         script_update.check_update = ini[name].check_update | 
			
		
	
		
			
				
					|  |  |  |  |         script_update.auto_update = ini[name].auto_update | 
			
		
	
		
			
				
					|  |  |  |  |         inicfg.save(ini, script_update.address_ini) | 
			
		
	
		
			
				
					|  |  |  |  |         if script_update.check_update then | 
			
		
	
		
			
				
					|  |  |  |  |             local fpath = os.tmpname() | 
			
		
	
		
			
				
					|  |  |  |  |             local text = openURL(script_update.check_update_url, fpath) | 
			
		
	
		
			
				
					|  |  |  |  |             if text ~= "" and not string.find(text, thisScript().version) then | 
			
		
	
		
			
				
					|  |  |  |  |                 addChatMessage( string.format("Вышла новая версия '%s'. Текущая: '%s'", text, thisScript().version) ) | 
			
		
	
		
			
				
					|  |  |  |  |                 local command = thisScript().name:gsub(" ", "").."_update" | 
			
		
	
		
			
				
					|  |  |  |  |                 addChatMessage( string.format("Чтобы обновиться введите /%s'", command) ) | 
			
		
	
		
			
				
					|  |  |  |  |                 sampRegisterChatCommand(command, script_update.command) | 
			
		
	
		
			
				
					|  |  |  |  |             end | 
			
		
	
		
			
				
					|  |  |  |  |         end | 
			
		
	
		
			
				
					|  |  |  |  |     end, | 
			
		
	
		
			
				
					|  |  |  |  |     command = function() | 
			
		
	
		
			
				
					|  |  |  |  |         lua_thread.create(function() | 
			
		
	
		
			
				
					|  |  |  |  |             local fpath = os.tmpname() | 
			
		
	
		
			
				
					|  |  |  |  |             local text = openURL(script_update.auto_update_url, fpath) | 
			
		
	
		
			
				
					|  |  |  |  |             if text ~= "" and text:find(thisScript().name:gsub("%-", "%%-")) then | 
			
		
	
		
			
				
					|  |  |  |  |                 local file, error = io.open(thisScript().path, "w") | 
			
		
	
		
			
				
					|  |  |  |  |                 if file ~= nil then | 
			
		
	
		
			
				
					|  |  |  |  |                     file:write(text) | 
			
		
	
		
			
				
					|  |  |  |  |                     file:flush() | 
			
		
	
		
			
				
					|  |  |  |  |                     io.close(file) | 
			
		
	
		
			
				
					|  |  |  |  |                     addChatMessage("Обновление завершено, скрипт перезагружен!") | 
			
		
	
		
			
				
					|  |  |  |  |                     lua_thread.create(function() wait(500) thisScript():reload() end) | 
			
		
	
		
			
				
					|  |  |  |  |                 end | 
			
		
	
		
			
				
					|  |  |  |  |             end | 
			
		
	
		
			
				
					|  |  |  |  |         end) | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function openURL(url, fpath) | 
			
		
	
		
			
				
					|  |  |  |  |     local final_download = false | 
			
		
	
		
			
				
					|  |  |  |  |     downloadUrlToFile(url, fpath, function(id, status, p1, p2) | 
			
		
	
		
			
				
					|  |  |  |  |         if status == dlstatus.STATUS_ENDDOWNLOADDATA then | 
			
		
	
	
		
			
				
					|  |  |  | @ -77,9 +121,7 @@ function download(url, fpath) | 
			
		
	
		
			
				
					|  |  |  |  |     repeat  | 
			
		
	
		
			
				
					|  |  |  |  |         wait(1000)  | 
			
		
	
		
			
				
					|  |  |  |  |     until final_download | 
			
		
	
		
			
				
					|  |  |  |  | end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function read(fpath) | 
			
		
	
		
			
				
					|  |  |  |  |     local text = "" | 
			
		
	
		
			
				
					|  |  |  |  |     local f = io.open(fpath, "r") | 
			
		
	
		
			
				
					|  |  |  |  |     if f then | 
			
		
	
	
		
			
				
					|  |  |  | @ -90,55 +132,6 @@ function read(fpath) | 
			
		
	
		
			
				
					|  |  |  |  |     return text | 
			
		
	
		
			
				
					|  |  |  |  | end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function update_check() | 
			
		
	
		
			
				
					|  |  |  |  |     local fpath = os.tmpname() | 
			
		
	
		
			
				
					|  |  |  |  |     download("https://git.deadpoo.net/rubin/easy-cruise/raw/branch/master/version", fpath) | 
			
		
	
		
			
				
					|  |  |  |  |     local text = read(fpath) | 
			
		
	
		
			
				
					|  |  |  |  |     if text ~= "" and not string.find(text, thisScript().version) then | 
			
		
	
		
			
				
					|  |  |  |  |         addChatMessage( string.format("Вышла новая версия '%s'. Текущая: '%s'", text, thisScript().version) ) | 
			
		
	
		
			
				
					|  |  |  |  |         local command = thisScript().name:gsub(" ", "").."_update" | 
			
		
	
		
			
				
					|  |  |  |  |         addChatMessage( string.format("Чтобы обновиться введите /%s'", command) ) | 
			
		
	
		
			
				
					|  |  |  |  |         sampRegisterChatCommand(command, cmd) | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  | end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function update() | 
			
		
	
		
			
				
					|  |  |  |  |     local fpath = os.tmpname() | 
			
		
	
		
			
				
					|  |  |  |  |     local final_download = false | 
			
		
	
		
			
				
					|  |  |  |  |     downloadUrlToFile("https://git.deadpoo.net/rubin/easy-cruise/raw/branch/master/easy-cruise.lua", fpath, | 
			
		
	
		
			
				
					|  |  |  |  |         function(id, status, p13, p23) | 
			
		
	
		
			
				
					|  |  |  |  |             addChatMessage(status) | 
			
		
	
		
			
				
					|  |  |  |  |             if status == dlstatus.STATUS_ENDDOWNLOADDATA then | 
			
		
	
		
			
				
					|  |  |  |  |                 final_download = true | 
			
		
	
		
			
				
					|  |  |  |  |             end | 
			
		
	
		
			
				
					|  |  |  |  |         end | 
			
		
	
		
			
				
					|  |  |  |  |     ) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     repeat  | 
			
		
	
		
			
				
					|  |  |  |  |         wait(0)  | 
			
		
	
		
			
				
					|  |  |  |  |     until final_download | 
			
		
	
		
			
				
					|  |  |  |  |     wait(1000) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     local f = io.open(fpath, "r") | 
			
		
	
		
			
				
					|  |  |  |  |     if f then | 
			
		
	
		
			
				
					|  |  |  |  |         local data = f:read("*a") | 
			
		
	
		
			
				
					|  |  |  |  |         local file, error = io.open(thisScript().path, "w") | 
			
		
	
		
			
				
					|  |  |  |  |         if file ~= nil then | 
			
		
	
		
			
				
					|  |  |  |  |             file:write(data) | 
			
		
	
		
			
				
					|  |  |  |  |             file:flush() | 
			
		
	
		
			
				
					|  |  |  |  |             io.close(file) | 
			
		
	
		
			
				
					|  |  |  |  |             addChatMessage("Обновление завершено, скрипт перезагружен!") | 
			
		
	
		
			
				
					|  |  |  |  |             lua_thread.create(function() wait(500) thisScript():reload() end) | 
			
		
	
		
			
				
					|  |  |  |  |         end | 
			
		
	
		
			
				
					|  |  |  |  |         io.close(f) | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  |     os.remove(fpath) | 
			
		
	
		
			
				
					|  |  |  |  | end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function cmd() | 
			
		
	
		
			
				
					|  |  |  |  |     lua_thread.create(update) | 
			
		
	
		
			
				
					|  |  |  |  | end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function addChatMessage(text) | 
			
		
	
		
			
				
					|  |  |  |  |     local tag = string.format("{667dff}[%s]{FFFFFF} ", thisScript().name) | 
			
		
	
		
			
				
					|  |  |  |  |     sampAddChatMessage(tag..u8:decode(text), 0xFFFFFFFF) | 
			
		
	
	
		
			
				
					|  |  |  | 
 |