egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Topic Relay Script Fix

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Scripting Help
View previous topic :: View next topic  
Author Message
Dunn
Voice


Joined: 28 Jan 2006
Posts: 5

PostPosted: Tue Jun 06, 2006 1:18 am    Post subject: Topic Relay Script Fix Reply with quote

I'm running a modified version of the clink relay script acrossed a few Eggdrops to display topics when they are changed in various channels. I've finally got everything working great, but there are a few bugs with how some things are displayed.

For example, one channel has this topic format:
Code:
14,1[ 0Check4Six 14] 4¤ 14[ 0www4.0teamx64.0net 14] 4¤ 14[ 0News4: 0x6\\cha0ticz picked to represent the USA at ESWC for Quake 4! Congrats cha0ticz 14]

Displays this:
Code:
5(14Topic in #Check-Six has changed.5) {14,1[} 0Check4Six 14\] 4¤ {14[} 0www4.0teamx64.0net 14\] 4¤ {14[} 0News4: {0x6\cha0ticz} picked to represent the USA at ESWC for Quake 4! Congrats cha0ticz 14\]


This is the code from the script I'm using (I removed the other channels for the sake of saving space, but there are about 20 all together):
Code:
#################################################
# clink.tcl Channel Linker v1.2
# Written by {SImPhAt}, May 6th 2002
#
# This script lets you link channels (as many as you
# like) on different (or same) IRC Networks using 2 or
# more eggdrops.
#
# Messages are sent in a botnet-link connection.
#
# Easy to configure.
#
# Join, Part, Nick change, Quit, Kick, Msgs and
# Actions (/me) are currently relayed.
#
# Tested on eggdrop v1.6.x (3 bots) relaying between 3
# different channels.
#
# E-mail questions or comments to simon.boulet@divahost.net.
# I'd like to know who is using my script and where, just to
# see it live in action =).
#
# Changes since 1.0:
#   1) Linking of channels that do not have the same name
#      (ex: linking #help with #help.quebec-chat)
#   2) Spelling correction in "nick as joined #chan" should be has
#   3) Stupid bug showing empty () on kick/part/quit with no reason
#   4) Tested everything with 3 channels/networks/bots.
#
# TODO:
#   1) Flood protection.
#   2) List current nicks on the linked side (.names).
#   3) Remote topic change, kick/ban, op.
#
#################################################
# Configuration
#################################################
#
# Note: I was relaying #clink.qc(Quebec-Chat) #clink.io(Ionical) and
# #clink.un(Undernet) all together (those 3 eggdrops where using the
# same .tcl source).
#
# CLink-QC on Quebec-Chat, CLink-IO on Ionical and CLink-UN on Undernet.
#
# Nickname (botnet-nick) of the bots who are involved in the relaying.
# Enter all of them, case-sensitive.
#
set clink_botnicks {"staffbot" "j3rryx" "j3rryx-"}
#
# The channel(s) you want to relay messages from and the bot that is on.
#
# You need to "set network 'Network-Name'" in your bot(s) .conf file.
# If you don't want to waste time searching what you put there, simply
# .rehash your bot with clink.tcl loaded and you should see something like:
#
# clink.tcl: I am CLink-UN running on Undernet.
# --- Network-Name -------------------^^^^^^^^
# Loaded clink.tcl: {SImPhAt} Channel Linker v1.x
#
# Case-sensitive.
#
# Syntax: set clink_onchan(#chan@network) "bot-name"
set clink_onchan(#mychannel@GameSurge) "staffbot"
set clink_onchan(#Check-Six@GameSurge) "j3rryx"
#
# The channel(s) where you want the messages to be relayed.
#
# For each channels you need to tell where you want everything
# to be sent to.
#
# Case-sensitive.
#
# Syntax: set clink_relayto(#from_chan@network1) {"#destination_chan@network2"}
set clink_relayto(#Check-Six@GameSurge) {"#mychannel@GameSurge"}
#
# Should we add colors to join, part, nick, quit,
# action, etc.
#
set clink_usecolor 0
#
# Do you want me to display the network name?
#
set clink_relaynet 0
#
# Characters to use when displaying the nicknames in channels msgs.
#
# Exemples:
# <Nickname> hello
# set clink_charmsgs {"<" ">"}
#
# (Nickname) hello
set clink_charmsgs {"(" ")"}
#
#################################################
# Script, you should *not* need to change
# anything below.
#################################################
bind topc - * clink_topc
bind bot - clink clink_botdat

# Colors settings (Default: mIRC style)
if {$clink_usecolor == 1} {
   set clink_color(topc) "\00314"
} else {
     set clink_color(topc) ""
}
# Done

# Check current configuration
if {${botnet-nick} == ""} {
   set {botnet-nick} $nick
   putlog "clink.tcl: Warning: botnet-nick not defined in .conf file, using \"$nick\"."
}
if {[lsearch $clink_botnicks ${botnet-nick}] == -1} {
   die "clink.tcl: Fatal: Bot \"${botnet-nick}\" not defined in clink_botnicks. Please edit clink.tcl and check your configuration."
}
if {$network == "unknown-net"} {
   putlog "clink.tcl: Warning: network not defined in .conf file, using \"unknown-net\"."
}
# Done

proc clink_topc {nick uhost hand chan text} {
   global clink_onchan network
   if {[info exist clink_onchan($chan@$network)]} {
      clink_botsend $chan [concat "topc" [clink_cleannick $nick] $text]
   }
}
proc clink_botsend {chan param} {
   global clink_onchan {botnet-nick} network clink_relayto
   foreach clink_relaychan $clink_relayto($chan@$network) {
      if {[lsearch -exact [bots] $clink_onchan($clink_relaychan)] == -1} {
         putlog "clink.tcl: Warning: bot $clink_onchan($clink_relaychan) not linked."
      } else {
         putbot $clink_onchan($clink_relaychan) "clink $chan $network $param"
      }
   }
}
proc clink_botdat {bot clink param} {
   global clink_relaynet clink_color clink_charmsgs clink_relayto network
   if {$clink_relaynet == 1} {
      set clink_network "\[[lindex $param 1]\] "
   } else {
      set clink_network ""
   }
   if {[lrange $param 5 end] != ""} {
      set reason "\([lrange $param 5 end]\)"
   } else {
      set reason ""
   }
   set clink_destchan [lindex [split [lindex $clink_relayto([lindex $param 0]@[lindex $param 1]) [lsearch -glob $clink_relayto([lindex $param 0]@[lindex $param 1]) "*@$network"]] @] 0]
   switch [lindex $param 2] {
      topc   { putserv "PRIVMSG $clink_destchan :$clink_network$clink_color(topc)\002\0035[lindex $clink_charmsgs 0]\00314\002Topic in [lindex $param 0] has changed.\0035\002[lindex $clink_charmsgs 1]\003\002 [lrange $param 4 end]" }
      default { putlog "clink.tcl: Warning: unknown action type \"[lindex $param 2]\" for [lindex $param 0]." }
   }
}
proc clink_cleannick {nick} {
   if {[string range $nick 0 0] == "\{"} {
      set nick "\\$nick"
   }
        return $nick
}
putlog "clink.tcl: I am ${botnet-nick} running on $network."
putlog "Loaded clink.tcl: {SImPhAt} Channel Linker v1.2"

Is there anything I can do to fix this? In mIRC coding I've seen ways to convert characters their ASCII equivalents, but I'm not very good with TCL so I'm hoping for a little help here.


Last edited by Dunn on Tue Jun 06, 2006 1:21 am; edited 1 time in total
Back to top
View user's profile Send private message
metroid
Owner


Joined: 16 Jun 2004
Posts: 771

PostPosted: Tue Jun 06, 2006 1:20 am    Post subject: Reply with quote

use [join] on the final variable, it would appear that you made the topic a list but you should make it a string instead. (I didn't look at the script but just use [join])

eg:

Code:
[join $topicvariable]
Back to top
View user's profile Send private message
Dunn
Voice


Joined: 28 Jan 2006
Posts: 5

PostPosted: Tue Jun 06, 2006 1:42 am    Post subject: Reply with quote

Thanks, got it working perfectly as far as I can tell Smile I honestly had no clue how the script was setup with the variables, but a google search using your term helped me catch on to where you were pointing Wink
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Scripting Help All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber