Bgames
Olá visitante! Seja bem vindo ao nosso fórum!

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

Cadastre-se Aqui!


PARA VER LINKS E IMAGENS É PRECISO SE REGISTRAR!

[C++] World Chat

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[C++] World Chat

Mensagem por Erictemponi em Dom 13 Abr 2014 - 13:54

Script de Chat Global, você fala e todos escutam.
Ao usar o comando, o mesmo retornará assim:
Player: [Horde] or [Alliance]
Moderator/Trial GM: [Mod]
Gamemaster: [GM]
Administrator: [Admin]

1º: Abra o arquivo "RBAC.h" que se encontra em "D:\Trinity\src\server\game\Accounts", vá até a linha 683 e adicione o seguinte código:
Código:
RBAC_PERM_COMMAND_WORLD_CHAT                             = 1009,


Salve e feche o arquivo.
2º: Abra o SQLyog/Navicat, clique no Banco de Dados "auth" e execute o seguinte código:
Código:
INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
(1009, 'Command: world chat');

INSERT INTO `rbac_linked_permissions` (`id`,`linkedId`) VALUES
(195, 1009);

3º: Agora é só adicionar o Script C++ ao seu Servidor e Recompilar.

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",        rbac::RBAC_PERM_COMMAND_WORLD_CHAT,             true,          

&HandleWorldChatCommand,        "", NULL},
                        {"c",   rbac::RBAC_PERM_COMMAND_WORLD_CHAT,             true,           &HandleWorldChatCommand,   

    "", NULL},
                        {"world",       rbac::RBAC_PERM_COMMAND_WORLD_CHAT,             true,          

&HandleWorldChatCommand,        "", NULL},
                        {"w",   rbac::RBAC_PERM_COMMAND_WORLD_CHAT,             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();
}

[Você precisa estar registrado e conectado para ver esta imagem.]



Créditos: Ghostcrawler336 e Parranoia.

Erictemponi


Mensagens : 1825
Pontos : 7296
Evolução : 2


Ver perfil do usuário http://www.fury-share.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: [C++] World Chat

Mensagem por killpo4 em Ter 29 Abr 2014 - 3:08

Tem que apaga a RBAC_PERM_MAIBOX  que esta na linha 683 ou deixa la e coloca ele na linha 83 ?

killpo4


Mensagens : 8
Pontos : 45

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [C++] World Chat

Mensagem por Erictemponi em Ter 29 Abr 2014 - 6:53

Se ele for o ultimo, dá um Enter e adiciona na linha de baixo.

Erictemponi


Mensagens : 1825
Pontos : 7296
Evolução : 2


Ver perfil do usuário http://www.fury-share.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: [C++] World Chat

Mensagem por tudoloko em Sex 6 Jun 2014 - 20:15

Ganho +Rep, obrigado por compartilha  

tudoloko


Mensagens : 85
Pontos : 448

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [C++] World Chat

Mensagem por mestredosmagos em Qua 9 Jul 2014 - 23:23

Vlw aqui deu certo e .chat world  fuciana  de boa  aqui  vlw  Eric.
Ganho +Rep

mestredosmagos


Mensagens : 154
Pontos : 363

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [C++] World Chat

Mensagem por ahbots em Ter 23 Set 2014 - 16:18

Coloquei tudo certinho, não deu nenhum erro, porem .chat não funciona... 



EDIT---

Está funcionando sim, porem nao tem que colocar na linha 683, é no final daqueles numeros lá etc..

ahbots


Mensagens : 22
Pontos : 33

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [C++] World Chat

Mensagem por Conteúdo patrocinado Hoje à(s) 4:38


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum