All pastes #594911 Raw Edit

Mp3 Player + Anti Ban Script

public text v1 · immutable
#594911 ·published 2007-06-29 05:26 UTC
rendered paste body
alias mmp3 { if ($dialog(mmp3)) { dialog -ve mmp3 mmp3 } | else { dialog -md mmp3 mmp3 } }
dialog mmp3 {
  title "m|ndless' mp3 Player"
  option dbu
  icon $mircdir\Graphic\KS1.ico, 0
  size -1 -1 200 200

  box "",230, 1 1 198 33

  text "No Music Playing", 1, 4 7 154 7
  text "00:00 / 00:00",2,160 7 37 7

  button "<<",100,4 20 37 12
  button "&Play",101,42 20 38 12
  button "Paus&e",102,81 20 38 12
  button "&Stop",103,120 20 38 12
  button ">>",104,159 20 38 12

  box "",231, 1 30 198 169

  list 3, 3 36 194 154, hsbar, vsbar, sort
  button "+ File",105, 4 186 18 10
  button "+ Dir",106, 24 186 18 10
  button "- Sel",107, 158 186 18 10
  button "- All",108, 178 186 18 10

  menu "&File",150
  menu "&Options", 170

  item "Add &File",151,150
  item "Add &Dir",152,150
  item break,153,150
  item "Delete &Selected",154,150
  item "Delete &All",155,150
  item break,156,150
  item "&Load Playlist",157,150,
  item "Save &Playlist",158,150
  item break,159,150
  item "E&xit",160,150

  menu "Play &Mode",183,170
  item "&Single",184,183
  item "&Continuous",185,183

  menu "Play &Order",171,170
  item "&Normal",172,171
  item "&Shuffle",173,171

  item break,177,170

  menu "&Announcing",178,170
  item "O&n",179,178
  item "O&ff",180,178
  item break,181,178
  item "&Configure",182,178

  button "", 255,0 0 0 0, ok default
}

; EVENTS

;dialog init
on *:dialog:mmp3:init:0:startup

; +File button
on *:dialog:mmp3:sclick:105:plusfile

; +Dir button
on *:dialog:mmp3:sclick:106:plusdir

; -Sel button
on *:dialog:mmp3:sclick:107:minsel

; -All button
on *:dialog:mmp3:sclick:108:minall

; Play button
on *:dialog:mmp3:sclick:101:playmp3

; Pause button
on *:dialog:mmp3:sclick:102:pausemp3

; Stop button
on *:dialog:mmp3:sclick:103:stopmp3

; Next button
on *:dialog:mmp3:sclick:104:playnext

; Previous button
on *:dialog:mmp3:sclick:100:playprev

; double click mp3
on *:dialog:mmp3:dclick:3:playmp3

; menu add file
on *:dialog:mmp3:menu:151:plusfile

; menu add dir
on *:dialog:mmp3:menu:152:plusdir

; menu del sel
on *:dialog:mmp3:menu:154:minsel

; menu del all
on *:dialog:mmp3:menu:155:minall

; menu load playlist
on *:dialog:mmp3:menu:157:loadplaylist

; menu save playlist
on *:dialog:mmp3:menu:158:saveplaylist

; menu exit
on *:dialog:mmp3:menu:160:dialog -x mmp3

; halt enter
on *:dialog:mmp3:sclick:255:halt

; menu play mode single
on *:dialog:mmp3:menu:184:modesingle

; menu play mode continuous
on *:dialog:mmp3:menu:185:modecontin

; menu play order normal
on *:dialog:mmp3:menu:172:ordernormal

; menu play order shuffle
on *:dialog:mmp3:menu:173:ordershuffle

; menu announce on
on *:dialog:mmp3:menu:179:announceon

; menu announce off
on *:dialog:mmp3:menu:180:announceoff

; configure announce
on *:dialog:mmp3:menu:182:$dialog(mannounce,mannounce)

; on exit : cleanup
on *:exit:cleanup

; on load
on *:load:echo -a 9,1Script Loaded!! 11Thanks 9for choosing the m|ndless mp3 Player !

; ALIASES

alias -l mp3list return sounds\mp3list.mrc
alias -l mp3src return sounds\mp3src.mrc
alias -l mp3player { if ($dialog(mmp3)) return $true }
alias -l history return sounds\history.tmp

alias -l cleanup {
  unset %mmp3-paused
  .remove $history
}

