PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eggdrop: fehlermeldung bei einem peak script


Henima
21.04.2005, 15:49
hallo,

ich hab folgendes problem, worann ich noch verzweifel, wenn ein user den channel neu joined, bekomme ich immer auf der partyline folgende fehlermeldung:

Tcl error [chanpeak_join]: bad format string "%p"

nun hab ich mir die stelle in dem script angeschaut, aber ich weiss absolut nicht warum er dort eine fehlermeldung ausgibt

ich würde mich riesig freuen, wenn mir hier geholfen werden könnte

hier der tcl script code:


if {![string match 1.6.* $version]} { putlog "\002CHANPEAK:\002 \002WARNING:\002 This script is intended to run on eggdrop 1.6.x or later." }
if {[info tclversion] < 8.2} { putlog "\002CHANPEAK:\002 \002WARNING:\002 This script is intended to run on Tcl Version 8.2 or later." }
setudef flag peak
bind join - * chanpeak_join
bind dcc $chanpeak_setting(dflag) $chanpeak_setting(cmd_dcc) chanpeak_dcc
bind pub $chanpeak_setting(pflag) $chanpeak_setting(cmd_pub) chanpeak_pub
proc chanpeak_readarray {array file} {
upvar $array ours
if {[catch {open $file r} fd]} { return }
if {[array exists ours]} { unset ours }
foreach line [split [read $fd] \n] {
if {[string range $line 0 2] != "%!%" || [scan [string range $line 3 end] {%[^!]!!!%s} name data] != 2} { continue }
if {![info exists data]} { set data "" }
set ours($name) $data
}
close $fd
}
proc chanpeak_savearray {array file} {
upvar $array ours
if {![array exists ours] || [catch {open $file w} fd]} { return }
foreach entry [array names ours] { puts $fd "%!%$entry!!!$ours($entry)" }
close $fd
}
if {[file exists $chanpeak_setting(db)]} { chanpeak_readarray chanpeak_peak $chanpeak_setting(db) }
proc chanpeak_dopre {} {
if {!$::chanpeak_setting(CHANPEAK:)} { return "" }
if {!$::chanpeak_setting(bold)} { return "CHANPEAK: " }
return "\002CHANPEAK:\002 "
}
proc chanpeak_dcc {hand idx text} {
if {$text == ""} { putdcc $idx "[chanpeak_dopre]Usage: .$::chanpeak_setting(cmd_dcc) <channel>" ; return }
if {![info exists ::chanpeak_peak([string tolower [set chan [lindex [split $text] 0]]])]} { putdcc $idx "[chanpeak_dopre]User Rekord existiert für diesen Channel $chan noch nicht." ; return }
set list [split $::chanpeak_peak([string tolower $chan]) @]
putdcc $idx "[chanpeak_dopre]Der Channel Rekord für $chan2 liegt bei [lindex $list 0] User. Der Rekord wurde am [lindex $list 1] um [lindex $list 2] Uhr erreicht."
}
proc chanpeak_pub {nick uhost hand chan text} {
if {[set chan2 [lindex [split $text] 0]] == ""} { set chan2 $chan }
if {![info exists ::chanpeak_peak([string tolower $chan2])]} { puthelp "PRIVMSG $chan :User Rekord existiert für diesen Channel $chan2 noch nicht." ; return }
set list [split $::chanpeak_peak([string tolower $chan2]) @]
puthelp "PRIVMSG $chan :Der Channel Rekord für $chan2 liegt bei [lindex $list 0] User. Der Rekord wurde am [lindex $list 1] um [lindex $list 2] Uhr erreicht."
}
proc chanpeak_join {nick uhost hand chan} {
global chanpeak_peak
if {[lsearch -exact [channel info $chan] +peak] == -1} { return }
if {[info exists chanpeak_peak([string tolower $chan])]} {
set peak $chanpeak_peak([string tolower $chan])
} {
set peak "0@[clock format [clock seconds] -format %d].[clock format [clock seconds] -format %m].[clock format [clock seconds] -format %Y]@[clock format [clock seconds] -format "%H:%M"]@--"
}
set peak [split $peak @]
if {[lindex $peak 0] >= [set users [llength [chanlist $chan]]]} { return }
if {$::chanpeak_setting(announce)} { puthelp "PRIVMSG $chan :Neuer $chan Rekord: $users user. Der Letze Rekord war am [lindex $peak 1] um [lindex $peak 2]." }
if {$::chanpeak_setting(cast)} { dccbroadcast "Neuer $chan Rekord: $users user. Der Letze Rekord war am [lindex $peak 1] um [lindex $peak 2]." }
set ::chanpeak_peak([string tolower $chan]) "$users@[clock format [clock seconds] -format %d].[clock format [clock seconds] -format %m].[clock format [clock seconds] -format %Y]@[clock format [clock seconds] -format {%H:%M}]@[clock format [clock seconds] -format %p]"
chanpeak_savearray chanpeak_peak $::chanpeak_setting(db)
}



