mIRC Homepage
Hey guys,

I am new to mirc scripting and need some help. I am trying to create a very basic on input script so it shows a particular way in the chat window. I read some stuff and was able to achieve that, but for some reason I can't get the Nick Colors to stick in a chat window. As soon as I use my code below the nick colors work in the listview, but not in the chat window. So I tried to apply color myself...the problem is how do I make it so that when its $me...it shows up as "Green" ?

Any ideas? My main goal is/was to put some color brackets in the chat and do something like "[@ Nick]" where "@,+" etc will be in appropriate color and "Nick" will be a color I decide (same for all modes) except me ($me) always in green. Also, I have no idea how to add a space between @ and nick.

Would really appreciate any and all help.

Thank you

My code so far:

;******************************************************

on *:INPUT:*: {
if ($left($1,1) != /) {
var %n = $iif($me !isreg $chan,$left($nick($chan,$me).pnick,1),$chr(240))
haltdef
echo -tm $chan $+(3<,$chr(2),$chr(3),$replace(%n,@,4@,&,4&,%,4%,~,4~,+,5+,$chr(240),15),$nick,$chr(2),$chr(3),3>) $1-
.msg $chan $1-
}
}

on ^*:TEXT:*:#: {
if ($nick !ison $chan) {
haltdef
echo -tm $chan $+(3<,$chr(3),10,$chr(2),$nick,$chr(3),$chr(2),3>) $1-
}
else {
var %n = $iif($nick !isreg $chan,$left($nick($chan,$nick).pnick,1),$chr(240))
haltdef
echo -tm $chan $+(3<,$chr(2),$chr(3),$replace(%n,@,4@,&,4&,%,14%,~,4~,+,5+,$chr(240),15),$nick,$chr(2),$chr(3),3>) $1-
}
}

;******************************************************

Code:

on *:INPUT:*: {
  if ($left($1,1) != /) {
    haltdef
    if $active ischan {
      ; active window is channel window... do something with @%~+ stuff, etc

      var %n = $iif($me !isreg $chan,$left($nick($chan,$me).pnick,1),$chr(240))
      var %echo.text = $+(3<,$chr(2),$chr(3),$+($replace(%n,@,4@,&,4&,%,14%,~,4~,+,5+,$chr(240),15),$chr(32),9),$me,$chr(2),$chr(3),3>) $1-
    }
    else {
      ; active window is private chat window... just make me green

      var %echo.text = $+(3<,$me,>) $1-
    }  
    echo -tm $active %echo.text 
    .msg $active $1-
  }
}

on ^*:TEXT:*:*: {
  haltdef
  if !$chan {
    ; text is not #channel text.. echo to $nick 

    echo -tm $nick $+(3<,$chr(3),10,$chr(2),$nick,$chr(3),$chr(2),3>) $1-
  }
  else {
    ; so text is #channel text.. echo to $chan

    var %n = $iif($nick !isreg $chan,$left($nick($chan,$nick).pnick,1),$chr(240)) 
    echo -tm $chan $+(3<,$chr(2),$chr(3),$+($replace(%n,@,4@,&,4&,%,14%,~,4~,+,5+,$chr(240),15),$chr(32),15),$nick,$chr(2),$chr(3),3>) $1-
  }
}


Thank you so very much for responding and with the code...It worked, but had one error so to speak. When "@,+ etc" it worked PERFECTLY <@ nick>, but when it was just a normal user it showed a space before nick < nick>. I made the changes below and it works like a charm. Thank so very much again for showing me how to do it right.

I do have one additional question...Let's say you are in a moderated chatroom and you are a normal user...if you try to type something it gives you a error "Cannot send to channel (+m)". How can I assign a color to that? I have tried changing colors, but none of them associates to that one event. Would appreciate your insight on this. Thanks

Here's my version of your code:

Code:
on *:INPUT:*: {
  if ($left($1,1) != /) {
    haltdef
    if $active ischan {
      ; active window is channel window... do something with @%~+ stuff, etc

      var %n = $iif($me !isreg $chan,$left($nick($chan,$me).pnick,1) $chr(240))
      ;ORIGINAL var %n = $iif($me !isreg $chan,$left($nick($chan,$me).pnick,1),$chr(240))

      var %echo.text = $+(3<,$chr(2),$chr(3),$+($replace(%n,@,4@,&,4&,%,14%,~,4~,+,5+,$chr(240),),7),$me,$chr(2),$chr(3),3>) $1-
      ;ORIGINAL var %echo.text = $+(3<,$chr(2),$chr(3),$+($replace(%n,@,4@,&,4&,%,14%,~,4~,+,5+,$chr(240),15),$chr(32),9),$me,$chr(2),$chr(3),3>) $1-
    }
    else {
      ; active window is private chat window... just make me green

      var %echo.text = $+(3<,$me,3>) $1-
    }  
    echo -tm $active %echo.text 
    .msg $active $1-
  }
}

