Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
-- typist.lua -- Realistic terminal typing for ComputerCraft 1.7 -- ===== CONFIG ===== local BASE_DELAY = 0.05 local VARIANCE = 0.04 local PUNCT_DELAY = 0.12 local LINE_DELAY = 0.25 -- ===== SETUP ===== local args = { ... } if not args[1] then print("Usage: typist
") return end local filename = args[1] if not fs.exists(filename) then print("File not found.") return end local file = fs.open(filename, "r") if not file then print("Could not open file.") return end math.randomseed(os.time()) local function humanSleep(base) local d = base + (math.random() * VARIANCE * 2 - VARIANCE) if d < 0 then d = 0 end sleep(d) end -- ===== TERMINAL HELPERS ===== local function advanceCursor() local x, y = term.getCursorPos() local w, h = term.getSize() if x > w then x = 1 y = y + 1 end if y > h then term.scroll(1) y = h end term.setCursorPos(x, y) end local function typeChar(c) term.write(c) advanceCursor() if c:match("[%.%,%!%?]") then humanSleep(PUNCT_DELAY) else humanSleep(BASE_DELAY) end end local function newLine() local _, y = term.getCursorPos() local _, h = term.getSize() if y >= h then term.scroll(1) term.setCursorPos(1, h) else term.setCursorPos(1, y + 1) end sleep(LINE_DELAY) end -- ===== MAIN LOOP ===== while true do local line = file.readLine() if not line then break end for i = 1, #line do typeChar(line:sub(i, i)) end newLine() end file.close()
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)