[TCL/Eggdrop]Warning: over maximum help queue!

kalleberlin

Lieutenant
Dabei seit
Feb. 2005
Beiträge
847
Hallo liebe Fb´ler,
ihr seit hoffentlich meine letzte Rettung.
Wenn ich dieses Skript hier starte kommt o.g Fehlermeldung.
Code:
bind pub - !test readline
proc readline { nick uhost handle channel arg } {
set size_alt 0
set ever 1
while {$ever == 1} {
set size [file size /home/test/test.log]

if {$size != $size_alt} {
set file {/home/test/test.log}
set fid [open $file]
set data [read $fid]
close $fid
set lines [split $data \n]
foreach line [lrange $lines end-1 end] {puthelp "PRIVMSG $channel :$line"}
}
}
}
Beim googeln dieser Fehlermeldung, hab ich gelesen das man diesen Fehler abstellen kann indem man in der eggdrop.conf

set max-queue-msg

einfach den Wert erhöht. Das habe ich getan, und der einzige Effekt war, das das Skript nur länger braucht um diese Fehlermeldung zu produzieren. Könnte mir einer von euch evntl. weiterhelfen wo genau da mein Fehler liegt? Ich bin absolut neu was TCL angeht, und weiss mir im moment nicht mehr zu helfen...

//edit: Hat keiner eine Idee? :(

//edit2: Hab ich meine Frage falsch gestellt, oder weiss das wirklich niemand? Ist ja zum verzweifeln :(

//edit3: Vielleicht hat ja jetzt jemand eine Idee :)
 
Zuletzt bearbeitet: (Push)

Boron

Commander
Dabei seit
Sep. 2001
Beiträge
2.779
Vielleicht hat es was mit deiner Endlosschleife zu tun.

Ich kenne jetzt TCL/Eggdrop nicht, aber evtl. werden die Variablen in der Schleife immer wieder neu angelegt und die schon exisiterenden nicht gelöscht. So wird immer mehr Speicher angefordert und irgendwann sagt, der TCL/Eggrop Interpreter (oder was auch immer): "Jetzt ist aber genug. Schnell mal mit einer Warnung dieses Skript abbrechen!"

Gibt es echt keine Situation, in der die while-Schleife verlassen werden soll?
 

kalleberlin

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
847
Gibt es echt keine Situation, in der die while-Schleife verlassen werden soll?
Vielleicht gibt es die, nur ich kenn sie nicht....

Vielleicht hast Du ja eine andere Idee wie man _immer_ die Grösse der Datei überprüfen kann?

Denke nämlich auch das es so ist mit dem "Speicherüberlauf" beim Eggdrop.

Dank Dir aber erstmal für eine Antwort :)
 

Boron

Commander
Dabei seit
Sep. 2001
Beiträge
2.779
Da ich kein TCL/Eggdrop kann, verstehe ich auch kaum, was diese Skript machen soll.

Was willst du denn machen?
Für was willst das machen?
Vielleicht gibt es alternative Sprachen mit denen du dein Ziel erreichen kannst (und die hier jemand versteht ;)).
 

kalleberlin

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
847
Ok, dann versuch ich das mal kurz und knapp zu erklären :D

Ziel des ganzen soll sein, sich von einem IRC-Channel zum Spiel Lineage2 zu unterhalten. Praktisch ein Chat zwischen Ingame und IRC Channel.

Das Spiel selber schreibt ein chatlog, das ich mittels TCL Skript auswerten möchte (wie man an dem Versuch oben erkennen kann :)). TCL deshalb, weil der IRC Server auf einer Linuxkiste läuft und ich dazu den Eggdrop-Bot benutze, dieser wiederrum versteht nur TCL...
 

Boron

Commander
Dabei seit
Sep. 2001
Beiträge
2.779
Ja dann weiß ich nicht mehr weiter :(.
Die Kombination aus den Worten Chat, TCL, IRC, Eggdrop, Bot, Chatlog usw. lässt mich die weiße Fahne schwenken.
 

kalleberlin

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
847
Danke dir trotzdem ;), vielleicht hat ja noch jemand anders eine Idee, is ja nicht so das wir hier alleine sind :D
 

