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 

Pingmeter by arfer/nml375 colour lag meter not work

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Requests
View previous topic :: View next topic  
Author Message
juanamores
Master


Joined: 15 Mar 2015
Posts: 317

PostPosted: Mon May 22, 2017 10:56 am    Post subject: Pingmeter by arfer/nml375 colour lag meter not work Reply with quote

The script works correctly, the only thing that does not show up well is the colour lag meter.
There seems to be a problem with the charset.

Quote:
@juanam .ping Peter
@myBoT Compliance (juanam) –Œ–Œ–Œ–Œ–Œ–Œ–Œ–Œ–Œ–Œ 0.152 seconds from Peter

Code:
# pingmeter.tcl by arfer/nml375
# requires Tcl 8.4 or later
# requires channel to permit embelished text (colour) output
# requires utf-8 compliant IRC client
# each #channelname the script is to function in requires (in the partyline) .chanset #channelname +ping

# note that this script will probably not respond if any other client based script responds to the same command
# configure the command trigger accordingly

# assuming default trigger "." (period) syntax would be .ping ?target?
# replaces 10 green bars with 1 red bar per each 0.5 seconds (rounded) lag

##### CHANGELOG #############

# 1.0 07/03/09 beta
# 1.1 08/03/09 changed abs() math to modulus math to interpret integer wraparound

##### INSTALLATION ##########

# 1. configure pingmeter.tcl in a suitable text editor
# 2. upload configured pingmeter.tcl to bot's scripts subdirectory
# 3. add a line to bots .conf file 'source scripts/pingmeter.tcl'
# 4. restart the bot
# 5. requires '.chanset #channelname +ping' in the partyline to function in #channelname

##### CONFIGURATION #########

set vPingTrigger "."

##### CODE ##################

proc pPingTrigger {} {
  global vPingTrigger
  return $vPingTrigger
}

set vPingVersion 1.1

setudef flag ping

bind CTCR - PING pPingCtcrReceive
bind PUB - [pPingTrigger]ping pPingPubCommand
bind RAW - 401 pPingRawOffline

proc pPingTimeout {} {
  global vPingOperation
  set schan [lindex $vPingOperation 0]
  set snick [lindex $vPingOperation 1]
  set tnick [lindex $vPingOperation 2]
  putserv "PRIVMSG $schan :\00304Error\003 (\00314$snick\003) operation timed out attempting to ping \00307$tnick\003"
  unset vPingOperation
  return 0
}

proc pPingCtcrReceive {nick uhost hand dest keyword txt} {
  global vPingOperation
  if {[info exists vPingOperation]} {
    set schan [lindex $vPingOperation 0]
    set snick [lindex $vPingOperation 1]
    set tnick [lindex $vPingOperation 2]
    set time1 [lindex $vPingOperation 3]
    if {([string equal -nocase $nick $tnick]) && ([regexp -- {^[0-9]+$} $txt])} {
      set time2 [expr {[clock clicks -milliseconds] % 16777216}]
      set elapsed [expr {(($time2 - $time1) % 16777216) / 1000.0}]
      set char [encoding convertto utf-8 \u258C]
      if {[expr {round($elapsed / 0.5)}] > 10} {set red 10} else {set red [expr {round($elapsed / 0.5)}]}
      set green [expr {10 - $red}]
      set output \00303[string repeat $char $green]\003\00304[string repeat $char $red]\003
      putserv "PRIVMSG $schan :\00310Compliance\003 (\00314$snick\003) $output $elapsed seconds from \00307$tnick\003"
      unset vPingOperation
      pPingKillutimer
    }
  }
  return 0
}

proc pPingKillutimer {} {
  foreach item [utimers] {
    if {[string equal pPingTimeout [lindex $item 1]]} {
      killutimer [lindex $item 2]
    }
  }
  return 0
}

