function getfsd(script, logger) local size=800; script=script or _freeciv_state_dump(); logger = logger or log.normal while #script > size do local first, second = script:find ("\n", size, true) logger ("%s",script:sub (1, first -1)); script = script:sub (second +1) end logger ("%s",script) end function _fc_restore(t,ne) signal.connect("unit_lost", "unit_loss") end signal.connect("map_generated", "_fc_restore") unit_loss_ne1 = find.nonexistent() unit_loss_ne2 = unit_loss_ne2 or find.nonexistent() function unit_loss (unit, loser, reason) -- callback unit_lost unit_lost_2, unit_lost_1 = unit_lost_1, unit unit_lost_3 = unit_lost_2 unit_id_2, unit_id_1 = unit_id_1, unit.id unit_id_3 = unit_id_2 end; function fc_test() local n0 = find.nonexistent() local function comp(prefix,n1,n2) local t1, t2 = tolua.type(n1), tolua.type (n2) log.error( prefix .. " types: %s, %s".. " data: %s, %s, %s".. "", t1, t2, n1, n2, t1 == t2 and n1 == n2 and "EQUAL" or "not", nil) end comp ("1-2:", unit_lost_1, unit_lost_2) comp ("1-3:", unit_lost_1, unit_lost_3) comp ("2-3:", unit_lost_2, unit_lost_3) comp ("1ne:", unit_lost_1, n0) comp ("2ne:", unit_lost_2, n0) comp ("3ne:", unit_lost_3, n0) end function test2() local keeper = setmetatable ({_fc_keep = true}, {}) TABLE_TEST1 = setmetatable( {"item 1-a", "item 1-b"}, keeper ) TABLE_TEST2 = setmetatable( {"item 2-a", "item 2-b"}, keeper ) setmetatable (keeper, setmetatable({"item k1"}, {"item k2"} )) TABLE_TEST3 = setmetatable( {"item 3-a", "item 3-b"}, {_fc_keep = {} } ) TABLE_TEST4 = setmetatable( {"item 4-a", "item 4-b"}, {_fc_keep = TABLE_TEST1} ) TABLE_TEST5 = setmetatable( {"item 5-a", "item 5-b"}, {_fc_keep = test2} ) TABLE_TEST7 = {"item 7-a", "item 7-b"} TABLE_TEST6 = setmetatable( {"item 6-a", "item 6-b"}, {_fc_keep = TABLE_TEST7} ) TABLE_TEST8 = setmetatable( {"item 8-a", "item 8-b"}, {_fc_keep = TABLE_TEST6} ) setmetatable( TABLE_TEST7, {_fc_keep = TABLE_TEST8} ) TABLE_TEST9 = setmetatable( {"item 9-a", "item 9-b"}, {_fc_keep = TABLE_TEST7} ) TABLE_TEST10 = {"item 10"}; setmetatable(TABLE_TEST10, {_fc_keep = TABLE_TEST10} ) TABLE_TEST11 = {"item 11";}; TABLE_TEST11._fc_keep = TABLE_TEST11 setmetatable(TABLE_TEST11, TABLE_TEST11 ) end