If you are interested in documenting your server data without the use of WebCP, one approach might be to convert the pub data to an CSV file and import it into Google Sheets.
I created a system to automatically convert the pub files into CSV files each time the server is loaded and on $repub.
Tutorial below:
In one of the config ini files, add the following:
## CSVSaveECF, CSVSaveEIF, CSVSaveESF, CSVSaveENF (string)
# Paths to save pub files in CSV format.
# If path is not empty, it will save the corresponding pub file to a comma-separated values (CSV) file.
# This action is performed every server boot and $repub command.
# This may be useful for documenting the data files into a spreadsheet format.
# You can convert CSV files to Google Sheets: https://www.google.com/sheets/about/
CSVSaveECF = ./data/pub/dat001.ecf.csv
CSVSaveEIF = ./data/pub/dat001.eif.csv
CSVSaveESF = ./data/pub/dsl001.esf.csv
CSVSaveENF = ./data/pub/dtn001.enf.csv
## CSVShowLog (bool)
# Will output a successful message to the console or output file, if CSV data was saved.
# See: CSVSaveECF, CSVSaveEIF, CSVSaveESF, CSVSaveENF (string)
CSVShowLog = yes
In eoserv_config.cpp "
eoserv_config_validate_config()" method, add the following:
eoserv_config_default(config, "CSVSaveECF", "");
eoserv_config_default(config, "CSVSaveEIF", "");
eoserv_config_default(config, "CSVSaveESF", "");
eoserv_config_default(config, "CSVSaveENF", "");
eoserv_config_default(config, "CSVShowLog", false);
In world.cpp replace both occurrences of the following: (There's 2 occurences)
this->eif->Read(this->config["EIF"]);
this->enf->Read(this->config["ENF"]);
this->esf->Read(this->config["ESF"]);
this->ecf->Read(this->config["ECF"]);
To:
this->eif->Read(this->config["EIF"], this->config);
this->enf->Read(this->config["ENF"], this->config);
this->esf->Read(this->config["ESF"], this->config);
this->ecf->Read(this->config["ECF"], this->config);
In eodata.hpp, add:
#include "config.hpp"
Find: (around line #186)
EIF(const std::string& filename) { Read(filename.c_str()); }
void Read(const std::string& filename);
Replace with:
EIF(const std::string& filename, Config eoserv_config) { Read(filename.c_str(), eoserv_config); }
void Read(const std::string& filename, Config eoserv_config);
Find: (around line #260)
ENF(const std::string& filename) { Read(filename.c_str()); }
void Read(const std::string& filename);
Replace:
ENF(const std::string& filename, Config eoserv_config) { Read(filename.c_str(), eoserv_config); }
void Read(const std::string& filename, Config eoserv_config);
Find: (around line #336)
ESF(const std::string& filename) { Read(filename.c_str()); }
void Read(const std::string& filename);
Replace:
ESF(const std::string& filename, Config eoserv_config) { Read(filename.c_str(), eoserv_config); }
void Read(const std::string& filename, Config eoserv_config);
Find: (around line #381)
ECF(const std::string& filename) { Read(filename.c_str()); }
void Read(const std::string& filename);
Replace:
ECF(const std::string& filename, Config eoserv_config) { Read(filename.c_str(), eoserv_config); }
void Read(const std::string& filename, Config eoserv_config);
In eodata.cpp:
Add this method:
static std::FILE* eodata_file_open_w(const std::string filename) {
return !filename.empty() ? std::fopen(filename.c_str(), "w") : NULL;
}
Replace "EIF::Read()" method with:
http://pastebin.com/25N30GRw
Replace "ENF::Read()" method with:
http://pastebin.com/4XFQ6HgN
Replace "ESF::Read()" method with:
http://pastebin.com/whUqMN7j
Replace "ECF::Read()" method with:
http://pastebin.com/qn9DXekA
That's it. You can now set the location it saves the csv files. Or leave the values blank to disable them.
Example:
CSVSaveECF = ./data/pub/dat001.ecf.csv
CSVSaveEIF = ./data/pub/dat001.eif.csv
CSVSaveESF = ./data/pub/dsl001.esf.csv
CSVSaveENF = ./data/pub/dtn001.enf.csv
You can also disable the logging by setting the following to false:
CSVShowLog = no
Example of what the CSV looks like when imported to Google Sheets:
---
Just your friendly neighborhood Programmer-Man!