alias -l announceoff {
  if (%mmp3-announce) { unset %mmp3-announce | did -u mmp3 179 }
  did -c mmp3 180
}

alias -l announceon {
  if (!%mmp3-announce) { set %mmp3-announce true | did -u mmp3 180 }
  did -c mmp3 179
}

alias -l ordernormal {
  if (%mmp3-shuffle) { unset %mmp3-shuffle | did -u mmp3 173 }
  did -c mmp3 172
}

alias -l ordershuffle {
  if (!%mmp3-shuffle) { set %mmp3-shuffle true | did -u mmp3 172 }
  did -c mmp3 173
}

alias -l modesingle {
  if (%mmp3-contin) { unset %mmp3-contin | did -u mmp3 185 }
  did -c mmp3 184
}

alias -l modecontin {
  if (!%mmp3-contin) { set %mmp3-contin true | did -u mmp3 184 }
  did -c mmp3 185
}


alias -l startup {
  if (%mmp3-paused) { unset %mmp3-paused }
  if (%mmp3-shuffle) { did -c mmp3 173 }
  else { did -c mmp3 172 }
  if (%mmp3-announce) { did -c mmp3 179 }
  else { did -c mmp3 180 }
  if (%mmp3-contin) { did -c mmp3 185 }
  else { did -c mmp3 184 }
  .timer -m 1 1 addmp3
}

alias -l saveplaylist {
  :begin
  var %file = $sfile(*.mpl,Save Playlist ...,Ok)
  if (%file) {
    if ($right(%file,4) !== .mpl) {
      var %tmp = $input(Wrong file extension selected! Playlists should have extension .mpl !,260,Error)
      goto begin
    }
    if ($len($nopath(%file)) == 4) {
      var %tmp = $input(Corrupt filename selected! Playlists should have extension .mpl AND have a filename!,260,Error)
      goto begin
    }
    :continue
    .copy -o $mp3list %file
    .copy -o $mp3src $left(%file,$calc($len(%file) - 4)) $+ .src
  }
}

alias -l loadplaylist {
  :begin
  var %file = $sfile(*.mpl,Select Playlist to load...,Ok)
  if ($isfile(%file)) {
    minall
    .copy -o %file $mp3list
    .copy -o $left(%file,$calc($len(%file) - 4)) $+ .src $mp3src
    addmp3
  }
}

alias -l plusfile {
  var %file = $sfile(*.mp3,Select mp3 to add,Ok)
  if (%file) {
    addlist %file 
    addmp3 %file 
  }
}

alias -l plusdir {
  var %dir = $sdir(Select directory, Ok)
  if (%dir) {
    var %total = $findfile(%dir,*.mp3,0,addlist $1-)
    addmp3
  }
}

alias -l minsel {
  var %tmp = $read($mp3list, swt, $did(mmp3,3).sel)
  write -dl $+ $readn $mp3src
  write -dl $+ $readn $mp3list
  did -d mmp3 3 $did(mmp3,3).sel
}

alias -l minall {
  .remove $mp3list
  .remove $mp3src
  did -r mmp3 3
}

alias -l getinfo {
  var %x = $1-
  var %artist = $mp3(%x).artist
  var %title = $mp3(%x).title
  if ((%artist == $null) || (%title == $null)) {
    return $left($nopath(%x),$calc($len($nopath(%x)) - 4))
  }
  else { return %artist - %title }
}

alias -l addmp3 {
  var %count = $lines($mp3list)
  if ($1) {
    did -a mmp3 3 $read($mp3list,%count)
  }
  else {
    did -r mmp3 3
    var %i = 1
    while (%i <= %count) {
      did -a mmp3 3 $read($mp3list,%i)
      inc %i
    }
  }
  did -z mmp3 3
}

alias -l playmp3 {
  if ($did(mmp3,3).sel) {
    did -a mmp3 1 $did(mmp3,3).seltext
    dialog -t mmp3 $did(mmp3,3).seltext
    .timersetinfo 0 1 setinfo
    if (%mmp3-paused) {
      unset %mmp3-paused
      splay resume
    }
    else {
      var %tmp = $read($mp3list,swt,$did(mmp3,3).seltext)
      var %src = $read($mp3src,$readn)
      .splay -p %src
      if (%mmp3-announce) { announce %src }
    }
  }
  else {
    var %tmp = $input(No File Selected!,260, Error)
    dialog -ve mmp3
  }
  write $history $did(mmp3,3).seltext
}

