Soluzioni ai vostri problemi informatici

[C++] Modifica memo Anope

Richieste per scripts, codici, software e quant'altro saranno pubblicate in questa sezione del forum. Hai una richiesta? Pubblicala qui!
Signor Dragone2, buonasera.
Come da titolo Le vorrei chiedere, se possibile, una modifica al sistema dei memo di Anope.
In pratica attualmente quando si invia un memo viene preso come mittente il nick attuale dell'utente che invia, qualunque esso sia:
-] 18:29:06 [- * CaiusMaximus is now known as Ugo
-] 18:29:12 [- -MemoServ- Memo inviato a Dragone2.
-] 18:29:20 [- <Dragone2> -[18:29:09]- Memo 2 da Ugo (Mar 16 18:29:15 2015 CET (3 secondi ago)).
Ciò che servirebbe a me è far sì che venga preso, anziché il nick, il "display" dell'utente in questione, in modo da poterlo sempre associare ad un account (nel mio caso, ad esempio, sarebbe sempre "Caius_Maximus", indipendentemente dal mio nick al momento dell'invio), ottenendo una cosa del genere:
-] 18:29:06 [- * CaiusMaximus is now known as Ugo
-] 18:29:12 [- -MemoServ- Memo inviato a Dragone2.
-] 18:29:20 [- <Dragone2> -[18:29:09]- Memo 2 da Caius_Maximus (Mar 16 18:29:15 2015 CET (3 secondi ago)).
Confido nelle Sue capacità e Le assicuro che sarà adeguatamente ricompensato per il lavoro

Se ho ben capito dovrebbe bastare una piccolissima modifica al file: ms_send.cpp.
Il codice da inserire è il seguente:

Codice: Seleziona tutto


/* MemoServ core functions
  *
  * (C) 2003-2014 Anope Team
  * Contact us at team@anope.org
  *
  * Please read COPYING and README for further details.
  *
  * Based on the original code of Epona by Lara.
  * Based on the original code of Services by Andy Church.
  * Edit by Dragone2 - www.risposteinformatiche.it
  */
 
 #include "module.h"
 
 namespace
 {
  ServiceReference<MemoServService> memoserv("MemoServService", "MemoServ");
 }
 
 class CommandMSSend : public Command
 {
  public:
  CommandMSSend(Module *creator) : Command(creator, "memoserv/send", 2, 2)
  {
  this->SetDesc(_("Send a memo to a nick or channel"));
  this->SetSyntax(_("{\037nick\037 | \037channel\037} \037memo-text\037"));
  }
 
  void Execute(CommandSource &source, const std::vector<Anope::string> &params) anope_override
  {
  if (!memoserv)
  return;
 
  const Anope::string &nick = params[0];
  const Anope::string &text = params[1];
 
  if (Anope::ReadOnly && !source.IsOper())
  {
  source.Reply(MEMO_SEND_DISABLED);
  return;
  }
 
  MemoServService::MemoResult result = memoserv->Send(source.GetAccount(), nick, text);
  if (result == MemoServService::MEMO_SUCCESS)
  source.Reply(_("Memo sent to \002%s\002."), nick.c_str());
  else if (result == MemoServService::MEMO_INVALID_TARGET)
  source.Reply(_("\002%s\002 is not a registered unforbidden nick or channel."), nick.c_str());
  else if (result == MemoServService::MEMO_TOO_FAST)
  source.Reply(_("Please wait %d seconds before using the %s command again."), Config->GetModule("memoserv")->Get<time_t>("senddelay"), source.command.c_str());
  else if (result == MemoServService::MEMO_TARGET_FULL)
  source.Reply(_("Sorry, %s currently has too many memos and cannot receive more."), nick.c_str());
  }
 
  bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override
  {
  this->SendSyntax(source);
  source.Reply(" ");
  source.Reply(_("Sends the named \037nick\037 or \037channel\037 a memo containing\n"
  "\037memo-text\037. When sending to a nickname, the recipient will\n"
  "receive a notice that he/she has a new memo. The target\n"
  "nickname/channel must be registered."));
  return true;
  }
 };
 
 class MSSend : public Module
 {
  CommandMSSend commandmssend;
 
  public:
  MSSend(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR),
  commandmssend(this)
  {
 
  if (!memoserv)
  throw ModuleException("No MemoServ!");
  }
 };
 
 MODULE_INIT(MSSend)