Added message of the day and made it properly configurable using /#setting (not saved to config file yet)

This commit is contained in:
Perttu Ahola 2011-07-30 19:31:33 +03:00
parent 4b0c3e4357
commit 9b294ffa7a
5 changed files with 65 additions and 3 deletions

View File

@ -77,6 +77,7 @@ void set_default_settings()
g_settings.setDefault("screenshot_path", "."); g_settings.setDefault("screenshot_path", ".");
// Server stuff // Server stuff
g_settings.setDefault("motd", "<Message of the day (motd) not set>");
g_settings.setDefault("enable_experimental", "false"); g_settings.setDefault("enable_experimental", "false");
g_settings.setDefault("creative_mode", "false"); g_settings.setDefault("creative_mode", "false");
g_settings.setDefault("enable_damage", "true"); g_settings.setDefault("enable_damage", "true");

View File

@ -3196,9 +3196,14 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
line += L"Server: "; line += L"Server: ";
message = message.substr(commandprefix.size()); message = message.substr(commandprefix.size());
WStrfnd f1(message);
f1.next(L" ");
std::wstring paramstring = f1.next(L"");
ServerCommandContext *ctx = new ServerCommandContext( ServerCommandContext *ctx = new ServerCommandContext(
str_split(message, L' '), str_split(message, L' '),
paramstring,
this, this,
&m_env, &m_env,
player, player,
@ -4018,7 +4023,9 @@ std::wstring Server::getStatusString()
} }
os<<L"}"; os<<L"}";
if(((ServerMap*)(&m_env.getMap()))->isSavingEnabled() == false) if(((ServerMap*)(&m_env.getMap()))->isSavingEnabled() == false)
os<<" WARNING: Map saving is disabled."<<std::endl; os<<std::endl<<" WARNING: Map saving is disabled.";
if(g_settings.get("motd") != "")
os<<std::endl<<narrow_to_wide(g_settings.get("motd"));
return os.str(); return os.str();
} }

View File

@ -142,7 +142,8 @@ void cmd_setting(std::wostringstream &os,
return; return;
} }
std::string confline = wide_to_narrow(ctx->parms[1] + L" = " + ctx->parms[2]); std::string confline = wide_to_narrow(
ctx->parms[1] + L" = " + ctx->paramstring);
g_settings.parseConfigLine(confline); g_settings.parseConfigLine(confline);
os<< L"-!- Setting changed."; os<< L"-!- Setting changed.";
} }

View File

@ -29,6 +29,7 @@ struct ServerCommandContext
{ {
std::vector<std::wstring> parms; std::vector<std::wstring> parms;
std::wstring paramstring;
Server* server; Server* server;
ServerEnvironment *env; ServerEnvironment *env;
Player* player; Player* player;
@ -39,11 +40,13 @@ struct ServerCommandContext
ServerCommandContext( ServerCommandContext(
std::vector<std::wstring> parms, std::vector<std::wstring> parms,
std::wstring paramstring,
Server* server, Server* server,
ServerEnvironment *env, ServerEnvironment *env,
Player* player, Player* player,
u64 privs) u64 privs)
: parms(parms), server(server), env(env), player(player), privs(privs) : parms(parms), paramstring(paramstring),
server(server), env(env), player(player), privs(privs)
{ {
} }

View File

@ -74,6 +74,56 @@ public:
} }
}; };
class WStrfnd{
std::wstring tek;
unsigned int p;
public:
void start(std::wstring niinq){
tek = niinq;
p=0;
}
unsigned int where(){
return p;
}
void to(unsigned int i){
p = i;
}
std::wstring what(){
return tek;
}
std::wstring next(std::wstring plop){
//std::cout<<"tek=\""<<tek<<"\" plop=\""<<plop<<"\""<<std::endl;
size_t n;
std::wstring palautus;
if (p < tek.size())
{
//std::cout<<"\tp<tek.size()"<<std::endl;
if ((n = tek.find(plop, p)) == std::wstring::npos || plop == L"")
{
//std::cout<<"\t\tn == string::npos || plop == \"\""<<std::endl;
n = tek.size();
}
else
{
//std::cout<<"\t\tn != string::npos"<<std::endl;
}
palautus = tek.substr(p, n-p);
p = n + plop.length();
}
//else
//std::cout<<"\tp>=tek.size()"<<std::endl;
//std::cout<<"palautus=\""<<palautus<<"\""<<std::endl;
return palautus;
}
bool atend(){
if(p>=tek.size()) return true;
return false;
}
WStrfnd(std::wstring s){
start(s);
}
};
inline std::string trim(const std::string &s) inline std::string trim(const std::string &s)
{ {
std::string str = s; std::string str = s;