Thor_s_Crafter

inputAPI

Apr 8th, 2016
7,162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.59 KB | None | 0 0
  1. -- Input API --
  2. -- von Thor_s_Crafter --
  3. -- Version 1.0 --
  4.  
  5. --Formatiert grosse Zahlenwerte in String (z.B. 1.000)
  6. function formatNumber(value)
  7.   --Werte kleiner 1000 muessen nicht formatiert werden
  8.   if value < 1000 then return value end
  9.  
  10.   --Legt Berechnungsvariablen fest
  11.   local array = {}
  12.   local vStr = tostring(value)
  13.   local len = string.len(vStr)
  14.   local modulo = math.fmod(len,3)
  15.  
  16.   --Speichert einzelne Ziffern in einem Array ab
  17.   for i=1,len do array[i] = string.sub(vStr,i,i) end
  18.  
  19.   --Legt (max. 2) Ziffern am Anfang in ein extra Array und entfernt
  20.   --Diese aus dem alten Array
  21.   local array2 = {}
  22.   if modulo ~= 0 then
  23.     for i=1,modulo do
  24.       array2[i] = array[i]
  25.       table.remove(array,i)
  26.     end
  27.   end
  28.  
  29.   --Fuegt die Punkte als Feld im ersten Array ein
  30.   for i=1,#array+1,4 do
  31.     table.insert(array,i,".")
  32.   end
  33.  
  34.   --Fuegt beide Arrays zusammen
  35.   for i=#array2,1,-1 do table.insert(array,1,array2[i]) end
  36.   if modulo == 0 then table.remove(array,1) end --Entfernt ggf. Punkt am Anfang
  37.  
  38.   --Wandelt alles in einen String zurueck und gibt diesen zurueck
  39.   local final = ""
  40.   for k,v in pairs(array) do final = final..v end
  41.   return final
  42. end
  43.  
  44. --Wartet darauf das "Enter" gedrueckt wird
  45. function getEnter()
  46.   term.write("Enter druecken...")
  47.   while true do
  48.     local event,keyCode = os.pullEvent("key")
  49.     if keyCode == 28 then
  50.       print()
  51.       break
  52.     end
  53.   end
  54. end
  55.  
  56. function formatNumberComma(value)
  57.   --Werte kleiner 1000 muessen nicht formatiert werden
  58.   if value < 1000 then return value end
  59.  
  60.   --Legt Berechnungsvariablen fest
  61.   local array = {}
  62.   local vStr = tostring(value)
  63.   local len = string.len(vStr)
  64.   local modulo = math.fmod(len,3)
  65.  
  66.   --Speichert einzelne Ziffern in einem Array ab
  67.   for i=1,len do array[i] = string.sub(vStr,i,i) end
  68.  
  69.   --Legt (max. 2) Ziffern am Anfang in ein extra Array und entfernt
  70.   --Diese aus dem alten Array
  71.   local array2 = {}
  72.   if modulo ~= 0 then
  73.     for i=1,modulo do
  74.       array2[i] = array[i]
  75.       table.remove(array,i)
  76.     end
  77.   end
  78.  
  79.   --Fuegt die Punkte als Feld im ersten Array ein
  80.   for i=1,#array+1,4 do
  81.     table.insert(array,i,",")
  82.   end
  83.  
  84.   --Fuegt beide Arrays zusammen
  85.   for i=#array2,1,-1 do table.insert(array,1,array2[i]) end
  86.   if modulo == 0 then table.remove(array,1) end --Entfernt ggf. Punkt am Anfang
  87.  
  88.   --Wandelt alles in einen String zurueck und gibt diesen zurueck
  89.   local final = ""
  90.   for k,v in pairs(array) do final = final..v end
  91.   return final
  92. end
  93.  
  94. --Wartet darauf das "Enter" gedrueckt wird
  95. function getEnter()
  96.   term.write("Enter druecken...")
  97.   while true do
  98.     local event,keyCode = os.pullEvent("key")
  99.     if keyCode == 28 then
  100.       print()
  101.       break
  102.     end
  103.   end
  104. end
  105.  
  106. --Gibt true oder false zurueck - Anfrage an den Anwender
  107. function yesNoInput(message)
  108.   local input = ""
  109.   while true do
  110.     print(message.." (j/n)?")
  111.     term.write("Eingabe: ")
  112.     input = read()
  113.     if input == "j" then return true
  114.     elseif input == "n" then return false
  115.     end
  116.   end  
  117. end
  118.  
  119. --Gibt einen String zurueck - Anfrage an den Anwender
  120. function stringInput(message)
  121.   print(message)
  122.   term.write("Eingabe: ")
  123.   local input = read()
  124.   return input
  125. end
  126.  
  127. --Gibt eine Zahl zwischen min und max zurueck - Anfrage an den Anwender
  128. function numberInput(message,min,max)
  129.   local input = ""
  130.   while true do
  131.     print(message.." ("..min.."-"..max..")")
  132.     term.write("Eingabe: ")
  133.     input = read()
  134.     if tonumber(input) ~= nil then
  135.       local inputNr = tonumber(input)
  136.       if inputNr >= min and inputNr <= max then return inputNr end
  137.     end
  138.   end
  139. end
Advertisement
Add Comment
Please, Sign In to add comment