![]() |
|
[Plugin] Homes Plugin!? - Printable Version +- Cuberite Forum (https://forum.cuberite.org) +-- Forum: Plugins (https://forum.cuberite.org/forum-1.html) +--- Forum: Plugin Discussion (https://forum.cuberite.org/forum-8.html) +--- Thread: [Plugin] Homes Plugin!? (/thread-1661.html) |
[Plugin] Homes Plugin!? - nouseforname - 11-25-2014 Hi folks, even if i dont use MC-Server for some reason, i am interested in creating a plugin. Right now i am in process with a new home plugin: - multiworld support (same home count each world for each level) - User ranking support with different user home limits - config.ini - using sqlite database Commands: - homeset <HOMENAME> - home <HOMENAME> - homedel <HOMENAME> Is anybody interested in this? If yes, any requests for functions? If the feedback is good enough i may will try to release it, otherwhise i only use it to learn bit lua. RE: [Plugin] Homes Plugin!? - NiLSPACE - 11-25-2014 I moved this to "Plugin / Lua Discussion". RE: [Plugin] Homes Plugin!? - sphinxc0re - 11-25-2014 +1
RE: [Plugin] Homes Plugin!? - xoft - 11-25-2014 So what exactly will the plugin do? I'm not familiar with this "home" topic. RE: [Plugin] Homes Plugin!? - nouseforname - 11-25-2014 (11-25-2014, 06:23 AM)xoft Wrote: So what exactly will the plugin do? I'm not familiar with this "home" topic. Player will be able to save positions and teleport to that save ones. Mainly its a simple but individual teleporting function for each player. In config you can set the max amount of "homes" per world for each rank RE: [Plugin] Homes Plugin!? - xoft - 11-25-2014 Sounds fun, enjoy coding this And don't forget to document it just the way you documented it for me.
RE: [Plugin] Homes Plugin!? - nouseforname - 11-26-2014 Ok, still doing this, but i ran into an issue. I want to do a sqlite query to get a list of tables. But somehow i am not able to return the query result. The query function gets the playername as argument and should return a table of tables (a_List):
function cStorage:GetList( player )
local a_List = {}
-- get data from query
function getResult(udata, cols, values, names)
for i=1,cols do print('',names[i],values[i]) end
return 0
end
-- get all player homes
local sql = "SELECT * FROM " .. PluginName .. " WHERE Player='" .. player .. "'"
self:DBExec(sql, getResult)
return a_List
end
This is a sample result which should go into the table:
ID 1
Player no_use_for_name
Name default
World world
X -68.877814274714
Y 64
Z 205.5105932393
ID 2
Player no_use_for_name
Name hill
World world
X -66.54712734459
Y 64
Z 209.61457523444
ID 3
Player no_use_for_name
Name hil
World world
X -66.54712734459
Y 64
Z 209.61457523444
I would expect something like:
a_List = {{row1,...}, {row2,...}...}
But maybe there is a better way?! I tried several things already, but didnt get it yet. Returning a single result is easy. Any help would be nice RE: [Plugin] Homes Plugin!? - xoft - 11-26-2014 You're not putting anything into the a_List variable anywhere. The getResult() function should add an item into it. Most likely like this (note the use of the nrows() function instead of DBExec() ):
local theResult = {}
DB:nrows(
"SELECT * FROM " .. PluginName .. " WHERE Player = \"" .. player .. "\"",
function getResult(a_RowValues)
-- add the returned row to our result table:
table.insert(theResult, a_RowValues)
end
)
return theResult
This will return the table as an array of dictionaries:
theResult = { {col1 = val1A, col2 = val2A}, {col1 = val1B, col2 = val2B}, {col1 = val1C, col2 = val2C}, ...}
EDIT: No, sorry, this code won't work either. RE: [Plugin] Homes Plugin!? - xoft - 11-26-2014 Where is your DBExec function coming from? Are you using one of the sqlite wrappers from any of the plugins? RE: [Plugin] Homes Plugin!? - xoft - 11-26-2014 If so, use the ExecuteStatement() function instead, it's more high-level and provides the right interface that you need, the code I posted earlier will work with ExecuteStatement, if you add a middle parameter to it:
local theResult = {}
DB:ExecuteStatement(
"SELECT * FROM " .. PluginName .. " WHERE Player = ?", -- Note the use of placeholders for increased safety
{ playerName }, -- Placeholders will be replaced with values from this table
function getResult(a_RowValues) -- This callback will be called for each retrieved DB row
-- add the returned row to our result table:
table.insert(theResult, a_RowValues)
end
)
return theResult
|