vielen lieben dank im voraus :)

mfg
henima


ChaosKrieger
21.04.2005, 17:18
ich wüsste nicht was %p fürn zeitformat sein sollte..

noname
21.04.2005, 17:37
das is für am/pm ... sehe den fehler aber auch net :mauer:

ich wüsste nicht was %p fürn zeitformat sein sollte..

ChaosKrieger
21.04.2005, 19:22
ah, richtig..

ich kann zumindest schonmal sagen das es NICHT an

set ::chanpeak_peak([string tolower $chan]) "$host@[clock format [clock seconds] -format %d].[clock format [clock seconds] -format %m].[clock format [clock seconds] -format %Y]@[clock format [clock seconds] -format {%H:%M}]@[clock format [clock seconds] -format %p]"

liegt,

laut fehlermeldung isses nen falsches fomat,

evtl. hast du einfach nur ne falsche tcl version...

aber werde mir es nochmal genauer anschaun

By Chaos

Henima
23.04.2005, 09:04
vielen dank euch allen schonmal soweit :)

vielleicht klappt es ja doch noch :)

ich wünsche allen ein schönes we

mfg
henima

Pirat
04.05.2006, 09:25
hallo,
ändere einfach die 3 zeile von unten von


set ::chanpeak_peak([string tolower $chan]) "$users@[clock format [clock seconds] -format %d].[clock format [clock seconds] -format %m].[clock format [clock seconds] -format %Y]@[clock format [clock seconds] -format {%H:%M}]@[clock format [clock seconds] -format %p]"

#nach

set ::chanpeak_peak([string tolower $chan]) "$users@[clock format [clock seconds] -format %d].[clock format [clock seconds] -format %m].[clock format [clock seconds] -format %Y]@[clock format [clock seconds] -format {%H:%M}]"


Danach müsste das Script tadellos arbeiten.


hallo,

ich hab folgendes problem, worann ich noch verzweifel, wenn ein user den channel neu joined, bekomme ich immer auf der partyline folgende fehlermeldung:

Tcl error [chanpeak_join]: bad format string "%p"

nun hab ich mir die stelle in dem script angeschaut, aber ich weiss absolut nicht warum er dort eine fehlermeldung ausgibt

ich würde mich riesig freuen, wenn mir hier geholfen werden könnte

hier der tcl script code:


