![]() |
|
INI Arrays - 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: INI Arrays (/thread-1578.html) |
INI Arrays - tryy3 - 09-12-2014 Hello, I am wondering if its possible to get Arrays with the cIniFile class? I Know INI files can have arrays but looking at the docs, there is no functions for arrays. Is there a different way to get arrays from INI files? RE: INI Arrays - LO1ZB - 09-12-2014 What do you want to save in the INI Array? Why not use a SQLLite database? RE: INI Arrays - tryy3 - 09-12-2014 Its for a config, I need to save a motd message, and the motd needs to be multiple lines. RE: INI Arrays - xoft - 09-12-2014 You could use several approaches here: - Store the strings in a single value in an INI file, separated by a separator: "value1|value2|value3", then use StringSplitAndTrim() on the string value you read from the INI file - Use a config file that is a Lua file. Such a config file must not be stored in the plugin's folder, but then is quite free to use any Lua to provide the configuration; then use Lua's dofile() function to read the config. The only downside is that it's difficult-to-impossible to make changes to such a file programmatically. Gallery plugin uses a Lua config file, you can use that as a reference. RE: INI Arrays - tryy3 - 09-12-2014 I was thinking of using a seperator, only problem is that for a motd, the line would be really bad to read. I was playing around with the lxp but I never figured out a good way to make it parse the XML file to a Table so that didn't work either. Is there a reason why the cIniFile class doesn't have a function for arrays/tables? RE: INI Arrays - tigerw - 09-13-2014 The server has never needed to use it, I suppose. RE: INI Arrays - tryy3 - 09-13-2014 Is there any plans to add support for it? Could be useful for message configs and similiar? RE: INI Arrays - Seadragon91 - 09-13-2014 Hey, Does this fit to you? With GetNumValues() from cIniFile you can get the amount of values from a key, then you can foor loop over it. I use this nice idea in my skyblock plugin for the challenenges. Messages.ini Code: [motd]TestPlugin.lua
PLUGIN = nil
function Initialize(Plugin)
Plugin:SetName("TestPlugin")
Plugin:SetVersion(1)
PLUGIN = Plugin
local MessagesIni = cIniFile()
MessagesIni:ReadFile(PLUGIN:GetLocalDirectory() .. "/Messages.ini")
local amountMOTD = MessagesIni:GetNumValues("motd")
for i = 1, amountMOTD do
LOG(MessagesIni:GetValue("motd", i))
local motd = MessagesIni:GetValue("motd", i)
local amountLines = MessagesIni:GetNumValues(motd)
for line = 1, amountLines do
LOG(MessagesIni:GetValue(motd, line))
end
LOG("")
end
end
regards, Seadragon91 Edit: Renamed l to line RE: INI Arrays - tryy3 - 09-13-2014 Could work for the project I am working on, but would be nicer to have a real function for it. In case you have a lot of lines and you have to change multiple lines, you might forget to edit the number, then the for loop will fail. RE: INI Arrays - xoft - 09-13-2014 Seadragon91: just a small note, it's a bad idea to use "l" as the name for a variable, because of its visual similarity with "1". Those of us with a bit worse eyes will thank you for not doing it
|