Cherry
27.02.2011, 14:49
Wer den Power Patch verwendet, wird Meldungen wie diese kennen "Lua error 2 in script '..........\mainloop.lua'". Sehr aussagekräftig sind die nicht.
Es gibt aber einen Weg, "sinnvolle" Fehlermeldungen zu erhalten.
1) Kopiert folgende zwei Skripte in euren "Script"-Ordner:
safe_init.lua
local status, err = pcall(function ()
local f, err = loadfile(GamePath .. "\\Script\\init.lua")
if f == nil then error(err) end
f()
end)
if status == false then
MsgBox("An error occured:\n" .. err)
ExitGame()
end
safe_mainloop.lua
local status, err = pcall(function ()
local f, err = loadfile(GamePath .. "\\Script\\mainloop.lua")
if f == nil then error(err) end
f()
end)
if status == false then
MsgBox("An error occured:\n" .. err)
ExitGame()
end
2) Öffnet den Configurator und ändert die Skriptnameneinstellungen von "init.lua" und "mainloop.lua" zu "safe_init.lua" und "safe_mainloop.lua"
Danach sehen die Fehler etwa so aus:
An error occured:
...\_Fertige Projekte\Power Patch v0.44\Script\init.lua:15: attempt to call global 'blubb' (a nil value)
...was sicher mehr bei der Fehlersuche hilft!
Ähnliche Konstrukte kann man natürlich auch verwenden, um Fehler zur Laufzeit abzufangen und zu behandeln. Dazu sei auf diesen Artikel (http://www.lua.org/pil/8.4.html) verwiesen.
Damit Fehler auch bei anderen Skripten angezeigt werden, solltet ihr statt "RunScript" dann "dofile" verwenden!
mfG Cherry
Es gibt aber einen Weg, "sinnvolle" Fehlermeldungen zu erhalten.
1) Kopiert folgende zwei Skripte in euren "Script"-Ordner:
safe_init.lua
local status, err = pcall(function ()
local f, err = loadfile(GamePath .. "\\Script\\init.lua")
if f == nil then error(err) end
f()
end)
if status == false then
MsgBox("An error occured:\n" .. err)
ExitGame()
end
safe_mainloop.lua
local status, err = pcall(function ()
local f, err = loadfile(GamePath .. "\\Script\\mainloop.lua")
if f == nil then error(err) end
f()
end)
if status == false then
MsgBox("An error occured:\n" .. err)
ExitGame()
end
2) Öffnet den Configurator und ändert die Skriptnameneinstellungen von "init.lua" und "mainloop.lua" zu "safe_init.lua" und "safe_mainloop.lua"
Danach sehen die Fehler etwa so aus:
An error occured:
...\_Fertige Projekte\Power Patch v0.44\Script\init.lua:15: attempt to call global 'blubb' (a nil value)
...was sicher mehr bei der Fehlersuche hilft!
Ähnliche Konstrukte kann man natürlich auch verwenden, um Fehler zur Laufzeit abzufangen und zu behandeln. Dazu sei auf diesen Artikel (http://www.lua.org/pil/8.4.html) verwiesen.
Damit Fehler auch bei anderen Skripten angezeigt werden, solltet ihr statt "RunScript" dann "dofile" verwenden!
mfG Cherry