riod

Lt. Commander
Dabei seit
Jan. 2006
Beiträge
1.122
wäre die alte variable löschen und neuanlegen eine möglichkeit ? geht sowas (kann auch kein tcl)
 

kalleberlin

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
847
Welche Variable löschen und neu anlegen?

//edit:
Ist noch aktuell ;)
 
Zuletzt bearbeitet: (push)

riod

Lt. Commander
Dabei seit
Jan. 2006
Beiträge
1.122
HTML:
bind pub - !test readline
proc readline { nick uhost handle channel arg } {
set size_alt 0
set ever 1
while {$ever == 1} {
set size [file size /home/test/test.log]

if {$size != $size_alt} {
lösche file;
lösche fid;
lösche data
set file {/home/test/test.log}
set fid [open $file]
set data [read $fid]
close $fid
set lines [split $data \n]
foreach line [lrange $lines end-1 end] {puthelp "PRIVMSG $channel :$line"}
}
}
}
da löschen weil der ja jedesmal die variablen neu anlegt vielleicht ist da ein bug
oder eben am ende der schleife di evariablen löschen
 

kalleberlin

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
847
Mhh, wenn ich mich nicht ganz täusche, wird die Variable doch in jedem Durchlauf komplett "neu" gesetzt, oder?

Versteh den Sinn vom löschen noch nicht ganz.
 

riod

Lt. Commander
Dabei seit
Jan. 2006
Beiträge
1.122
der fehler ist das er den speicher voll knallt und den aknn er nunmal nur voll knallen wenn er variablen setzt bzw zuviele anlegt , da kann für mich der einzige fehler liegen ... vielleicht erstellt er auch automatisch nen array oder so ... kenn mich wie gesagt nicht mit TCL aus ;)
 

kalleberlin

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
847
ok, klingt soweit ja logisch, aber ich setz die Variable ja jedes mal neu, oder nicht?
 
A

avilon

Gast
Kannst nochmal bitte kurz beschreiben, was das Script tun soll? Ich werd aus dem jetzigen nicht so recht schlau, inbesondere der Sinn (die Existenzberechtigung) der while-Schleife erschließt sich mir nicht.
Könnte dir das ganze wahrscheinlich nochmal sauber neu schreiben.
 

kalleberlin

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
847
Ich Zitier mich hier mal selber ;)

Ok, dann versuch ich das mal kurz und knapp zu erklären :D

Ziel des ganzen soll sein, sich von einem IRC-Channel zum Spiel Lineage2 zu unterhalten. Praktisch ein Chat zwischen Ingame und IRC Channel.

Das Spiel selber schreibt ein chatlog, das ich mittels TCL Skript auswerten möchte (wie man an dem Versuch oben erkennen kann :)). TCL deshalb, weil der IRC Server auf einer Linuxkiste läuft und ich dazu den Eggdrop-Bot benutze, dieser wiederrum versteht nur TCL...
Das skript als solches ist ja auch noch nicht fertig ;). Bevor ich dort weitermache, muss ich das Problem ja erstmal beheben :)

Die Schleife deshalb. weil ich ja ständig überprüfen muss ob sich das file geändert hat...
 
A

avilon

Gast
Ja.. das bringt mir jetzt gar nix, wenn du das gleiche nochmal schreibst.
Was ich wissen will ist, auf was der Bot reagieren, was er dann machen soll und was am Schluss im IRC ausgeben. Schritt für Schritt.
Das Script da oben ist für mich persönlich total verwirrend, da sind soviele Dinge drin, die für mich 0 Sinn ergeben.
 

kalleberlin

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
847
Was ich machen will steht doch da oben?!? Was genau ergibt denn für dich kein Sinn, vielleicht sollte man das so angehen.
 
Top