Added message of the day and made it properly configurable using /#setting (not saved to config file yet)
parent
4b0c3e4357
commit
9b294ffa7a
|
@ -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");
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.";
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
50
src/strfnd.h
50
src/strfnd.h
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue