Луа прекрасно работает с файлами. и сохраняет и загружает. правда загружает сразу целиком.
пример из другого проекта:
версия луа используется та же 5,0
require "./AI/USER_AI/A_Friends.lua"
загрузка производится так:
--------------------------------------------------
function FriendList_Load_merc()
--------------------------------------------------
local f_in_m = io.open("./AI/USER_AI/M_ID.txt", "r")
if f_in_m ~= nil then
FriendList_Clear()
FriendList_Load()
local ln = f_in_m:read()
while ln ~= nil do
Friends[tonumber(ln)] = tonumber(ln)
ln = f_in_m:read()
end
f_in_m:close()
if lastMer ~= tonumber(ln) then
Friends[lastmer] = nil
FriendList_Save()
end
lastMer = tonumber(ln)
TraceAI("Friend list loaded")
else
TraceAI("Cannot load friend list")
end
end
--------------------------------------------------
function FriendList_Clear()
--------------------------------------------------
for i,v in Friends do
Friends = nil
end
end
--------------------------------------------------
function FriendList_Load()
--------------------------------------------------
local f_in = io.open(FRIENDLIST_FILE, "r")
if f_in ~= nil then
FriendList_Clear()
local ln = f_in:read()
while ln ~= nil do
Friends[tonumber(ln)] = tonumber(ln)
ln = f_in:read()
end
f_in:close()
TraceAI("Friend list loaded")
else
TraceAI("Cannot load friend list")
end
end
--------------------------------------------------
function FriendList_Save()
--------------------------------------------------
local f_out = io.open(FRIENDLIST_FILE, "w")
if f_out ~= nil then
for i,v in Friends do
f_out:write(v .. "\n")
-- TraceAI(string.format("Friend %d saved", v))
end
f_out:close()
TraceAI("Friend list has been saved")
else
TraceAI("Cannot save friend list")
end
end
--------------------------------------------------
function isNotFriend(ID)
-- if he/she (ID) is not in the list
--------------------------------------------------
return (Friends[id] == nil)
end
--------------------------------------------------
function FriendList_Switch(ID)
-- add or remove someone (ID) from the list
--------------------------------------------------
if isNotFriend(ID) then
Friends[id] = ID
TraceAI(string.format("Friend ID %d not found: added", ID))
else
Friends[id] = nil
TraceAI(string.format("Friend ID %d found: removed", ID))
end
FriendList_Save()
end
--------------------------------------------------
function FileExists(path)
--------------------------------------------------
local file = io.open(path, "rb")
if file then file:close() end
return file ~= nil
end
естественно в глобале прописан путь к френдлистфайлу.
Используя такой способ можно создавать как раз базу мобов.
Вот содержимое файла получится таким:
MyFriends={}
MyFriends[3184408]=1 --
MyFriends[2451860]=1 --
MyFriends[3388226]=1 --
MyFriends[110019213]=1 --
MyFriends[2000071]=1 --
всё что после -- компилятором не учитывается