Advertisement
Jefferz

asd

Apr 30th, 2015
410
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.18 KB | None | 0 0
  1. --coroutine.wrap(function()while wait(5) do math.randomseed(tick()+math.random(-5,5))end end)()
  2.  
  3. local keyboard={[0]='~!@#$%^&*()_+',[1]='`1234567890',[2]=[[    qwertyuiop[]\]],[3]='Aasdfghjkl;\'',
  4. [4]='Zzxcvbnm,./'}
  5.  
  6. for layer,v in pairs(keyboard) do
  7.     keyboard[layer]={}
  8.     for letter in string.gmatch(v,'(.)') do
  9.         keyboard[layer][#keyboard[layer]+1]=letter
  10.     end
  11. end
  12.  
  13. local function MiniRandom(r1,r2,step)
  14.     local p={}
  15.     for i = r1,r2,step do p[#p+1]=i end
  16.     return p[math.random(#p)]
  17. end
  18.  
  19. function AttemptLetter(l)
  20.     --print'----------'
  21.     if l == ' ' or nil then return ' ' end
  22.    
  23.     local pos,layer
  24.     for lay,letters in pairs(keyboard) do
  25.         for ind,let in pairs(letters) do
  26.             if let:lower()==l:lower() then
  27.                 pos,layer=ind,lay
  28.                 break
  29.             end
  30.         end
  31.     end
  32.     --print('index '..tostring(pos))
  33.    
  34.     if not layer or not pos then return l end
  35.    
  36.     local layer_miss=math.random(1,55)==33
  37.     if layer_miss then
  38.         --print'missed layer'
  39.         local up=math.abs(1-layer)--I didn't include 0 because yea
  40.         local down=math.abs(3-layer)
  41.         local new_layer
  42.         local p
  43.            
  44.         new_layer=layer+((up==0 and -1)or (down==0 and 1)or 1)
  45.         while keyboard[new_layer]==nil do
  46.             --print'new layer'
  47.             new_layer=layer+math.random(-4,4)
  48.         end
  49.  
  50.         local original=keyboard[layer]
  51.         local offset=keyboard[new_layer]
  52.         local testpos1=pos
  53.         local testpos2=pos
  54.         local p2
  55.         local p3
  56.        
  57.             while p==nil do
  58.                 testpos1=testpos1+1
  59.                 if offset[testpos1] ~= nil then
  60.                     p2=testpos1
  61.                     --break
  62.                 end
  63.                 testpos2=testpos2-1
  64.                 if offset[testpos2] ~= nil then
  65.                     p3=testpos2
  66.                     --break
  67.                 end
  68.                 if p2 and not p3 then
  69.                     --print'p2 avaiblab;e'
  70.                     p=p2 break
  71.                 elseif not p2 and p3 then
  72.                     --print'p3 avaible'
  73.                     p=p3 break
  74.                 elseif p2 and p3 then
  75.                     --print'both available'
  76.                     local r=math.random(1,2)==2
  77.                     if r then
  78.                         p=p2
  79.                     else
  80.                         p=p3
  81.                     end
  82.                     break
  83.                 end
  84.             end
  85.             --print('p: '..tostring(p))
  86.             --print'--------'
  87.         return (l:upper()==l and keyboard[new_layer][p]:upper()) or keyboard[new_layer][p]
  88.        
  89.     else
  90.         --print'no jump'
  91.         local min=1
  92.         local max=#keyboard[layer]
  93.         local p=pos
  94.         local left=math.abs(min-p)
  95.         local right=math.abs(max-p)
  96.        
  97.         local rand=math.random(1,6)
  98.         local p2
  99.         local p3
  100.         if rand==6 then
  101.             --print'shift 2'
  102.             if left == 0 and right>=2 then
  103.                 --print'move right'
  104.                 p=p+2
  105.             elseif right==0 and left>=2 then
  106.                 --print'move left'
  107.                 p=p-2
  108.             else
  109.                 --print'move left/right'
  110.                 p2=math.min(p+2,max)
  111.                 p3=math.max(p-2,min)
  112.                 local rand2=math.random(1,2)
  113.                 p=(rand2==1 and p2) or p3
  114.                 --print('p: '..tostring(p))
  115.             end
  116.         else
  117.             if left==0 and right>=1 then
  118.                 --print'move right'
  119.                 p=p+1
  120.             elseif right==0 and left>=1 then
  121.                 --print'move left'
  122.                 p=p-1
  123.             else
  124.                 --print'left/right'
  125.                 p2=math.min(p+1,max)
  126.                 p3=math.max(p-1,min)
  127.                 local rand2=math.random(1,2)
  128.                 p=(rand2==1 and p2) or p3
  129.             end
  130.         end
  131.         --print('p: '..tostring(p))
  132.         --print'---------'
  133.         return (l:upper()==l and keyboard[layer][p]:upper()) or keyboard[layer][p]
  134.     end
  135. end
  136.  
  137. --[[for _,v in pairs(keyboard) do
  138.     for __,vv in pairs(v) do
  139.         local a=AttemptLetter(vv)
  140.         local b=AttemptLetter(vv)
  141.         local c=AttemptLetter(vv)
  142.         if a==nil or b==nil or c==nil then print('wtf?? '..vv,_)end
  143.     end
  144. end]]--
  145.  
  146.  
  147. local function Type(t,o,p,f)
  148.     local progress=p or 1
  149.     for i = progress,string.len(t) do
  150.         wait(MiniRandom(.06,.1,.01))
  151.         o.Text=string.sub(t,1,i)..' |'
  152.         local chance=math.random(1,3)
  153.         if chance==3 and i~=1 and string.sub(t,i,i)~=' ' then
  154.             local d=math.random(1,6)
  155.             if d==1 or d==2 then
  156.                 local add
  157.                 if d==1 then
  158.                     add=math.random(2,5)
  159.                 else
  160.                     add=math.random(2,3)
  161.                 end
  162.                 if string.sub(t,i+add,i+add)~=nil then
  163.                     local c=string.sub(t,1,i-1)
  164.                     --local add=math.random(2,3)
  165.                     for i2 = 1,add do
  166.                         --print('this is nil sometimes?: '..tostring(string.sub(t,i+(i2),i+(i2))))
  167.                         c=c..AttemptLetter(string.sub(t,i+(i2),i+(i2)))
  168.                         o.Text=c..' |'
  169.                         wait(MiniRandom(.08,.15,.01))
  170.                     end
  171.                     wait(.3+MiniRandom(-.2,.25,.1))
  172.                     for i3 = 1,add do
  173.                         wait(MiniRandom(.09,.2,.01))
  174.                         o.Text=string.sub(c,1,string.len(c)-i3)..'|'
  175.                     end
  176.                     Type(t,o,i,f)
  177.                     break
  178.                 end
  179.             else
  180.                 o.Text=string.sub(t,1,i-1)..AttemptLetter(string.sub(t,i,i))..' |'
  181.                 wait(.3+MiniRandom(-.2,.25,.1))
  182.                 o.Text=string.sub(t,1,i-1)..'|'
  183.                 wait(.1+MiniRandom(-.08,.04,.01))
  184.                 Type(t,o,i)
  185.                 break
  186.             end
  187.            
  188.            
  189.         end
  190.     end
  191.     o.Text=string.sub(t,1,string.len(t))
  192. end
  193.  
  194. local a=Instance.new('ScreenGui',game.StarterGui)
  195. local tl=Instance.new('TextLabel',a)
  196. tl.Position=UDim2.new(0.5,0,0.5,0)
  197. tl.Size=UDim2.new(1,0,1.4,0)
  198. tl.Position=tl.Position-UDim2.new(0,tl.AbsoluteSize.X/2,0,tl.AbsoluteSize.Y/2)
  199. tl.BackgroundTransparency=1
  200. tl.TextWrapped=true
  201. tl.FontSize=Enum.FontSize.Size36
  202. tl.TextXAlignment=Enum.TextXAlignment.Left
  203. Type('Hello redditors! this is a test to simulate typos! Me may be bad at typing, but me are master scripter!!! :D me=master, ok :D :D :D oopsy doops. There was once an ugly barnacle so ugly that everyone died, the end. - patrick star It\'s fun scripting on roblox :D Test 123, I wont miss this letter "p"',tl)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement