diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-08-25 13:42:19 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-08-25 13:42:19 +0000 |
commit | a93e436b039fa86345759b9a29243fe09fb54bcf (patch) | |
tree | abf035468c0f2e1c11fa2cbd55b28cd632a21912 /src/mode.cpp | |
parent | 550c076c9abdcff0751ae10a5e4e66aff22db714 (diff) |
Add <options:cyclehosts> which allows a user to appear to have quit when their host changes, so that clients/bots can stay synched properly.
It is recommended this option always be on.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5017 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/mode.cpp')
-rw-r--r-- | src/mode.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mode.cpp b/src/mode.cpp index 8351ab2e0..5ae457b68 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -666,6 +666,31 @@ ModeHandler* ModeParser::FindPrefix(unsigned const char pfxletter) return NULL; } +std::string ModeParser::ModeString(userrec* user, chanrec* channel) +{ + std::string types; + std::string pars; + + for (unsigned char mode = 'A'; mode <= 'z'; mode++) + { + unsigned char pos = (mode-65) | MASK_CHANNEL; + ModeHandler* mh = modehandlers[pos]; + if ((mh) && (mh->GetNumParams(true)) && (mh->GetNumParams(false))) + { + ModePair ret; + ret = mh->ModeSet(NULL, user, channel, user->nick); + if (ret.first) + { + pars.append(" "); + pars.append(user->nick); + types.push_back(mh->GetModeChar()); + } + } + } + + return types+pars; +} + std::string ModeParser::ChanModes() { std::string type1; /* Listmodes EXCEPT those with a prefix */ |