-:C&C TA Chat Colorize:-

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

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

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