-- loadstring(game:HttpGet('https://pastebin.com/raw/5aH0bu7L'))() -- Combined Script: Save and Restore Script Code -- Объединённый скрипт: Сохранение и восстановление исходного кода ------------------------------------------------------------- -- GLOBAL SETTINGS & ASSET OBJECT RETRIEVAL ------------------------------------------------------------- _G.assetID = "2946634514" -- Change this value to use a different assetID -- Измените это значение для использования другого assetID function _G.getAssetObject() local assetStr = "rbxassetid://" .. _G.assetID local objs = game:GetObjects(assetStr) if objs and #objs > 0 then return objs[1] else warn("Object with assetID " .. _G.assetID .. " not found. / Объект с assetID " .. _G.assetID .. " не найден.") return nil end end ------------------------------------------------------------- -- SAVING PART: Save the object's source code to a file -- Часть сохранения: Сохраняем исходный код объекта в файл ------------------------------------------------------------- if not isfolder("SS_Scripts") then makefolder("SS_Scripts") end local filePath = "SS_Scripts/extracted_script.txt" if isfile(filePath) then delfile(filePath) end -- Retrieve the asset object using the global function -- Получаем объект с помощью _G.getAssetObject() local obj = _G.getAssetObject() local scriptContent = obj and obj.Source or "-- Source code not found / Исходный код не найден" -- Split the source code into chunks to avoid size limits. -- Разбиваем исходный код на части, чтобы не превышать лимиты. local maxChunk = 199999 local parts = {} for i = 1, #scriptContent, maxChunk do table.insert(parts, scriptContent:sub(i, i + maxChunk - 1)) end -- Define a unique delimiter that is unlikely to appear in the source code. -- Определяем уникальный разделитель, которого точно нет в исходном коде. local delimiter = "||DELIM||" -- Concatenate the parts with the delimiter. -- Объединяем части в одну строку с разделителем. local combinedString = table.concat(parts, delimiter) -- Write the combined string to the file in chunks. -- Записываем объединённую строку в файл по частям. local maxWriteChunk = 199999 for i = 1, #combinedString, maxWriteChunk do local chunk = combinedString:sub(i, i + maxWriteChunk - 1) appendfile(filePath, chunk) end print("Script saved successfully to " .. filePath .. " / Скрипт успешно сохранен в " .. filePath) ------------------------------------------------------------- -- FUNCTION: Split a string by a given delimiter. -- Функция для разделения строки по разделителю. ------------------------------------------------------------- local function splitString(inputstr, sep) local t = {} local pattern = "(.-)" .. sep local last_end = 1 local s, e, cap = inputstr:find(pattern, 1) while s do table.insert(t, cap) last_end = e + 1 s, e, cap = inputstr:find(pattern, last_end) end table.insert(t, inputstr:sub(last_end)) return t end ------------------------------------------------------------- -- RESTORATION PART: After a delay, restore the saved script. -- Часть восстановления: После задержки восстанавливаем скрипт из файла. ------------------------------------------------------------- -- Using task.delay instead of wait() to prevent potential crashes. -- Используем task.delay вместо wait(), чтобы избежать возможных сбоев. task.delay(5, function() if isfile(filePath) then -- Read the entire file. -- Читаем содержимое файла целиком. local data = readfile(filePath) -- Split the data using the unique delimiter. -- Разбиваем строку по разделителю, получая таблицу частей. local partsRestored = splitString(data, delimiter) -- Concatenate the parts back into a single string. -- Объединяем все части обратно в одну строку. local recoveredScript = table.concat(partsRestored, "") print("Recovered script length: " .. #recoveredScript .. " characters / Восстановленный скрипт длиной: " .. #recoveredScript .. " символов") -- Create a new Script and set its Source to the recovered code. -- Создаем новый Script и задаем его Source восстановленным кодом. local newScript = Instance.new("Script", game.Players.LocalPlayer.PlayerGui) newScript.Name = "RecoveredScript" local success, err = pcall(function() newScript.Source = recoveredScript end) if success then print("New Script created and Source set successfully. / Новый Script создан и Source успешно установлен.") else warn("Failed to set Source on new Script: " .. err .. " / Не удалось установить Source у нового Script: " .. err) end else print("File not found: " .. filePath .. " / Файл не найден: " .. filePath) end end)