bitchx/script/menu.bx

2614 lines
84 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# This code is based on GemZ by gemini however it is not his responsibily
#
# If there are any errors contact [NuKe]! !!!!NOT!!!! gemini!
#
# All credits are stated (if not...they are most likely gemini)
^fset FORMAT_XTERM_TITLE [$0][$2] $5-
^set COMMENT_BREAKAGE on
^set JOIN_NEW_WINDOW on
^set JOIN_NEW_WINDOW_TYPE create double on
^set QUERY_NEW_WINDOW on
^set QUERY_NEW_WINDOW_TYPE create
^set WINDOW_DESTROY_PART on
^set SERVER_GROUPS on
@ actionsfile = [$IRCLIB()/script/actplug.gmz]
@ loadacts = [NO]
@ ctcpsound = [OFF]
@ ctcpsndreq = [OFF]
@ EXEDIR = [~]
@ sounddir = [$EXEDIR/sounds]
@ SOUND_PATH = [$EXEDIR/sounds ~ ~/sounds]
@ gz.sounds = 1
# Echo Strings
^assign gemz.act *
^assign gemz.str .gz.
^assign gemz.usage ***
^eval ^assign gemzov.str \\[\$bgrn\ov${cl}\\]\
alias gecho xecho -b -level crap $*
alias gbecho xecho -b -level crap $*
alias gbecho xecho -b -level crap $*
alias gtecho xecho -b -target $0 $1-
alias gtbecho xecho -b -target $0 $1-
alias gtbecho xecho -b $1-
alias gaecho xecho -b -level crap $*
alias gnecho xecho -b -level crap $*
alias guecho xecho -b -level crap gemz.usage $*
@ NUMKICK = [7]
@ kick.0 = [uh, huh huh... uh... yew suck, or something]
@ kick.1 = [meep meep!]
@ kick.2 = [bork bork bork bork]
@ kick.3 = [oops, silly me, that's the wrong key]
@ kick.4 = [nostalgia kick: Roadkill splattered all over the infobahn]
@ kick.5 = [nostalgia kick: CDA VIOLATION]
@ kick.6 = [If anybody gets funk'd its gun' be U!]
#----------------------------Kicks-----------------------------#
alias bkk {/k $0 BurgerKingKick - You get it my way}
alias mck {/k $0 McKick: You Want Fries with that?}
alias mcdk {/k $0 McKick: Have you had your break today?!?}
alias tbk {/k $0 TacoBellKick: Make a run for the border}
alias cjk {/k $0 CarlsJrKick: If it don't get all over your face, you don't belong in this place}
alias jbk {/k $0 JackInTheBoxKick: Jacks Back!!}
alias kfck {/k $0 KentuckyFriedKick: Original Recipe or Extra Crispy?}
alias kt {/k $0 Kick Toy (tm)}
alias tkl {/k $0 TaeKwonLeapKick}
alias gk {/k $0 [GreetKick] Hello to you too!}
alias wk {/k $0 woikick}
alias save {
if (fexist(~/menu.sav) != -1) {
@ unlink(~/menu.sav)
}
@ outfile = open(~/menu.sav W)
# gecho Saving menu.bx settings...
@ write($outfile //^assign ctcpsound $ctcpsound)
@ write($outfile //^assign loadacts $loadacts)
@ write($outfile //^assign ctcpsndreq $ctcpsndreq)
@ write($outfile //^assign SOUND_PATH $SOUND_PATH)
@ write($outfile //^assign sounddir $sounddir)
@ write($outfile //^assign actionsfile $actionsfile)
@ close($outfile)
//save
}
#
# This code courtesy of mikh
#
alias searchpath {
fe ($1-) bleah {
if (file.exist($bleah/$0)) { return $bleah/$0 }
}
return 0
}
### returns 1 if we have file $* for playing, path is stripped from parameter
### so you can safely pass full qualified filenames here, if file exist,
### ctcpsnd.fname variable will contain full path to the file, which can
### be passed to mmpm.playfile or mmpm.playfile2
alias ctcpsnd.havefile {
@ctcpsnd.fname = searchpath($file.sanspath($*) $SOUND_PATH)
@function_return = file.exist($ctcpsnd.fname)
}
### should be called if you requested a file from someone, and expect dcc
### send to happen
### $0 == file name
alias ctcpsnd.requested {
@ctcpsnd[$file.sanspath($*)] = time()
}
### this function returns if we already have this file requested from someone
### it returns time since we requested file, or 10000 if we did not requested
### such file, so if (ctcpsnd.isrequested(file.wav) > 30) will check if
### file was requested longer then 30 seconds ago, or not requested at all
alias ctcpsnd.isrequested {
@ function_return = 10000
if (ctcpsnd[$file.sanspath($*)] != []) @function_return = time() - ctcpsnd[$%file.sanspath($*)]
}
### returns 1 if we getting this file right now...
alias ctcpsnd.isgetting {
@ function_return = ctcpsnd.getting[$file.sanspath($*)] > 0
}
### usage is simple, in your own on ^dcc_request, do something like
### ^on dcc_request * if (!ctcpsnd.dcc_request($*)) {
### your code here
### }
alias ctcpsnd.dcc_request {
@ function_return = 0
if (ctcpsnd[$file.sanspath($2)] > 0) {
@function_return = 1
if (file.isdir($EXEDIR/SOUNDS)) {
@mkdir($EXEDIR/SOUNDS/RECV)
//^dcc rename $4 $EXEDIR/SOUNDS/RECV/$file.sanspath($2)
@ctcpsnd.getting[$file.sanspath($2)] = time()
^on ^dcc_connect "$4 $0 GET % %" #
//^dcc get $4
^on ^dcc_connect -"$4 $0 SEND % %"
if (dccitem($4) == []) {
//^assign -ctcpsnd.getting[$file.sanspath($2)]
//^assign -ctcpsnd[$file.sanspath($2)]
}{
//on ^dcc_lost "$4 $0 GET $word(8 $dccitem($4)) %*" {
@ctcpsnd.dcc_lost($*)
}
}
}{
//^assign -ctcpsnd.getting[$file.sanspath($2)]
//^assign -ctcpsnd[$file.sanspath($2)]
//^dcc close $4
}
}
}
### same here
alias ctcpsnd.dcc_lost {
@function_return = 0
if (ctcpsnd[$%file.sanspath($3)] > 0) {
@function_return = 1
switch ($4) {
(ERROR)(LOST)(CLOSED) {
@unlink($3)
//^assign -ctcpsnd.getting[$file.sanspath($3)]
//^assign -ctcpsnd[$file.sanspath($3)]
//hook ctcpsnd error $file.sanspath($3) closed
}
(COMPLETED) {
//^assign -ctcpsnd.getting[$file.sanspath($3)]
//^assign -ctcpsnd[$file.sanspath($3)]
if (fsize($3) && fsize($3) == word(7 $dccitem($0))) {
@rename($3 $exedir/sounds/$file.sanspath($3))
//^hook ctcpsnd received $exedir/sounds/$file.sanspath($3)
}{
if (fsize($3)) {
@unlink($3)
//hook ctcpsnd error file.sanspath($3) file size mistmatch
}{
@unlink($3)
//hook ctcpsnd error file.sanspath($3) zero length file
}
}
}
}
//on ^dcc_lost -"$0 $1 $2 $3 %*"
}
}
### this function is called from main script /sound routine to find if
### we have a local file. If we do, it is assumed that we gonna send it,
### so its added to a circlular buffer of last 10 filenames sent via /sound
### if function returns 1, then ctcpsnd.fname will be a full filename, ready
### to be passed to mmpm.playfile
if (ctcpsnd.cansendidx == []) @ctcpsnd.cansendidx=0
alias ctcpsnd.localfile {
@ function_return = 1
# cannot send files which we are currently downloading yet
if (ctcpsnd.isgetting($*)) { @function_return = 0
} else if (file.exist($*)) {
@ ctcpsnd.fname = [$*]
@ ctcpsnd.cansend[$ctcpsnd.cansendidx] = [$*]
@ ctcpsnd.cansendidx = (ctcpsnd.cansendidx+1) % 10
} else if (file.exist(${ctcpsnd.fname = searchpath($* $SOUND_PATH)})) {
@ ctcpsnd.cansend[$ctcpsnd.cansendidx] = [$*]
@ ctcpsnd.cansendidx = (ctcpsnd.cansendidx+1) % 10
} else @function_return = 0
}
### $0 is what they requested, function returns 0 or 1, if it returns 1, then
### ctcpsnd.fname will be a file name for /dcc send
alias ctcpsnd.cansend {
@function_return = 0
if (rmatch($* %.wav %.au %.mid)) {
@ctcpsnd.tmp = file.sanspath($*)
foreach ctcpsnd.cansend ctcpsnd.ii {
if (ctcpsnd.tmp == file.sanspath($ctcpsnd.cansend[$ctcpsnd.ii])) {
if (file.exist($ctcpsnd.cansend[$ctcpsnd.ii])) {
@ ctcpsnd.fname = ctcpsnd.cansend[$ctcpsnd.ii]
@ function_return = 1
//break
} else if (file.exist(${ctcpsnd.fname = searchpath($file.sanspath($ctcpsnd.cansend[$ctcpsnd.ii]) $SOUND_PATH)})) {
@ function_return = 1
//break
}
}
}
}
}
### next 3 ones should be called from ON ^PUBLIC, ON ^MSG and ^ON NOTICE
### Note that we only allow to request these sounds we just recently played
### using /sound, last 10 actually
alias ctcpsnd.msg {
@function_return = 0
if ([$1] == [!$N] && [$2] != [] && [$3] == []) {
@ function_return = 1
if (ctcpsnd.cansend($2)) {
//^hook ctcpsnd request 1 $0 $ctcpsnd.fname
ctcpsnd.sendfile_with_timeout $0 $ctcpsnd.fname
}{
//^hook ctcpsnd request 0 $0 $2
}
}
}
alias ctcpsnd.notice {
@function_return = 0
if (index(# $0) == -1 && ([$1] == [!dccsend] || [$1] == [!$N]) && [$2] != [] && [$3] == []) {
@ function_return = 1
if (ctcpsnd.cansend($2)) {
//^hook ctcpsnd request 1 $0 $ctcpsnd.fname
ctcpsnd.sendfile_with_timeout $0 $ctcpsnd.fname
}{
//^hook ctcpsnd request 0 $0 $2
}
}
}
alias ctcpsnd.public {
if ([$2] == [!$N] && ctcpsnd.cansend($3)) {
//^hook ctcpsnd request 1 $0 $ctcpsnd.fname
ctcpsnd.sendfile_with_timeout $0 $ctcpsnd.fname
}
}
alias ctcpsnd.close_unactive {
if (dccitem($0) != [] && word(2 $dccitem($0)) != [active]) {
//^dcc close $0
//^on ^dcc_connect -"$0 $1 SEND % %"
}
}
### $0 == nick, $1 == file
alias ctcpsnd.sendfile_with_timeout {
@ dnum = 0
on ^dcc_sent "$0 SEND % % #%" {@dnum = [$4]}
//^dcc send $0 $1-
on ^dcc_sent -"$0 SEND % % #%"
on ^dcc_connect "$dnum $0 SEND % %" {
//on ^dcc_connect -"$0 $1 SEND % %"
//on ^dcc_lost "$0 $1 SEND $word(8 $dccitem($0)) %*" {
//on ^dcc_lost -"$0 $1 $2 $3 %*"
}
}
if (dnum) /timer 180 ctcpsnd.close_unactive $dnum $0
}
alias file.exist {
@ function_return = fexist($*) == 1
}
alias file.isdir {
@ function_return = fexist($* d) == 1
}
alias file.sanspath {
if (file.spi=rindex(\\/: $*)+1) {
@function_return=mid($file.spi 255 $*)
} else {
@function_return=[$*]
}
}
alias file.ext {
@file.sp=file.sanspath($*)
if (file.exi=rindex(. $file.sp)+1) {
@function_return=[mid($file.exi 255 $file.sp)]
} else {
@ function_return = []
}
}
alias file.sansext {
@file.sp=file.sanspath($*)
if (file.sei=rindex(. $file.sp)+1) {
@function_return=left(${[$@*] - ((@file.sp - file.sei) + 1)} $*)
} else {
@function_return=[$*]
}
}
alias file.path {
if (file.spi=rindex(\\/: $*)+1) {
@function_return=[mid(0 $file.spi $*)]
} else {
@function_return=[]
}
}
alias file.tofat {
@file.path=file.path($*)
@file.name=file.sansext($file.sanspath($*))
@file.ext=file.ext($*)
# if extention is >3 chars long truncate it
if (@file.ext > 3) @file.ext=left(3 $file.ext)
if (@file.name > 8) {
@file.tohash=right(${@file.name-5} $file.name)
echo +++ tohash = $file.tohash
@file.name=left(5 $file.name)
@file.tmp=0
fec ($file.tohash) file.c {
@file.tmp = file.tmp + ascii($toupper($file.c))
}
echo +++ result = $file.tmp
@file.tmp = file.tmp % 256
@file.name #= file.tmp
}
if (file.path) @function_return=[$file.path/$file.name\.$file.ext] else @function_return=[$file.name\.$file.ext]
}
alias mmpm.debug {
if (mmpm.debug) {xecho +++ [mmpm] $*}
}
if (!mmpm.loaded) {
@ mmpm.loading = 1
@ mmpm.multimedia = mciapi()
if (!mmpm.multimedia) { /mmpm.debug
} else { /mmpm.debug }
@ mmpm.loaded = 1
@ mmpm.volume = mmpm.midi.volume = mmpm.wave.volume = 100
}
### outside of 1st if in case we loading it over an older mmpm.api version...
if (mmpm.wave.state == [] && mmpm.midi.state == []) {
@ mmpm.wave.state = [CLOSED]
@ mmpm.midi.state = [CLOSED]
}
### always interrups previous sound
#alias mmpm.playfile {
# @mmpm.donotstop = 0
# mmpm.playfile_internal $*
#}
#alias mmpm.playfile2 {
# @mmpm.donotstop = [$0]
# mmpm.playfile_internal $1-
#}
#I am not sure why the raw version of mmpm.playfile does not work...
#until I figure it out...
alias mmpm.playfile {
eval $mciapi(playfile $0)
}
alias mmpm.playfile2 {
eval $mciapi(playfile $0)
}
alias mmpm.sendplaycmd {
@ mmpm[$device][nextfile] = [$*]
switch ($mmpm[$device][state]) {
(CLOSED) {
if (device == [wave]) { @ device.name = [waveaudio]
} else if (device == [midi]) { @ device.name = [sequencer]
} else { @ device.name = 0 }
mmpm.raw open $device.name alias $device$pid() shareable
if (!mmpm.err) @mmpm[$device][state] = [OPEN_WAIT]
}
(PLAYING) {
### let the stop notification kick in next file
mmpm.raw stop $device$pid()
if (mmpm.err) {mmpm.close}
}
}
}
### should return a device name 'wave' or 'midi' for a filename passed
### as a parameter
alias mmpm.get_device_for_file {
@ function_return = 0
switch ($*) {
(*.wav)(*.au)("*.wav")("*.au") {
@ function_return = [wave]
}
(*.mid)(*.midi)("*.mid")("*.midi") {
@ function_return = [midi]
}
(*) {
### todo: default, may open file and look for a header
}
}
}
alias mmpm.playfile_internal {
if (mmpm.multimedia && file.exist($*)) {
@ device = mmpm.get_device_for_file($*)
if (device) {
if (!mmpm.donotstop || mmpm[$device][state] != [PLAYING])
{
mmpm.sendplaycmd $*
}
}{
mmpm.debug +++ Unknown file extention `$*'
}
}
}
# Numeric code for commands we use:
#
@mmpm.commands[OPEN] = 1
@mmpm.commands[CLOSE] = 2
@mmpm.commands[LOAD] = 22
@mmpm.commands[PLAY] = 4
@mmpm.commands[STOP] = 6
#
# These are notification codes, anything else is an error code and
# error description can be found using mciapi(errorstr code) function
#
# #define MCI_NOTIFY_SUCCESSFUL 0x0000
# #define MCI_NOTIFY_SUPERSEDED 0x0001
# #define MCI_NOTIFY_ABORTED 0x0002
# #define MCI_NOTIFY_ERROR 0x0003
### global variable device == wave or midi
alias mmpm.close {
if (mmpm[$device][state] != [CLOSED] && mmpm[$device][state] != [CLOSE_WAIT]) {
mmpm.raw close $device$pid()
if (!mmpm.err) { @ mmpm[$device][state] = [CLOSE_WAIT]
} else { @ mmpm[$device][state] = [CLOSED] }
}
}
### #define MCIERR_BASE 5000
alias mmpm.raw {
mmpm.debug Raw $*
@mmpm.result = mciapi(raw ${device==[wave]?11:12} $* notify)
@mmpm.err = mmpm.result > 5000
}
alias mmpm.kickload {
if (mmpm[$device][nextfile] != []) {
mmpm.raw load $device$pid() $mmpm[$device][nextfile] ${device==[wave]?[readonly]:[]}
if (!mmpm.err) {
@mmpm[$device][state] = [LOAD_WAIT]
@mmpm[$device][nextfile] = []
}{
mmpm.close
}
}{
mmpm.close
}
}
### we are receiving control of a device
on ^mci_notify "passdevice % 2" {
if ([$1] == mmpm.wave) { @ device = [wave]
} else if ([$1] == mmpm.midi) { @ device = [midi]
} else { @ device = 0 }
if (device) {
if (mmpm[$device][state] == [OPENED]) {
mmpm.kickload
}
} else {
mmpm.debug +++ Aqured device $1 (not opened by mmpm.api module)
}
}
### we are loosing control of a device, so lets close it to avoid confusion
on ^mci_notify "passdevice % 1" {
if ([$1] == mmpm.wave) { @ device = [wave]
} else if ([$1] == mmpm.midi) { @ device = [midi]
} else @ device = 0
if (device) {
mmpm.debug someone is taking device from us...
mmpm.close
}
}
### This is a main handler of notifications from mmpm/2, each command we
### issue (except set volume ones) have `nofify' flag, and is confirmed here.
### Much to my surprise I yet have to see mmpm/2 to lose notifications...
on ^mci_notify "NOTIFY % 1? % %" {
mmpm.debug Notify $*
if ([$2] == 11) { @ device = [wave]
} else if ([$2] == 12) { @ device = [midi]
} else @ device = 0
if (device)
{
if ([$4] == mmpm.commands[OPEN]) {
### open notification
if ([$1] == 0) {
@ mmpm[$device] = [$3]
@ mmpm[$device][state] = [OPENED]
### it waits for passdevice now, which gonna start file loading
}{
mmpm.close
}
} else if ([$4] == mmpm.commands[LOAD]) {
### load notification, lets play it now when it finished loading
if ([$1] == 0) {
if (mmpm[$device][volume] != 100) {
if (device == [midi]) { @mciapi(raw set midi$pid() volume $mmpm[$device][volume])
} else if (device == [wave]) { @mciapi(raw set wave$pid() audio volume all $mmpm[$device][volume]) }
}
mmpm.raw play $device$pid()
if (!mmpm.err) { @ mmpm[$device][state] = [PLAYING]
} else {
mmpm.close
}
}{
mmpm.close
}
} else if ([$4] == mmpm.commands[PLAY]) {
### play is finished, try to start next file in case we were stopped
mmpm.kickload
} else if ([$4] == mmpm.commands[STOP]) {
### stop notification, not actually used anyhow
mmpm.debug Stop confirmed
} else if ([$4] == mmpm.commands[CLOSE]) {
### close notification, lets mark device as closed...
if ([$1] == 0) {
@mmpm[$device][state] = [CLOSED]
@mmpm[$device] = 0
}
}
} else {
mmpm.debug +++ Unknown device $3 notification received
}
}
alias mmpm.midi.stop {
@ device=[midi]
mmpm.close
}
alias mmpm.wave.stop {
@ device=[wave]
mmpm.close
}
alias mmpm.stop {
mmpm.wave.stop
mmpm.midi.stop
}
alias mmpm.midi.volume {
@ mmpm.midi.volume = [$0]
if (mmpm.midi.state == [PLAYING]) @mciapi(raw set midi$pid() volume $0)
}
alias mmpm.wave.volume {
@ mmpm.wave.volume = [$0]
if (mmpm.wave.state == [PLAYING]) @mciapi(raw set wave$pid() audio volume all $0)
}
alias mmpm.volume {
mmpm.wave.volume $0
mmpm.midi.volume $0
}
### these are aliases for debugging, /mci <mci string commands> sends a raw
### command to mmpm/2 and displays result and an error string in case of error
/on ^mci_notify * {echo [mci] $*}
/alias mci {
@ _rc = mciapi(raw $0-)
if (_rc) {
echo [mci] Error: $mciapi(errstring $_rc)
}{
if (mciapi(result) != []) {
echo [mci] Result: $mciapi(result)
}
}
}
#############
#GemZ Extras#
#############
@ gz.extras = 1
#########################################################################
### figlet v1.0 support by Kanji_Man. Modified by Gemini
### Modified by OS2-Mike
# fixed code by OS2-Mike (with a lot of help from mikh)
# fixored the prob of 4OS2 echoing its logo info into the figlet pipe.
# filget.exe is borked - it expects a ^Z EOF to terminate it -
# added to $fig.text
# Modified slightly by gemini to replace ^Z with $chr(26) :)
#########################################################################
@ def.figfont = [short]
@ fig.fontdir = [$exedir/fonts]
@ figfont = [$fig.fontdir/bubble.flf]
alias figfix {
if ([$0]) {
@ figfix.count = 0
^assign -figfix.text
while ([$@0-]>=[$figfix.count]) {
@ figfix.char = [$mid($figfix.count 1 $0-)]
if ([$strip(<>\;\(\)*/\\\{\}$$~`|'\" $figfix.char)]!=[$figfix.char]) {
@ figfix.text = [$figfix.text\\]
}
if (figfix.char) {
^assign figfix.text $figfix.text$figfix.char
} else {^assign figfix.text $figfix.text}
@ figfix.count++
}
@ FUNCTION_RETURN = [$encode($figfix.text)]
purge fixfix
} else {gecho [Error] FIGFIX is an internal alias, avoid using!}
}
alias fig figlet $*
#alias figlist {^exec -name figlet ls $fig.fontdir/*.flf}
alias figlist {
gecho Starting Font list
fe ($findfiles(fn $fig.fontdir/*.flf)) _f.1 _f.2 _f.3 _f.4 {
gecho $[15]_f.1 $[15]_f.2 $[15]_f.3 $[15]_f.4
}
gecho End of Font list
purge _f
}
alias figlet {
if ([$0]) {
@ fig.text = encode($strip(| $1-)) ## encode($chr(26))
^on ^exec_error "figlet *" {gecho [ERROR] Cannot load figlet!}
if ([$0]==[*]) {^exec -name figlet -out figlet -f $figfont;^msg %figlet $decode($fig.text)
} else {^exec -name figlet -msg $0 figlet -f $figfont;^msg %figlet $decode($fig.text)}
^assign -fig.text
} else {gecho Usage: /FIGLET <nick/channel> <text>}
}
alias figfont {
if ([$0]) {
@ figfont.file = [$0]
if ([$fexist($fig.fontdir/$figfont.file\.flf)]==[1]) {
gecho Figlet font changed from $fig.fontfile\ to $figfont.file\.
@ figfont = [$fig.fontdir/$figfont.file\.flf]
@ fig.fontfile = [$figfont.file]
if ([$1]==[-d]) {@ def.figfont = [$figfont.file];gecho Default Figlet Font Changed}
^assign -figfont.file
} else {gecho [Error] Figlet font not found: $figfont.file\}
} else {
gecho Current Figlet Font: $fig.fontfile\
gecho Usage: /FIGFONT <fontfile>
}
}
alias figdir {
input "Please Enter The directory where you fonts are located: " if ([$0]) {
if ([$fexist($0-)]==[1]) {
@ fig.fontdir = [$0-]
gecho Figlet Font Directory Changed to $fig.fontdir
}
} else {
gecho Figlet Font Directory is $fig.fontdir
}
figfont $fig.fontfile
}
#added by request -- Ripped from Kanji :)
alias bleah {
if ([$0]) {
^msg $0 \\|/ ____ \\|/ \\|/ ____ \\|/
^msg $0 ~@-/ oO \\-@~ ~@-/ Oo \\-@~
^msg $0 /_\( \\__/ \)_\\ Bleah!! /_\( \\__/ \)_\\;
^msg $0 \\__U_/ \\_U__/
gecho BLEAH launched on $0.
}{gecho Usage: /BLEAH <nick/channel>}
}
alias bork {
if (C) {
@ _o.s = lastserver()
@ _o.t = _dfn($_o.s)
evalserver $_o.s @ _o.n = N
evalserver $_o.s @ _o.c = C
evalserver $_o.s nick SwdshChef
evalserver $_o.s WAIT
evalserver $_o.s saysend $_o.c bork bork bork bork
evalserver $_o.s nick $_o.n
@ _rfn($_o.s $_o.t)
purge _o
}{gecho Yer not on a channel in this window.}
}
alias _dfn {
@ function_return = fn[$servergroup($0)]
@ fn[$servergroup($0)] = 0
}
alias _rfn {@ fn[$servergroup($0)] = [$1]}
alias fozzie {
if (C) {
@ _o.s = lastserver()
@ _o.t = _dfn($_o.s)
evalserver $_o.s @ _o.c = C
evalserver $_o.s @ _o.n = N
evalserver $_o.s nick _fozzie_
evalserver $_o.s WAIT
evalserver $_o.s saysend $_o.c wakka wakka wakka
evalserver $_o.s nick $_o.n
@ _rfn($_o.s $_o.t)
purge _o
}{gecho Your not in a channel in this window.}
}
alias beaker {@ o.n = [$N];nick _Beaker_;WAIT;say meep meep meep meep;nick $o.n;^assign -o.n}
alias gimpkick {
@ _g.s = lastserver()
@ _g.t = _dfn($_g.s)
@ _g.n = N
@ _g.c = C
if (ischanop($_g.n $_g.c)) {
evalserver $_g.s saysend $_g.c $0, I think The Gimp would love a piece of meat like you...
evalserver $_g.s saysend $_g.c You're the kind of piece of shit trash he likes...
evalserver $_g.s nick _The_Gimp_
evalserver $_g.s WAIT
evalserver $_g.s saysend $_g.c ARRRGGGGGGGGGHHHHHHHH!!!!!
evalserver $_g.s saysend $_g.c I'm gonna drill you a new asshole!!!
evalserver $_g.s WAIT
evalserver $_g.s me Bends $0 over and "goes to town" on him!
evalserver $_g.s saysend $_g.c AAHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!!
evalserver $_g.s saysend $_g.c Feels so fuckin good don't it boy!!!!?????
evalserver $_g.s WAIT
evalserver $_g.s me zip up $gender leather pants and leaves $0 crying and rubbing his ass!
evalserver $_g.s //kick $_g.c $0 You're good...you should give references...
evalserver $_g.s nick $_g.n
@ _rfn($_g.s $_g.t)
}{gecho You're not a channel Operator}
purge _g
}
#
alias soupkick {
@ _s.s = lastserver()
@ _s.t = _dfn($_s.s)
@ _s.c = C
if (ischanop($N $C)) {
evalserver $_s.s @ _s.n = N
evalserver $_s.s nick Soup_Nzi
evalserver $_s.s Wait
evalserver $_s.s saysend $_s.c VAT!??!??!!!!
evalserver $_s.s //kick $_s.c $0 N() S()UP F()R Y()U
evalserver $_s.s Wait
evalserver $_s.s nick $_s.n
@ _rfn($_s.s $_s.t)
}
purge _s
}
#ripped from Kanji_man
alias gerbilkick {
if (ischanop($N $C)) {
@ old_nick = N
say $0, watch out for the giant gerbil...
say I hear he likes MomoBoys like you...
nick _Gerbil_
WAIT
me towers above the entire channel... looking for pleasure...
me reaches down and grabs $0 by the shoulders with one claw...
WAIT
me bends over, parts both cheeks with the other claw...
WAIT
me begins to scream as a muffled shreek can be heard from $0
/k $0 SCREEEEEEEEEEEEEECH!
nick $old_nick
^assign -old_nick
}{gecho You're not a channel operator}
}
###Pimp Ideas Ripped from PimpToolz
alias pimpslap {
if (ischanop($N $C)) {
@ old_nick = N
nick PimpGuido
WAIT
say WhaT HaPPenS wHeN YeR hO dOn'T WoRk??
/k $0 !PiMPSlaP HeR!
WAIT
nick $old_nick
WAIT
^assign -old_nick
}{gecho You're not a channel operator}
}
alias pimpkick {
if (ischanop($N $C)) {
@ old_nick = N
nick PimpGuido
WAIT
say WHAT IS THE MEANING OF PIMP?
say PiMP = PoWeR!
say PiMP = PoWeR!
say PiMP = PoWeR!
WAIT
/k $0 !PiMP-PoWeR! !PiMP-PoWeR!
WAIT
nick $old_nick
WAIT
^assign -old_nick
}{gecho You're not a channel Operator}
}
alias stinkkick {
if (ischanop($N $C)) {
say ShiT SomEThinG FuXinG StINkS!!!
/k $0 !ThaT'S BeTTeR!
}{gecho You're not a channel Operator}
}
alias lamahkick {
if (ischanop($N $C)) {
say I'M A LaMaH HawK...
say HuNtInG FoR A LaMaH...
/k $0 !FuXinG LaMaH!
}{gecho You're not a channel Operator}
}
#-------------------------------------------------------------------------#
#Swedish Chef Filter by gemini
alias chefsay {
@ in_line = [$0-]
fe ($in_line) _in_word {
switch ($_in_word) {
(bork) {@ _out_line = _out_line ## [$_in_word]}
(*tion) {
@ _len = [$@_in_word] - 4
@ _out_line = [$_out_line ]##[$subchef($left($_len $_in_word))]##[shun]
}
(an) {@ _out_line = _out_line ## [un ]}
(the) {@ _out_line = _out_line ## [zee ]}
(*) {@ _out_line = _out_line##[$subchef($_in_word)]
}
}
}
say $_out_line
^assign -_out_line;^assign -_in_line;^assign -_in_word
}
alias chefme {
@ in_line = [$0-]
fe ($in_line) _in_word {
switch ($_in_word) {
(bork) {@ _out_line = _out_line ## [$_in_word]}
(*tion) {
@ _len = [$@_in_word] - 4
@ _out_line = [$_out_line ]##[$subchef($left($_len $_in_word))]##[shun]
}
(an) {@ _out_line = _out_line ## [un]}
(the) {@ _out_line = _out_line ## [zee]}
(*) {@ _out_line = _out_line##[$subchef($_in_word)]
}
}
}
me $_out_line
^assign -_out_line;^assign -_in_line;^assign -_in_word
}
alias chefmsg {
@ in_line = [$1-]
fe ($in_line) _in_word {
switch ($_in_word) {
(bork) {@ _out_line = _out_line ## [$_in_word]}
(*tion) {
@ _len = [$@_in_word] - 4
@ _out_line = [$_out_line ]##[$subchef($left($_len $_in_word))]##[shun]
}
(an) {@ _out_line = _out_line ## [un]}
(the) {@ _out_line = _out_line ## [zee]}
(*) {@ _out_line = _out_line ##[$subchef($_in_word)]
}
}
}
/msg $0 $_out_line
^assign -_out_line;^assign -_in_line;^assign _in_word
}
alias subchef {
@ __bork = [$0]
fec ($__bork) _bork {
switch ($_bork) {
(a) {@ bork_return = bork_return ## [e]}
(e) {@ bork_return = bork_return ## [i]}
(f) {@ bork_return = bork_return ## [ff]}
(i) {@ bork_return = bork_return ## [ee]}
(v) {@ bork_return = bork_return ## [f]}
(o) {@ bork_return = bork_return ## [u]}
(u) {@ bork_return = bork_return ## [oo]}
(w) {@ bork_return = bork_return ## [v]}
#(.) {@ bork_return = bork_return ## [. Bork Bork Bork!]}
(!) {@ bork_return = bork_return ## [! Bork Bork Bork!]}
(*) {@ bork_return = bork_return ## [$_bork]}
}
}
@ FUNCTION_RETURN = [$bork_return ]
^assign -bork_return;^assign -_bork;^assign -__bork
}
alias postal {
if (C) {
@ _p.s = lastserver()
@ _p.t = _dfn($_p.s)
@ _p.c = C
@ _p.mn = N
evalserver $_p.s if (ischanop($_p.mn $_p.c)) {
if ([$0]==[all]) {
evalserver $_p.s @ _p.l = chanusers($_p.c)
}{
evalserver $_p.s fe ($chanusers($_p.c)) _p.u {if (!ischanop($_p.u $_p.c)) {@ _p.l = [$_p.l $_p.u]}}
}
@ _p.n = [$mid(0 3 $_p.mn)]
@ _p.n = [$_p.n]##[Postal]
@ _p.o = [$_p.mn]
evalserver $_p.s /me suddenly has an urge to become a postal worker.
evalserver $_p.s /nick $_p.n
evalserver $_p.s WAIT
evalserver $_p.s /me grabs an assault weapon and picks a random person...
evalserver $_p.s //kick $_p.c $word($rand($#_p.l - 1) $_p.l) pOsTaLkIcK vIcTiM
evalserver $_p.s /nick $_p.o
@ _rfn($_p.s $_p.t)
}{gecho You don't own a gun, You can't go postal without one!}
}{gecho Not in a channel, how can you go postal???}
purge _p
}
alias gz.unloadextras {
^alias -bleah;^alias -bork;^alias -fozzie;^alias -beaker
^alias -postal;^alias -chefme;^alias -chefsay;^alias -subchef
^alias -gimpkick;^alias -soupkick;^alias -gerbilkick;^alias -pimpslap
^alias -pimpkick;^alias -pimpslap;^alias -lamahkick;^alias -stinkkick
^assign -gz.extras;
^timer 1 ^alias -gz.unloadextras
^timer 2 makegemzmenu
}
#Stripw (orginal asmodean)
alias stripw {
for (@ __i = 1, [$($__i)] != [], @ __i = __i + 1) {
if ([$($__i)] != [$0]) {@ _sw = _sw ## [ $($__i)]}
}
@ function_return = mid(1 2048 $_sw)
^assign -_sw;
}
alias _srvc.menu {
if (isconnected($0)) {
# //window goto ${ww = _srv.win($0)}
//xecho -window $ww $SHOW_NUMERICS_STR\This server is connected or in process of connecting
} else {
//server $0
}
}
alias _srvn.menu {
if (isconnected($0)) {
# //window goto ${ww = _srv.win($0)}
//xecho -window $ww $SHOW_NUMERICS_STR\This server is connected or in process of connecting
} else {
//window create server $0
}
}
alias _cm {if ([$0]==[ON] || [$0]==[YES] || [$0]==[1]) {@ FUNCTION_RETURN = [-c]}
}
alias makemenu {
^menu -menubar
^menu menubar
^submenu menubar main -s "~Main"
^submenu menubar join -s "~Join"
^submenu menubar user -s "~User"
^submenu menubar server -s "~Server"
^submenu menubar cdcc -s "~CDCC"
^submenu menubar msgs -s "M~esgs"
^submenu menubar bx -s "~BitchX"
#^submenu menubar window -s "~Windows"
^submenu menubar help -s "~Help"
^makemain
^makejoin
^makeuser
^makeserver
^makecdcc
^makemesgs
^makebx
#^makewindows
^makehelp
^set DEFAULT_MENU menubar
^window menu menubar
}
alias makemain {
menu -main
menu main
^submenu main saveset "Save Settings"
^menuitem saveset "Save All" {
/save
/cdcc save
}
^menuitem saveset "Save BitchX Settings" {/save}
^menuitem saveset "Save CDCC pack list" {/cdcc save}
^submenu main clrscr "Clear Screen"
^menuitem clrscr "Clear Screen" {/clear}
^menuitem clrscr "Clear All" {/clear -all}
^menuitem clrscr "Clear Scrollback" {/clear -scrollback}
^menuitem clrscr "Clear All Scrollback" {/clear -scrollback -all}
^submenu main settings "Settings"
^menuitem settings -n -c $_cm($ctcpsound) 9 "Ctcp Sound" {
if (ctcpsound == [ON]) {
@ ctcpsound = [OFF]
@ menucontrol(settings 9 check 0)
} else {
@ ctcpsound = [ON]
@ menucontrol(settings 9 check 1)
}
}
^menuitem settings -n -c $_cm($ctcpsndreq) 10 "Ctcp Sound Request" {
if (ctcpsndreq == [ON]) {
@ ctcpsndreq = [OFF]
@ menucontrol(settings 10 check 0)
} else {
@ ctcpsndreq = [ON]
@ menucontrol(settings 10 check 1)
}
}
^menuitem settings -n -c $_cm($loadacts) 11 "Load Action File" {
if (loadacts == [YES]) {
@ loadacts = [NO]
@ menucontrol(settings 11 check 0)
} else {
@ loadacts = [YES]
@ menucontrol(settings 11 check 1)
}
}
if (ctcpsound == [ON]) {
@ menucontrol(settings 9 check 1)
} else {
@ menucontrol(settings 9 check 0)
}
if (ctcpsndreq == [ON]) {
@ menucontrol(settings 10 check 1)
} else {
@ menucontrol(settings 10 check 0)
}
if (loadacts == [YES]) {
@ menucontrol(settings 11 check 1)
} else {
@ menucontrol(settings 11 check 0)
}
^menuitem main "Properties" {/properties}
^menuitem main "Change Font" {/fontdialog 0 0}
^menuitem main separator
^menuitem main "Quit" {/quit}
}
alias makejoin {
menu -join
menu join
for (@ ajl=0, ajoinitem($ajl), @ajl++) {
@ ajlchan = [$word(0 $ajoinitem($ajl))]
@ ajlkey = [$word(1 $ajoinitem($ajl))]
submenu join join$ajl "$ajlchan"
menuitem join$ajl -d "Join Channel" {j $ajlchan $ajlkey}
menuitem join$ajl "Leave Channel" {leave $ajlchan}
menuitem join$ajl "Cycle Channel" {cycle $ajlchan}
menuitem join$ajl "Remove From List" {unajoin $ajlchan}
}
menuitem join separator
menuitem join "Leave ~Current Channel" {l}
menuitem join "~Leave & Kill Current Window" {window delete}
menuitem join "~Show AutoJoinList" {ajoinlist}
# gz.addonjoin
# menu join -reset
}
alias makeuser {
menu -user
menu user
^menuitem user "Set Away" {/away $J Away}
^menuitem user "Set Back" {/back}
^menuitem user separator
^menuitem user "Show Notify" {//notify}
}
alias makeserver {
menu -srv
menu srv
submenu server srvc "Change Current Server"
submenu server srvn "Connect to new server"
purge srvgrp
for (@ srv=0, servername($srv), @srv++) {
if (srvgrp = servergroup($srv)) {
if (!srvgrp[srvc][$encode($srvgrp)]) {
@ srvgrp[srvc][$encode($srvgrp)] = 1
submenu srvc srvc_$encode($srvgrp) "$srvgrp"
}
menuitem srvc_$encode($srvgrp) "$servername($srv):$word(0 $serverport($srv))" {_srvc.menu $srv}
# if submenu does not exist
if (!srvgrp[srvn][$encode($srvgrp)]) {
@ srvgrp[srvn][$encode($srvgrp)] = 1
submenu srvn srvn_$encode($srvgrp) "$srvgrp"
}
menuitem srvn_$encode($srvgrp) "$servername($srv):$word(0 $serverport($srv))" {_srvn.menu $srv}
} else {
#servers without a group
menuitem srvc "$servername($srv):$word($serverport($srv))" {_srvc.menu $srv}
menuitem srvn "$servername($srv):$word($serverport($srv))" {_srvn.menu $srv}
# menuitem srvc ${isconnected($srv)?[-c]:[]} "$servername($srv):$word($serverport($srv))" {_srvc.menu $srv}
# menuitem srvn ${isconnected($srv)?[-c]:[]} "$servername($srv):$word($serverport($srv))" {_srvn.menu $srv}
}
}
menuitem srvc separator
menuitem srvc "Manually enter server: " { manserv }
menuitem srvn separator
menuitem srvn "Manually enter server: " { manservn }
menuitem server separator
^menuitem server "Reconnect" {/rec}
^menuitem server "Disconnect" {/disco}
^menuitem server separator
^submenu server servinfo "Server Information"
^menuitem servinfo "Administration" {/admin}
^menuitem servinfo "List users" {/luser}
^menuitem servinfo "Message of the Day" {/motd}
^menuitem servinfo "Server Links" {/links}
^menuitem servinfo "Server Uptime" {/stats u}
^submenu server ov "Toggle OperView"
^menuitem ov "On" {/ov on}
^menuitem ov "Off" {/ov off}
}
alias makedccmenu {
menu -dccgl
menu dccgl
if (dccitem(1)) {
#add default when fixed
menuitem dccgl -d "Display DCC Items" { dcc }
menuitem dccgl separator
} else {
menuitem dccgl -d "No DCC's in progress" { dcc }
}
for (@ _gl.i = 1, _gl.x = dccitem($_gl.i), @ _gl.i++) {
if (word(0 $_gl.x) == [chat] || word(0 $_gl.x) == [raw]) {
submenu dccgl dccsubgl$_gl.i "~$_gl.i $toupper($word(0 $_gl.x)): $word(1 $_gl.x)"
} else {
submenu dccgl dccsubgl$_gl.i "~$_gl.i $toupper($word(0 $_gl.x)): $word(1 $_gl.x) \($file.sanspath($word(8 $_gl.x))\)" gl $_gl.i
}
menuitem dccsubgl$_gl.i -d "Display" { dcc }
if (xdcc.isoktopreview($file.sanspath($word(8 $_gl.x)))) {
menuitem dccsubgl$_gl.i "~Preview Image" { previewbynum $word(9 $_gl.x) }
}
menuitem dccsubgl$_gl.i "Close" { //dcc close $word(9 $_gl.x) }
}
purge _gl
menu dccgl -reset
}
makedccmenu
alias makecdcc {
menu -cdcc
menu cdcc
^submenu cdcc dccgl -s "Current DCC Items"
^submenu cdcc cdccoff "Offers..."
^menuitem cdccoff "Create New offer" {cdcc offer}
^menuitem cdccoff "Remove an Existing offer" {cdcc doffer}
^menuitem cdccoff "List your offers (local)" {cdcc list}
^menuitem cdccoff "Notify Current Channel" {cdcc notice}
^menuitem cdccoff "Show channel your offers" {cdcc plist}
^menuitem cdccoff separator
^menuitem cdccoff "Save Offer File" {cdcc save}
^menuitem cdccoff "Reload Offer File" {cdcc load}
^menuitem cdcc separator
^menuitem cdcc "Create DCC ~Window" {/window create level dcc}
^menuitem cdcc "Send File(s)" { mansenddialog }
^menuitem cdcc "ReSend File(s)" { manresenddialog }
}
alias manserv {
@ _kat = [$"Enter Server name: "]
if (_kat) {//^server $_kat}
^assign -_kat
}
alias manservn {
@ _kat = [$"Enter Server name: "]
if (_kat) {//^window create server $_kat}
^assign -_kat
}
alias makemesgs {
^menuitem msgs "Read Message log" {/readlog}
^menuitem msgs "Delete Message log" {/remlog}
}
alias makebx {
^submenu bx bxmdi "MDI Window..."
^menuitem bxmdi "MDI On" {/set MDI on}
^menuitem bxmdi "MDI Off" {/set MDI off}
^menuitem bx separator
^menuitem bx "Paste" {/pmpaste}
^menuitem bx "Paste to input" {/pmpaste -input}
^menuitem bx "SmartPaste" {/pmpaste -smart}
^menuitem bx separator
^menuitem bx "Play a sound" {/dialogplaysound}
^menuitem bx separator
^menuitem bx "Show Version" {/sv}
}
alias makewindows {
^menuitem window "New Window" {/window create}
^menuitem window "Describe Window" {/window describe}
}
alias makehelp {
^menuitem help "Help" {/help}
^menuitem help "Extended Help" {/bhelp index}
^menuitem help separator
^menuitem help "About" {/about}
}
alias redraw_menus {
for (@ idx = 1, (win = winitem($idx)) && !done, @ idx++) {
if (win) {
if ([$word(6 $win)]!=[<none>]) {
^window $word(0 $win) menu $word(6 $win)
}
} else {@ done = 1}
}
^assign -done;^assign -win;^assign -idx
}
alias makepopup {
@ gt.ppnick = [$1]
@ gt.ppchan = [$0]
menu -popup
menu popup
//submenu popup md "$gt.ppnick"
//menuitem md "Op (+o)" {op $gt.ppnick}
//menuitem md "DeOp (-o)" {deop $gt.ppnick}
//menuitem md "Voice (+v)" {voice $gt.ppnick}
//menuitem md "Quiet (-v)" {quiet $gt.ppnick}
##Add some cool ignore stuff here.
//menuitem md "Ignore (temp)" {ig $gt.ppnick all}
//menuitem md "Ignore (perm)" {ig $gt.ppnick -p all}
//menuitem md "Unignore" {unig $gt.ppnick all}
##Do it right
//submenu popup nxdcc "XDCC"
//menuitem nxdcc -d "Req Pack List" {msg $gt.ppnick xdcc list}
//menuitem nxdcc separator
for (@ _xidx = 1, _xidx <= 15, @ _xidx++) {
//submenu nxdcc nx$_xidx "Pack #$_xidx "
//menuitem nx$_xidx "List" msg $gt.ppnick xdcc list #$_xidx
//menuitem nx$_xidx -d "Send" msg $gt.ppnick xdcc send #$_xidx
//menuitem nx$_xidx "ReSend" msg $gt.ppnick xdcc resend #$_xidx
}
//menuitem popup "Send File(s)" {senddialog $gt.ppnick}
//menuitem popup "ReSend File(s)" {resenddialog $gt.ppnick}
//menuitem popup "Send Sound" {dialogsound $gt.ppnick}
//submenu popup popother "Other"
//menuitem popother -d "Whois" {whois $gt.ppnick}
//menuitem popother "Server Whois" {wii $gt.ppnick}
//menuitem popother "Lookup" {nslookup $gt.ppnick}
//menuitem popother "Channel Idletime" {/showidle}
//menuitem popother separator
//menuitem popother "Talk (query)" {talk $gt.ppnick}
//menuitem popother "Chat (dcc chat query)" {chat $gt.ppnick}
//menuitem popother separator
//menuitem popother "Ping" {ping $gt.ppnick}
//menuitem popother "Time" {/ctcp $gt.ppnick TIME}
//menuitem popother "UserInfo" {/ctcp $gt.ppnick userinfo}
//menuitem popother "Finger" {/ctcp $gt.ppnick finger}
//menuitem popother "Version" {ver $gt.ppnick}
//menuitem popup separator
//submenu popup kicks "Kicks"
//menuitem kicks -d "Random Kick" {k $gt.ppnick}
//menuitem kicks "McKick" {mck $gt.ppnick}
//menuitem kicks "McKick (break)" {mcdk $gt.ppnick}
//menuitem kicks "TacobellKick" {tbk $gt.ppnick}
//menuitem kicks "BurgerKing Kick" {bkk $gt.ppnick}
//menuitem kicks "KentuckyFried" {kfck $gt.ppnick}
//menuitem kicks "CarlsJr Kick" {cjk $gt.ppnick}
//menuitem kicks "TaeKwonLeap Kick" {tkl $gt.ppnick}
//menuitem kicks "GreetKick" {gk $gt.ppnick}
if (gz.extras) //menuitem kicks -b "PimpKick" {pimpkick $gt.ppnick}
if (gz.extras) //menuitem kicks "PimpSlap" {pimpslap $gt.ppnick}
if (gz.extras) //menuitem kicks "GerbilKick" {gerbilkick $gt.ppnick}
if (gz.extras) //menuitem kicks "GimpKick" {gimpkick $gt.ppnick}
if (gz.extras) //menuitem kicks "Stinkkick" {stinkkick $gt.ppnick}
if (gz.extras) //menuitem kicks "LamahKick" {lamahkick $gt.ppnick}
if (gz.extras) //menuitem kicks "Soup Kick" {soupkick $gt.ppnick}
//submenu popup popban "Bans"
//menuitem popban "Ban" {ban $gt.ppnick}
//menuitem popban -d "Ban/Kick" {bk $gt.ppnick}
//menuitem popban "Kick/Ban/Ignore" {kbi $gt.ppnick}
//menuitem popban separator
//menuitem popban "Screw Ban" {sban $gt.ppnick}
//menuitem popban "Screw Ban/Kick" {sban $gt.ppnick;k $gt.ppnick}
//menuitem popban "Screw Ban/Kick/Ignore" {sban $gt.ppnick;k $gt.ppnick;ig $gt.ppnick}
//menuitem popup separator
//submenu popup popnotify "Notify..."
//menuitem popnotify "Add to Notify list" {//notify $gt.ppnick}
//menuitem popnotify "Remove from Notify List" {//notify -$gt.ppnick}
//menuitem popnotify "Show Notify List" {//notify}
//submenu popup poppaste "Clipboard"
//menuitem poppaste -d "Paste" {//pmpaste}
//menuitem poppaste "SmartPaste" {//pmpaste -smart}
//menuitem popup separator
//submenu popup actions "Actions"
//submenu actions cluebats "ClueBats"
//menuitem cluebats "Clue Bludgeon" {/me bludgeons $gt.ppnick with the cluebat}
//menuitem cluebats "Lead ClueBat" {/me pulls out a lead cluebat, engraves $gt.ppnick's name on it, and swings wildly}
//menuitem cluebats "Pi<50>ata" {/me strings $gt.ppnick up, puts on a blindfold, and declares a cluebat pi<70>ata party!!!}
//menuitem cluebats "SuperMomoCluebat" {/me purchases a sUpErMoMo (tm) cluebat and pummels $gt.ppnick to the ground}
//menuitem cluebats "Windows Cluebat" {/me finds the Windows edition Cluebat, taps it over $gt.ppnick's head, and watches it break}
//menuitem actions separator
//menuitem actions "Awake?" {/me pokes $gt.ppnick in the ribs ... you awake?}
//menuitem actions "Backside" {/me calls attention to $gt.ppnick's backside}
//menuitem actions "Booger" {/me flicks a booger at $gt.ppnick}
//menuitem actions "Cookie Toss" {/me tosses $gt.ppnick a cookie... good boy}
//menuitem actions "Curse" {/me wishes the fleas of a thousand camels upon $gt.ppnick's underwear drawer.}
//menuitem actions "Fart" {/me farts in $gt.ppnick's general direction, clearing $gt.ppchan as well.}
//menuitem actions "Finger" {/me gives $gt.ppnick the finger. nInn}
//menuitem actions "Glare" {/me glares at $gt.ppnick}
//submenu actions ctacts -b "Cute Actions"
//menuitem ctacts "Hug" {/me hugs $gt.ppnick ....}
//menuitem ctacts "Pass Kiss" {/me Passionately Kisses $gt.ppnick}
//menuitem ctacts "Hug/Kiss" {/me Hugs and Kisses $gt.ppnick}
//menuitem ctacts "Dance" {/me takes $gt.ppnick in hand and Dances $rgenderex() around the channel}
//menuitem ctacts "OZ-Hug" {/me gives $gt.ppnick a Big Ole Ozzie hug....}
//menuitem ctacts "Rose" {/me drops to $gender knees and hands $gt.ppnick a long stemed rose @>->-`-,-->---}
//menuitem ctacts "Snuggle" {/me snuggles up to $gt.ppnick ....}
//menuitem actions separator
//menuitem actions "HerringSlap" {/me slaps $gt.ppnick around a bit with an official sized #os/2 herring...}
//menuitem actions "Noogie" {/me noogies $gt.ppnick}
//menuitem actions "Nosepicker" {/me watches in disgust, as $gt.ppnick picks their nose}
//menuitem actions "Slap" {/me slaps $gt.ppnick around a bit with a substantially large Brown Cow...}
//menuitem actions "Moon" {/me drops $gender drawers and moons $gt.ppnick ( | )}
//menuitem actions "PoopFace" {say Hey $gt.ppnick does the expression "Up your Bum PoopFace" Mean anything to you ??? :P}
//menuitem actions "Rose" {/me tosses $gt.ppnick a rose @>--`-}
//menuitem actions "Smurf" {/me points at $gt.ppnick and calls him a 09SMURF07}
//submenu actions deaths -b "Deaths"
//menuitem deaths "AK47" {/me pulls out $gender trusty AK47... nestles the sites squarely on $gt.ppnick's head... eases back on the trigger and empties a 30 round clip....BANG You're Dead}
//menuitem actions separator
//menuitem actions "Sneeze" {/me sneezes violently and a blob of snot lands on $gt.ppnick}
//menuitem actions "Thwap" {/me thwaps $gt.ppnick upside the head... \"Get with the program.\"}
//menuitem actions "Tickle" {/me sneaks up behind $gt.ppnick ... tickle tickle tickle...}
//menuitem actions "Wet Noodle" {/me pummels $gt.ppnick with a wet noodle}
//menuitem actions "Whistle" {/me whistles with an innocent look on $gender face...}
//menuitem actions "Win95 Torture" {/me handcuffs $gt.ppnick to a desk with Windows95 - "Multitask, bitch."}
//menuitem actions "Vomit upon" {/me vomits repeatedly upon $gt.ppnick}
//menuitem actions "Yucko" {/me slids over close to $gt.ppnick and gives them a nice slimey YUCKO !!!!}
//submenu popup greets "Greets"
//menuitem greets "moo" {say moo $gt.ppnick}
//menuitem greets "\'lo" {say 'lo $gt.ppnick}
//menuitem greets "heya" {say heya $gt.ppnick}
//menuitem greets "what's up" {say what's up $gt.ppnick}
//menuitem greets "re" {say re $gt.ppnick}
//menuitem greets "hi" {say hi $gt.ppnick}
//menuitem greets "Yo" {say Yo!! $gt.ppnick\!}
//menuitem greets "hello" {say hello $gt.ppnick}
//menuitem greets "Howdy" {say Howdy $gt.ppnick}
//menuitem greets "\'sup?" {say \'sup $gt.ppnick\?}
//menuitem greets "!!!!!" {say $gt.ppnick!!!!!}
//menuitem greets "!@#\$\%\^" {say $gt.ppnick\!@#\$\%\^}
//submenu popup byes "Byes"
//menuitem byes "bye" {say bye $gt.ppnick}
//menuitem byes "hastalapasta" {say hastalapasta $gt.ppnick}
//menuitem byes "hastalabyebye" {say Hastalabyebye $gt.ppnick}
//menuitem byes "wave" {/me waves bye to $gt.ppnick\. \"Don't let the door hit you in the arse\"}
//menuitem byes "See ya" {say See ya $gt.ppnick}
if ([$loadacts]==[YES]) {
/loadplug $actionsfile
}
^popupmenu popup
}
alias rccheck {
if (onchannel($lastclickline(4) $C)==1) {makepopup $C $lastclickline(4)} else {windowlist}
}
alias ldccheck {
if (onchannel($lastclickline(4) $C)==1) {talk $lastclickline(4)}
}
alias logstart {
@ cc = [$0]
filedialog S $exedir/*.log "Logfile for $cc" "Set" {
if ([$0]==[OK]) {
^cset CHANNEL_LOG_FILE $decode($1-)
^cset CHANNEL_LOG on
gecho Logging of $cc to $decode($1-) now active.
}
}
}
alias logchange {
@ cc = [$0]
if ([$getcset(CHANNEL_LOG $cc)]!=[ON]) {
filedialog S $exedir/*.log "Logfile for $cc" "Set" {
if ([$0]==[OK]) {
^cset CHANNEL_LOG_FILE $decode($1-)
gecho Log file for $cc changed to $decode($1-).
}
}
} else {gecho You must turn Logging off before changing the log file}
}
alias logstop {
@ cc = [$0]
^cset CHANNEL_LOG OFF
gecho Log file $getcset(CHANNEL_LOG_FILE $cc) for $cc now closed.
}
alias gz.ajoinlist {
for (@ idx = 0, ajoinitem($idx), @ idx++) {
push _ret $ajoinitem($idx)
}
#@function_return = $_ret
return $_ret
purge _ret
}
alias inajoinlist {
@ function_return = match($0 $gz.ajoinlist()) ? 1 : 0
}
#Popup Channel Menu inspired by menus.scr by OS3
alias chanmenu {
@ cc = [$0]
menu -popcm
menu popcm
if (match($cc $mychannels())) {
if (cc != T) {//menuitem popcm "goto $cc window" /j $cc}
//menuitem popcm \"~Leave: $cc\" {leave $cc}
} else {//menuitem popcm \"~Join: $cc\" {join $cc}}
if (inajoinlist($cc)) {
//menuitem popcm "~Remove from AJoin" {unajoin $cc}
} else {
//menuitem popcm "~Add to AJoin" {ajoin $cc}
}
if (match($cc $mychannels())) {
if ([$getcset(CHANNEL_LOG $cc)]==[ON]) {
menuitem popcm "Stop Logging" { logstop $cc }
} else {
menuitem popcm "Start Logging" { logstart $cc $1- }
}
menuitem popcm "Change Logfile" { logchange $cc $1- }
}
if (![$1]) {
menuitem popcm separator
//submenu popcm cmm "Channel Stats"
if (gz.longcsc) {
//menuitem cmm -d "Names (detailed)" {/scan}
//menuitem cmm "Names (short)" {cnames}
} else {
//menuitem cmm -d "Names (short)" {cnames}
//menuitem cmm "Names (detailed)" {/scan}
}
//menuitem cmm "Who (Detailed)" {cwho}
//menuitem cmm "Show Channel Bans" {csb}
//menuitem cmm "Show Channel Topic" {t}
//submenu popcm cmodes "Modes"
//menuitem cmodes "Show Modes" {gecho Mode For $cc is \+$chanmode($cc)}
//menuitem cmodes "Remove Keys (unlock)" {unlock}
//submenu cmodes csetmode "Set Modes"
//menuitem csetmode "Mode (+nst)" {/mode $cc +nst}
//menuitem csetmode "Mode (+inst)" {/mode $cc +inst}
//submenu cmodes creset "Reset Modes"
//menuitem creset "Reset (+nst)" {/creset}
//menuitem creset "Reset (+inst)" {/creseti}
//submenu cmodes cmass "Mass"
//menuitem cmass "Mass Op (+o)" {mop}
//menuitem cmass "Mass DeOp (-o)" {mdop}
//menuitem cmass "Mass Voice (+v)" {mvoice}
//menuitem cmass "Mass UnVoice (-v)" {mdvoice}
//menuitem popcm separator
//submenu popcm credir "Redirects"
//submenu credir lrm "Last Received Message"
//menuitem lrm "=> Channel" {relm}
//menuitem lrm "=> Topic" {relmt}
//submenu credir lrn "Last Received Notice"
//menuitem lrn "=> Channel" {reln}
//menuitem lrn "=> Topic" {relnt}
//submenu credir lsm "Last Sent Message"
//menuitem lsm "=> Channel" {relsm}
//menuitem lsm "=> Topic" {relsmt}
//submenu credir lsn "Last Sent Notice"
//menuitem lsn "=> Channel" {relsn}
//menuitem lsn "=> Topic" {relsnt}
//submenu popcm other "Other"
//menuitem other "Channel Away" {away -c}
//menuitem other "Channel Back" {cback}
//menuitem other "Cycle" {cycle}
//menuitem other "Check Offers" {/ctcp $cc xdcc list}
//menuitem other "Check ctcp Time" {/ctcp $cc time}
//menuitem popcm "Send Sound" dialogsound $cc
//menuitem popcm separator
//submenu popcm cgreets "Greets"
//menuitem cgreets "moo" {/say moo!}
//menuitem cgreets "zug zug" {/say zug zug}
//menuitem cgreets "Hey all" {/say Hey all}
//menuitem cgreets "'lo" {/say 'lo}
//menuitem cgreets "What's up folks?" {/say What's up folks?}
//submenu popcm cacts "Actions"
//menuitem cacts "Binoculars" {/me pulls out $gender binoculars and searches $cc for intelligent life.... Damn... None to be found!}
//menuitem cacts "Gerbil Release" {/me releases $gender gerbils upon $cc, run while you can!!!}
//menuitem cacts "PinDrop" {/me drops the proverbial pin...}
//menuitem cacts "Slide" {/me slides into the channel... dances a happy jig... falls on $gender arse in the process}
//submenu popcm cbyes "Byes"
//menuitem cbyes "Later all" {/say Later all}
//menuitem popcm separator
//menuitem popcm "Ping" {ping $CC}
//menuitem popcm "Version" {ver $CC}
}
popupmenu popcm
#^assign -cc
}
alias targetmenu {
menu -tm
menu tm
if (![$1]) {
menuitem tm "Queried: $0 " #
} else {
menuitem tm "nick: $0 " #
}
menuitem tm separator
if (![$1]) {
menuitem tm "Turn Log On" {//^window logfile $exedir/logs/$left(8 $strip(=\\*?<>|\"\' $T)).log;//window log on}
menuitem tm "Turn Log off" //window log off
} else {
menuitem tm "Talk Window" /talk $0
menuitem tm "Chat Window" /chat $0
}
submenu tm tmi "Ignores"
menuitem tmi -d "Ignore (temp)" ig $0 -t 180 all
menuitem tmi "Ignore (perm)" ig $0 -p all
menuitem tmi "Unignore" unig $0 all
//submenu tm tmo "Other"
//menuitem tmo -d "Whois" whois $0
//menuitem tmo "Server Whois" wii $0
//menuitem tmo "Lookup" nslookup $0
//menuitem tmo separator
//menuitem tmo "Ping" ping $0
//menuitem tmo "Time" ctcp $0 TIME
//menuitem tmo "UserInfo" ctcp $0 userinfo
//menuitem tmo "Finger" ctcp $0 finger
//menuitem tmo "Version" ver $0
//submenu tm tmx "XDCC"
//menuitem tmx -d "Req Pack List" msg $0 xdcc list
//menuitem tmx separator
for (@ _xidx = 1, _xidx <= 15, @ _xidx++) {
//submenu tmx tmx$_xidx "Pack #$_xidx "
//menuitem tmx$_xidx "List" msg $0 xdcc list #$_xidx
//menuitem tmx$_xidx -d "Send" msg $0 xdcc send #$_xidx
//menuitem tmx$_xidx "ReSend" msg $0 xdcc resend #$_xidx
}
//menuitem tm "Send File(s)" senddialog $0
//menuitem tm "ReSend File(s)" resenddialog $0
//menuitem tm "Send Sound" dialogsound $0
popupmenu tm
^assign -_xidx
}
alias windowlist {
@ _ll.l = lastclickline(0)
if (![$0]) {@ _cw = lastclickline(3);@ __cw = lastclickline(4)} else {@ _cw = []}
if ((word(2 $_ll.l) == [SOUND:]) && (![$0]) && (word(4 $_ll.l) == [\(autorequest])) {
menu -tmpmenu
menu tmpmenu
if (gz.mircsndpatch) {
//^quote PRIVMSG $1 :!$0 $3
menuitem tmpmenu "request Sound [$word(3 $_ll.l)]" { /msg $C !$word(1 $_ll.l) $word(3 $_ll.l) }
} else {
menuitem tmpmenu "request Sound [$word(3 $_ll.l)]" { /msg $word(1 $_ll.l) !$word(1 $_ll.l) $word(3 $_ll.l) }
}
# menuitem tmpmenu "request Sound [$word(3 $_ll.l)]" { /msg $word(1 $_ll.l) !$word(1 $_ll.l) $word(3 $_ll.l) }
popupmenu tmpmenu
} else if ((rmatch($_cw *.??*)) && (@_cw > 4)) {
# if (!rmatch($_cw http:// ftp:// gopher://)) {@_cw=[http://]##_cw}
urlmenu $_cw;^assign -_cw
# } else if (ischannel($strip(@\'\"\(\) $_cw))) {chanmenu $strip(@\'\"\(\) $_cw) -d;^assign -_cw
} else if (ischannel($gz.safechan($_cw))) {chanmenu $gz.safechan($_cw) -d;^assign -_cw
# } else if (ischannel($strip(+@\'\"\(\) $_cw))) {chanmenu $_cw -d;^assign -_cw}
} else if (__cw == T && [$T]!=[]) {targetmenu $T
} else {
menu -menulist
menu menulist
#submenu menulist setup -s "Setup"
//submenu menulist pastepop "Clipboard"
//menuitem pastepop -d "Paste" {//pmpaste}
//menuitem pastepop "SmartPaste" {//pmpaste -smart}
# if (lastclickline(3)) {
# //submenu menulist webster "Dictionary"
# //menuitem webster "Define: $strip(\[\]!@#$%^&*\(\)-_=+\\|,.<>\/?~`\" $lastclickline(3))" define $strip(\[\]!@#$%^&*\(\)-_=+\\|,.<>\/?~`\" $lastclickline(3))
# //menuitem webster "Spell: $strip(\[\]!@#$%^&*\(\)-_=+\\|,.<>\/?~`\" $lastclickline(3))" spell $strip(\[\]!@#$%^&*\(\)-_=+\\|,.<>\/?~`\" $lastclickline(3))
# }
//submenu menulist popsave "Save..."
//menuitem popsave "Save All" {
/save
/cdcc save
}
//menuitem popsave "Save BitchX Settings" {/save}
//menuitem popsave "Save CDCC Pack List" {/cdcc save}
//menuitem menulist "Change Font" {fontdialog 0 0}
makedccmenu
submenu menulist subdcc "Current DCC Items"
if (dccitem(1)) {
#add default when fixed
menuitem subdcc -d "Display DCC Items" dcc
menuitem subdcc separator
} else {
menuitem subdcc -d "No DCC's in progress" dcc
}
for (@ _gl.i = 1, _gl.x = dccitem($_gl.i), @ _gl.i++) {
if (word(0 $_gl.x) == [chat] || word(0 $_gl.x) == [raw]) {
submenu subdcc subdccsubgl$_gl.i "~$_gl.i $toupper($word(0 $_gl.x)): $word(1 $_gl.x)"
} else {
submenu subdcc subdccsubgl$_gl.i "~$_gl.i $toupper($word(0 $_gl.x)): $word(1 $_gl.x) \($file.sanspath($word(8 $_gl.x))\)" gl $_gl.i
}
menuitem subdccsubgl$_gl.i -d "Display" dcc
if (xdcc.isoktopreview($file.sanspath($word(8 $_gl.x)))) {
menuitem subdccsubgl$_gl.i "~Preview Image" { previewbynum $word(9 $_gl.x) }
}
menuitem subdccsubgl$_gl.i "Close" { //dcc close $word(9 $_gl.x) }
}
purge _gl
//menuitem menulist "Show Notify" {//notify}
//menuitem menulist separator
//menuitem menulist "Properties" {/properties}
//menuitem menulist separator
//menuitem menulist " << Window list >> " #
@ done = 0
for (@ idx = 1, (win = winitem($idx)) && !done, @ idx++) {
if (win) {
if ([$word(3 $win)]!=[<none>]) {
//menuitem menulist "~$idx $word(3 $win) [$word(0 $win)]" { //window show $word(0 $win) }
} else if ([$word(4 $win)!=[<none>]) {
//menuitem menulist "~$idx $word(4 $win) [$word(0 $win)]" { //window show $word(0 $win) }
} else {
//menuitem menulist "~$idx $word(1 $win) [$word(0 $win)]" { //window show $word(0 $win) }
}
} else {@ done = 1}
}
popupmenu menulist
}
^assign -_cw;^assign -__cw
^assign -done
}
alias urlmenu {
@ url = [$strip(\(\)\" $0)]
if (url) {
menu -wm
menu wm
//submenu wm wm3 "Netscape"
//menuitem wm3 -d \"$left(100 $url)\" webfix netscape $url
//submenu wm wm1 "WebExplorer"
//menuitem wm1 -d \"$left(100 $url)\" webfix webexplorer $url
//submenu wm wm2 "Lynx"
//menuitem wm2 -d \"$left(100 $url)\" exec -start LYNX $url
//menuitem wm separator
//submenu wm wmh "Add to URL Save File"
//menuitem wmh -d \"$left(100 $url)\" addtofile $url
//submenu wm wmc "Copy URL to clipboard"
//menuitem wmc -d \"$left(100 $url)\" clipbrdput $url
popupmenu wm
}
^assign -url
}
alias webfix {
@ _weblist = [$webrun($0)]
if (_weblist) {
@ webrun(activate $word(0 $_weblist))
@ webrun($0 pushurl $word(0 $_weblist) $1)
} else {
if ([$0]==[webexplorer]) {/exec -noshell explore.exe $1}
if ([$0]==[netscape]) {/exec -start netscape $browserparams $1}
}
^assign -_weblist
}
#OS2-Mike's idea and code stub.
alias dialogsound {
@ gt.sndnick = [$0]
if (ischannel($gt.sndnick)) {
filedialog OA $sounddir/*.* "Send Sound Files" "Send/Exit" "Send" {
if ([$0]==[OK]) {/csound $gt.sndnick $decode($1);^assign -gt.sndnick}
if ([$0]==[APPLY]) {/csound $gt.sndnick $decode($1)}
if ([$0]==[CANCEL]) {^assign -gt.sndnick}
}
} else {
filedialog OA $sounddir/*.* "Send Sound Files" "Send/Exit" "Send" {
if ([$0]==[OK]) {
if (ctcpsnd.localfile($decode($1))) {
/mmpm.playfile $ctcpsnd.fname
//ctcp $gt.sndnick SOUND $decode($1)
^assign -gt.sndnick
}
}
if ([$0]==[APPLY]) {
if (ctcpsnd.localfile($decode($1))) {
/mmpm.playfile $ctcpsnd.fname
//ctcp $gt.sndnick SOUND $decode($1)
}
}
if ([$0]==[CANCEL) {
^assign -gt.sndnick
}
}
}
}
alias dialogplaysound {
filedialog OA $sounddir/*.* "Play Sound Files" "Play" "Test" {
if ([$0]==[OK]) {
if (ctcpsnd.localfile($decode($1))) {
/mmpm.playfile $ctcpsnd.fname
^assign -gt.sndnick
}
}
if ([$0]==[APPLY]) {
if (ctcpsnd.localfile($decode($1))) {
/mmpm.playfile $ctcpsnd.fname
}
}
if ([$0]==[CANCEL) {
^assign -gt.sndnick
}
}
}
alias senddialog {//filedialog OM $gx.uploaddir\* "Select Files to send" sendproc send $0 $$*}
alias resenddialog {//filedialog OM $gx.uploaddir\* "Select Files to send" sendproc resend $0 $$*}
alias sendproc {
if ([$2] == [OK]) {
@ _sp.f = 0
fe ($3-) _sp.t {
if (fexist($decode($3-)) == 1) {
//dcc $0 $1 $decode($3-)
@ _sp.f = 1
}
}
if (_sp.f) {gecho File Request sent to $1}
purge _sp
}
}
alias mansenddialog {//filedialog OM $gx.uploaddir\* "Select Files to send" mansendproc send $$*}
alias manresenddialog {//filedialog OM $gx.uploaddir\* "Select Files to send" mansendproc resend $$*}
alias mansendproc {
if ([$1] == [OK]) {
@ _sp.n = [$"[gxDCC] Nick to send to : "]
if (_sp.n) {
@ _sp.f = 0
fe ($2-) _sp.t {
if (fexist($decode($_sp.t)) == 1) {
//dcc $0 $_sp.n $decode($_sp.t)
@ _sp.f = 1
}
}
}
if (_sp.f) {gecho File Request sent to $_sp.n}
purge _sp
}
}
#on ^hook "dccchanged*" {
# makedccmenu
# /redraw_menus
# }
#on #-dcc_connect 23 "*" {^hook dccchanged}
#on #-dcc_lost 23 "*" {^hook dccchanged}
#on #-dcc_request 23 "*" {^hook dccchanged}
#^on ^connect "*" {
# makemenu
# /redraw_menu
#}
^on #^timer 60 * {
if (rmatch($0 %:00*) || match($0 %:30*) || match($0 %:15*) || match($0 %:45*)) {
for (@ idx = 1, (win = winitem($idx)), @ idx++) {
if (win) {xecho -b -window $word(0 $win) The Time is now $0} }
}
}
alias gz.sndon {
if (ctcpsound == [OFF]) {
@ function_return = 0
} else {
if (away && gz.noctcpaway) {
@ function_return = 0
} else {
@ function_return = isctog($0 S) ? 0 : 1
}
}
}
alias gz.reqon {
if (ctcpsndreq == [OFF]) {
@ function_return = 0
} else {
if (away && gz.noctcpaway) {
@ function_return = 0
} else {
@ function_return = isctog($0 R) ? 0 : 1
}
}
}
on ^ctcp "% % SOUND *" {
@ _dl = []
if (rmatch($3 *.wav *.au *.mid) && [$3] && gz.sndon($1)) {
if (ctcpsnd.havefile($3)) {
# mmpm.playfile2 $gz.playifplaying $ctcpsnd.fname
mmpm.playfile $ctcpsnd.fname
} else {
if (!gz.reqon($1)) { @ _dl = [autorequest disabled]
} else if (ctcpsnd.isgetting($3)) { @ _dl = [downloading]
} else if (ctcpsnd.isrequested($3) < 30) { @ _dl = [requested]
} else {
if (gz.mircsndpatch) {
//^quote PRIVMSG $1 :!$0 $3
} else {
//^quote PRIVMSG $0 :!$0 $3
}
ctcpsnd.requested $3
@ _dl = [requesting]
}
}
if (ischannel($1)) {
//xecho -b -t $1 ${gc.nickaction}$0${cl}/$1 SOUND: $file.sanspath($3) ${_dl?[\($_dl\)]:[]} $mirc2cntl(,$4-)
} else {
//xecho -b ${gc.nickaction}$0${cl} SOUND: $file.sanspath($3) ${_dl?[\($_dl\)]:[]} $mirc2cntl(,$4-)
}
} else {
if (ischannel($1)) {
//xecho -b -t $1 ${gc.nickaction}$0${cl}/$1 SOUND: $file.sanspath($3) \(ctcp sounds disabled\) $mirc2cntl(,$4-)
} else {
//xecho -b ${gc.nickaction}$0${cl} SOUND: $file.sanspath($3) \(ctcp sounds disabled) $mirc2cntl(,$4-)
}
}
}
on ^hook "ctcpsnd received %*" {
if (ctcpsound == [on]) {
gecho Requested Sound Finished: $2-
# /mmpm.playfile2 $gz.playifplaying $2
/mmpm.playfile $2
}
}
on ^hook "ctcpsnd request % % *" {
gecho \($4\) file request from $3 ${[$2]?[sent]:[access denied]}
}
on #-send_msg 74 "% !% %.wav" ctcpsnd.request $2
on #-send_msg 74 "% !%.au" ctcpsnd.request $2
on #-send_msg 74 "% !%.mid" ctcpsnd.request $2
on #-send_notice 74 "% !% %.wav" ctcpsnd.request $2
on #-send_notice 74 "% !% %.au" ctcpsnd.request $2
on #-send_notice 74 "% !% %.mid" ctcpsnd.request $2
on #-send_public 74 "% !% %.wav" ctcpsnd.request $2
on #-send_notice 74 "% !% %.mid" ctcpsnd.request $2
on #-send_msg 74 "% !% %.au" ctcpsnd.request $2
alias sound {
if ([$0]) {
if (T) {
if (ischannel($T)) {@ _t = T} else {@ _t = strip(= $T)}
if (ctcpsnd.localfile($0)) {
# /mmpm.playfile2 $gz.playifplaying $ctcpsnd.fname
/mmpm.playfile $ctcpsnd.fname
/ctcp $_t SOUND $0-
if ([$1] != []) {
//xecho -b ${gc.action}$N${cl}/$T SOUND \($0\): $1-
} else {
//xecho -b ${gc.action}$N${cl}/$T SOUND \($0\)
}
} else {
gecho File $0 does not exist${index(\\/: $0) >= 0 ? [, please check your /set sound_path] : []}
}
} else {
gecho There are no channel or /query in this window
}
} else {
gecho Usage: /sound file.wav [</me like action>]
}
^assign -_t
}
alias csound {
if (ctcpsnd.localfile($1)) {
# /mmpm.playfile2 $gz.playifplaying $ctcpsnd.fname
/mmpm.playfile $ctcpsnd.fname
/ctcp $0 SOUND $1-
//xecho -b ${gc.action}$N${cl} SOUND \($1)
} else {
gecho File $1 does not exist
}
}
alias chat {
if ([$1]==[-b]) {@ _oink = gz.autotalkfg} else {@ _oink = 1}
if ([$0]) {
for (@ idx = 1, (win = winitem($idx)) && !done, @ idx++) {
if (win) {
if (word(4 $win)==[=$0]) {
gecho You already have a query to $0
@ borky = 1
}
} else {@ done = 1}
}
if (!borky) {
gecho ${gc.msginfo} Creating chat window with${cl} ${gc.msgfrom} $0${cl}
//^window create nicklist 0 query =$0
//dcc chat $0
if (autotalklogging == [ON]) {
switch ($gz.drivetype($gz.logdir)) {
(hpfs) {@ _talk.file = strip(\\*?<>|\"\' $0) ## [.log]}
(*) {@ _talk.file = left(8 $strip(\\*?<>|\"\' $0)) ## [.log]}
}
//^window $_moo logfile $gz.logdir\/$_talk.file
xecho -target $0 $gemz Window Logfile is $gz.logdir\/$_talk.file
//^window $_moo log on
xecho -target $0 $gemz Window LOG is ON
}
}
} else {gecho Usage talk <nick>}
^assign -done;^assign -borky;^assign -_moo;^assign -_oink
}
alias talk {
if ([$1]==[-b]) {@ _oink = gz.autotalkfg} else {@ _oink = 1}
if ([$0]) {
for (@ idx = 1, (win = winitem($idx)) && !done, @ idx++) {
if (win) {
if (word(4 $win)==[$0]) {
gecho You already have a query to $0
@ borky = 1
}
} else {@ done = 1}
}
if (!borky) {
gecho ${gc.msginfo} Creating chat window with${cl} ${gc.msgfrom} $0${cl}
//^window create nicklist 0 query $0
if (autotalklogging == [ON]) {
switch ($gz.drivetype($gz.logdir)) {
(hpfs) {@ _talk.file = strip(\\*?<>|\"\' $0) ## [.log]}
(*) {@ _talk.file = left(8 $strip(\\*?<>|\"\' $0)) ## [.log]}
}
//^window $_moo logfile $gz.logdir\/$_talk.file
xecho -target $0 $gemz Window Logfile is $gz.logdir\/$_talk.file
//^window $_moo log on
xecho -target $0 $gemz Window LOG is ON
}
}
} else {gecho Usage talk <nick>}
^assign -done;^assign -borky;^assign -_moo;^assign -_oink
}
alias addhilite {
if ([$0]) {
if ([$0]==[-n]) {
push hilitelist $1
gecho \$1\ added to the hilite list.
} else {
if (match($0 $hilitelist)) {
gecho a matching highlite string was found, to force
gecho a new highlight, use /addhilite -n <string>
} else {
push hilitelist $0
gecho \$0\ added to the hilite list.
}
}
} else {
gecho Usage: /addhilite <word/filter>
}
}
alias addignore /ignore $*
alias addnotify {
if ([$0]) {
notify $0
} else {gecho Usage: /addnotify <nick1>}
}
alias showignore {
/ignore
}
alias cnames {
if ([$0]) {
if (ischannel($0)) {
if (onchannel($N $0)) {
gtecho $0 $0: $_cnames($0)
} else {gecho You are not on $0}
} else {gecho $0 is not a valid channel;gecho Usage: /cnames [<#channel>]}
} else {
if (C) {
gecho $C: $_cnames($C)
} else {gecho You are not on any channels}
}
}
alias _cnames {
fe ($chanusers($0)) _cn.ch {
if (ischanop($_cn.ch $0)) {
@ _cn.no #= [ @$_cn.ch]
} else {
@ _cn.nv #= isvoice($_cn.ch $0) ? [ +$_cn.ch] : [ $_cn.ch]
}
}
@ function_return = [${gc.chops}$_cn.no${cl}${gc.lamers}$_cn.nv$_cn.nl${cl}]
purge _cn
}
alias creseti {/c -inst+mlk 40 resetting;/c +inst-mlk resetting}
alias creset {/c -nst+milk 40 resetting;/c +nst-milk resetting}
alias ctcpreply if ([$0]) {gecho ${gc.ctcpban}ctcp${cl}: ${gc.ctcp}$tolower($1) reply${cl} from ${gc.ctcpnk}$0${cl}: $2-}
alias ctcpreq if ([$0]) {gecho ${gc.ctcpban}ctcp${cl}: ${gc.ctcp}$tolower($2) request${cl} from ${gc.ctcpnk}$0${cl} ${gc.peren}\(${gc.ctcpnk}$userhost()${gc.peren}\)${cl} to ${gc.ctcpnk}$1${cl}}
alias cwait {wait -CMD #;wait -CMD $0-}
alias ctogg {
if (![$0]) {
foreach ch.flags _ch {
gecho Channel $decode($_ch)\ flags $ch.flags[$_ch]\
}
gecho Usage: /ctogg [#channel] flags
} else {
if (![$1]) {
if (ischannel($0)) {
@ _ch = [$%0]
gecho Channel $decode($_ch)\ flags $ch.flags[$_ch]\
} else {
if (C) {
ctogg $C $0
} else {
gecho No current channel in this window
gecho Usage: /ctogg [#channel] flags
}
}
} else {
@ _ch = ischannel($0) ? [$0] : [#$0]
@ _wasm = index(M $ch.flags[$%_ch]) >= 0
@ ch.flags[$%_ch] = _alter_flags($_valid_ctogg($1) $ch.flags[$%_ch])
if (!ch.flags[$%_ch]) {
//^assign -ch.flags[$%_ch]
gecho Channel $_ch\ removed
if (_wasm) {
_recache_channels $_ch
}
} else {
gecho New flags for $_ch\ are '$ch.flags[$%_ch]'
if (_wasm != (index(M $ch.flags[$%_ch]) >= 0)) {
_recache_channels $_ch
}
}
}
}
//^assign -_ch
}
# cached /who
alias cwho {
if ([$0] && onchannel($N $0)) {
fe ($chanusers($0)) _n {
gecho ${ischanop($_n $0) ? [@] : isvoice($_n $0) ? [+] : [ ]}$[9]_n [$[8]nickdata($0 $_n 2)\] '$nick($_n)->host'
}
//^assign -_n
} else {
if ([$0]) {
gecho You are not on channel $0
} else {
if (C) {
cwho $C
} else {
gecho You aren't on any channel in this window
}
}
}
}
# cached banlist
alias csb {
if ([$0] && onchannel($N $0)) {
@ _idx = 0
@ _idx2 = 0
fe ($chanmode($0 1)) _n {
@ _idx++
gecho [$[2]_idx\] '$_n' $tdiff(${time() - word(${_idx2 * 3 + 2} $chanmode($0 2))}) old
gecho ${_idx2*3}
@ _idx2++
}
if ([$_idx]==[0]) {gecho There Are No Bans in $0}
//^assign -_n
//^assign -_idx
//^assign -_idx2
} else {
if ([$0]) {
gecho You are not on channel $0
} else {
if (C) {
csb $C
} else {
gecho You are on any channel in this window
}
}
}
}
#csc written by mikh, enhanced by gemini
alias csc {
if ([$0] && onchannel($N $0)) {
@ _co.t = #chanusers($C)_co.u
fe ($gz.chanops($0)) _co.tn {@ _co.co #= _co.co ? [ @$_co.tn] : [@$_co.tn]}
fe ($gz.voices($0)) _co.tn {@ _co.v #= _co.v ? [ +$_co.tn] : [+$_co.tn]}
@ _co.l = gz.lamers($0)
gtbecho $0 ${gc.cscborder}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
gtbecho $0 ${gc.cscborder}<7D>${gc.topicchan}$[10]0${cl} ${gc.cscborder}<7D>${cl} ${gc.chops}ChanOps${cl}: \$[-3]#_co.co\ ${gc.cscborder}<7D>${cl} ${gc.lamers}Voiced${cl}: \$[-3]#_co.v\ ${gc.cscborder}<7D>${cl} ${gc.lamers}Normal${cl}: \$[-3]#_co.l\ ${gc.cscborder}<7D>${cl} Total: \$[-3]_co.t\ ${gc.cscborder}<7D>
gtbecho $0 ${gc.cscborder}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ
if (_co.co) {
fe ($_co.co) _co.1 _co.2 _co.3 _co.4 _co.5 _co.6 {
gtbecho $0 ${gc.cscborder}<7D> ${gc.chops}$[10]_co.1 $[10]_co.2 $[10]_co.3 $[10]_co.4 $[10]_co.5 $[10]_co.6 ${gc.cscborder}<7D>
}
}
if (_co.v || _co.l) {
fe ($_co.v $_co.l) _co.1 _co.2 _co.3 _co.4 _co.5 _co.6 {
gtbecho $0 ${gc.cscborder}<7D> ${gc.lamers}$[10]_co.1 $[10]_co.2 $[10]_co.3 $[10]_co.4 $[10]_co.5 $[10]_co.6 ${gc.cscborder}<7D>
}
}
gtbecho $0 ${gc.cscborder}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
purge _co
} else {
if ([$0]) {
gecho You are not on channel $0
} else {
if (C) {
csc $C
} else {
gecho No current channel in this window
}
}
}
purge _co
}
################################
# GemZ easy find Api functions #
################################
alias gz.bkgd {
switch ($_bkgd) {
(-) {@ _bkgd = [\\]}
(\\) {@ _bkgd = [|]}
(|) {@ _bkgd = [/]}
(/) {@ _bkgd = [-]}
(*) {@ _bkgd = [-]}
}
^set status_notify [$_bkgd][%F]
}
alias gz.bytestomegs {
^set float on
@ _xm.m = [$0] / 1048576
^set float off
@ function_return = mid(0 ${index(. $_xm.m) + 3} $_xm.m)
purge _xm
}
alias gz.chanops {
fe ($chanusers($0)) _h.o {
if (ischanop($_h.o $0)) {@ _h.r #= _h.r ? [ $_h.o] : _h.o}
}
@ function_return = _h.r
purge _h
}
alias chanops {@ function_return = gz.chanops($0)}
alias gz.chatstat {
# Input: <nick>
# return 0 if no chat
# rerurn 1 if chat is waiting
# return 2 if chat is active
# return 3 if chat is offered
@ function_return = 0
for (@ _d.i = 0, (_d.c = dccitem($_d.i)), @ _d.i++) {
if ((word(0 $_d.c) == [CHAT]) && (word(1 $_d.c) == [$0])) {
if (word(2 $_d.c) == [Active]) {@ function_return = 2
} else if (word(2 $_d.c) == [Offered]) {@ function_return = 3
} else {@ function_return = 1}
//break
}
}
purge _d
}
alias gz.chatwinstat {
# Input: <nick>
# return 0 if there isn't a window (regardless of dcc status)
# return 1 if there is a window (regardless of dcc status)
@ function_return = 0
for (@ _c.i = 1, (_c.w = winitem($_c.i)), @ _c.i++) {
if (_c.w) {
if (word(1 $_c.w) == [=$0_Queried]) {
@ function_return = 1
//break
}
}
}
purge _c
}
alias gz.rows {@ function_return = gz.dimension(row $*)}
alias gz.cols {@ function_return = gz.dimension(col $*)}
alias gz.dimension {
switch ($0) {
(col) {@ _cl.t = 8}
(row) {@ _cl.t = 9}
}
switch ($2) {
(r) {@ _cl.mw = 0}
(n) {@ _cl.mw = 1}
(c) {@ _cl.mw = 3}
(q) {@ _cl.mw = 4}
(*) {@ _cl.mw = 0}
}
@ function_return = 0
for (@ _cl.i = 1, _cl.w = winitem($_cl.i), @ _cl.i++) {
if (word($_cl.mw $_cl.w) == [$1]) {
@ function_return = word($_cl.t $_cl.w)
//break
}
}
purge _cl
}
alias gz.exdcc {//dcc $0 $1 "$decode($2)"}
alias gz.finuh {@ function_return = is_ip($0@$1) ? [$0] ## [@] ## [$1] : fix.umask($0 $1)}
alias gz.finline {
@ _w.i = [..................................................................]
@ _w.0 = [$0]
@ _w.1 = strip( $1)
@ _w.2 = strip( $2)
@ _w.s = _w.0 - (@_w.1 + @_w.2)
if (_w.s < 1) {@ _w.s = 0}
@ function_return = [$1] ## left($_w.s $_w.i) ## [$2]
purge _w
}
alias gz.fixbytes {
^set float on
if ([$0] < 1000) {@ function_return = [$0] ## [b]
} else if ([$0] < 10240) {@ function_return = left(3 ${[$0] / 1024}) ## [k]
} else if ([$0] < 102400) {@ function_return = left(2 ${[$0] / 1024}) ## [k]
} else if ([$0] < 1022976) {@ function_return = left(3 ${[$0] / 1024}) ## [k]
} else if ([$0] < 10485761) {@ function_return = left(3 ${[$0] / 1048576}) ##[M]
} else if ([$0] < 104857600) {@ function_return = left(2 ${[$0] / 1048576}) ##[M]
} else {@ function_return = left(3 ${[$0] / 1048576}) ##[M]}
^set float off
}
alias gz.fixnum {
if (left(1 $0) == [-]) {@ _fn.neg = 1}
fec ($0) _fn.rc {@ _fn.r = _fn.rc ## _fn.r}
@ _fn.r = strip(- $_fn.r)
fec ($_fn.r) _fn.sc {
if (_fn.c == 3) {@ _fn.c = 0;@ _fn.scr = _fn.sc ## [,] ## _fn.scr} else {@ _fn.scr = _fn.sc ## _fn.scr}
@ _fn.c++
}
if (_fn.neg) {@ _fn.scr = [-] ## _fn.scr}
@ function_return = _fn.scr
purge _fn
}
alias gz.fixpath {
fec ($*) _fp.c {if ([$_fp.c]==[\\]) {if (_fp.r) {@ _fp.r #= [/]} else {@ _fp.r = [/]}} else {if (_fp.r) {@ _fp.r #= _fp.c} else {@ _fp.r = _fp.c}}}
@ function_return = _fp.r
purge _fp
}
alias gz.getdate {
@ _d = stime($time()))
@ function_return = [$gz.getmonth($word(1 $_d))]##[/]##[$word(2 $_d)]##[/]##[$right(2 $word(4 $_d))]
^assign -_d
}
alias gz.getmonth {
switch ($0) {
(Jan) {@ _m = 1}
(Feb) {@ _m = 2}
(Mar) {@ _m = 3}
(Apr) {@ _m = 4}
(May) {@ _m = 5}
(Jun) {@ _m = 6}
(Jul) {@ _m = 7}
(Aug) {@ _m = 8}
(Sep) {@ _m = 9}
(Oct) {@ _m = 10}
(Nov) {@ _m = 11}
(Dec) {@ _m = 12}
}
@ function_return = _m
^assign -_m
}
alias gz.hasnicklist {
# takes in $T for window in question
if (chanwindow($0)) {
for (@ _is.i = 1, _is.w = winitem($_is.i), @ _is.i++) {
if (word(0 $_is.w) == chanwindow($0)) {
@ function_return = index(N $word(16 $_is.w)) >= 0 ? 1 : 0
//break
}}}
purge _is
}
alias gz.isoper {@ function_return = O == status_oper ? 1 : gz.localoper}
alias gz.lamers {
fe ($chanusers($0)) _h.o {
if (!isvoice($_h.o $0) && !ischanop($_h.o $0)) {@ _h.r #= _h.r ? [ $_h.o] : _h.o}
}
@ function_return = _h.r
purge _h
}
alias gz.nban {
@ _nb.u = [$strip(~ $mid(0 $index(@ $1) $1))]
@ _nb.u = [$right(8 $_nb.u)]
@ _nb.h = [$strip(@ $mid($index(@ $1) $@1 $1))]
if (is_ip($1)) {
@ function_return = [*!*]## _nb.u ## [@] ## [$mid(0 $rindex(. $_nb.h) $_nb.h).*]
} else {
if (index(. $1) != rindex(. $1)) {@ function_return = [*!*$fix.umask($_nb.u $_nb.h)]} else {@ FUNCTION_RETURN = [*!*] ## _nb.u ## [@] ## _nb.h}
}
purge _nb
}
alias gz.playsnd {if (gz.sounds) {playfile $(snd.$0)}}
alias gz.randnick {
@ _r.c = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_^\\\{\}\[\]`|0123456789-]
@ _r.n = mid($rand(62) 1 $_r.c)
for (@ _r.l = 1, _r.l < 9, @ _r.l++) {
@ _r.n = _r.n ## mid($rand(62) 1 $_r.c)
}
@ function_return = _r.n
purge _r
}
alias gz.reverse {
fec ($*) _r.c {@ _r.r = _r.c ## _r.r}
@ function_return = _r.r
purge _r
}
alias gz.safechan {
if (index(# $0) == [0]) {@ _sf.r = [$0]
} else if (index(# $0) == [1] && ( (index(+ $0) == [0]) || (index(@ $0) == [0])) ) {
@ _sf.r = mid(1 9999 $0)
} else { @ _sf.r = [$0] }
@ function_return = _sf.r
purge _sf.r
}
alias gz.servergroups {
for (@ _sg.i = 0, servername($_sg.i), @_sg.i++) {
if (!match($servergroup($_sg.i) $_sg.r)) {
@ _sg.r #= _sg.r ? [ ] ## servergroup($_sg.i) : servergroup($_sg.i)
}
}
@ function_return = _sg.r
purge _sg
}
alias gz.striplastslash {@ function_return = right(1 $*)==[/] ? left(${gz.strlen($*) - 1} $*) : [$*]}
alias gz.strlen {@ _t = [$*];@ function_return = @_t;^assign -_t}
alias gz.stripfw {
if ([$0] == [$1]) {
@ _wr.r = [$2-]
} else {
@ _wr.r = [$1-]
@ _wr.n = 0
fe ($1-) _wr.d {
@ _wr.n++
if (_wr.d == [$0]) {
@ _wr.r = ref(1-${_wr.n - 1} $1-) ## [ ] ## ref(${_wr.n + 1}\-1000 $1-)
//break
}
}
}
@ function_return = _wr.r
purge _wr
}
alias gz.subaway {
@ away = 1
if ([$1]) {@ away.reason = [$1-]} else {@ away.reason = [$away[$rand($numaway)]]}
//away -all $away.reason [Log:$logging] $gemz.str
gecho Setting you away. Message logging is \$logging\
switch ($0) {
(-q) {gecho Quiet Away Reason: $away.reason}
(-c) {if (C) {/me $str.away \($away.reason\) [Log:$logging] $gemz.str}}
(-n) {
if (mychannels()) {
/tzmme $str.away \($away.reason\) [Log:$logging] $gemz.str
}
}
}
}
alias gz.testoper {
#Idea/inspiration by Blackjac. Implementation GemZ dependent.
_gz.OperTestAddNick $0 $1
userhost $0 -cmd if ([$1] == [+]) {
@ gt.tn = _gz.OperTestDoNick($0)
if (gt.tn) {
gtecho $gt.tn ${gc.opernick}$0${cl} ${gc.peren}\(${gc.operuh}$3@$4${gc.peren}\)${cl} is a megamomo (IRCop).
} else {
gecho ${gc.opernick}$0${cl} ${gc.peren}\(${gc.operuh}$3@$4${gc.peren}\)${cl} is a megamomo (IRCop).
}
} else {@ _gz.OperTestDoNick($0)}
^assign -gt.tn
}
alias gz.voices {
fe ($chanusers($0)) _h.o {
if (isvoice($_h.o $0) && !ischanop($_h.o $0)) {@ _h.r #= _h.r ? [ $_h.o] : _h.o}
}
@ function_return = _h.r
purge _h
}
alias quiet {
if ([$0]) {
if (ischanop($N $C)) {
//mode $C -v $0
}{gecho You are not a channel Operator}
}{gecho Usage: //quiet <nick>}
}
alias tlm {t $last.mesg}
alias tlsm {t $lastmsmg}
alias tlsn {t $lastsnot}
alias tln {t $last.noti}
##action plugin module support for GemZ 2.5
##Format for the plugin file must be one line per //menuitem using
## the following keyword format
##"TITLE" TYPE TEXT GOES HERE
## Type Keywords are: %ACT, %PUB, %KICK or %CMD
## Other Keywords are %nk (nick) %pnk (possesive nick)
## and %ch (current channel)
## Comment lines must begin with a pound (#)
##To create a new column in the //submenu, put %new as the second word
## followed by a Command keyword
##%kick must have %nk following it immediately.
##%cmd must be followed by a valid command... like /gimpkick
alias loadplug {
@ pluginsloaded = 1
if ([$0] && fexist($0)==[1]) {
# makepopup
//menuitem popup separator
//submenu popup custact "Custom Actions"
//submenu popup custkick "Custom Kicks"
//submenu popup custcmd "Custom Command"
@ _plugfile = open($0 R)
while (!eof($_plugfile)) {
@ _tmp.p = strip(; $read($_plugfile))
@ _tmp.p = [$^(^)_tmp.p]
if (left(1 $_tmp.p) == [#]) {
} else if (word(1 $_tmp.p) == [%new]) {
switch ($word(2 $_tmp.p)) {
(%cmd) {//menuitem custcmd -b "$word(0 $_tmp.p)" custout $stripw(%new $_tmp.p)}
(%kick) {//menuitem custkick -b "$word(0 $_tmp.p)" custout $stripw(%new $_tmp.p)}
(%act) {//menuitem custact -b "$word(0 $_tmp.p)" custout $stripw(%new $_tmp.p)}
(%pub) {//menuitem custact -b "$word(0 $_tmp.p)" custout $stripw(%new $_tmp.p)}
(*) {}
}
} else {
switch ($word(1 $_tmp.p)) {
(%cmd) {//menuitem custcmd "$word(0 $_tmp.p)" custout $_tmp.p}
(%kick) {//menuitem custkick "$word(0 $_tmp.p)" custout $_tmp.p}
(%act) {//menuitem custact "$word(0 $_tmp.p)" custout $_tmp.p}
(%pub) {//menuitem custact "$word(0 $_tmp.p)" custout $_tmp.p}
(*) {}
}
}
}
@ close($_plugfile)
^assign -_tmp.p;^assign -_plugfile
}{gecho No module specifed, or file does not exist}
}
alias custout {
@ _nick = [$strip(@+=\'\" $lastclickline(4))]
@ _chan = [$C]
@ _input = [$1-]
if ([$1]==[%act] || [$1]==[%pub] || [$1]==[%kick] || [$1]==[%cmd]) {
fe ($_input) _word {
if ([$_word]==[%act]) { @ _output = [$_output]##[/me]
} else if ([$_word]==[%pub]) { @ _output = [$_output]##[/say]
} else if ([$_word]==[%kick]) { @ _output = [$_output]##[/k]
} else if ([$_word]==[%cmd]) {@ _cmd = [true]
} else if ([$_word]==[%nk]) { @ _output = [$_output $_nick]
} else if ([$_word]==[%nk,]) { @ _output = [$_output $_nick\,]
} else if ([$_word]==[%nk.]) { @ _output = [$_output $_nick\.]
} else if ([$_word]==[%nk!]) { @ _output = [$_output $_nick\!]
} else if ([$_word]==[%pnk]) { @ _output = [$_output $_nick\'s]
} else if ([$_word]==[%ch]) { @ _output = [$_output $_chan]
} else if (_cmd) { @ _output = [$_output]##[$_word];^assign -_cmd
} else @ _output = [$_output $strip(; $_word)]
}
eval $_output
#gecho $_output
} else {
gecho $_input
gecho ERROR in plugin (2nd word not %act, %pub, %kick, %cmd)
}
^assign -_output;^assign -_chan;^assign -_input
}
alias saysend {
.send $0-
fe ($unparse($0)) _s {
xecho -target $_s ${gc.pubbrac}<${gc.spub}$N${gc.pubbrac}>${cl} $1-
}
^assign -_s
}
alias .send quote PRIVMSG $0 :$cntl2mirc(f0 $1-)
# Finish up
if (fexist($EXEDIR/menu.sav) != -1)
{
//load $EXEDIR/menu.sav
}
^bind rclick parse_command rccheck
^bind nicklistrclick parse_command rccheck
^bind ldblclick parse_command ldccheck
^bind nicklistldblclick parse_command ldccheck
^bind statusrclick parse_command if (C) {chanmenu $C} else {if (T) {targetmenu $strip(= $T)}}
^makemenu