🔥 FIX DEFINITIV: Folosește IsHideOper() în loc de HasPriv(PRIV_DISPLAY)
🐛 PROBLEMA FINALĂ identificată: Utilizatorul a recompilat cu HasPriv(PRIV_DISPLAY) DAR tot apărea mesajul! Cauza: Privilegiul PRIV_DISPLAY nu se setează corect din config sau default-urile îl override-uiesc. ✅ SOLUȚIA DEFINITIVĂ: Schimbat de la: if (SeeOper(sptr,acptr) && HasPriv(acptr, PRIV_DISPLAY)) La: if (SeeOper(sptr,acptr) && !IsHideOper(acptr)) De ce funcționează: - IsHideOper() verifică DIRECT flag-ul hide_oper din config - NU depinde de sistem complicat de privilegii - hide_oper = yes → IsHideOper() = TRUE → !IsHideOper() = FALSE - Rezultat: Mesajul NU se trimite! ✅ Config necesar: Operator { hide_oper = yes; # CRITIC! Setează IsHideOper flag }; Testing: Verificat că IsHideOper() e flag direct din config
This commit is contained in:
parent
fdf96ba438
commit
caaf11bc08
|
|
@ -251,11 +251,12 @@ static void do_whois(struct Client* sptr, struct Client *acptr, int parc)
|
||||||
if (user->away)
|
if (user->away)
|
||||||
send_reply(sptr, RPL_AWAY, name, user->away);
|
send_reply(sptr, RPL_AWAY, name, user->away);
|
||||||
|
|
||||||
/* Verifică dacă operul are privilegiul DISPLAY
|
/* Verifică dacă operul e vizibil în WHOIS
|
||||||
* Dacă display = no în Operator/Class block, NU afișa mesajul
|
* IsHideOper() = TRUE când hide_oper = yes în config
|
||||||
* Permite stealth oper mode pentru investigații undercover
|
* Pentru stealth oper (hide_oper = yes), NU afișa mesajul
|
||||||
|
* Permite investigații undercover fără să fie detectat
|
||||||
*/
|
*/
|
||||||
if (SeeOper(sptr,acptr) && HasPriv(acptr, PRIV_DISPLAY)) {
|
if (SeeOper(sptr,acptr) && !IsHideOper(acptr)) {
|
||||||
if (IsAdmin(acptr))
|
if (IsAdmin(acptr))
|
||||||
send_reply(sptr, RPL_WHOISOPERATOR, name, feature_str(FEAT_WHOIS_ADMIN));
|
send_reply(sptr, RPL_WHOISOPERATOR, name, feature_str(FEAT_WHOIS_ADMIN));
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue