Miziak
New Member
Welcome,
I made one userful script and I think that publish this script.
This script is 3 functions.
Ok, in data/lib/050-function.lua in bottom this file paste:
Next in data folder make file: variables.lua and paste this:
Save files.
Example of use:
Sorry, for my English,
Yours(Pozdrawiam),
Miziak
I made one userful script and I think that publish this script.
This script is 3 functions.
- setPlayerStorageVariable(cid, virableId, virable) -- save in config file variable(table, string, bool, nil, int)
- getPlayerStorageVariable(cid, virableId) -- get value of variableid
- delPlayerStorageVariable(cid, virableId) -- delete variable of config file
Ok, in data/lib/050-function.lua in bottom this file paste:
Lua:
function convertTableToString(t)
local str = "{"
for i,v in pairs(t) do
str = str .. (type(i) == "number" and "[" .. i .. "]" or i) .. "=" .. (type(v) == "string" and "\"" .. v .. "\"" or v) .. ","
end
str = str:sub(1, str:len()-1) .. "}"
return str
end
function tableToString(t)
local str = "{"
for i,v in pairs(t) do
str = str .. (type(i) == "number" and "[" .. i .. "]" or i) .. "=" .. (type(v) == "table" and convertTableToString(v) or (type(v) == "string" and "\"" .. v .. "\"" or v)) .. ","
end
str = str:sub(1, str:len()-1) .. "}"
return str
end
function convertBoolToString(bool)
return (bool and "true" or "false")
end
dofile("data/variables.lua")
function setPlayerStorageVariable(cid, virableId, virable)
local sciezka = "data/variables.lua"
local linijki, lInt, bool = {}, 0, true
for line in io.lines(sciezka) do
table.insert(linijki, line)
lInt = lInt + 1
end
local file = assert(io.open(sciezka, "w"))
for i,_ in pairs(linijki) do
if(linijki[i]:find("name=\"" .. getCreatureName(cid) .. "\"") and linijki[i]:find("id=" .. virableId))then
local text = "{name=\"".. getCreatureName(cid) .."\", id=" .. virableId ..", value=" .. (type(virable) == "nil" and "nil" or (type(virable) == "boolean" and convertBoolToString(bool) or (type(virable) == "table" and tableToString(virable) or (type(virable) == "number" and virable or "\"" .. virable .. "\"" )))) .."},\n"
file:write(text)
bool = false
else
if(i == lInt - 1 and bool)then
local text = "{name=\"".. getCreatureName(cid) .."\", id=" .. virableId ..", value=" .. (type(virable) == "nil" and "nil" or (type(virable) == "boolean" and convertBoolToString(bool) or (type(virable) == "table" and tableToString(virable) or (type(virable) == "number" and virable or "\"" .. virable .. "\"" )))) .."},\n\n"
file:write(text)
else
file:write(linijki[i] .. (linijki[i] == "}" and "" or "\n"))
end
end
end
file:close()
end
function getPlayerStorageVariable(cid, virableId)
for _,v in pairs(variables) do
if(v.name == getCreatureName(cid) and v.id == virableId)then
return v.value
end
end
return -1
end
function delPlayerStorageVariable(cid, virableId)
local sciezka = "data/variables.lua"
local linijki = {}
for line in io.lines(sciezka) do
table.insert(linijki, line)
end
local file = assert(io.open(sciezka, "w"))
for i,_ in pairs(linijki) do
if(linijki[i]:find("name=\"" .. getCreatureName(cid) .. "\"") == nil or linijki[i]:find("id=" .. virableId) == nil)then
file:write(linijki[i] .. (linijki[i] == "}" and "" or "\n"))
end
end
file:close()
end
Next in data folder make file: variables.lua and paste this:
Lua:
variables = {
}
Save files.
Example of use:
Lua:
function onSay(cid, words, param, channel)
if(words == "set")then
setPlayerStorageVariable(cid, 1, {a=1, [2]="s", b=false, [6]= {"I'm Polish!!!"}})
elseif(words == "get")then
local v = getPlayerStorageVariable(cid, 1)
print("OMG!! this is " .. type(v) .. "!")
for i,v in pairs(v) do
print(i .. " == " .. v)
end
end
return true
end
Sorry, for my English,
Yours(Pozdrawiam),
Miziak
Last edited: