Script vom englischen ins deustche übersetzt

Tappi112

Active Member
#1
Ich habe dieses Script gefunden, aber da die ganzen Ausgaben in englisch waren habe ich es ins deutsche übersetzt.
Es wird ein Ordner dbase mit einer Datei statistics erstellt und wenn ich den Eggdrop rehashe, dann steht da auch was drin.
Nur es wird bei der Eingabe von !stat, !top10 oder auch !top20 nichts ausgegeben. Als es in englisch war ging alles, dann hatte ich schon mal geschaut das ich einiges ins deutsche bekomme und es ging immer noch alles.
Bis ich dann bei den Ausgaben das englische Wort Statistics ins deutsche übersetzte (Statistik) dann bekam ich in der Partyline die Meldung:
Tcl error [::statistics::save]: couldn't open "scripts/dbase/statistics": permission denied

Also wieder alles rausgenommen, den dbase Ordner samt Datei gelöscht und alles von vorne gemacht, nun habe ich wieder alles in deutsch (siehe Code) nur es kommt keine Ausgabe im Chat, auch in der Partyline kommen keine Meldungen.....

Nun bin ich echt ratlos :confused:

Oder hat das Script sich etwa noch woanders abgespeichert wo ich es auch noch löschen muss, um es dann noch einmal neu zu installieren?

Bin für jede Hilfe dankbar, zumal ich echt keinen Schimmer habe, wieso es auf einmal nicht mehr geht. Weil ich habe ja nichts gemacht als die englischen Ausgabetexte ins deutsche verfasst und halt die trigger von $ zu !
Weil ich finde !stat besser als $stat ;)

Achja in der statistics Datei, welche im Ordner dbase drin ist, steht wie gesagt was drin
channel:#tappi id:*!*Tappi@feuerwehrlive.de value:1364862867 5 21 92 0 Tappi|Hg



Hier nun der Code:
Code:
#  type ".chanset <chan> +stat" on the partyline to ativate the script for a specific channel.
#  commands: !stat <nick> - shows information about you or a nick. (works only for other nicks when you are op on a channel)
#            !top10 <Smilies|Woerter|Zeilen|Buchstaben> - shows the top10 chatters, default option is Woerter
#            !top20 <Smilies|Woerter|Zeilen|Buchstaben> - same as !top10 but with places 11-20

namespace eval statistics {
# Storage file
  variable storage {scripts/dbase/statistics}

# Kill unused entries after x days
  variable killafter 30

# Command trigger
  variable trigger {!}

# smiley regex (only touch this, if you really know, what you are doing!)
  variable smileyregex {(:|8|;)(-|o)?(>|<|D|O|o|\)|\(|\]|\[|P|p|\||\\|/)}

  bind PUB   -|-  !{trigger}stat   [namespace current]::spew
  bind PUB   -|-  !{trigger}top10  [namespace current]::toplist
  bind PUB   -|-  !{trigger}top20  [namespace current]::toplist
  bind PUBM  -|-  *                [namespace current]::monitor
  bind CTCP  -|-  ACTION           [namespace current]::ctcp
  bind EVNT  -|-  save             [namespace current]::save
  bind TIME  -|-  {00 * * * *}     [namespace current]::cleanupdb

  setudef flag stat

  namespace export spew top10 toplist save load monitor
}

proc statistics::ctcp {nickname hostname handle target keyword arguments} {
  if {[validchan $target]} {
    monitor $nickname $hostname $handle $target $arguments
  }
  return 0
}

proc statistics::monitor {nickname hostname handle channel arguments} {
  variable data
  variable smileyregex
  if {([isbotnick $nickname]) || (![channel get $channel stat])} {
    return 0
  }
  set hostname [maskhost *!$hostname]
  regsub -all -- {\002|\003[\d]{0,2}(,[\d]{0,2})?|\006|\007|\017|\026|\037|\n|\t} $arguments {} arguments
  set added(Woerter) [regexp -all -- {\S+} $arguments]
  set added(Buchstaben) [regexp -all -- {\S} $arguments]
  if {[string length $smileyregex] >= 1} {
    set added(Smilies) [regexp -all -- $smileyregex $arguments]
  } else {
    set added(Smilies) 0
  }
  if {(![info exists data($channel,$hostname)])} {
    set data($channel,$hostname) "0 0 0 0 0 NULL"
  }
  regexp -- {^(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\S+)$} $data($channel,$hostname) -> lastseen Zeilen Woerter Buchstaben Smilies lastnick
  incr Zeilen 1
  incr Woerter $added(Woerter)
  incr Buchstaben $added(Buchstaben)
  incr Smilies $added(Smilies)
  set data($channel,$hostname) "[unixtime] $Zeilen $Woerter $Buchstaben $Smilies $nickname"
}

proc statistics::spew {nickname hostname handle channel arguments} {
  variable data
  if {(![channel get $channel stat])} {
    return 0
  }
  if {([isop $nickname $channel]) && ([string length $arguments] >= 1)} {
    set target [lindex [clean $arguments] 0]
  } else {
    set target $nickname
  }
  if {![onchan $target $channel]} {
    putserv "PRIVMSG $channel :\[Statistik - Unbekannter User \002$target\002\]"
    return 0
  }
  set targethost [maskhost *![getchanhost $target $channel]]

  if {[info exists data($channel,$targethost)]} {
    regexp -- {^(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\S+)$} $data($channel,$targethost) -> lastseen Zeilen Woerter Buchstaben Smilies lastnick
    set wpl [round [expr ($Woerter / $Zeilen.)]]
    set spl [round [expr ($Smilies / $Zeilen.)]]
    set lpw [round [expr ($Buchstaben / $Woerter.)]]
    putserv "PRIVMSG $channel :\[Statistik - \002$target\002 schrieb \002$Zeilen\002 Zeilen, \002$Woerter\002 Woerter und \002$Buchstaben\002 Buchstaben , sowie \002$Smilies\002 Smilies\]"
  } else {
    putserv "PRIVMSG $channel :\[Statistik - Noch keine Informationen über den User \002$target\002\]"
  }
}

