diff -r f329fbf1ffb4 -r dc17ffdf0702 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Fri Jun 08 19:25:40 2012 +0200 +++ b/hedgewars/uScript.pas Mon Jun 25 10:46:48 2012 +0300 @@ -80,7 +80,8 @@ uTextures, uLandGraphics, SDLh, - SysUtils; + SysUtils, + uIO; var luaState : Plua_State; ScriptAmmoLoadout : shortstring; @@ -1649,6 +1650,68 @@ lc_getcurammotype := 1; end; +function lc_savecampaignvar(L : Plua_State): LongInt; Cdecl; +begin + if lua_gettop(L) <> 2 then + LuaError('Lua: Wrong number of parameters passed to SaveCampaignVar!') + else begin + SendIPC('V!' + lua_tostring(L, 1) + ' ' + lua_tostring(L, 2) + #0); + end; + lc_savecampaignvar := 0; +end; + +function lc_getcampaignvar(L : Plua_State): LongInt; Cdecl; +begin + if (lua_gettop(L) <> 1) then + LuaError('Lua: Wrong number of parameters passed to GetCampaignVar!') + else + SendIPCAndWaitReply('V?' + lua_tostring(L, 1)); + lua_pushstring(L, str2pchar(CampaignVariable)); + lc_getcampaignvar := 1; +end; + +function lc_hidehog(L: Plua_State): LongInt; Cdecl; +var gear: PGear; +begin + if lua_gettop(L) <> 1 then + LuaError('Lua: Wrong number of parameters passed to HideHog!') + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + hiddenHedgehogs[hiddenHedgehogsNumber]:=gear^.hedgehog; + inc(hiddenHedgehogsNumber); + HideHog(gear^.hedgehog); + end; + lc_hidehog := 0; +end; + +function lc_restorehog(L: Plua_State): LongInt; Cdecl; +var hog: PHedgehog; + i, j: LongInt; +begin + if lua_gettop(L) <> 1 then + LuaError('Lua: Wrong number of parameters passed to RestoreHog!') + else + begin + i := 0; + while (i < hiddenHedgehogsNumber) do + begin + if hiddenHedgehogs[i]^.gearHidden^.uid = lua_tointeger(L, 1) then + begin + hog := hiddenHedgehogs[i]; + RestoreHog(hog); + dec(hiddenHedgehogsNumber); + for j := i to hiddenHedgehogsNumber - 1 do + hiddenHedgehogs[j] := hiddenHedgehogs[j + 1]; + lc_restorehog := 0; + exit; + end; + inc(i); + end; + end; + lc_restorehog := 0; +end; + // boolean TestRectForObstacle(x1, y1, x2, y2, landOnly) function lc_testrectforobstacle(L : Plua_State) : LongInt; Cdecl; var rtn: Boolean; @@ -2168,6 +2231,10 @@ ScriptSetInteger('gstInvisible' ,$00200000); // register functions +lua_register(luaState, _P'HideHog', @lc_hidehog); +lua_register(luaState, _P'RestoreHog', @lc_restorehog); +lua_register(luaState, _P'SaveCampaignVar', @lc_savecampaignvar); +lua_register(luaState, _P'GetCampaignVar', @lc_getcampaignvar); lua_register(luaState, _P'band', @lc_band); lua_register(luaState, _P'bor', @lc_bor); lua_register(luaState, _P'bnot', @lc_bnot);