proc pPingPubCommand {nick uhost hand channel txt} {
  global vPingOperation
  if {[channel get $channel ping]} {
    switch -- [llength [split [string trim $txt]]] {
      0 {set tnick $nick}
      1 {set tnick [string trim $txt]}
      default {
        putserv "PRIVMSG $channel :\00304Error\003 (\00314$nick\003) correct syntax is \00307!ping ?target?\003"
        return 0
      }
    }
    if {![info exists vPingOperation]} {
      if {[regexp -- {^[\x41-\x7D][-\d\x41-\x7D]*$} $tnick]} {
        set time1 [expr {[clock clicks -milliseconds] % 16777216}]
        putquick "PRIVMSG $tnick :\001PING [unixtime]\001"
        utimer 20 pPingTimeout
        set vPingOperation [list $channel $nick $tnick $time1]
      } else {putserv "PRIVMSG $channel :\00304Error\003 (\00314$nick\003) \00307$tnick\003 is not a valid nick"}
    } else {putserv "PRIVMSG $channel :\00304Error\003 (\00314$nick\003) a ping operation is still pending, please wait"}
  }
  return 0
}

proc pPingRawOffline {from keyword txt} {
  global vPingOperation
  if {[info exists vPingOperation]} {
    set schan [lindex $vPingOperation 0]
    set snick [lindex $vPingOperation 1]
    set tnick [lindex $vPingOperation 2]
    if {[string equal -nocase $tnick [lindex [split $txt] 1]]} {
      putserv "PRIVMSG $schan :\00304Error\003 (\00314$snick\003) \00307$tnick\003 is not online"
      unset vPingOperation
      pPingKillutimer
    }
  }
  return 0
}

putlog "pingmeter.tcl by arfer/nml375 version $vPingVersion loaded"

[/code]
_________________
If you do not understand my ideas is because I can not think in English, I help me with Google Translate. I only speak Spanish. Bear with me. Thanks Smile
Back to top
View user's profile Send private message
nml375
Revered One


Joined: 04 Aug 2006
Posts: 2829

PostPosted: Mon May 22, 2017 2:20 pm    Post subject: Reply with quote

Hi,
The output of this script is designed to use UTF-8, and displays a character known as "Left half block".
You can rather easily change the character shown (and go for a plain ascii-character) by editing this line (found in pPingCtcrReceive):
Code:
set char [encoding convertto utf-8 \u258C]

To show a full block, try something like this:
Code:
set char "\219"

_________________
NML_375, idling at #eggdrop@IrcNET
Back to top
View user's profile Send private message
juanamores
Master


Joined: 15 Mar 2015
Posts: 317

PostPosted: Tue May 23, 2017 3:55 pm    Post subject: Reply with quote

Okay, I already did the modification.


A solid triangle pointing to the left and the number 9 are now shown.
ASCII characters do not have the same number in mIRC.
I have tried several ASCII numbers, but I can not seem to show the solid block.
_________________
If you do not understand my ideas is because I can not think in English, I help me with Google Translate. I only speak Spanish. Bear with me. Thanks Smile
Back to top
View user's profile Send private message
nml375
Revered One


Joined: 04 Aug 2006
Posts: 2829

PostPosted: Tue May 23, 2017 5:27 pm    Post subject: Reply with quote

Well, this seems to be yet another issue with character sets and encodings... You'll find quite a few of them in the forum.

You could try something as simple as this, I suppose:
Code:
set char "\u258C"

But then again, that might produce an entirely different output in mIRC as opposed to the terminals/consoles I use...
_________________
NML_375, idling at #eggdrop@IrcNET
Back to top
View user's profile Send private message
juanamores
Master


Joined: 15 Mar 2015
Posts: 317

PostPosted: Tue May 23, 2017 6:18 pm    Post subject: Reply with quote

Exact.
Is that in mIRC is very different from the list of ASCII characters that apply to Windows.
I have tried with the ALT + number key, and it gives different results in mIRC than in Words (Office).

In short, it is something graphical, that in no way affects the operation of your TCL.
Thanks for everything.
_________________
If you do not understand my ideas is because I can not think in English, I help me with Google Translate. I only speak Spanish. Bear with me. Thanks Smile
Back to top
View user's profile Send private message
juanamores
Master


Joined: 15 Mar 2015
Posts: 317

PostPosted: Sun Jun 04, 2017 8:35 am    Post subject: Solved Reply with quote

nml375, The solution for mIRC is as follows:
I put the code in an image because there are characters (ETX and SI) that can not be seen well in this forum



The ETX code you see in the image is obtained by pressing the Control (Ctrl) key + K key in the mIRC client window.
And, the SI code, with Control key (Ctrl) + O key

Result:


_________________
If you do not understand my ideas is because I can not think in English, I help me with Google Translate. I only speak Spanish. Bear with me. Thanks Smile
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 -> Script Requests 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