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++] World Chat Empty[C++] World Chat

more_horiz
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();
}


[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]



Créditos: Ghostcrawler336 e Parranoia.

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

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

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

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

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

more_horiz
Ganho +Rep, obrigado por compartilha  [C++] World Chat 351549032

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

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

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

more_horiz
Coloquei tudo certinho, não deu nenhum erro, porem .chat não funciona...  [C++] World Chat 2066584637



EDIT---

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

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

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