alias -l stopmp3 {
  splay stop
  did -a mmp3 2 00:00 / 00:00
  did -a mmp3 1 No Music Playing
  dialog -t mmp3 m|ndless' mp3 Player
  if (%mmp3-paused) { unset %mmp3-paused }
  .timersetinfo off
}

alias -l pausemp3 {
  if (%mmp3-paused) { unset %mmp3-paused | splay resume | .timersetinfo 0 1 setinfo }
  else { splay pause | set %mmp3-paused true | .timersetinfo off }
}

alias -l addlist {
  var %file = $1-
  write $mp3src %file
  write $mp3list $getinfo(%file)
}

alias -l setinfo {
  if ($mp3player) {
    if ($inmp3) {
      var %long = $calc($int($calc($inmp3.pos / 1000)) / 60)
      var %mins = $int(%long)
      var %secs = $calc(%long - %mins)
      var %secs = $round($calc(%secs * 60),0)
      if (%mins < 10) { %mins = $+(0,%mins) }
      if (%secs < 10) { %secs = $+(0,%secs) }

      did -a mmp3 2 $+(%mins,:,%secs) / $getlength($inmp3.fname)
    }
    else {
      .timersetinfo off
      if (!%mmp3-contin) { stopmp3 }
      else {
        if (!%mmp3-shuffle) { playnext }
        else { shuffle }
        playmp3
      }
    }
  }
  else { splay stop | .timersetinfo off }
}

alias -l getlength {
  var %tlong = $calc($int($calc($mp3($1-).length / 1000)) / 60)
  var %tmins = $int(%tlong)
  var %tsecs = $calc(%tlong - %tmins)
  var %tsecs = $round($calc(%tsecs * 60),0)
  if (%tmins < 10) { %tmins = $+(0,%tmins) }
  if (%tsecs < 10) { %tsecs = $+(0,%tsecs) }
  return $+(%tmins,:,%tsecs)
}

alias -l playnext {
  if (%mmp3-shuffle) { shuffle }
  else {
    if ($did(mmp3,3).sel == $did(mmp3,3).lines) { did -c mmp3 3 1 }
    else { did -c mmp3 3 $calc($did(mmp3,3).sel + 1) }
    if ($inmp3) { unset %mmp3-paused | playmp3 }
  }
  if ($inmp3) { unset %mmp3-paused | playmp3 }
}

alias -l shuffle {
  if (%mmp3-paused) { unset %mmp3-paused }
  did -c mmp3 3 $rand(1,$did(mmp3,3).lines) 
}

alias -l playprev {
  var %tmp = $read($history,w, $did(mmp3,3).seltext)
  did -c mmp3 3 $didwm(mmp3,3,$read($history,$calc($readn - 1)))
  write -d $history
  if ($inmp3) { unset %mmp3-paused | playmp3 }
}

alias -l announce {
  if ($server) {
    if (!%mmp3-noid3) {
      echo -at No settings for m|ndless' mp3 Player found. Running single time initialisation.
      $dialog(mannounce,mannounce)
    }
    var %artist = $mp3($1-).artist
    var %title = $mp3($1-).title
    if ((%artist == $null) || (%title == $null)) {
      var %msg = $replace(%mmp3-noid3,&filename,$left($nopath($inmp3.fname),$calc($len($nopath($inmp3.fname)) - 4)))
    }
    else {
      var %msg = $replace(%mmp3-msg,&artist,%artist,&title,%title)
    }
    if (!%mmp3-sep) { set %mmp3-sep <> }
    if (%mmp3-saylen) { %msg = $+(%msg,$chr(160),%mmp3-sep $getlength($inmp3.fname)) }
    if (%mmp3-saybit) { %msg = $+(%msg,$chr(160),%mmp3-sep $mp3($inmp3.fname).bitrate,Kbs) }
    if (%mmp3-saysize) { %msg = $+(%msg,$chr(160),%mmp3-sep $bytes($file($inmp3.fname).size,m),Mb) }

    if (!%mmp3-ann) { set %mp3-ann all }
    if (%mmp3-ann == all) {
      var %chans = $chan(0)
      var %i = 1
      while (%i <= %chans) {
        var %t = $replace(%msg,&chan,$chan(%i))
        %t
        inc %i
      }
    }
    else {
      if (%mmp3-ann == dont) {
        var %chans = $chan(0)
        var %i = 1
        while (%i <= %chans) {
          if ( $matchtok(%mmp3-chans-dont,$chan(%i),1,$chr(44)) ) { }
          else {
            var %t = $replace(%msg,&chan,$chan(%i))
            %t
          }
          inc %i
        }
      }
      elseif (%mmp3-ann == only) {
        var %chans = $chan(0)
        var %i = 1
        while (%i <= %chans) {
          if ( $matchtok(%mmp3-chans-only,$chan(%i),1,$chr(44)) ) {
            var %t = $replace(%msg,&chan,$chan(%i))
            %t
          }
          inc %i
        }
      }
    }
  }
}

