-:C&C TA Chat Colorize:-

Let's change the nickname color (chat only) in dependence of the role in the alliance.

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name        -:C&C TA Chat Colorize:-
// @description Let's change the nickname color (chat only) in dependence of the role in the alliance.
// @namespace   http*://prodgame*.alliances.commandandconquer.com/*/index.aspx*
// @include     https://prodgame*.alliances.commandandconquer.com/*/index.aspx*
// @icon        http://i.imgur.com/0dweZMu.png
// @version     0.1.6
// @author      der_flake
// ==/UserScript==
'use strict';
(function ()
{
  var ta_chat_colorize_main = function ()
  {
    function ta_chat_initialize()
    {
      console.log('-:C&C TA Chat Colorize:- loaded');
      var config = {
        colors: [
          {
            name: 'Leader',
            color: '#ff7878'
          },
          {
            name: 'Second Commander',
            color: '#ca91d4'
          },
          {
            name: 'Officer',
            color: '#fdd94b'
          },
          {
            name: 'Veteran',
            color: '#4ec49f'
          },
          {
            name: 'Member',
            color: '#a5f25b'
          },
          {
            name: 'Newbe',
            color: '#a5f25b'
          },
          {
            name: 'Inactive',
            color: '#ababab'
          }
        ],
        append_alliance_name_limit: 15
      };
      var options = {
        colorize_names: true,
        colorize_comments: false,
        append_abbr: true
      };
      // module functions
      var mod = {
        colorize: function () {
          var css_colors = '';
          var role_colors = [
          ];
          var LibData = ClientLib.Data.MainData.GetInstance().get_Alliance();
          // get correct role id
          var alliance_roles = LibData.get_Roles().d;
          for (var akey in alliance_roles)
          {
            for (var ckey in config.colors)
            {
              if (config.colors[ckey].name == alliance_roles[akey].Name) {
                role_colors[alliance_roles[akey].Id] = config.colors[ckey].color;
              }
            }
          }
          // assign styles to the each player of the current alliance

          var players = LibData.get_MemberDataAsArray();
          for (var pkey in players)
          {
            var current_player = players[pkey];
            if (typeof role_colors[current_player.Role] != 'undefined')
            {
              if (options.colorize_comments) {
                css_colors += '[color="#a5f25b"] #CHAT_SENDER_' + current_player.Name + ',[color="#a5f25b"] #CHAT_SENDER_' + current_player.Name + ' + * {color: ' + role_colors[current_player.Role] + '}';
              } else {
                css_colors += '[color="#a5f25b"] #CHAT_SENDER_' + current_player.Name + ' {color: ' + role_colors[current_player.Role] + '}';
              }
            }
          }
          append_styles(css_colors);
        },
        /**
       * Append the alliance abbreviation to the player's name
       * @example der_flake -> #RoF der_flake
       */
        add_abbr: function () {
          //get top [append_alliance_name_limit] alliances by rating
          ClientLib.Net.CommunicationManager.GetInstance().SendSimpleCommand('RankingGetData', {
            firstIndex: 0,
            lastIndex: config.append_alliance_name_limit - 1,
            view: 1,
            rankingType: 0,
            sortColumn: 2,
            ascending: true
          }, phe.cnc.Util.createEventDelegate(ClientLib.Net.CommandResult, this, function (context, data) {
            if (data !== null)
            {
              for (var i = 0; i < data.a.length; i++)
              {
                var alliance_id = data.a[i]['a'];
                // get alliance players
                ClientLib.Net.CommunicationManager.GetInstance().SendSimpleCommand('GetPublicAllianceInfo', {
                  id: alliance_id
                }, phe.cnc.Util.createEventDelegate(ClientLib.Net.CommandResult, this, function (context, alliance_data) {
                  var alliance_shortname = alliance_data['a'],
                  alliance_players = alliance_data['m'],
                  css_names = [
                  ];
                  for (var akey in alliance_players)
                  {
                    css_names.push('[color="#4becff"] #CHAT_SENDER_' + alliance_players[akey]['n'] + ':after');
                  }
                  var temp_css = css_names.join(',') + ' {content: " #' + alliance_shortname + '";opacity: .6;font-size: 11px;}';
                  append_styles(temp_css);
                }), null);
              }
            }
          }), null);
        }
      }
      if (options.colorize_names) {
        mod.colorize();
      }
      if (options.append_abbr)
      {
        mod.add_abbr();
      }
    }
    function append_styles(css) {
      document.getElementsByTagName('style') [0].innerHTML += css;
    }
    function tachat_checkIfLoaded() {
      try {
        if (typeof qx != 'undefined') {
          if (qx.core.Init.getApplication() && qx.core.Init.getApplication().getMenuBar()) {
            // @TODO try to find other method to make ClientLib "WORKABLE"
            window.setTimeout(ta_chat_initialize, 15000);
          } else
          window.setTimeout(tachat_checkIfLoaded, 1000);
        } else {
          window.setTimeout(tachat_checkIfLoaded, 1000);
        }
      } catch (e) {
        console.log('tachat_checkIfLoaded: ', e);
      }
    }
    if (/commandandconquer\.com/i.test(document.domain)) {
      window.setTimeout(tachat_checkIfLoaded, 1000);
    }
  }
  var tachatScript = document.createElement('script');
  tachatScript.innerHTML = '(' + ta_chat_colorize_main.toString() + ')();';
  tachatScript.type = 'text/javascript';
  if (/commandandconquer\.com/i.test(document.domain)) {
    document.getElementsByTagName('head') [0].appendChild(tachatScript);
  }
}) ();