Jump to content

Tried To Make A Nicklist


Haggis

Recommended Posts

  • Replies 47
  • Created
  • Last Reply

Top Posters In This Topic

The following code will make it for multiple rooms...

 

dialog nicklist {
  title "Nick"
  size -1 -1 86 314
  option dbu
  list 1, 10 20 75 293, size extsel hsbar vsbar
  text "Room name", 2, 3 2 80 8
  text "Chatters:", 3, 3 10 43 8
  text "num", 4, 54 11 29 8, right
  button "", 5, 1 21 8 283
}

menu channel {
  Nicklist:
  .Turn Nicklist On: {
   ;This will turn the nicklist on for each channel you use it in.
    if ($dialog(nicklist $+ $active)) dialog -c nicklist $+ $active nicklist
    dialog -m nicklist $+ $active nicklist
   ;The codes above will determine if the nicklist for a channel is already running. If it is it will close, and reactivate it.
  }
  .Turn Nicklist off: dialog -c nicklist $+ $active nicklist
}

on *:dialog:nicklist*:init:*: {
  dll dll\mdx.dll MarkDialog $dname
  dll dll\mdx.dll SetMircVersion $version
  dll dll\mdx.dll SetDialog $dname style
  dll dll\mdx.dll SetFont $dname 1 12 50 verdana
  dll dll\mdx.dll SetColor $dname 1 text $rgb (0,0,139)
  dll dll\mdx.dll SetControlMDX $dname 1 ListView report showsel noheader smallicon hottrack single > dll\views.mdx
  dll dll\mdx.dll SetControlMDX $dname 5 scrollbar vertical > dll\ctl_gen.mdx
;The code above transforms the button above into a vertical scrollbar.
  did -i $dname 1 1 headerdims $calc($gettok($dll(dll\nicklist.dll,GetSize,$active),1,38) - 6) $+ :1 0:2
  dll dll\nicklist.dll Nicklist $dname $active
;The code above attaches your custom nicklist to the one in mIRC.
  did -ra $dname 5 1 0 114 15 2 1
  did -i $dname 1 1 iconsize normal small
  did -i $dname 1 1 seticon normal c:\mirc\icons\owner.ico
  did -i $dname 1 1 seticon normal c:\mirc\icons\host.ico
  did -i $dname 1 1 seticon normal c:\mirc\icons\no.ico
  did -i $dname 1 1 seticon normal c:\mirc\icons\voice.ico
  did -i $dname 1 1 seticon normal c:\mirc\icons\tick.ico
  listnicks
}

on *:dialog:nicklist*:*:*: {
  if ($devent == sclick) {
    if ($did == 1) echo -a $did(1).seltext
    if ($did == 5) relistnicks
  }
  elseif ($devent == close) .timerresize. $+ $remove($dialog(nicklist*),nicklist) off
}

on *:join:#: listnicks
on *:part:#: listnicks
on *:kick:#: listnicks

alias listnicks {
  did -ra nicklist $+ $active 4 $nick($active,0)
  did -ra nicklist $+ $active 2 $active
  var %x = 1
  did -r nicklist $+ $active 1
  while ($nick($active,%x)) {
    did -az nicklist $+ $active 1 0 + $nickicon($nick($active,%x)) $nick($active,%x)
    inc %x

  }
  .timerresize. $+ $active -m 0 1 resize $active
;This code resizes the nicklist if it needs to. Otherwise, it won't do anything.
}

;This code is used for scrolling with the scrollbar. It deletes the top names from the list while scrolling down, and readds them when scrolling up. It calculates the position of the scrollbar to determine which nicknames to add, and which to delete. Therefore giving it a scrolling perspective.
alias relistnicks {
  .remove nicklist.txt
  var %x = $gettok($calc($did(nicklist $+ $active,1).lines * $gettok($did(nicklist $+ $active,5).text,1,32) / 100),1,$asc(.))
  did -r nicklist $+ $active 1
  while ($nick($active,%x)) {
    write -l $+ %x nicklist.txt 0 + $nickicon($nick($active,%x)) $nick($active,%x)
    inc %x
  }
   loadbuf -ro nicklist $+ $active 1 nicklist.txt
  .timerresize. $+ $chan -m 0 1 resize $active
}
alias nickicon {
  if ($left($nick($active,$1).pnick,1) == ~) return 1
  if ($left($nick($active,$1).pnick,1) == &) || ($left($nick($active,$1).pnick,1) == @) return 2
  if ($left($nick($active,$1).pnick,1) == +) return 4
  if ($left($nick($active,$1).pnick,1) == %) return 2
  else return 3
}

;The following alias checks to see if the nicklist needs to be resized for whatever reason. If the nicklist isn't the size of mIRC's nicklist it will resize to compensate.
alias resize {
  var %achan $1-
  if ($dialog(nicklist $+ %achan)) {
    if ($dialog(nicklist $+ %achan).w $dialog(nicklist $+ %achan).h > $dll(dll\nicklist.dll,GetSize,%achan)) || ($dialog(nicklist $+ %achan).w $dialog(nicklist $+ %achan).h < $dll(dll\nicklist.dll,GetSize,%achan)) {
      dll dll\mdx.dll SetDialog nicklist $+ %achan coords 0 0 $dll(dll\nicklist.dll,GetSize,%achan)
      dll dll\mdx.dll MoveControl nicklist $+ %achan 1 * * $gettok($dll(dll\nicklist.dll,GetSize,%achan),1,32) 2000
      if ($dialog(nicklist $+ %achan)) {
        did -i nicklist $+ %achan 1 1 headerdims $calc($gettok($dll(dll\nicklist.dll,GetSize,%achan),1,38) - 6) $+ :1 0:2
      }
      listnicks
    }
  }
}

Edited by Warrior124
Link to comment
Share on other sites

Yes, with some people it is beneficial, but if you tell people straight off how to do it then most of the times they don't look over the code. Haggis is doing a terrific job by looking over the code to learn. If I ever give out any code that someone doesn't understand they can always ask me how to do it, and I'll definitely help out that way, too. However, I find the best way to learn is actually to dig in, and see what does what. That is how I learned, lol. :)

Link to comment
Share on other sites

but if you label it like

; this line does this or that

 

it becomes more than an example to help one person..

 

it becomes a tutorial to help a lot of ppl

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...