on *:dialog:mannounce:init:0:{
  if (%mmp3-saylen) { did -c mannounce 1 }
  if (%mmp3-saybit) { did -c mannounce 2 }
  if (%mmp3-saysize) { did -c mannounce 3 }

  if (!%mmp3-sep) { set %mmp3-sep <> }
  did -a mannounce 70 %mmp3-sep

  if (!%mmp3-ann) { %mmp3-ann = all }
  if (%mmp3-ann == all) { did -c mannounce 10 | did -b mannounce 20,21 }
  if (%mmp3-ann == dont) { did -c mannounce 11 | did -b mannounce 21 }
  if (%mmp3-ann == only) { did -c mannounce 12 | did -b mannounce 20 }
  did -ra mannounce 20 %mmp3-chans-dont
  did -ra mannounce 21 %mmp3-chans-only

  if (!%mmp3-msg) { %mmp3-msg = /ame is listening to &artist - &title }
  did -a mannounce 50 %mmp3-msg
  if (!%mmp3-noid3) { %mmp3-noid3 = /ame is listening to &filename }
  did -a mannounce 51 %mmp3-noid3
}

; Ok button
on *:dialog:mannounce:sclick:200:{
  if ($did(mannounce,1).state == 1) { set %mmp3-saylen true }
  else { unset %mmp3-saylen }
  if ($did(mannounce,2).state == 1) { set %mmp3-saybit true }
  else { unset %mmp3-saybit }
  if ($did(mannounce,3).state == 1) { set %mmp3-saysize true }
  else { unset %mmp3-saysize }

  if ($did(mannounce,10).state == 1) { set %mmp3-ann all }
  if ($did(mannounce,11).state == 1) { set %mmp3-ann dont }
  if ($did(mannounce,12).state == 1) { set %mmp3-ann only }
  %mmp3-chans-dont = $did(mannounce,20).text
  %mmp3-chans-only = $did(mannounce,21).text 

  set %mmp3-msg $did(mannounce,50).text
  set %mmp3-noid3 $did(mannounce,51).text

  set %mmp3-sep $did(mannounce,70).text

  dialog -x mannounce
  dialog -v mmp3
}

; radio buttons
on *:dialog:mannounce:sclick:11:{ did -e mannounce 20 | did -b mannounce 21 }
on *:dialog:mannounce:sclick:12:{ did -e mannounce 21 | did -b mannounce 20 }
on *:dialog:mannounce:sclick:10:{ did -b mannounce 20,21 }

