# "LOC_TARGET" = "somenick";
# "CHMODE_A_ENABLE" = "TRUE";
# "CHMODE_A_TARGET" = "ChanServ";
+# "CHMODE_A_NOSET" = "TRUE"; # Mode is not settable by normal users (only services chan set it)
# "CHMODE_F_ENABLE" = "TRUE";
# "UNKNOWN_CMD_ENABLE" = "TRUE";
# "UNKNOWN_CMD_TARGET" = "OpServ";
FEAT_UNKNOWN_CMD_TARGET,
FEAT_CHMODE_A_ENABLE,
FEAT_CHMODE_A_TARGET,
+ FEAT_CHMODE_A_NOSET,
FEAT_CHMODE_F_ENABLE,
FEAT_HALFOP,
return;
}
+ if(feature_bool(FEAT_CHMODE_A_NOSET) && !(state->flags & MODE_PARSE_FORCE)) /* mode can'T be set. */
+ return;
+
if (!(state->flags & MODE_PARSE_WIPEOUT) &&
(!t_access || t_access == state->chptr->mode.access))
return;
F_S(UNKNOWN_CMD_TARGET, FEAT_NULL, 0, 0),
F_B(CHMODE_A_ENABLE, 0, 0, 0),
F_S(CHMODE_A_TARGET, FEAT_NULL, 0, 0),
+ F_B(CHMODE_A_NOSET, 0, 0, 0),
F_B(CHMODE_F_ENABLE, 0, 0, 0),
F_B(HALFOP, 0, 0, 0),
override = 1;
}
- if(!err && !override && !IsInvited(sptr, chptr) && chptr->mode.access && chptr->mode.access > 0 && chptr->mode.access < 500 && feature_bool(FEAT_CHMODE_A_ENABLE)) {
+ if(!err && !override && !IsInvited(sptr, chptr) && chptr->mode.access && chptr->mode.access > 0 && chptr->mode.access <= 500 && feature_bool(FEAT_CHMODE_A_ENABLE)) {
//We have to check the users channel access...
struct Client *acptr;
if(feature_str(FEAT_CHMODE_A_TARGET) && (acptr = FindUser(feature_str(FEAT_CHMODE_A_TARGET))) && IsNetServ(acptr) && IsService(cli_user(acptr)->server)) {