PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : /ajoin - Auto-Join


c0w
17.11.2004, 08:16
;---------------------------------------------------------
;| Auto-Join © 2004 by Christian "ev0l" B.
;| Version: 1.1
;| Scripter: Christian "ev0l" B.
;| Homepage: http://c0w.is-a-geek.net/
;| E-Mail: scripting-crew@bluewin.ch
;---------------------------------------------------------

/*

/ajoin -aceijlmrs <netzwerk/server> <chan> [pass]
hinzufügen oder löschen von channels aus der auto-join list

note: bitte benuzt mIRC 6.0 oder höher! Das script wurde mit nem leeren mIRC getestet,
funktioniert das script mit euchem script ned, dann bitte testet es mit nem leeren mIRC

laden: mache dein mIRC auf drücke alt+r kopier das script rein und fertig :)

-a hinzufügen von channels
-c joint alle channels in der liste
-e speichert die hashtables ab
-i mit -a zusammen: auto-join + invite
-j mit -a zusammen: auto-join beim connecten
-l listet alle server und channels auf
-m mit -a zusammen: auto-join join channels minimiert
-r löscht die channels aus der liste
-s lädt die hashtables

Bugfix/Verbesserungen

-mann konnte /ajoin -r * * benutzen, jedoch wurden ned alle gelöscht
-der invite event wurde verbessert, somit joint er nur wen server und channel stimmen
-habe jezt nicht alles einzeln gelistet sonder alle channel pro server

*/

alias ec.data { return ec\data\ }
alias netzwerk { var %s = $server,%n = $network,%g = $gettok(%s,$calc($numtok(%s,46) - 1),46) | return $iif(%n,%n,$+($upper($left(%g,1)),$right(%g,-1))) }
alias pre- { return $+(12,$chr(40),,$1,12,$chr(41),) }
alias ajoin {
if ($1-$3) {
if (-a* iswm $1) {
var %x = $iif($2 == n,$netzwerk,$iif($2 == s,$server,$2)),%y = $iif(*j* iswm $1,j,0),%z = $iif(*m* iswm $1,m,0),%i = $iif(*i* iswm $1,i,0),%k = $iif($4,$4,0)
if ($left($3,1) != $chr(35)) { echo $color(own) -a $pre-(ajoin-error) syntax: /ajoin -acjlmr <netzwerk/server> <chan> [pass] }
elseif ($hget(ajoin,$+(%x,$chr(124),$3))) { echo $color(own) -a $pre-(ajoin-error) $3 ist schon in der liste eingetragen für %x }
elseif (!$hget(ajoin,$+(%x,$chr(124),$3))) { hadd -m ajoin $+(%x,$chr(124),$3) $+(%y,%z,%i,$chr(1),%k) | echo $color(own) -a $pre-(ajoin-hinzugefügt) Channel $3 wurde hinzugefügt für de Server %x }
}
elseif (-r* iswm $1) {
var %z = $iif(!$2,$chr(42),$2),%y = $iif(!$3,$chr(42),$3)
if ($hget(ajoin,$+(%z,$chr(124),%y),w).item) {
var %x = $hget(ajoin,0).item,%d
while (%x) {
if ($+(%z,$chr(124),%y) iswm $hget(ajoin,%x).item) { hdel ajoin $hget(ajoin,%x).item | inc %d }
dec %x
}
if (%d) { echo $color(own) -a $pre-(ajoin-löschen) %d Einträge mit der suchmaske %z %y wurden gelöscht }
elseif (!%d) { echo $color(own) -a $pre-(ajoin-error) es konnte kein eintrag mit der suchmaske %z %y gefunden werden }
}
}
elseif ($1 == -l) {
linesep -a
if ($hget(ajoin,0).item == 0) { echo $color(own) -a $pre-(ajoin-liste) Noch keine Channels in der Auto-Join liste vorhanden! syntax: /ajoin -acjlmr <netzwerk/server> <chan> [pass] }
else { echo $color(own) -a $pre-(ajoin-liste) $hget(ajoin,0).item Channels werden aufgelistet }
var %x = 1,%h = $hget(ajoin,0).item
while (%x <= %h) {
hadd -m ajoinlist $gettok($hget(ajoin,%x).item,1,124) $addtok($hget(ajoinlist,$gettok($hget(ajoin,%x).item,1,124)),$gettok($hget(ajoin,%x).item,2,124),44)
inc %x
}
var %x = 1,%h = $hget(ajoinlist,0).item
while (%x <= %h) {
echo $color(own) -a $pre-($chr(149)) $hget(ajoinlist,%x).item => $hget(ajoinlist,%x).data
inc %x
}
if ($hget(ajoinlist)) { hfree ajoinlist }
linesep -a
}
elseif ($1 == -e) {
if (!$hget(ajoin)) { hmake -m ajoin }
if (!$exists($+($ec.data,hash))) { mkdir $+($ec.data,hash) }
if (!$exists($+($ec.data,hash,\ajoin.hsh))) { write -c $+($ec.data,hash,\ajoin.hsh) }
hsave -o ajoin $+($ec.data,hash,\ajoin.hsh)
}
elseif ($1 == -s) {
if ($hget(ajoin)) { hfree ajoin }
if (!$hget(ajoin)) { hmake -m ajoin }
if ($exists($+($ec.data,hash,\ajoin.hsh))) { hload -m ajoin $+($ec.data,hash,\ajoin.hsh) }
}
elseif ($1 == -c) {
var %x = 1,%h = $hget(ajoin,0).item,%t = 0
while (%x <= %h) {
if ($netzwerk == $gettok($hget(ajoin,%x).item,1,124)) || ($gettok($hget(ajoin,%x).item,1,124) iswm $server) || ($gettok($hget(ajoin,%x).item,1,124) == $chr(42)) {
if (j isin $gettok($hget(ajoin,%x).data,1,1)) && (i !isin $gettok($hget(ajoin,%x).data,1,1)) { .timer 1 %t join $iif(m isin $gettok($hget(ajoin,%x).data,1,1),-n,-x) $gettok($hget(ajoin,%x).item,2,124) $iif($gettok($hget(ajoin,%x).data,2,1) != 0,$v1) }
elseif (j isin $gettok($hget(ajoin,%x).data,1,1)) && (i isin $gettok($hget(ajoin,%x).data,1,1)) { .timer 1 %t cs invite $gettok($hget(ajoin,%x).item,2,124) }
inc %t 3
}
inc %x
}
}
}
else { echo $color(own) -a $pre-(ajoin-error) syntax: /ajoin -acjlmr <netzwerk/server> <chan> [pass] }
}
raw *:*:{ if ($numeric == 1) { ajoin -c } }
on *:start:{ ajoin -s }
on *:exit:{ ajoin -e }
on *:invite:#:{ if ($nick == ChanServ) { var %x = 1,%h = $hget(ajoin,0).item | while (%x <= %h) { if ($gettok($hget(ajoin,%x).item,1,124) iswm $server) || ($gettok($hget(ajoin,1).item,1,124) == $netzwerk) { if ($gettok($hget(ajoin,%x).item,2,124) == $chan) { join $iif(m isin $gettok($hget(ajoin,%x).data,1,1),-n,-x) $chan } } | inc %x } } }


Anmerkung:

Die Option -i funktioniert leider nur auf Conference Rooom Server,
da ich mich mit anderen Servern nicht auskenne!

Dialog:

Für die leute die lieber nen Dialog haben, habe ich natürlich
auch nen Dialog gemacht! Der Dialog ist eher schlicht gehalten
und hat keine unötigen funktionen! Der Dialog hat auch keine
spezielen Optionen, da ich Dialoge e ned brauche!
Dialog bei dem unten stehenden link zu sehen!

http://c0w.is-a-geek.net/ev0l*c0w/ajoin.gif