proc statistics::top {channel number {type ""}} {
  variable data
  set statistics {}
  switch $type {
    {Zeilen} {set index 1}
    {Buchstaben} {set index 3}
    {Smilies} {set index 4}
    {default} {set index 2 ; set type "Woerter"}
  }
  foreach {user stats} [array get data $channel,*] {
    set stats [clean $stats]
    lappend statistics "[lindex [clean $stats] 5] [lindex $stats $index]"
  }
  set statistics [lrange [lsort -integer -decreasing -index 1 [lsort -unique -index 0 [lsort -integer -increasing -index 1 $statistics]]] [expr $number - 10] [expr $number - 1]]
  if {$statistics == ""} {
    return "\[Top$number $type - Noch keine Information für \002$channel\002\]"
  }
  set output "\[Top$number $type -"
  for {set i 0} {$i < [llength $statistics]} {incr i 1} {
    set item [lindex $statistics $i]
    append output "\x20[expr $i+$number-9]: \002[join [lindex [clean $item] 0] { }]\002 ([lindex $item 1])"
  }
  append output "\]"
  return $output
}

proc statistics::toplist {nickname hostname handle channel arguments} {
  global lastbind
  if {(![channel get $channel stat])} {
    return 0
  }
  set arguments [clean $arguments]
  set key [lindex $arguments 0]
  if {![regexp -- {^.*?([0-9]+)$} $lastbind -> number]} {
    return 0
  }
  if {![regexp -nocase -- {^(Woerter|Buchstaben|Smilies|Zeilen|)$} $key]} {
    putserv "PRIVMSG $channel :\[Statistik - Unbekannter Befehl: \002$key\002, valid options are \002Buchstaben\002, \002Zeilen\002, \002Smilies\002 and \002Woerter\002\]"
    return 0
  }
  putserv "PRIVMSG $channel :[top $channel $number [string tolower $key]]"
}

proc statistics::cleanupdb {args} {
  variable killafter
  variable data
  set killed 0
  foreach {item} [array names data] {
    set lastseen [lindex [clean $data($item)] 0]
    set expire [expr 60 * 60 * 24 * $killafter]
    if {[expr [unixtime] - $lastseen] >= $expire} {
      incr killed
      unset data($item)
    }
  }
  return $killed
}

proc statistics::load {} {
  variable data
  variable storage
  regexp -- {^(\S+/)?.*$} $storage -> directory
  if {[string length $directory] >= 1} {
    if {![file isdirectory $directory]} {
      file mkdir $directory
    }
  }
  if {![file exists $storage]} {
    return 0
  }
  if {[array exists data]} {
    array unset data
  }
  set file [open $storage r]
  while {![eof $file]} {
    gets $file line
    if {[regexp -nocase -- {^channel:(\S+)\sid:(\S+)\svalue:(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\S+)$} $line -> channel hostname lastseen Zeilen Woerter Buchstaben Smilies lastnick]} {
      set data($channel,$hostname) "$lastseen $Zeilen $Woerter $Buchstaben $Smilies $lastnick"
    }
  }
  close $file
}

proc statistics::save {args} {
  variable data
  variable storage
  set file [open $storage w]
  foreach chan_user [array names data] {
    regexp {^(\S+),(\S+)$} $chan_user -> channel user
    puts $file "channel:$channel id:$user value:$data($chan_user)"
  }
  close $file
}

proc statistics::clean {i} {
  regsub -all -- \\\\ $i \\\\\\\\ i
  regsub -all -- \\\[ $i \\\\\[ i
  regsub -all -- \\\] $i \\\\\] i
  regsub -all -- \\\} $i \\\\\} i
  regsub -all -- \\\{ $i \\\\\{ i
  return $i
}

proc statistics::round {num} {
  if {![string match "*.*" $num]} {
    return $num\.0
  }
  if {![regexp -- {^(\d+?)\.(\d+)$} $num -> primary secondary]} {
    error "syntax error in expression '$num'"
  }
  set secondary [expr round([string index $secondary 0].[string range $secondary 1 end])]
  return [expr {($secondary == 10) ? ($primary+1.0) : "$primary.$secondary"}]
}

statistics::load

putlog "Statistics Script geladen"
 

Tappi112

Active Member
#2
Also ich komm da irgendwie nicht drüber weg, das was ich geändert habe, hat doch im Grunde mit der Funktion nichts mit zu tun. Wieso geht das dann nicht?

Selbst wenn ich das original sprich das reine englische nehme, geht garnichts :mauer:
 
#3
Ok nach tagelangem hin und her testen habe ich es nun hinbekommen bzw. rausgefunden


bind PUB -|- !{trigger}stat [namespace current]::spew
bind PUB -|- !{trigger}top10 [namespace current]::toplist
bind PUB -|- !{trigger}top20 [namespace current]::toplist

Diese ! hätten als $ bleiben müssen :mauer:

Es geht nun alles und komplett in Deutsch :)
Also erledigt
 
Oben