BGames
Olá visitante! Seja bem vindo á BGames!

Para ter total acesso ao nosso fórum é preciso que você se registre.

Registre-se Aqui!


PARA VER LINKS E IMAGENS É PRECISO SE REGISTRAR!


BGames
Olá visitante! Seja bem vindo á BGames!

Para ter total acesso ao nosso fórum é preciso que você se registre.

Registre-se Aqui!


PARA VER LINKS E IMAGENS É PRECISO SE REGISTRAR!

BGames
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

BGamesEntrar

Fórum de Desenvolvimento de Jogos e Programação


description[C++]Chat Personalizado Empty[C++]Chat Personalizado

more_horiz
Eu percebi que havia algumas pessoas que poderiam querer algo assim para o seu servidor, então eu decidi compartilhá-lo aqui. Mostra se o jogador está falando horda ou aliança ou também irá exibir se eles são um Mod / GM / Admin. Basta digitar: .chat e sua mensagem depois. Testado e trabalhando em 3.3.5a TrinityCore. O roteiro foi despojado de algum código redundante e agora apenas lida com os níveis de segurança padrão.

Jogador: [Horde] ou [Aliança]
Moderador Trial / GM: [Mod]
Gamemaster: [GM]
Administrador: [Admin]

Alterações recentes:
Adicionado uma verificação para ver se o jogador é silenciado e também para verificar se a mensagem contém apenas caracteres vazios (espaços)
Adicionado "Links nome" para o bate-papo para que os jogadores podem clicar sobre os nomes e ser capaz de sussurrar-los.
Adicionado cores de classe para os nomes
Foi adicionada uma pequena configuração de modo que as mensagens são apenas transmitidos aos da mesma facção. Se você deseja que este seja ativado, mude FACTION_SPECIFIC a 1 em vez de 0

Código:

#include "ScriptPCH.h"
#include "Chat.h"

#define FACTION_SPECIFIC 0

std::string GetNameLink(Player* player)
{
   std::string name = player->GetName();
   std::string color;
   switch(player->getClass())
   {
   case CLASS_DEATH_KNIGHT:
      color = "|cffC41F3B";
      break;
   case CLASS_DRUID:
      color = "|cffFF7D0A";
      break;
   case CLASS_HUNTER:
      color = "|cffABD473";
      break;
   case CLASS_MAGE:
      color = "|cff69CCF0";
      break;
   case CLASS_PALADIN:
      color = "|cffF58CBA";
      break;
   case CLASS_PRIEST:
      color = "|cffFFFFFF";
      break;
   case CLASS_ROGUE:
      color = "|cffFFF569";
      break;
   case CLASS_SHAMAN:
      color = "|cff0070DE";
      break;
   case CLASS_WARLOCK:
      color = "|cff9482C9";
      break;
   case CLASS_WARRIOR:
      color = "|cffC79C6E";
      break;
   }
   return "|Hplayer:"+name+"|h|cffFFFFFF["+color+name+"|cffFFFFFF]|h|r";
}

class cs_world_chat : public CommandScript
{
   public:
      cs_world_chat() : CommandScript("cs_world_chat"){}

   ChatCommand * GetCommands() const
   {
      static ChatCommand WorldChatCommandTable[] =
      {
         {"chat",   SEC_PLAYER,      true,      &HandleWorldChatCommand,   "", NULL},
         {NULL,      0,            false,      NULL,                  "", NULL}
      };

      return WorldChatCommandTable;
   }

   static bool HandleWorldChatCommand(ChatHandler * handler, const char * args)
   {
      if (!handler->GetSession()->GetPlayer()->CanSpeak())
         return false;
      std::string temp = args;

      if (!args || temp.find_first_not_of(' ') == std::string::npos)
         return false;

      std::string msg = "";
      Player * player = handler->GetSession()->GetPlayer();

      switch(player->GetSession()->GetSecurity())
      {
         // Player
         case SEC_PLAYER:
            if (player->GetTeam() == ALLIANCE)
            {
               msg += "|cff0000ff[Alliance] ";
               msg += GetNameLink(player);
               msg += " |cfffaeb00";
            }

            else
            {
               msg += "|cffff0000[Horde] ";
               msg += GetNameLink(player);
               msg += " |cfffaeb00";
            }
            break;
         // Moderator/trial
         case SEC_MODERATOR:
            msg += "|cffff8a00[Mod] ";
            msg += GetNameLink(player);
            msg += " |cfffaeb00";
            break;
         // GM
         case SEC_GAMEMASTER:
            msg += "|cff00ffff[GM] ";
            msg += GetNameLink(player);
            msg += " |cfffaeb00";
            break;
         // Admin
         case SEC_ADMINISTRATOR:
            msg += "|cfffa9900[Admin] ";
            msg += GetNameLink(player);
            msg += " |cfffaeb00";
            break;

      }
         
      msg += args;
      if (FACTION_SPECIFIC)
      {
         SessionMap sessions = sWorld->GetAllSessions();
         for (SessionMap::iterator itr = sessions.begin(); itr != sessions.end(); ++itr)
            if (Player* plr = itr->second->GetPlayer())
               if (plr->GetTeam() == player->GetTeam())
                  sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), plr);
      }
      else
         sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), 0);   

      return true;
   }
};

void AddSC_cs_world_chat()
{
   new cs_world_chat();
}


pastebin

Créditos: Parranoia e Erictemponi

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
É impressao minha ou ja tem isso postado aquui?

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
Aparece essas tag's antes dos nomes ?

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
Sijm, aparece as Tags e a cor da letra a cada tipo de player

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
No chat ingame?Pode mandar css

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
Manow, segue o que se diz no inicio do tópico que da certo, css é pra site essas coisas, isso ae é pra wow

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
Quando falei CSS queria dizer no Print screen

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
otimo c++ eu utilizo ele em meu servidor porem ele tem um pequeno problema
Nao tem mute :S

jah passei alguns sufoco com muleque divulgando no .chat

Sera que seria possivel adicionar mute nele?
Eu encontrei um na ac web que dizia ter
mas nao tem tbm! :S +rep

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
Adiciona o Mute automático no worldserver.conf
que ae se ele falar de mais em qualquer tipo de chat? say, yell, party, battleground, world, global, etc.
Ele toma mute em qualquer um

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
se desejar, esse tem mute.
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

até +

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
Alguem pode me mandar um print screen de como fica ?

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
Amanha irei testar [C++]Chat Personalizado 3666372071 obg por compartilhar

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
Ola,
Aconselho a utilizar este [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

description[C++]Chat Personalizado EmptyRe: [C++]Chat Personalizado

more_horiz
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder