Since mIRC doesn't currently support defining named-palette-entries via /color for the new extended palette, I wrote the following to polyfill the behavior until it does. The polyfill's functionality is the same as the native /color and $color() with the exception that the identifier MUST be called as $/color():
Code:
on *:UNLOAD:{
  if ($hget($table)) {
    hfree $table
  }
  if ($isfile($fname)) {
    remove $qt($fname)
  }
}

alias -l table return colorex
alias -l fname return $scriptdir $+ $table $+ .dat
alias -l names return (action|ctcp|highlight|info|info2|invite|join|kick|mode|nick|normal|notice|notify|other|own|part|quit|topic|wallops|whois)(?: text)?

;; /color
;; $/color()
;; Behavior is the same as native /color & $color but supports the extended color palette
alias color {

  ;; if the extended colorpalette table does exist, create it
  if (!$hget($table)) {
    hmake $table 10
    if ($isfile($fname)) {
      hload $table $qt($fname)
    }
  }
  
  
  ;; if called as an identifier
  if ($isid) {
  
    ;; if the entry exists in the table, return the value
    if ($0 == 1 && $hget($fname, $1) !== $Null) {
      return $v1
    }
    
    
    ;; otherwise pass the parameters to the native $color() identifier and return the result
    var %x = 0, %call
    while (%x < $0) {
      inc %x
      %call = $addtok(%call, $ $+ %x, 44)
    }
    %call = $!~color( $+ %call $+ ) $+ $iif($prop !== $null, . $+ $prop)
    return $( %call ,2)
  }

  ;; if called as a command
  else {
    var %pattern = /^ $+ $names 0*(\d?\d)(?<!99)$/i  
    var %switches
 
    ;; remove switches from parameters
    if (-* iswm $1) {
      %switches = $1
      tokenize 32 $2-
    }

    ;; /color -l
    ;; reload the hashtable from file
    if (l isincs $1 && $isfile($fname)) {
      hload $table $qt($fname)
    }

    ;; if called as /color name index
    if (!%switches && $regex($1-, %pattern)) {
      var %name = $lower($regml(1))
      var %idx = $regml(2)

      ;; the index is in the extended palette store it in the table
      if (%idx > 15) {
        hadd $table %name %idx
        hsave $table $qt($fname)
      }

      ;; otherwise
      else {
      
        ;; remove the named entry from the table
        if ($hget($table, %name) != $null) {
          hdel $table %name
          hsave $table $qt($fname)
        }
        
        ;; call the native /color command
        !color %name %index
      }
    }

    ;; For all other calls, use mIRC's native /color
    else {
      !color %switches $1-
    }
  }
}


#echooverride off
alias echo {
  if ($isid) {
    return
  }
  
  ;; If the extended color table hasn't been loaded
  ;; create the hashtable and load the palette if it exists
  if (!$hget($table)) {
    hmake $table 10
    if ($isfile($fname)) {
      hload $table $qt($fname)
    }
  }
  
  ;; $regml(1) = switches
  ;; $regml(2) = double quotes or null
  ;; $regml(3) = color name
  ;; $regml(4) = rest of /echo parameters
  var %pattern = /^(?:\d+ )?(-[^c]*c[^c]*)("?) $+ $names $+ \2 (.*)$/
  
  ;; intercept '/echo -c color_name ...' and translate it to '/echo color_index ...'
  ;; consider not including switches if the switches parameter is reduced to - 
  if ($regex(namedcolor, $1-, %pattern) && $hget($table, $regml(namedcolor, 3)) !== $null) {
    !echo $v1 $removexcs($regml(namedcolor, 1), c) $regml(namedcolor, 4)
  }
  
  ;; Otherwise, pass the parameters as-is to the native echo command
  else {
    !echo $1-
  }
}
#echooverride end


If you make use of '/echo -c' you can use the following to enable an /echo override that will translate calls for named-items to work with the extended palette. The drawback of using the override is if you change the named-item's color index, it will not update pre-existing /echo'ed lines that made use of the named-item:
Code:
/enable #echooverride

Last edited by FroggieDaFrog; 11/01/18 12:01 PM.

I am SReject
My Stuff