# HG changeset patch # User Wuzzy # Date 1535744073 -7200 # Node ID 247d1bcf3c5e343467da8d63285aa71d47a667f9 # Parent eeeea1cfaf085d43012028b24c8e605122892bde Add 2nd optional parameter to HedgewarsScriptLoad. If false, its OK if file does not exist. Also, return true/false on success diff -r eeeea1cfaf08 -r 247d1bcf3c5e ChangeLog.txt --- a/ChangeLog.txt Fri Aug 31 21:22:12 2018 +0200 +++ b/ChangeLog.txt Fri Aug 31 21:34:33 2018 +0200 @@ -107,6 +107,8 @@ + New call: GetLaserSight(): Returns true if laser sight (as utility) is currenctly active (ignoring sniper rifle) + New call: IsHogHidden(gear): Returns true if hog is hidden + Changed call: AddTeam: 2nd param. color: Accepts negative value to use a default clan color from player settings + + Changed call: HedgewarsScriptLoad: 2nd param. mustExist. If false, it's allowed for the script to not exist + + Changed call: HedgewarsScriptLoad: Return true on success and false on failure + Change callback: onGearResurrect: 2nd parameter for visual gear spawned at resurrect position (might be nil) + New parameter: SetAmmoTexts: 5th param. showExtra: Set to false to hide texts like “Not yet available” + New parameter: ShowMission: 6th param. forceDisplay: Set to true to prevent this particular mission panel to be hidden manually by player 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; diff -r eeeea1cfaf08 -r 247d1bcf3c5e share/hedgewars/Data/Scripts/Locale.lua --- a/share/hedgewars/Data/Scripts/Locale.lua Fri Aug 31 21:22:12 2018 +0200 +++ b/share/hedgewars/Data/Scripts/Locale.lua Fri Aug 31 21:34:33 2018 +0200 @@ -1,7 +1,7 @@ -- Library for localizing strings in lua scripts if LOCALE ~= "en" then - HedgewarsScriptLoad("Locale/" .. tostring(LOCALE) .. ".lua") + HedgewarsScriptLoad("Locale/" .. tostring(LOCALE) .. ".lua", false) end function loc(text)