Posted 20 August 2014 - 03:03 PM
Guten Tag | Hello
Also: Ich schreibe gerade ein kleines Programm für manche Turtle aus Computercraft dieser Welt und habe dafür bis jetzt 3 Datei benutzt.
In der "StartComputer" befinden sich ein paar funktionen die dann ausgeführt werden, wenn der Computer startet. Diese werden in der startup mit os.loadAPI("StartComputer") und dann StartComputer.(function) aufgerufen.
Dies funktioniert, doch sobald in der Funktion in der StartComputer sich eine Shell.[…] befehl kommt, dann kommt der Fehler: StartComputer: 27: attempt to index ? (a nil value)
In dieser Zeile (27) steht der 1. Shell.[…] Befehl. Ich weiß nicht woran dies liegt und bitte euch daher um hilfe.
Danke im vorraus.
StartComputer.Instanziieren() – 'befüllt' die Variablen
StartComputer.Informationen() – Gibt Informationen aus
StartComputer.Download() – downloaded alles wichtige
while true do
Menu()
end
shell.run("reboot")
end
function firstStartCheck()
if fs.exists("StartComputer") == false then
shell.run("delete StartComputer")
shell.run("pastebin get G2YmEZNW StartComputer")
end
end
main()
NameOfTurtle = " "
– Beschreibt die Variablen
function Instanziieren()
NameOfTurtle = os.getComputerLabel()
Load()
end
– Ladet die Variablen
function Load()
if fs.exists("Evil_Variablen") == true then – Hier werden die Variablen ausgelesen wenn die Datei vorhanden ist
reader = fs.open("Evil_Variablen","r")
NameOfTurtle = reader.readLine()
reader.close()
else – Hier werden die Variablen NEU reingeschrieben wenn die Datei nicht vorhanden ist
writer = fs.open("Evil_Variablen","w")
writer.writeLine(NameOfTurtle)
writer.close()
end
end
– funny sentences
function Informationen()
– Kann man später einstellen ob man das angezeigt haben möchte
shell.run("clear")
print("Computer wird gestartet…")
sleep(1)
print("CPU und GPU machen sich ein Kaffee…")
sleep(0.5)
print("CPU und GPU nehmen die Arbeit auf…")
sleep(1)
print("Computer: " .. os.getComputerLabel())
end
– Hier werden alle Datei heruntergeladen und vorher gelöscht
function Download()
shell.run("delete startup")
shell.run("delete StartComputer")
shell.run("delete menus")
shell.run("delete strip")
shell.run("delete tanken")
shell.run("pastebin get p7HhEhV4 startup")
shell.run("pastebin get G2YmEZNW StartComputer")
shell.run("pastebin get pVdh36xC menus")
shell.run("pastebin get JMtaBaNy strip")
shell.run("pastebin get gkr34rS8 tanken")
end
Also: Ich schreibe gerade ein kleines Programm für manche Turtle aus Computercraft dieser Welt und habe dafür bis jetzt 3 Datei benutzt.
In der "StartComputer" befinden sich ein paar funktionen die dann ausgeführt werden, wenn der Computer startet. Diese werden in der startup mit os.loadAPI("StartComputer") und dann StartComputer.(function) aufgerufen.
Dies funktioniert, doch sobald in der Funktion in der StartComputer sich eine Shell.[…] befehl kommt, dann kommt der Fehler: StartComputer: 27: attempt to index ? (a nil value)
In dieser Zeile (27) steht der 1. Shell.[…] Befehl. Ich weiß nicht woran dies liegt und bitte euch daher um hilfe.
Danke im vorraus.
-- startup
-- Variablen:
local function Ausgabe(text)
local x_r,y_r = term.getSize() local x2_r,y2_r = term.getCursorPos() -- speichert die Position des Cursors
term.setCursorPos(math.ceil((x_r / 2) - (text:len() / 2)), y2_r) -- Zentriert den Text
write(text .. "\n")
end
function main()
firstStartCheck()
os.loadAPI("StartComputer")
StartComputer.Instanziieren() – 'befüllt' die Variablen
StartComputer.Informationen() – Gibt Informationen aus
StartComputer.Download() – downloaded alles wichtige
while true do
Menu()
end
shell.run("reboot")
end
function firstStartCheck()
if fs.exists("StartComputer") == false then
shell.run("delete StartComputer")
shell.run("pastebin get G2YmEZNW StartComputer")
end
end
main()
-- StartComputer
NameOfTurtle = " "
– Beschreibt die Variablen
function Instanziieren()
NameOfTurtle = os.getComputerLabel()
Load()
end
– Ladet die Variablen
function Load()
if fs.exists("Evil_Variablen") == true then – Hier werden die Variablen ausgelesen wenn die Datei vorhanden ist
reader = fs.open("Evil_Variablen","r")
NameOfTurtle = reader.readLine()
reader.close()
else – Hier werden die Variablen NEU reingeschrieben wenn die Datei nicht vorhanden ist
writer = fs.open("Evil_Variablen","w")
writer.writeLine(NameOfTurtle)
writer.close()
end
end
– funny sentences
function Informationen()
– Kann man später einstellen ob man das angezeigt haben möchte
shell.run("clear")
print("Computer wird gestartet…")
sleep(1)
print("CPU und GPU machen sich ein Kaffee…")
sleep(0.5)
print("CPU und GPU nehmen die Arbeit auf…")
sleep(1)
print("Computer: " .. os.getComputerLabel())
end
– Hier werden alle Datei heruntergeladen und vorher gelöscht
function Download()
shell.run("delete startup")
shell.run("delete StartComputer")
shell.run("delete menus")
shell.run("delete strip")
shell.run("delete tanken")
shell.run("pastebin get p7HhEhV4 startup")
shell.run("pastebin get G2YmEZNW StartComputer")
shell.run("pastebin get pVdh36xC menus")
shell.run("pastebin get JMtaBaNy strip")
shell.run("pastebin get gkr34rS8 tanken")
end
-- 3 menues
function MainMenu()
l = 1 -- Var für Auswahl
while true do
shell.run("clear")
Ausgabe("Willkommen\n\n")
if l == 1 then Ausgabe("[Programme]")
else Ausgabe(" Programme ")
end
if l == 2 then Ausgabe("[Aktualisieren]")
else Ausgabe(" Aktualisieren ")
end
if l == 3 then Ausgabe("[Einstellungen]")
else Ausgabe(" Einstellungen ")
end
a, b = os.pullEvent()
while a ~= "key" do
a, b = os.pullEvent()
end
if b == 208 and l == 1 then l = 2
elseif b == 208 and l == 2 then l = 3
elseif b == 200 and l == 3 then l = 2
elseif b == 200 and l == 2 then l = 1
elseif b == 28 then break
end
end
if l == 1 then ProgramsMenu()
elseif l == 2 then
elseif l == 3 then SettingsMenu()
end
end
local function SettingsMenu()
l = 1 -- Var für Auswahl
while true do
shell.run("clear")
Ausgabe("Einstellungen\n\n")
if l == 1 then Ausgabe("[Name des Turtels: " .. os.getComputerLabel() .. "]")
else Ausgabe(" Name des Turtels: " .. os.getComputerLabel() .. " ")
end
if l == 2 then Ausgabe("[Zurueck]")
else Ausgabe(" Zurueck ")
end
a, b = os.pullEvent()
while a ~= "key" do
a, b = os.pullEvent()
end
if b == 208 and l == 1 then l = 2
elseif b == 200 and l == 2 then l = 1
elseif b == 28 then break
end
end
if l == 1 then TurtleNameWechseln()
end
end
local function ProgramsMenu()
l = 1 -- Var für Auswahl
while true do
shell.run("clear")
Ausgabe("Einstellungen\n\n")
if l == 1 then Ausgabe("[Stripmineprogramm]")
else Ausgabe(" Stripmineprogramm ")
end
if l == 2 then Ausgabe("[Tanken]")
else Ausgabe(" Tanken ")
end
if l == 3 then Ausgabe("[Zurueck]")
else Ausgabe(" Zurueck ")
end
a, b = os.pullEvent()
while a ~= "key" do
a, b = os.pullEvent()
end
if b == 208 and l == 1 then l = 2
elseif b == 208 and l == 2 then l = 3
elseif b == 200 and l == 3 then l = 2
elseif b == 200 and l == 2 then l = 1
elseif b == 28 then break
end
end
if l == 1 then shell.run("strip")
elseif l == 2 then shell.run("tanken")
end
end
local function TurtleNameWechseln()
NewName = ""
print("")
write("Neuer Name: ")
NewName = read()
if NewName ~= nil or NewName ~= " " then
shell.run("label set " .. NewName)
shell.run("clear")
end
end
local function Ausgabe(text)
local x_r,y_r = term.getSize() local x2_r,y2_r = term.getCursorPos() -- speichert die Position des Cursors
term.setCursorPos(math.ceil((x_r / 2) - (text:len() / 2)), y2_r) -- Zentriert den Text
write(text .. "\n")
end