; mp3 system is not currently done! :S
alias mp3 { dialog -m mp3sys mp3sys }
dialog mp3sys {
  title "Mp3 System "
  size -1 -1 176 145
  option dbu
  icon $mircdir\Graphic\KS1.ico, 0
  list 1, 41 3 132 66, size hsbar vsbar
  button "Play", 2, 8 4 26 10
  button "Stop", 3, 8 24 26 10
  button "Pause", 4, 8 14 26 10
  button "Mute", 5, 8 34 26 10
  box "Total mp3s:", 6, 3 60 36 22
  edit "", 7, 7 67 28 11, read center
  box "Current playing:", 8, 3 84 114 22
  edit "", 9, 7 91 106 11, read autohs
  button "Next", 10, 117 70 24 9
  button "Previous", 11, 91 70 24 9
  box "Say to:", 12, 3 108 141 22
  button "Close", 16, 145 134 30 10, cancel
  button "Help", 17, 114 134 30 10
  button "Open directory", 19, 42 70 42 9
  button "Current channel", 13, 8 116 50 10
  button "To myself", 14, 63 116 33 10
  button "All channels", 15, 102 116 37 10
  box "", 20, 143 108 30 22
  button "Say it", 21, 146 116 24 10
  button "Resume", 22, 8 44 26 10
  button "Clear all", 23, 146 70 24 9
  box "Volume:", 24, 131 84 35 21
  button "-", 25, 136 92 10 9
  button "+", 26, 151 92 10 9
}
on *:dialog:mp3sys:init:*: {
  did -a mp3sys 7 %mp3sys.total
  did -a mp3sys 9 %mp3sys.playing
  if (%mp3sys.say.chan == on) { did -c mp3sys 13 }
  elseif (%mp3sys.say.chan == off) { did -c mp3sys 13 }
}
on *:dialog:mp3sys:sclick:19: {
  set %mp3sys.lines $lines(mp3list.txt)
  set %mp3sys.dir $sdir(c:\,Select folder to add to mp3's playlist)
  set %mp3sys.num $findfile(%mp3sys.dir,*.mp3,*)
  set %mp3sys.artist $mp3(%filename).artist
  set %mp3sys.song $mp3(%filename).title
}
menu * {
  mp3 player: { if ($dialog(mmp3)) { dialog -ve mmp3 mmp3 } | else { dialog -md mmp3 mmp3 } }
}
menu * { 
  Anti Ban:/bprot
}
alias bprot { dialog -m ebap ebap }
dialog ebap {
  title "Easy Ban Protection"
  size -1 -1 103 78
  option dbu
  icon $mircdir\Graphic\KS1.ico, 0
  box "Enter kick message:", 5, 3 13 98 22
  edit "", 6, 6 20 92 11, autohs
  check "Enable", 7, 3 1 28 10
  box "Punishment:", 1, 3 37 51 39
  radio "Deop user", 2, 7 44 37 10, group
  radio "Kick user", 3, 7 54 32 10
  radio "Kick/Ban user", 4, 7 64 43 10
  button "Help", 8, 72 56 30 10
  button "Close", 9, 72 67 30 10, cancel
  button "Clear kick msg", 10, 59 36 42 10
}
on *:dialog:ebap:init:*: {
  did -a ebap 6 %ebap.kmsg
  if (%ebap.p == d) { did -c ebap 2 }
  elseif (%ebap.p == k) { did -c ebap 3 }
  elseif (%ebap.p == kb) { did -c ebap 4 }
  if (%ebap.st == on) { did -c ebap 7 | did -e ebap 2,3,4,6,10 }
  if (%ebap.st == off) { did -b ebap 2,3,4,6,10 }
}
on *:dialog:ebap:sclick:*: {
  if ($did == 7) { if ($did(ebap,$did).state == 1) { did -e ebap 2,3,4,6,10 | set %ebap.st on | .enable #prot } | else { did -b ebap 2,3,4,6,10 | set %ebap.st off | .disable #prot } }
  if ($did == 2) { set %ebap.p d }
  if ($did == 3) { set %ebap.p k }
  if ($did == 4) { set %ebap.p kb }
  if ($did == 10) { did -r ebap 6 | unset %ebap.kmsg }
  if ($did == 8) { dialog -m ebaphelp ebaphelp }
}
on *:dialog:ebap:edit:6: { set %ebap.kmsg $did(ebap,6) }
#prot on
on *:BAN:#: { 
  if (%ebap.st == on) {
    if ($me == $nick) { return }
    if ($me isop $chan) && (%ebap.p == d) && ($banmask iswm $address($me,5)) { mode $chan -b $banmask | mode $chan -o $nick | msg $nick %ebap.kmsg }
    if ($me isop $chan) && (%ebap.p == k) && ($banmask iswm $address($me,5)) { mode $chan -b $banmask | mode $chan -o $nick | kick $chan $nick %ebap.kmsg } 
    if ($me isop $chan) && (%ebap.p == kb) && ($banmask iswm $address($me,5)) { mode $chan -o $nick | mode $chan -b $banmask | ban $chan $nick | kick $chan $nick %ebap.kmsg } 
  }
  else { halt }
}
#prot end
dialog ebaphelp {
  title "Easy Ban Protection Help"
  size -1 -1 110 86
  option dbu
  icon $mircdir\Graphic\KS1.ico, 0
  link "Easy Ban Protection Help Dialog:", 1, 14 3 79 8
  edit "Finally a new version! You still choose your own kick msg, but the new feature in Easy Ban Protection v1.5 is that you can choose your own penalty.. Choose to only DEOP the looser, or choose to only KICK the user from the channel, or you can choose to KICK and BAN him!   Nothing more to say i guess! exept happy using.. and stay safe! ;-)", 2, 2 12 106 63, read multi
  button "Cancel", 3, 80 76 30 10, cancel
}

menu * {