if {![string match 1.6.* $version]} { putlog "\002CHANPEAK:\002 \002WARNING:\002 This script is intended to run on eggdrop 1.6.x or later." }
if {[info tclversion] < 8.2} { putlog "\002CHANPEAK:\002 \002WARNING:\002 This script is intended to run on Tcl Version 8.2 or later." }
setudef flag peak
bind join - * chanpeak_join
bind dcc $chanpeak_setting(dflag) $chanpeak_setting(cmd_dcc) chanpeak_dcc
bind pub $chanpeak_setting(pflag) $chanpeak_setting(cmd_pub) chanpeak_pub
proc chanpeak_readarray {array file} {
upvar $array ours
if {[catch {open $file r} fd]} { return }
if {[array exists ours]} { unset ours }
foreach line [split [read $fd] \n] {
if {[string range $line 0 2] != "%!%" || [scan [string range $line 3 end] {%[^!]!!!%s} name data] != 2} { continue }
if {![info exists data]} { set data "" }
set ours($name) $data
}
close $fd
}
proc chanpeak_savearray {array file} {
upvar $array ours
if {![array exists ours] || [catch {open $file w} fd]} { return }
foreach entry [array names ours] { puts $fd "%!%$entry!!!$ours($entry)" }
close $fd
}
if {[file exists $chanpeak_setting(db)]} { chanpeak_readarray chanpeak_peak $chanpeak_setting(db) }
proc chanpeak_dopre {} {
if {!$::chanpeak_setting(CHANPEAK:)} { return "" }
if {!$::chanpeak_setting(bold)} { return "CHANPEAK: " }
return "\002CHANPEAK:\002 "
}
proc chanpeak_dcc {hand idx text} {
if {$text == ""} { putdcc $idx "[chanpeak_dopre]Usage: .$::chanpeak_setting(cmd_dcc) <channel>" ; return }
if {![info exists ::chanpeak_peak([string tolower [set chan [lindex [split $text] 0]]])]} { putdcc $idx "[chanpeak_dopre]User Rekord existiert für diesen Channel $chan noch nicht." ; return }
set list [split $::chanpeak_peak([string tolower $chan]) @]
putdcc $idx "[chanpeak_dopre]Der Channel Rekord für $chan2 liegt bei [lindex $list 0] User. Der Rekord wurde am [lindex $list 1] um [lindex $list 2] Uhr erreicht."
}
proc chanpeak_pub {nick uhost hand chan text} {
if {[set chan2 [lindex [split $text] 0]] == ""} { set chan2 $chan }
if {![info exists ::chanpeak_peak([string tolower $chan2])]} { puthelp "PRIVMSG $chan :User Rekord existiert für diesen Channel $chan2 noch nicht." ; return }
set list [split $::chanpeak_peak([string tolower $chan2]) @]
puthelp "PRIVMSG $chan :Der Channel Rekord für $chan2 liegt bei [lindex $list 0] User. Der Rekord wurde am [lindex $list 1] um [lindex $list 2] Uhr erreicht."
}
proc chanpeak_join {nick uhost hand chan} {
global chanpeak_peak
if {[lsearch -exact [channel info $chan] +peak] == -1} { return }
if {[info exists chanpeak_peak([string tolower $chan])]} {
set peak $chanpeak_peak([string tolower $chan])
} {
set peak "0@[clock format [clock seconds] -format %d].[clock format [clock seconds] -format %m].[clock format [clock seconds] -format %Y]@[clock format [clock seconds] -format "%H:%M"]@--"
}
set peak [split $peak @]
if {[lindex $peak 0] >= [set users [llength [chanlist $chan]]]} { return }
if {$::chanpeak_setting(announce)} { puthelp "PRIVMSG $chan :Neuer $chan Rekord: $users user. Der Letze Rekord war am [lindex $peak 1] um [lindex $peak 2]." }
if {$::chanpeak_setting(cast)} { dccbroadcast "Neuer $chan Rekord: $users user. Der Letze Rekord war am [lindex $peak 1] um [lindex $peak 2]." }
set ::chanpeak_peak([string tolower $chan]) "$users@[clock format [clock seconds] -format %d].[clock format [clock seconds] -format %m].[clock format [clock seconds] -format %Y]@[clock format [clock seconds] -format {%H:%M}]@[clock format [clock seconds] -format %p]"
chanpeak_savearray chanpeak_peak $::chanpeak_setting(db)
}



vielen lieben dank im voraus :)

mfg
henima

ChaosKrieger
04.05.2006, 19:16
schonmal aufs datum geschaut? das thema is nun über ein jahr alt ;)

Pirat
05.05.2006, 00:22
schonmal aufs datum geschaut? das thema is nun über ein jahr alt ;)

Ja und? eine lösung wurde nicht gefunden! Und da ich selber dieses problem hatte und nach einer lösung suchte stiess ich auf das board hier. leider fand ich keine hilfe und musste selbst den fehler finden. und nun funktioniert dieses script.
Soll ich nun die erkenntnis wieder löschen nur weil das thema 1 jahr alt ist? bei www.egghelp.org und diversen anderen tcl archiv seiten existiert das script jedenfalls noch. Der Fehler wird hervorgerufen da sich viele sachen in und um Unix / Linux verändert hat.

Henima
05.05.2006, 07:18
hallo,

vielen dank für deine hilfe, funzt jetzt einwandfrei

gruss
heni

Pirat
05.05.2006, 10:29
hallo,

vielen dank für deine hilfe, funzt jetzt einwandfrei

gruss
heni

Bitte bitte ;)
in welchem ircserver biste den unter welchem nick?
Das script hatte ich vor ein paar jahren mal übersetzt...

keving
03.03.2007, 18:59
Bei mir kommt nur:

can't read "chanpeak_setting(dflag)": no such variable
while executing
"bind dcc $chanpeak_setting(dflag) $chanpeak_setting(cmd_dcc) chanpeak_dcc"
(file "scripts/peak.tcl" line 5)
invoked from within
"source scripts/peak.tcl"