PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Topic script


Domian
09.12.2004, 21:14
Das soll mal ein Topic script werden ^^
ist aber noch ganz am anfang...

bind PUB mno|mno !set topic:set
proc topic:set { nick uhost handle chan text } {
global channel news msgg
set argm [lindex [split $text " "] 0]
set msgg [lindex [split $text " "] 1]
if {$text == $argm } {
set news "$msgg"
set channel "$chan"
topic:topic
}
}

proc topic:topic { } {
global news channel msgg
putquick "TOPIC $channel :Welcome 2 $channel, News: $news"
}

Doch das will nicht funzen,
ich möchte halt das wenn man !set news <die news> schreibt das der im Topic diese News einfügt,
schön und gut, doch ich kriege ihm irgendwie nicht gesagt das alles bis aus das erste wort (news) in $news gespeichtert werden soll.
Kann mir da jemand helfen?
*liebguck*


ChaosKrieger
11.12.2004, 11:46
hi..

sicher kann dir jemand helfen..

set topic [lrange [split $text] 1 end]


By CHaos

Domian
11.12.2004, 17:34
jep, das habe ich auch probiert, klappt aber trotzdem nicht ^^
ich habe jetzt mal das gemacht zum testen:

bind PUB mno|mno !set topic:set
proc topic:set { nick uhost handle chan text } {
global channel msgg
set argm [lindex [split $text " "] 0]
set msgg [lrange [split $text] 1 end]
if {$text == $argm } {
set channel "$chan"
topic:topic
}
}

proc topic:topic { } {
global channel msgg
putlog "$channel : $msgg "
putquick "TOPIC $channel :Welcome 2 $channel, News: $msgg"
}
und in der partyline steht dann nur der channelname, aber nicht die news...
Ich habe ka wodran das liegt :(

ChaosKrieger
12.12.2004, 15:01
mh... :/ naja.. bin mal erlich: eigedlich is das ganze script fürn ar.. *g*


zimmlich umständlich das ganze...



bind PUB mno|mno !set topic:set
proc topic:set { nick uhost handle chan text } {
set new [lindex [split $text] 0]
set news [lrange [split $text] 1 end]
if {$new == #chan } {
putquick "TOPIC $chan :Welcome 2 $chan, News: $news"
}
}


probier das mal aus, (hoffe habe das richtig verstanden was du vorhast)

By Chaos

Domian
13.12.2004, 21:24
Ja, deins geht, allerdings wird news nicht der einzige Parameter bleiben. da soll es dann noch Status und Partner zum Beispiel geben, Und deshalb hatte ich das mit dem proc laden gemacht, und nich alles in eins gepackt.

ChaosKrieger
14.12.2004, 06:45
Ja, deins geht, allerdings wird news nicht der einzige Parameter bleiben. da soll es dann noch Status und Partner zum Beispiel geben, Und deshalb hatte ich das mit dem proc laden gemacht, und nich alles in eins gepackt.

auch kein problem, kannst aber auch alles in eine proc machen.. besser wird es aber deshalb nicht ;)

is ganz dir überlassen.. dein problem lag am global..

global $::var ... ##laden
.... ##arbeiten
global $::var ... ##speichern


hoffe konnte dir mit meinem script oben trotzdem helfen ;)

By Chaos

Domian
14.12.2004, 15:48
Ja, du hast mir auf jeden Fall geholfen, ich werde mal gucken ob ich das so hinkriege wie ich das will ^^
auch wenn es bestimmt nicht perfekt ist ;)
Vielen Dank auf jeden Fall :)

Domian
14.12.2004, 17:44
ahhhhh.
ich bin halt noch am TCL lernen ^^
das müsste doch so gehen, aber nein *grml*
es ändert zwar das topic, aber nicht für jeden channel ein anderes,

setudef str news
setudef str partner

bind PUB mno|mno !set topic:set
proc topic:set { nick uhost handle chan text } {
global news partner
set new [lindex [split $text] 0]
set vallue [lrange [split $text] 1 end]
if {$new == "news" } {
set news $vallue
if {$partner == "" } {
set partner "N/A"
putserv "TOPIC $chan :Welcome 2 $chan, News: $news Partner: $partner"
} else {
putserv "TOPIC $chan :Welcome 2 $chan, News: $news Partner: $partner"
}
} else {
if {$new == "partner" } {
set partner $vallue
if {$news == "" } {
set news "N/A"
putserv "TOPIC $chan :Welcome 2 $chan, News: $news Partner: $partner"
} else {
putserv "TOPIC $chan :Welcome 2 $chan, News: $news Partner: $partner"
}
}
}
}