on ^*:TEXT:*:*: {
  haltdef
  if !$chan {
    ; text is not #channel text.. echo to $nick 

    echo -tm $nick $+(3<,$chr(3),15,$chr(2),, $nick,,$chr(3),$chr(2),3>) $1-
    ;ORIGINAL echo -tm $nick $+(3<,$chr(3),10,$chr(2),$nick,$chr(3),$chr(2),3>) $1-
  }
  else {
    ; so text is #channel text.. echo to $chan

    var %n = $iif($nick !isreg $chan,$left($nick($chan,$nick).pnick,1) $chr(240))
    ;ORIGINAL var %n = $iif($nick !isreg $chan,$left($nick($chan,$nick).pnick,1),$chr(240)) 

    echo -tm $chan $+(3<,$chr(2),$chr(3),$+($replace(%n,@,4@,&,4&,%,14%,~,4~,+,5+,$chr(240),),15),$nick,$chr(2),$chr(3),3>) $1-
    ;ORIGINAL echo -tm $chan $+(3<,$chr(2),$chr(3),$+($replace(%n,@,4@,&,4&,%,14%,~,4~,+,5+,$chr(240),15),$chr(32),15),$nick,$chr(2),$chr(3),3>) $1- 
  }
}
Open a debug window with /debug @debug

This will let you see the raw numeric/name which you can catch and replace as normal with

raw 123:*:...

Assuming mIRC even sends the message. Otherwise you could check if the channel is +m before echoing
all I got was

Code:
-> irc.network.net PRIVMSG #channel :d
<- :irc.network.net 404 nick #channel :Cannot send to channel (+m)


Also, how can I have my nick in a different color when someone says it in the channel? I am using the code above.

Thanks!
Originally Posted By: r0ot
I do have one additional question...Let's say you are in a moderated chatroom and you are a normal user...if you try to type something it gives you a error "Cannot send to channel (+m)". How can I assign a color to that?

You can use raw event. For detail read /help raw event

Code:
raw 404:*:{
  var %chan $2, %text $3-
  echo -tm %chan %text
  haltdef
}

edit: color %text as you wish.

You guys are freaking awesome!

Let me ask you too Blessing...how can I have my nick in a different color when someone says it in the channel?

Thanks dude.
You can use $replace($1-,$me,colored $me) to highlight only your nickname or if ($me isin $1-) to highlight whole text

Code:
on ^*:TEXT:*:*: {
  haltdef
  if !$chan {

    ...code...

  }
  else {
    ; so text is #channel text.. echo to $chan

    var %n = $iif($nick !isreg $chan,$left($nick($chan,$nick).pnick,1) $chr(240))

    ; highlight whole text
    if $me isin $1- { var %text = $+(10,$1-,) }

    ; highlight only yournick
    var %text = $replace($1-,$me,$+(4,$me,))
    
    ; echo %text here
    echo -tm $chan $+(3<,$chr(2),$chr(3),$+($replace(%n,@,4@,&,4&,%,14%,~,4~,+,5+,$chr(240),),15),$nick,$chr(2),$chr(3),3>) %text
  }
}
PERFECT! One last question I swear lol...Mirc has its own nick completion service...Is there anyway I can add a character so that when I hit tab to complete a nick so that it shows up as "nick:" instead of just "nick" ?
Afaik, there is no way to manipulate editbox without make tab completion function halted.

All you can do is manipulate text that you will echo / send to the channel. That will involves on input event and text you want to manipulate.


You can reimplement tab completion with the tabcomp event, although undoubtedly such scripts already exist.
Manipulating editbox with tabcomp event will make tab completion function halted as well.
Idk if there is any tricks out there.
http://lmgtfy.com/?q=mirc+tabcomp+colon
Thankyou for the link. smile

It does not work perfectly. I mean, it does nick completion on first nick (only), but after that you cannot use tab to "search/nick completion" other nicks in case you want other nick, not the first one.

Thank you Blessing.
© mIRC Discussion Forums