Advertisement
guitarplayer616

introHouseSchematic

Jan 23rd, 2017
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.72 KB | None | 0 0
  1. b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' function frombase64(data) data = string.gsub(data, '[^'..b..'=]', '') return (data:gsub('.', function(x) if (x == '=') then return '' end local r,f='',(b:find(x)-1) for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end return r; end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) if (#x ~= 8) then return '' end local c=0 for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end return string.char(c) end)) end function lzw_decode(s) local str = { } for i=1,#s/2,1 do table.insert(str, s:byte(i * 2 - 1) * 256 + s:byte(i * 2)) end local dict_size = 256 local dict = {} for i = 0, dict_size-1 do dict[i] = string.char(i) end local w = string.char(str[1]) local result = w for i = 2, #str do local k = str[i] local entry = '' if dict[k] then entry = dict[k] elseif k == dict_size then entry = w .. w:sub(1,1) else return nil end result = result .. entry dict[dict_size] = w .. entry:sub(1,1) dict_size = dict_size + 1 w = entry end return result end d = 'AAsvaW50cm9Ib3VzZQEADC4ACgAAAAkAUwBjAGgAZQBtAGEAdABpAGMABwAAAAYAQgBsAG8AYwBrAHMAAAAAACUAIABZARkBGgEaAAIBHQEeAR8BHgEVAFkAAwEkASUAAwBZASABKQEdASIBJgEkAAQBLwEwATEBMAADAAIBLAEnARkAAwEyAToBLwE0ATYBGgArAUABQQFCATEBPQAAASMBNwBZACsBFQFLAUsAKwFEATUBRgEuAUEBTAFMAU4BMwErAUcABAFKAVQBVQFPATUBOAFaAVwBXQFXATUBHQE5AVsBYgAAAVYBPAEgAWcBaQEVAWsABAE0AR8BZwFCAXYBQAFeAAIBQQE7AXwBLwF2AUkBfQF8ACsAEQAUAUAAEQFxAYEBOQFaAUIBgAEeAScBcwGKAScAEQF+AAEBagGDAU4BNAEmATgABQGcAAMBkwFhAAEAAQArAY0BowEkAZwBpwGcAFkBnwFbAYYBTgF6AUcBqAGnAaoBfgFwAaMBrgEtAbEABQGeAbQBlgGHAAQBrwEkAAIBuQG7AaABQAGkAUcBwgGxAcQBSgGiAZcBcgG4AcoBqwG1AY0AAwG5AagBswFhAb0BTgARAFkB1gGyAdIBlgGAAdwB3gGdAeABrQAEAeMB5AHYAawBtgAEAAABSAHVAboB3wG8AUMAKwGeABEAEQGRATcBywAAAaEBgQE8AfgB+AGKACsBoQHNAU4B9gGOAYEBQQGiAXoBcgEoAR0AWQIKAYQBQwEpAS8BqgIXAasBewH/AhsCHAH/AXsBdwF+AXYCIQFAABICJQImAiYBbwFcABIAIwIsAi0AIwASAikBVAIrAXcCNAF3AUsCMwFNACsALAFvAGABagI3ACMBaAI6AjwAEQBgAWgCOAFwAjECPQJGAkABQgIpACwANQI+ARUCMwJCAjEBTQI3ABICVAIxAk8CUQJWAlUBVQFUAWgCXgJcAkgCYgJkAZYCYQJlAjcBYgBEADUANQBEAlUCMAJiACMBSwGhAlIBFQAsAngCLwAjAnkAQABAAi8CcQIFAZUCcQJ7Ai4AFAAUAnMBFQIvAUwBlQAAAnEALAAUAAACLAFiABQCcQIyAncCkAKSAVwClAFiAo4CLgKIAUwCigKLAo0ClwKRACMCUAFUAqEBFQJ1Ao4CmAKmAVwCqQKqAqMCpQIuAq8ClQFMAp0CKQKbAioCUgKQAW8CugKWAo0CvQFpArACagLBArkCtgLFAiwChgKHAokBSwK/AWIAEQJ/AisCfQLKAocCyAJeAtICKwKLAowBFQLRAngALAKfAmUCLwAmAuQC1wJVAt8C3wJSAicC5gJpAu0C7gLvAvACrwKHAvMC4QJeAsIC8AL1Au4C9wJwAq8C8QEVAvsC7gL5Av4DAwMEAwUDBgLtAuwCZQMJAv0CuwKgAtoCkQLUArYCdQKyAnMChQLMAs0CnALOAZwDAgMAAnYC/wMbApMBaQKVACMDGwL5AwICsgAAABQBnAKnAqgBXAKCAxoABQMsAqADIgKJAp4DDAMNAuACuQM0Av8DOgMZAzwBbwMnApUDHQLOAzsC1QMXAp8DQwI/AUsAIwLUACMChgMnAjEC4QLhAtwCUgKfA1ADQAKVAwsDBwNbA1wDXQNRAvQDFwJlA0kCcgMDA2MDDQMzAv4DZgJVA1cDXgNtA24DbwNwAsMC2AMPAogCxANUApECswNOAocCtAIxAr0ANQL5A2oDfgOAA2sDNQM3Ar4CKQNsAykDiANRAzYDLQJOA1cDgQM9A5IBYgOJA2MDZgNGA3wDigIpAw8DeAKlA08C7wNSA5sDVgMBA3EDpQOmA1wDTgOpA2ECYgNqA1EDZQJpAtcDiQN9AwMDsgOnA7YDtwO4A3IDawN0Ai0DnAOUA3kDTwONA4cBFQN/Ap4CmQPDAAADxQPGA64DeQPLA5MDxgPHAWkC9wPQA1cD1APOAWkC4APWAi0DjwPaA9EBXAPZA9cD3gFUA+ADwgOrAq8D1ALOA2wD1gPBA4wD1wOdA0AD7gOEA7kD8wMHAugD9gJlACwCNAI7AmID+QP2AngD+AJZAu4D/QLxBAMC8AQFAu8EBwQCA/8D9AQMBA0DoANzA3UDTwNaAxUCLQOfAxgDkwKaAlUDlgPyA+IDlQNLA4YD0gQfA44DQAN5BCADNwBAAyEDiwEVBCgEGQQqA+8EJQQuA9MDPwQkBBcDnQOXA0sDegLVA+oBFQBgAtEENQPMAAACPQQ/A4gD6AQOBEYERwRIBEkESgRLBEwEDQOyAnoCiQQSA64DFgOjA7MDyARXBC0ELgO/BFYDugQYBCMDcgOZBCICXgQsAVQDrQQrBCkC2ARbAvYEaARdAxwC4gQ5BDkDCgN1BE0EdAR1BHYEdwR4BHkEegNtBE8DdAQWA4sEVARiBFgEZQQaBF4EJgFMA5EEgwRZBGwDvwRhBDMD8gSEA2QEiwRAA2gEawSTAzcEbgJyBHAEfwJwBHMEDANaBHsEoQSiBKMEpASlA/QD8QRgAzUEjgMtBFQDwgQhAqgErgSMA80EOwSwBKsEkQKgBLEElwSoBLgDfAS7BKoEvQS5BDgDjQS+BLMDdQTBBL8D2wSzA0AAWQTDBMcExQPBBLYDugTEA20CJQSmBNYE1wTYBNkEowTTAsMEzgTdBN4DMwRFBJYDzQNiBMID4gQ0BOQDrATmA7UDmgTpA4QE4gRvBNEERATyA/AE9ATfBMkCaQTcA5QCngSgBLUAIwTMAwEE4AObBP0E2gUFBQYFBwUIBNcE8ANrA9AE+QN6A+wEbwLLA3sFDgT6BLgFEgTnA/AFFwTsBMUFGwULBQkC/ALvAusFBAIyBNUC8QUlAvAFJwUfAwMACAEBAE0BCABlAHIAaQBhAGwBFAAFAEEAbABwAGgAYQEMAAQARAEIAGEBFQEXBSoFQwVEBUUFRgVHBUgFSQVKBUoADAEyAAwFTwJlAAwBYgVSAmIB7gL+BVYCZQVYARUFWgJVAAYAAQEMAUsFXAJVAAUBVAVUAmIBUAFMBWYC8AVQBWcFSwJVBWoFYQEdBWQCMQVwAu4FYgVaAAcBDAVsAVQFYgFvBXUAAAV9AWkFfwWBBVMBYgWEAVwFfQV9A3cFWwWGAWIFiwWABY0CYgWDBVEFkQWHARUFkwWQBXQFhQAABX8FZQWbAl4FnQVpAS8B/QN3BaECKQExA3EFZgWWBVEBMQWmBW4FTAWvBbEFmgL+Ba4CVQV3AUwACAAJBZwBaQWrAjEFvQWnAwMFvwFvBWIFjwXDAy4CaQXCBbwFwQMDBbUFswLxBc0FoAFUAAkFLAOnBdACKQWqBbIF2QNuBdYF2gXdA7kFfQXcBd4F4gVEBeEDXQXcBcUF4wXpAwUF5QXqBe0DWwXgBe4F8QXyBfMF9AX1BHUF6AX2A14F8AX5BKYABgMDBf4F/AFMBgAC/gVzBgEGBgYHBdoF+AJiBgoBbwKMBegF+wKxBggEdwW6Av4F1AYIBckGEgR2BgwFSwYbBhkCXgYdBKUGGALuBiAGHgYlBd8ESAWrBiAGJAYNAwUGKwLwBcUGLgYvBiYGMwY0BjUF2QYxA1wGOAYRA10FowJVBjoGNgZABhoFbgY/BA0BlQZEBkEEpQMTBE0F7ARGBj0GSAZPBfUGRwLxBlIDAwY4BlQGUAYmBiIFWwEwBXsFyAAEBkwFWwZgBYAFhAZXBKYFugAMAFQAaQBsAGUARQBuAQkBCQBlAHMBAAEVAAIAAwH9AHgBSwXTAAAABQBUAGUAeAB0ADQBFQZ2AAEAeQJ0BSwGfAZ+AHQAMwaCAf0AegFLAAoGhwZ9Bn8AMgEVBSwAAgBpAGQFgABTAGkAZwBuBpEGiQAxAUsGgwZ4BZcGnwZ/BoEB7wH9BoUCqgamBooGjAABBo4BFQaQBnsGkgB0BpQAAAaWBpgGmgacBp4GtAagBnkGuAZtBm8AaQZxBnMGdAENAEwAZQBuAGcAdABoAAAAJAZ2AAkAVwBFAE8AZgBmAHMAZQB0AFgAwwC/BtwG3gCoBtEG0wbVBtcG2QBZAUwG4QbUBTEAZwBpAG4AWgbeBt0AvgA8BugG4wbYAHQAWgFLASsABgBIAGUGnABoAHQAAAALBvMG6gbsBuYFWwcCBpwG7AbbBt0G3QC7ADcBNQAFAFcGmAbNAAAAGAAA' data = frombase64(d) print('Where do you want to extract introHouse?') dir = read() if dir:sub(1,1) ~= '/' then dir = '/'..fs.getDir(shell.getRunningProgram())..'/'..dir end fs.delete(dir) local i = 1 local path = '' while i <= #data do local c = data:byte(i) if c == 0 then i = i + 1 local l = data:byte(i) path = dir..'/'..data:sub(i + 1, i + l) i = i + l + 1 elseif c == 1 then i = i + 3 local l = data:byte(i - 2) * 65536 + data:byte(i - 1) * 256 + data:byte(i) local f = fs.open(path, 'w') f.write(lzw_decode(data:sub(i + 1, i + l))) f.close() i = i + l + 1 elseif c == 2 then fs.makeDir(path) i = i + 1 end end print('Extraced to '..dir..'.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement