This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

linkchan need help

Help for those learning Tcl or writing their own scripts.
Post Reply
User avatar
abah
Halfop
Posts: 62
Joined: Sun Dec 01, 2013 3:04 am
Location: Indonesia

linkchan need help

Post by abah »

I use this script to perform relay to 5 servers but I find in my opinion the error and need assistance so that errors are resolved

Code: Select all

set debug 1
set debug_out 1
set shortcommands 1

bind dcc m linkchan dcc:linkchan
if {$shortcommands == 1} {bind dcc m lc dcc:linkchan}
proc dcc:linkchan {hand idx arg} {
 global nick Michelle username chanlinkchan chanlinkidx chanlinkserv chanlinknet zudith shortcommands linkchantrim
 set zudith $nick[rand 1000]
 set chan [lindex $arg 0]
 set net [lindex $arg 1]
 set serv [lindex $arg 2]
 set port [lindex $arg 3]
 if {![validchan $chan]} {
  putdcc $idx "Chan Salah"
  putdcc $idx "Gunakan: .linkchan <channel> <network> <server> \[port\]"
 } else {
  if {$serv == ""} {
   putdcc $idx "Spesifikasi Server"
   putdcc $idx "Gunakan: .linkchan <channel> <network> <server> \[port\]"
  } else {
   if {[info exists chanlinkidx]} {
    if {[valididx $chanlinkidx]} {
     putdcc $chanlinkidx "QUIT :Mengganti Server"
     killdcc $chanlinkidx
    }
   }
   if {$port == ""} {
    set chanlinkidx [connect $serv 6667]
   } else {
    if {$port != ""} {set chanlinkidx [connect $serv $port]}
   }
   set chanlinkchan $chan
   set chanlinkserv $serv
   set chanlinknet $net
   control $chanlinkidx linkchan
   putlc "USER $username 0 0  Michelle"
   putlc "NICK  zudith"
   set linkchantrim "abcdefghijklmnopqrstuvwxyzABCDEFGHIJGKLMNOPQRSTUVWXYZ1234567890 !@*.#~-_|\[\]\{\}`"
   bind part - * part:chanlink
   bind pubm - * pubm:chanlink
   bind sign - * sign:chanlink
   bind ctcp - ACTION ctcp:chanlink
   bind join - * join:chanlink
   bind nick - * nick:chanlink
   bind dcc m -linkchan dcc:-linkchan
   bind dcc m dumplinkchan dcc:dumplinkchan
   if {$shortcommands == 1} {
    bind dcc m -lc dcc:-linkchan
    bind dcc m dumplc dcc:dumplinkchan
   }
   return 1
  }
 }
}

proc dcc:dumplinkchan {hand idx arg} {
 putlc $arg
 return 1
}

proc dcc:-linkchan {hand idx arg} {
 global chanlinkidx chanlinkchan chanlinkserv chanlinknet linkchantrim shortcommands
 putlc "QUIT  i Bunuh!"
 killdcc $chanlinkidx
 linkchan:shutdown
 return 1
}

proc linkchan:shutdown {} {
 global chanlinkidx chanlinkchan chanlinkserv chanlinknet linkchantrim shortcommands
 unset chanlinkidx
 unset chanlinkchan
 unset chanlinkserv
 unset chanlinknet
 unset linkchantrim
 unbind part - * part:chanlink
 unbind pubm - * pubm:chanlink
 unbind sign - * sign:chanlink
 unbind ctcp - ACTION ctcp:chanlink
 unbind join - * join:chanlink
 unbind nick - * nick:chanlink
 unbind dcc m -linkchan dcc:-linkchan
 unbind dcc m dumplinkchan dcc:dumplinkchan
 clearqueue help
 if {$shortcommands == 1} {
  unbind dcc m -lc dcc:-linkchan
  unbind dcc m dumplc dcc:dumplinkchan
 }
}

proc putlc {arg} {
 global chanlinkidx debug_out
 if {$debug_out == 1} {putlog "linkchan> $arg"}
 putdcc $chanlinkidx $arg
}

proc linkchan {idx arg} {
 global debug nick chanlinkchan chanlinknet zudith username Michelle linkchantrim
 if {$debug == 1} {putlog "linkchan< $arg"}
 set arg2 [lindex $arg 0]
 switch $arg2 {
  PING {putlc "PONG [lindex $arg 1]"}
  ERROR {
   putserv "PRIVMSG $chanlinkchan :\0032ERROR: Closing Link"
   linkchan:shutdown
  }
 }
 switch [lindex $arg 1] {
  001 {
   putlc "MODE $zudith :+i"
   putlc "JOIN $chanlinkchan"
  }
  433 {
   set zudith $nick[rand 1000]
   putdcc $idx "NICK  zudith"
  }
  353 {puthelp "privmsg $chanlinkchan  chanlinknet NAMES list: [string trimleft [string trimleft [string trimleft $arg :] "abcdefghijklmnopqrstuvwxyzABCDEFGHIJGKLMNOPQRSTUVWXYZ1234567890 !@*.#~-_|\[\]\{\}`="] :]"}
  JOIN {puthelp "privmsg $chanlinkchan :\0033[lindex [split [lindex [split $arg2 !] 0] :] 1] ([lindex [split $arg2 !] 1]) masuk $chanlinkchan"}
  KICK {linkchan:kick $idx $arg}
  NICK {puthelp "privmsg $chanlinkchan :\0033[lindex [split [lindex [split $arg2 !] 0] :] 1] merubah nickname menjadi [string trimleft [lindex $arg 2] :]"}
  PART {puthelp "privmsg $chanlinkchan :\0033[lindex [split [lindex [split $arg2 !] 0] :] 1] ([lindex [split $arg2 !] 1]) keluar dari $chanlinkchan"}
  PRIVMSG {linkchan:privmsg $idx $arg}
  QUIT {puthelp "privmsg $chanlinkchan :\0032[lindex [split [lindex [split $arg2 !] 0] :] 1] ([lindex [split $arg2 !] 1]) keluar ([string trimleft [string trimleft [string trimleft $arg :] $linkchantrim] :])"}
 }
}

proc linkchan:privmsg {idx arg} {
 global chanlinkchan chanlinknet linkchantrim botnick network
 set nick [lindex [split [lindex [split $arg !] 0] :] 1]
 if {$nick == $botnick} {
  putlc "QUIT :Ya, ada yang salah?"
  killdcc $idx
  linkchan:shutdown
 } else {
  if {[string tolower [lindex $arg 2]] == [string tolower $chanlinkchan]} {
   set text [string trimleft [string trimleft [string trimleft $arg :] $linkchantrim] :]
   if {[string match \001*\001 $text]} {
    if {[string match \001ACTION*\001 $text]} {
     puthelp "privmsg $chanlinkchan :\0036 * $nick@$chanlinknet[string trimright [string trimleft [string trimleft $text \001ACTION] ""] \001]"
    }
   } else {
    if {[string match -nocase [lindex $text 0] !names]} {
     putlc "PRIVMSG $chanlinkchan  network NAMES list: [chanlist $chanlinkchan]"
    } else {
     puthelp "privmsg $chanlinkchan :<$nick> $text"
    }
   }
  }
 }
}

proc linkchan:kick {idx arg} {
 global zudith chanlinkchan
 if {$zudith == [lindex $arg 3]} {putlc "JOIN $chanlinkchan"}
}

proc join:chanlink {nick uhost hand chan args} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
  if {[valididx $chanlinkidx]} {putlc "PRIVMSG $chan :\0033$nick ($uhost) masuk channel $chan"}
 }
}

proc part:chanlink {nick uhost hand chan msg} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
  if {$msg != ""} {set msg ($msg)}
  if {[valididx $chanlinkidx]} {putlc "PRIVMSG $chan :\0033$nick ($uhost) keluar dari channel $chan $msg"}
 }
}

proc pubm:chanlink {nick uhost hand chan text} {
 global network chanlinkidx chanlinkchan zudith
 if {$nick == $zudith} {
  putlc "QUIT :Ya!! ada masalah?"
  killdcc $idx
  linkchan:shutdown
 } else {
  if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
   if {[valididx $chanlinkidx]} {
    if {[string match -nocase [lindex $text 0] !names]} {
     putlc "NAMES $chan"
    } else {
     putlc "PRIVMSG $chan :<$nick> $text"
    }
   }
  }
 }
}

proc sign:chanlink {nick uhost hand chan reason} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
  if {[valididx $chanlinkidx]} {putlc "PRIVMSG $chan :\0032$nick ($uhost) keluar ($reason)"}
 }
}

proc ctcp:chanlink {nick uhost hand dest keywork arg} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx]} {
  if {[valididx $chanlinkidx] && [string match [string tolower $dest] [string tolower $chanlinkchan]]} {
   putlc "PRIVMSG $dest :\0036 * $nick $arg"
  }
 }
}

proc nick:chanlink {nick uhost hand chan newnick} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
  if {[valididx $chanlinkidx]} {putlc "PRIVMSG $chan :\0033$nick merubah nickname menjadi $newnick"}
 }
}
error 1
when I typed in the room for example <ssasd> test the results on other servers <ZNC> <syifa> <ssasd> test

error 2
eggdrop I use ipv6 and the results when <ssasd> test is <ZNC> <Subandono> A006: c2: 3B6 :: 8ae9. PRIVMSG #somechanel: <Risna> test
Please help
Post Reply