I've done some major updates on the script now, added a configuration dialog, and a more complete logging system...
Next will be to add a watch list... Hope to have it ready during this week..
;=====[ Dupe ]======================================================
; Written by Ayon @ #ScriptElite
;
; Dupe is a handy script that will help you find people even if they
; have a different nick. It will also give you all nicks logged to their
; address.
; Type /dupe to get help on how to use the script
;========================================================================
on 1:start:{ hmake dupe 10000 | if ($exists(dupe.hsh)) { hload -i dupe dupe.hsh dupes } | if ($regex(%dupe.oj,/^(on|off)$/g)) { set %dupe.oja off } }
on 1:exit:{ if ($hget(dupe)) { hsave -i dupe dupe.hsh dupes } }
on 1:load:{
if ($hget(dupe)) { echo -atg Dupe could not be loaded. (Reason: Conflicting hashs table) | unload -rs $script | return }
hmake dupe 10000
set %dupe.oja off
echo -atg Dupe was loaded succsessfully.
echo -atg --------------------------------------
echo -atg » /dupe -n <nick> ~ Find dupes for nickname (You must be on the same channel as nick)
echo -atg » /dupe -h <host> ~ Find dupes for a host address
echo -atg » /dupe -c <#channel> ~ Find registered dupes on a channel (You must be on <#channel>)
echo -atg » /dupe -d <nick|host> ~ Delete the a dupe entry from the archive (If using nick, you must be on the same channel)
echo -atg » /dupe -cfg ~ Opens the configuration dialog
echo -atg Type /dupe to bring up the command list
}
on 1:unload:{ if ($hget(dupe)) { hfree dupe } | if ($exists(dupe.hsh)) { remove dupe.hsh } | echo -atg Dupe was unloaded succsessfully }
dialog dupe {
title "Dupe v1.5 - Configuration [/dupe -cfg]"
size -1 -1 154 96
option dbu
tab "Configuration", 1, 4 0 147 79
box "Logging", 3, 8 16 78 34, tab 1
check "Enable Dupe", 4, 12 24 42 10, tab 1
check "Joins", 5, 60 24 22 10, tab 1
check "Parts", 6, 12 36 22 10, tab 1
check "Quit", 7, 60 36 22 10, tab 1
button "Save archive", 8, 88 20 61 12, tab 1
button "Reload saved archive", 9, 88 36 61 12, tab 1
button "Clear archive", 16, 88 52 61 12, tab 1
box "Notifications", 17, 8 52 78 22, tab 1
check "On join", 18, 12 60 30 10, tab 1
check "On part", 19, 48 60 30 10, tab 1
tab "About", 2
text "Dupe v1.5", 12, 12 16 33 8, tab 2
text "Written by Ayon", 13, 12 24 45 8, tab 2
text "About Dupe", 14, 12 36 37 8, tab 2
text "Dupe is a handy script that will help you find people even if they have a different nick. It will also give you all nicks logged to their address.", 15, 12 44 133 32, tab 2
button "OK", 10, 74 82 37 12, ok
button "Close", 11, 114 82 37 12, cancel
}
on 1:dialog:dupe:init:0:{
if ($group(#dupe).status == on) { did -c $dname 4 }
if ($group(#dupe.join).status == on) { did -c $dname 5 }
if ($group(#dupe.part).status == on) { did -c $dname 6 }
if ($group(#dupe.quit).status == on) { did -c $dname 7 }
if ($group(#dupe.onjoin).status == on) { did -c $dname 18 }
if ($group(#dupe.onpart).status == on) { did -c $dname 19 }
}
on 1:dialog:dupe:sclick:8:{
hsave -i dupe dupe.hsh dupes
echo -atg » Dupe archive was succsessfully stored
}
on 1:dialog:dupe:sclick:9:{
if ($exists(dupe.hsh)) {
if ($input($+(If you choose to reload the previous saved archive,$chr(44),$chr(32),all newer data will be lost.,$crlf,Continue?),yw,Dupe Warning)) {
hfree dupe
hmake dupe 10000
hload -i dupe dupe.hsh dupes
echo -atg » Succsessfully reloaded last saved dupe archive
}
}
else { echo -atg » No previous saved archive was found. }
}
on 1:dialog:dupe:sclick:10:{
$iif($did($dname,4).state,.enable,.disable) #dupe
$iif($did($dname,5).state,$iif($did($dname,4).state,.enable,.disable),.disable) #dupe.join
$iif($did($dname,6).state,$iif($did($dname,4).state,.enable,.disable),.disable) #dupe.part
$iif($did($dname,7).state,$iif($did($dname,4).state,.enable,.disable),.disable) #dupe.quit
$iif($did($dname,18).state,.enable,.disable) #dupe.onjoin
$iif($did($dname,19).state,.enable,.disable) #dupe.onpart
}
on 1:dialog:dupe:sclick:16:{
if ($input($+(When clearing the archive all dupes will be lost.,$crlf,Continue?),yw,Dupe Warning)) {
hfree dupe
hmake dupe 10000
if ($exists(dupe.hsh)) { remini dupe.hsh dupes }
echo -atg » Dupe archive has been cleared
}
}
#dupe on
on 1:NICK:{
if ($newnick == $me) { return }
var %d.addr = $address($newnick,3)
if (!$hget(dupe,%d.addr)) {
var %d.addnick = $iif($newnick == $nick,$+($nick,$chr(44)),$+($nick,$chr(44),$newnick,$chr(44)))
hadd dupe %d.addr %d.addnick
}
else {
var %d.dupes = $hget(dupe,%d.addr), %i = 1
while ($gettok(%d.dupes,0,44) >= %i) {
if ($newnick == $gettok(%d.dupes,%i,44)) { var %d.exist = 1 | break }
inc %i
}
if (!%d.exist) { hadd dupe %d.addr $+(%d.dupes,$newnick,$chr(44)) }
}
}
#dupe end
#dupe.join on
on 1:JOIN:#:{
var %d.addr = $address($nick,3)
if ($hget(dupe,%d.addr)) {
var %d.dupes = $hget(dupe,%d.addr), %i = 1
while ($dupes(%d.addr) >= %i) {
if ($nick == $gettok(%d.dupes,%i,44)) { var %d.exist = 1 | break }
inc %i
}
if (!%d.exist) { hadd dupe %d.addr $+(%d.dupes,$nick,$chr(44)) }
if ($group(#dupe.onjoin).status == on) { echo -tg # $nick ( $+ $address($nick,3) $+ ) has been seen earlier with $dupes(%d.addr) dupes. }
}
}
#dupe.join end
#dupe.part on
on 1:PART:#:{
var %d.addr = $address($nick,3)
if ($hget(dupe,%d.addr)) {
var %d.dupes = $hget(dupe,%d.addr), %i = 1
while ($dupes(%d.addr) >= %i) {
if ($nick == $gettok(%d.dupes,%i,44)) { var %d.exist = 1 | break }
inc %i
}
if (!%d.exist) { hadd dupe %d.addr $+(%d.dupes,$nick,$chr(44)) }
if ($group(#dupe.onpart).status == on) { echo -tg # $nick ( $+ $address($nick,3) $+ ) has been seen earlier with $dupes(%d.addr) dupes. }
}
}
#dupe.part end
#dupe.quit on
on 1:QUIT:{
var %d.addr = $address($nick,3)
if ($hget(dupe,%d.addr)) {
var %d.dupes = $hget(dupe,%d.addr), %i = 1
while ($dupes(%d.addr) >= %i) {
if ($nick == $gettok(%d.dupes,%i,44)) { var %d.exist = 1 | break }
inc %i
}
if (!%d.exist) { hadd dupe %d.addr $+(%d.dupes,$nick,$chr(44)) }
}
}
#dupe.quit end
alias dupes return $gettok($hget(dupe,$iif($chr(64) isin $1,$1,$address($1,3))),0,44)
alias dupe {
if (!$1) {
echo -atg » Dupe v1.5 command help
echo -atg » ------------------------------
echo -atg » /dupe -n <nick> ~ Find dupes for nickname (You must be on the same channel as nick)
echo -atg » /dupe -h <host> ~ Find dupes for a host address
echo -atg » /dupe -c <#channel> ~ Find registered dupes on a channel (You must be on <#channel>)
echo -atg » /dupe -d <nick|host> ~ Delete the a dupe entry from the archive (If using nick, you must be on the same channel)
echo -atg » /dupe -cfg ~ Opens the configuration dialog
return
}
if ($1 == -cfg) { dialog -m dupe dupe | return }
if (!$regex($1,/^(-n|-h|-c|-d)$/g)) || (!$2) { echo -atg Syntax: /dupe -nhcd <nick|host> | return }
if ($1 == -cfg) { dialog -m dupe dupe }
if ($1 == -n) {
if ($chr(64) isin $2) { echo -atg The option -n is for nicks only. | echo -atg Syntax: /dupe -h <host> | return }
var %d.host = $address($2,3)
if ($hget(dupe,%d.host)) {
var %d.aka = $hget(dupe,%d.host), %i = 1, %d.output
echo -atg $2 ( $+ $address($2,3) $+ ) is also known as:
while ($dupes(%d.host) >= %i) {
if ($gettok(%d.output,0,126) == 10) { echo -atg %d.output | var %d.output }
var %d.output = %d.output $gettok(%d.aka,%i,44)
if (%d.output) && ($dupes(%d.host) > %i) { var %d.output = %d.output ~ }
inc %i
}
echo -atg %d.output
}
else { echo -atg No match found for $2 ( $+ $address($2,3) $+ ) }
}
elseif ($1 == -h) {
if ($chr(64) !isin $2) { echo -atg The option -h is for hosts only. | echo -atg Syntax: /dupe -n <nick> | return }
var %d.host = $2
if ($hget(dupe,%d.host)) {
var %d.aka = $hget(dupe,%d.host), %i = 1, %d.output
echo -atg $dupes(%d.host) dupes has been registered on $2 $+ :
while ($dupes($2) >= %i) {
var %d.output = %d.output $gettok(%d.aka,%i,44)
if ($dupes(%d.host) > %i) { var %d.output = %d.output ~ }
inc %i
}
echo -atg %d.output
}
else { echo -atg No match found for $2 ( $+ $address($2,3) $+ ) }
}
elseif ($1 == -c) {
if ($2 !ischan) { echo -atg $2 is not a channel | return }
var %d.users = $nick($2,0), %i = 1, %d.output
echo -atg -[ Looking up dupes @ $2 ]-
while (%d.users >= %i) {
var %d.host = $address($nick($2,%i),3)
if ($hget(dupe,%d.host)) {
if ($gettok(%d.output,0,126) == 10) { echo -atg %d.output | var %d.output }
if (%d.output) && (%d.users > %i) { var %d.output = %d.output ~ }
var %d.output = %d.output $nick($2,%i) ( $+ $dupes(%d.host) $+ )
}
inc %i
}
echo -atg $iif(%d.output,$v1, No dupes found.)
}
elseif ($1 == -d) {
var %d.addr = $iif($chr(64) isin $2,$2,$address($2,3))
if (!$hget(dupe,%d.addr)) { echo -atg No match found for %d.addr | return }
hdel dupe %d.addr
echo -atg %d.addr $iif(!$hget(dupe,%d.addr), was deleted succsessfully, could not be deleted)
}
}
; Do not delete these groups
#dupe.onjoin on
#dupe.onjoin end
#dupe.onpart on
#dupe.onpart end
menu nicklist {
Dupes $chr(9) ( $+ $iif($gettok($hget(dupe,$address($$1,3)),0,44),$v1,0) dupes)
.$iif(!$dupes($$1),$style(2)) List dupes:dupe -n $$1
.$iif(!$dupes($$1),$style(2)) Removed dupes:dupe -d $$1
}
menu channel {
Dupe
.Configuration $chr(9) (/dupe -cfg):dupe -cfg
.Dupescan $chr(9) (/dupe -c #chan):dupe -c #
.-
.$iif($group(#dupe.onjoin).status == on,$style(1)) Notify on join $+ $chr(58) $group(#dupe.onjoin).status:$iif($group(#dupe.onjoin).status == on,.disable,.enable) #dupe.onjoin
.$iif($group(#dupe.onpart).status == on,$style(1)) Notify on part $+ $chr(58) $group(#dupe.onpart).status:$iif($group(#dupe.onpart).status == on,.disable,.enable) #dupe.onpart
}