--- a/hedgewars/uScript.pas Fri Aug 31 21:22:12 2018 +0200
+++ b/hedgewars/uScript.pas Fri Aug 31 21:34:33 2018 +0200
@@ -34,7 +34,7 @@
procedure ScriptPrintStack;
procedure ScriptClearStack;
-procedure ScriptLoad(name : shortstring; mustExist : boolean);
+function ScriptLoad(name : shortstring; mustExist : boolean): boolean;
procedure ScriptOnPreviewInit;
procedure ScriptOnGameInit;
procedure ScriptOnScreenResize;
@@ -3066,12 +3066,20 @@
function lc_hedgewarsscriptload(L : Plua_State) : LongInt; Cdecl;
+var success : boolean;
+ n : LongInt;
begin
- if CheckLuaParamCount(L, 1, 'HedgewarsScriptLoad', 'scriptPath') then
- ScriptLoad(lua_tostring(L, 1), true)
+ if CheckAndFetchParamCount(L, 1, 2, 'HedgewarsScriptLoad', 'scriptPath [, mustExist]', n) then
+ begin
+ if n = 1 then
+ success:= ScriptLoad(lua_tostring(L, 1), true)
+ else
+ success:= ScriptLoad(lua_tostring(L, 1), lua_toboolean(L, 2));
+ end
else
- lua_pushnil(L);
- lc_hedgewarsscriptload:= 0;
+ success:= false;
+ lua_pushboolean(L, success);
+ lc_hedgewarsscriptload:= 1;
end;
@@ -3560,7 +3568,7 @@
end;
// ⭒⭐⭒✨⭐⭒✨⭐☆✨⭐✨✧✨☆✨✧✨☆⭒✨☆⭐⭒☆✧✨⭒✨⭐✧⭒☆⭒✧☆✨✧⭐☆✨☆✧⭒✨✧⭒☆⭐☆✧
-procedure ScriptLoad(name : shortstring; mustExist : boolean);
+function ScriptLoad(name : shortstring; mustExist : boolean): boolean;
var ret : LongInt;
s : shortstring;
f : PFSFile;
@@ -3579,6 +3587,7 @@
OutError('Script not found: ' + name, true)
else
AddFileLog('[LUA] Script not found: ' + name);
+ ScriptLoad:= false;
exit;
end;
@@ -3602,13 +3611,15 @@
begin
LuaError('Failed to load ' + name + '(error ' + IntToStr(ret) + ')');
LuaError(lua_tostring(luaState, -1));
+ ScriptLoad:= false;
end
else
begin
WriteLnToConsole('Lua: ' + name + ' loaded');
// call the script file
lua_pcall(luaState, 0, 0, 0);
- ScriptLoaded:= true
+ ScriptLoaded:= true;
+ ScriptLoad:= true;
end;
end;