alias ec.data { return ec\data\ }
alias netzwerk { var %s = $server,%n = $network,%g = $gettok(%s,$calc($numtok(%s,46) - 1),46) | return $iif(%n,%n,$+($upper($left(%g,1)),$right(%g,-1))) }
alias adjoin { dialog $iif($dialog(adjoin),-x,-m) adjoin adjoin }
alias mdx { dll $findfile($shortfn($mircdir),mdx.dll,1) $1- }
alias views { return $findfile($shortfn($mircdir),views.mdx,1) }
alias mdx.l { mdx SetMircVersion $version | mdx MarkDialog $dname }
alias ajoin {
var %x = 1,%l = $lines($+($ec.data,ajoin.ec)),%t = 0
while (%x <= %l) {
if ($netzwerk == $gettok($read($+($ec.data,ajoin.ec),%x),1,1)) || ($gettok($read($+($ec.data,ajoin.ec),%x),1,1) iswm $server) {
.timer 1 %t join $gettok($read($+($ec.data,ajoin.ec),%x),2,1) $iif($gettok($read($+($ec.data,ajoin.ec),%x),3,1) != 0,$decode($gettok($read($+($ec.data,ajoin.ec),%x),3,1),m))
}
inc %x
inc %t 3
}
}
on *:load:{ if (!$exists($+($ec.data))) { mkdir $+($ec.data) } }
dialog adjoin {
title "ev0l*c0w - Auto Join - [/adjoin]"
size -1 -1 206 116
option dbu
box "Auto Join", 1, 1 0 204 103
text "channel:", 2, 7 9 23 8
text "passwort:", 3, 7 20 25 8
text "server:", 4, 7 31 20 8
edit "", 5, 36 8 127 10, autohs
edit "", 6, 36 19 127 10, autohs
edit "", 7, 36 30 127 10, autohs
list 8, 7 41 156 60, size extsel
button "hinzufügen", 9, 165 14 37 10
button "löschen", 10, 165 42 37 10
button "alle löschen", 11, 165 90 37 10
button "ok", 13, 127 105 37 10, ok
button "schliessen", 14, 168 105 37 10, cancel
}
on *:dialog:adjoin:*:*:{
if ($devent == init) {
mdx.l
mdx SetControlMDX $dname 8 ListView report grid showsel rowselect noheadersort > $views
did -i $dname 8 1 0 0 0
did -i $dname 8 1 headerdims 1:1 1:2 1:3 1:4
did -i $dname 8 1 headertext $chr(35) $chr(9) Netzwerk $chr(9) Channel $chr(9) Passwort
var %x = 1,%l = $lines($+($ec.data,ajoin.ec))
while (%x <= %l) {
did -a $dname 8 + 0 0 0 %x $chr(9) $gettok($read($+($ec.data,ajoin.ec),%x),1,1) $chr(9) $gettok($read($+($ec.data,ajoin.ec),%x),2,1) $chr(9) $iif($gettok($read($+($ec.data,ajoin.ec),%x),3,1) != 0,$str($chr(149),$ifmatch))
inc %x
}
did -b $dname 9,10,11
did -i $dname 8 1 headerdims autoheader:all
}
elseif ($devent == sclick) {
if ($did == 8) { did -e $dname 10,11 }
elseif ($did == 9) {
var %x = $iif($did($dname,7).text,$ifmatch,$netzwerk),%y = $iif($+($chr(35),$chr(42)) iswm $did($dname,5).text,$v2,$+($chr(35),$v2)),%z = $iif($did($dname,6).text,$encode($ifmatch,m),0)
write $+($ec.data,ajoin.ec) $+(%x,$chr(1),%y,$chr(1),%z)
did -a $dname 8 + 0 0 0 $lines($+($ec.data,ajoin.ec)) $chr(9) %x $chr(9) %y $chr(9) $str($chr(149),$len($did($dname,6).text))
did -i $dname 8 1 headerdims autoheader:all
did -r $dname 5,6
did -b $dname 9
did -f $dname 5
}
elseif ($did == 10) {
var %x = $read($+($ec.data,ajoin.ec), w, $+($gettok($did($dname,8).seltext,11,32),$chr(1),$gettok($did($dname,8).seltext,16,32),*))
write $+(-dl,$readn) $+($ec.data,ajoin.ec)
did -d $dname 8 $did($dname,8).sel
}
elseif ($did == 11) {
did -r $dname 8
write -c $+($ec.data,ajoin.ec)
}
}
elseif ($devent == edit) {
if ($did($dname,5).text) { did -et $dname 9 }
elseif (!$did($dname,5).text) { did -b $dname 9 }
}
}


Anmerkung:

Für diesen Dialog braucht man MDX für die Listview!
MDX: gibt es hier zum downloaden!
http://c0w.is-a-geek.net/ev0l*c0w/mdx.rar
eifach alles in $mircdir enzippen und go :)

greetz $me