diff -r eeeea1cfaf08 -r 247d1bcf3c5e hedgewars/uScript.pas --- 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;