ChaosKrieger
14.12.2004, 19:31
du machst mich noch verrückt mit deinem script :mauer: *g*

wieso machst du deine if abfragen so umständlich?


if {$partner == "" } {
set partner "N/A"
putserv "TOPIC $chan :Welcome 2 $chan, News: $news Partner: $partner"
} else {
putserv "TOPIC $chan :Welcome 2 $chan, News: $news Partner: $partner"
}



wieso nicht einfach:


if {$partner == "" } {
set partner "N/A"
}
putserv "TOPIC $chan :Welcome 2 $chan, News: $news Partner: $partner"


entweder $partner ist "" oder ist nicht.. wenn nicht muss ja auch nichts geändert werden ;)

bring dein script erstmal soweit inordnung.. das ist mir im mom bissi durcheinander muss ich ganz erlich sagen ..


d.h:

script ändern.. bissi zurecht rücken.. und nochmal fragen wenn du den fehler immer noch nicht finden solltest

By Chaos

Domian
14.12.2004, 22:12
o.O
Ich möchte dich natürlich nicht auf die Palme bringen ;)
das es umständlich ist, stimmt, doch es hätte ja funktioniert ^^
Ich bin halt noch nicht so erfahren.
Leider :(
Und bücher zu dem Thema gibts ja auch nicht,
also, ich bin nun einen großen Schritt weiter,
allerdings zeigt der mir beim abrufen des Scripts folgenden Fehler an:
missing close bracket....
Ich habe aber geguckt, alle Klammern sind geschlossen.
Tja, wo liegt dann der Fehler,
Ich habe dadraufhin alles mögliche versucht, [] gesetzt, oder entfernt, oder oder oder,
Aber nein. der Fehler bleibt Identisch,
Nach 1 Stunde suchen bin ich nun sehr Verzweifelt :(
Ich poste das Script nun nocheinmal,
Es ist bestimmt wieder ganz umständlich ^^
also setz dich erstmal auf einen Stuhl, und atme gut durch vorm lesen ;)
Ich würde mich sehr freuen wenn du einen Blick draufwerfen könntest,
Ich finde es echt super, das du mir so toll hilfst,
:)

setudef str news
setudef str partner

bind PUB mno|mno !set topic:set
proc topic:set { nick uhost handle chan text } {
set new [lindex [split $text] 0]
set vallue [lrange [split $text] 1 end]
if { $new == "news" } {
channel set $chan news [$vallue]
if { [channel get $chan "partner"] == "" } {
channel set $chan partner [N/A]
}
putserv "TOPIC $chan :Welcome 2 $chan, News: [channel get $chan "news"] Partner: [channel get $chan "partner]"
} else {
if { $new == "partner" } {
channel set $chan partner [$vallue]
if { [channel get $chan "news"] == "" } {
channel set $chan news [N/A]
}
putserv "TOPIC $chan :Welcome 2 $chan, News: [channel get $chan "news"] Partner: [channel get $chan "partner]"
}
}
}

ChaosKrieger
19.12.2004, 15:38
und haste den fehler gefunden?

schau dir mal die zeile an:


putserv "TOPIC $chan :Welcome 2 $chan, News: [channel get $chan "news"] Partner: [channel get $chan "partner]


By Chaos

Domian
30.12.2004, 00:23
Sorry,
Hab das ganz vergessen ^^
Habe das nun mit arrays gemacht...
Nun läuft alles super :)

ind00r
30.12.2004, 00:29
noch eine kleine verbesserung:

bind PUB mno|mno !set topic:set

da reicht o|o,

da ein m o hat. und n hat alle ;)

thommey
31.12.2004, 03:38
Und wenn du dann auch noch möchtest,dass man im topic Sonderzeichen([]{}\) benutzen kann, dann mach die Sache mit den Listen und den Strings noch richtig

set ersteswort [lindex [split $text] 0]
set rest [join [lrange [split $text] 1 end]]

Liste->String: join
String->Liste: split
beides macht standardmäßig mit " " also leerzeichen als wort-trennung

lindex gibt einen string zurück
lrange eine liste
und du willst immer strings in deinen variablen haben