sangpronhat
28-10-09, 04:13 PM
Code của mạnh tuyên :
function TaoBang(tTable, sTableName, sTab)
sTab = sTab or "";
sTmp = ""
sTmp = sTmp..sTab..sTableName.."={"
local tStart = 0
for key, value in tTable do
if tStart == 1 then
sTmp = sTmp..",\r\n"
else
sTmp = sTmp.."\r\n"
tStart = 1
end
local sKey = (type(key) == "string") and format("[%q]",key) or format("[%d]",key);
if(type(value) == "table") then
sTmp = sTmp..TaoBang(value, sKey, sTab.."\t");
else
local sValue = (type(value) == "string") and format("%q",value) or tostring(value);
sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue
end
end
sTmp = sTmp.."\r\n"..sTab.."}"
--Msg2Player(sTmp)
return sTmp
end
function SaveData(file, string)
local f,e = openfile( file, "w+" )
if f then
write(f,string)
closefile(f)
return 1
else
local _,_,path = strfind(file, "(.+[/_\\]).+$")
if path ~= nil then execute("mkdir ".."\""..gsub(path, "/", "\\").."\"") end
f,e = openfile( file, "w+" )
if f then
write(f,string)
closefile(f)
return 2
else
return 0
end
end
endCode này hơi dài và khó hiểu tôi đã viết lại bằng một đoạn dễ hiễu hơn nhưng tôi sẽ để mọi người tự mò :D
Vì trong quá trính truy xuất các thông tin của mảng chỉ lưu lại khi server đang khởi động còn nếu tắt mở lại server thì dữ liệu mảng mất sạch do đó cần lưu lại thành 1 file khác để dữ liệu có thể giữ lâu dài
Cách xài
Chép vô file script có mảng cần lưu dữ liệu
VD:
Tôi có mảng
BAIHAT = {
{"Just Dance",1},
{"Don't Stop Till You Get Enough",2},
}Giờ múm lưu nó lại file Ex.lua
Ex=TaoBang(BAIHAT,"BAIHAT","")
SaveData("script/ex.lua",Ex) Ngay tức khắc thư mục script sẽ có ngay 1 file mới ghi lại mảng đó
Cấu trúc :
Bieng=TaoBang(Mảng : Table,Tên mảng : string,"")
SaveData(script file : string,bien)Cách khai báo khi sử dụng file đã lưu
Đầu file
BAIHAT={} --Khai báo tên mãng trước
Include("\\Script\\Ex.lua") --Lấy dữ liệuNhư vậy là ta có thể lưu trử dữ liệu và truy xuất dễ dàng hơn so với dùng file .txt
Chúc các bạn viết dc nhiều script hay:)):)):))
Hiện tại đã code ra nhiệm vụ phong kỳ thiên bảo khố và sơn thận miếu
Thiên hạ đệ nhất bang và chục cái event nhỏ mà làm biếng share quá
function TaoBang(tTable, sTableName, sTab)
sTab = sTab or "";
sTmp = ""
sTmp = sTmp..sTab..sTableName.."={"
local tStart = 0
for key, value in tTable do
if tStart == 1 then
sTmp = sTmp..",\r\n"
else
sTmp = sTmp.."\r\n"
tStart = 1
end
local sKey = (type(key) == "string") and format("[%q]",key) or format("[%d]",key);
if(type(value) == "table") then
sTmp = sTmp..TaoBang(value, sKey, sTab.."\t");
else
local sValue = (type(value) == "string") and format("%q",value) or tostring(value);
sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue
end
end
sTmp = sTmp.."\r\n"..sTab.."}"
--Msg2Player(sTmp)
return sTmp
end
function SaveData(file, string)
local f,e = openfile( file, "w+" )
if f then
write(f,string)
closefile(f)
return 1
else
local _,_,path = strfind(file, "(.+[/_\\]).+$")
if path ~= nil then execute("mkdir ".."\""..gsub(path, "/", "\\").."\"") end
f,e = openfile( file, "w+" )
if f then
write(f,string)
closefile(f)
return 2
else
return 0
end
end
endCode này hơi dài và khó hiểu tôi đã viết lại bằng một đoạn dễ hiễu hơn nhưng tôi sẽ để mọi người tự mò :D
Vì trong quá trính truy xuất các thông tin của mảng chỉ lưu lại khi server đang khởi động còn nếu tắt mở lại server thì dữ liệu mảng mất sạch do đó cần lưu lại thành 1 file khác để dữ liệu có thể giữ lâu dài
Cách xài
Chép vô file script có mảng cần lưu dữ liệu
VD:
Tôi có mảng
BAIHAT = {
{"Just Dance",1},
{"Don't Stop Till You Get Enough",2},
}Giờ múm lưu nó lại file Ex.lua
Ex=TaoBang(BAIHAT,"BAIHAT","")
SaveData("script/ex.lua",Ex) Ngay tức khắc thư mục script sẽ có ngay 1 file mới ghi lại mảng đó
Cấu trúc :
Bieng=TaoBang(Mảng : Table,Tên mảng : string,"")
SaveData(script file : string,bien)Cách khai báo khi sử dụng file đã lưu
Đầu file
BAIHAT={} --Khai báo tên mãng trước
Include("\\Script\\Ex.lua") --Lấy dữ liệuNhư vậy là ta có thể lưu trử dữ liệu và truy xuất dễ dàng hơn so với dùng file .txt
Chúc các bạn viết dc nhiều script hay:)):)):))
Hiện tại đã code ra nhiệm vụ phong kỳ thiên bảo khố và sơn thận miếu
Thiên hạ đệ nhất bang và chục cái event nhỏ mà làm biếng share quá