Advertisement
Mizeno

Tardis Handles CC:Tweaked 1.2.3

Mar 6th, 2025 (edited)
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. tardis = peripheral.find("tardisinterface") or error("No tardis interface attached.", 0)
  2. box = peripheral.find("chatBox") or error("No chatBox attached.", 0)
  3.  
  4. chatboxWhitelistUsername = settings.get("chatboxWhitelistUsername")
  5. whitelistedUsernameMissing = chatboxWhitelistUsername == nil
  6.  
  7. if whitelistedUsernameMissing then
  8.     print("No whitelisted username, anyone can control this Tardis")
  9. end
  10.  
  11.  
  12. function split(s, delimiter)
  13.     result = {}
  14.     for match in (s..delimiter):gmatch("(.-)"..delimiter) do
  15.         table.insert(result, match)
  16.     end
  17.     return result
  18. end
  19.  
  20. function talkToMe(str, playerName)
  21.     print(str)
  22.     if (box == nil) then
  23.         -- do nothing
  24.     elseif type(str) ~= "string" then
  25.         box.sendMessageToPlayer("NoStringError: talkToMe needs type string", playerName)
  26.     else
  27.         box.sendMessageToPlayer(str, playerName, "TARDIS")
  28.     end
  29. end
  30.  
  31. function handleMessage(message, username)
  32.     split_string = split(message, " ")
  33.  
  34.     if split_string[1] == "Handles" or split_string[1] == "handles" or split_string[1] == "tardis" or split_string[1] == "TARDIS" or split_string[1] == "Tardis" then
  35.         if split_string[2] == "go" then
  36.             local x = tonumber(split_string[3])
  37.             local y = tonumber(split_string[4])
  38.             local z = tonumber(split_string[5])
  39.             local d, dimName = tardis.getDestinationDimension()
  40.  
  41.             if split_string[6] ~= nil then
  42.                 local requestedDimension = split_string[6]
  43.                 -- Get list of dimensions
  44.                 local dimensionList = {tardis.getDimensions()}
  45.  
  46.                 for key, value in ipairs(dimensionList) do
  47.                     local splitTheString = split(value, ' ')
  48.                     local id = splitTheString[1]
  49.  
  50.                     local nameArray = split(splitTheString[3], ':')
  51.                     local name = nameArray[2]
  52.  
  53.                     if string.find(name, requestedDimension) then
  54.                         d = (tonumber(key) - 1)
  55.                         print(key)
  56.                     end
  57.                 end
  58.             end
  59.  
  60.             tardis.setDestinationAndDimension(x, y, z, d)
  61.  
  62.             sleep(1)
  63.             talkToMe("You got it!", username)
  64.             tardis.setDoors("CLOSED")
  65.             sleep(1)
  66.             tardis.setHandbrake(false)
  67.             sleep(1)
  68.             tardis.setFlight(1)
  69.             talkToMe("Taking off!", username)
  70.             sleep(3)
  71.             tardis.setRefuel(true)
  72.             local timeLeft = tardis.getTimeLeft()
  73.             sleep(timeLeft)
  74.             talkToMe("Landing now!", username)
  75.             sleep(15)
  76.             tardis.setHandbrake(true)
  77.             talkToMe("I'm here!", username)
  78.         end
  79.  
  80.         if split_string[2] == "hads" or split_string[2] == "HADS" then
  81.     local curr_x, curr_y, curr_z = tardis.getLocation()
  82.    
  83.     -- Generate a random safe escape location (at least 2500 blocks away)
  84.     local escape_x = curr_x + (math.random(2500, 5000) * (math.random(0,1) == 0 and -1 or 1))
  85.     local escape_y = curr_y  -- Keep the Y level the same
  86.     local escape_z = curr_z + (math.random(2500, 5000) * (math.random(0,1) == 0 and -1 or 1))
  87.    
  88.     -- Notify the player and enable cloisters
  89.     talkToMe("HADS activated! Escaping to a safe location.", username)
  90.     tardis.setAlarm(true)
  91.  
  92.     -- Close doors and prepare for emergency jump
  93.     tardis.setDoors("CLOSED")
  94.     sleep(1)
  95.     tardis.setHandbrake(false)
  96.     sleep(1)
  97.    
  98.     -- Set the new escape destination
  99.     tardis.setDestination(escape_x, escape_y, escape_z)
  100.     tardis.setFlight(1)
  101.    
  102.     -- Wait for flight to complete
  103.     sleep(3)
  104.     local timeLeft = tardis.getTimeLeft()
  105.     sleep(timeLeft)
  106.    
  107.     -- Landing process
  108.     sleep(15)
  109.     tardis.setHandbrake(true)
  110.     tardis.setRefuel(true)
  111.     tardis.setAlarm(false)
  112.  
  113. local newLocationMessage = string.format("Phew, I got away! X: %d, Y: %d, Z: %d!", escape_x, escape_y, escape_z)
  114.     talkToMe(newLocationMessage, username)
  115. end
  116.  
  117.  
  118.        
  119.         if split_string[2] == "cloisters" then
  120.             if split_string[3] == "ring" then
  121.                 tardis.setAlarm(true)
  122.                 talkToMe("Cloister bells ringing!", username)
  123.         elseif split_string[3] == "stop" then
  124.             tardis.setAlarm(false)
  125.             talkToMe("Cloister bells stopped!", username)
  126.         end
  127. end
  128.  
  129.         if split_string[2] == "refuel" then
  130.             tardis.setRefuel(true)
  131.             talkToMe("Refueling!", username)
  132.         end
  133.        
  134.     end  -- Closing the main "Handles" command
  135. end  -- Closing function handleMessage
  136.    
  137.  
  138. -- Main event loop
  139. while true do
  140.     event, username, message = os.pullEvent("chat")
  141.  
  142.     -- Username check
  143.     if whitelistedUsernameMissing or username == chatboxWhitelistUsername then
  144.         print("User: ".. username .. " - Running: " .. message)
  145.         handleMessage(message, username)
  146.     end
  147. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement