![]() |
|
|||||||
| Tcl scripting Tcl scripting related questions |
![]() |
|
|
LinkBack | Thread Tools | Display Modes |
|
|
#1 (permalink) |
|
Junior Member
Join Date: Sep 2005
Location: Aici Sunt Eu Tu Esti Acolo Mai Bine Lasa
Age: 28
Posts: 9
Rep Power: 0 ![]() |
Hmm am si eu nevoie de un tcl care sa pun pe un eggdrop si sa dea test cum ar venii eggdropu.
De ex eu sa dau !question 1 , si el sa intrebe intrebarea 1 si tot asa pana la 10. Cine crede ca poate sa faca asa ceva va rog postatii aici.. Va multumesc.. ! Si asa va fii mai usor pt testerii care tot se chinuie sa puna iei intrebarile e.t.c !
|
|
|
|
|
|
#2 (permalink) |
|
TCB & Ratings projects Member, #Mythic representative
|
uite vers revizuita k aia nuj d c nu mere
Code:
set question(1) {"line 1"}
set question(2) {"line 2"}
set question(3) {"line 3"}
set question(4) {"line 4"}
set question(5) {"line 5"}
set question(6) {"line 6"}
set question(7) {"line 7"}
set question(8) {"line 8"}
set question(9) {"line 9"}
set question(10) {"line 10"}
bind pub - !question pub:question
proc pub:question {nick uhost hand chan text} {
global question(1) question(2) question(3) question(4) question(5) question(6) question(7) question(8) question(9) question(10)
if {![matchattr $hand m|m $channel]} {
putserv "PRIVMSG $channel :Sorry, you are not authorized to use this command."
return 0
}
if {[string tolower [lindex $arg 0]] == "1"} {
foreach line $question(1) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "2"} {
foreach line $question(2) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "3"} {
foreach line $question(3) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "4"} {
foreach line $question(4) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "5"} {
foreach line $question(5) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "6"} {
foreach line $question(6) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "7"} {
foreach line $question(7) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "8"} {
foreach line $question(8) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "9"} {
foreach line $question(9) { puthelp "NOTICE $nick :$line" }
} else {
if {[string tolower [lindex $arg 0]] == "10"} {
foreach line $question(10) { puthelp "NOTICE $nick :$line" }
}
}
PS: daca asta mere in cateva zile fac unul care pune intrebarile singur. dai !start si dupa aia el pune 10 intrebari si cand termina cu intrebarile spune si raspunsurile. |
|
|
|
|
|
#3 (permalink) |
|
Member
|
Eu am avut ceva de genul facut da nu asa ci o sa va dau exemplu cum
Sunt fisiere cu cate 15 intrebari. Se da .load test1 Botul incepe si spune: Bine ati venit incepem testele bla bla pune +m 1.Ce face flagul X <scoate mode +m> useii am sa zicem 45/50 se cunde la dispozitie pt raspuns dupa care pune +m si trece la 2 Nu stiu daca voi ati vazut scriptul dar din cate imi amintesc Erised l-a vazut, inca nu stiu daca o sa il fac public, da o sa ma gandesc si poate o sa las link aici,Plus arcade o sa ma uit peste script tau si o sa iti dau mici sfaturi idei daca esti interesat.
__________________
Owner of #ro-tcl |
|
|
|
|
|
#4 (permalink) |
|
Administrator
aka aqwzsx |
Acuma insasi analiza la codul tau. Code:
set question(1) {"line 1"}
Code:
bind pub - !question pub:question Code:
global question(1) question(2) question(3) question(4) question(5) question(6) question(7) question(8) question(9) question(10) Code:
if {![matchattr $hand m|m $channel]} {
Code:
putserv "PRIVMSG $channel :Sorry, you are not authorized to use this command." Code:
if {[string tolower [lindex $arg 0]] == "1"} {
Code:
if { [info exists question($text)]} {puthelp "PRIVMSG $chan :$question($text)" } {puthelp "PRIVMSG $chan : $nick - question $text doesn't exist"}
Deci cam aceasta pentru moment, am scris rapid si fara sa intru in detalii si explicatii, nu aceasta era scopul. Eu presupun ca te-ai inspirat de undeva, dar fara sa intri in detalii la script. Am mentionat erorile si neajunsurile script`ului, care poate fi in plus inbunatatit. Daca ai dorinta, faci toate modificarile care am sugerat si dupa asta continuam cu inbunatatirea script`ului si cunostintelor tale in tcl :) |
|
|
|
|
|
#5 (permalink) |
|
TCB & Ratings projects Member, #Mythic representative
|
mersi universalia pt suggestii, si intradevar nu stiam ce face string tolower (pe care am folos dintr-un script) in rest nici chestia cu 100 de randuri nu stiam sa o restrang. O sa incerc sa introduc suggestiile tale in script si sper sa mearga corect de data asta.
MS PS: Cat despre inbunatatirea cunostintelor mele de tcl ... abia astept!!!
|
|
|
|
|
|
#6 (permalink) |
|
Member
|
Am incercat sa il tin cat de simplu, la sfarsit o sa dau si niste linkuri:
Codul: Code:
## $Id: intrebari.tcl, version 0.0 , ggdrop-1.6.x 2005 dpgc@purehype.net Exp $
## Author: Kurupt
## Info: Will ask questions
## Thanks to:
# smart@UnderNet#ro-tcl
#
## Contact: mail: dpgc@purehype.net
# irc : #ro-tcl (on undernet)
# web : http://code.aitia.info
## Info: Am adaugat la fiecare optiune ce face, cititi cu atentie, si daca ##ceva nu e clar nu va sfiiti sa intrebati.
## START
#Seteaza canalul pentru intebari
## Aici setam canalul pe care botul va scrie intrebarile, am folosit array ##pentru ca la sfarsit sa folosesc in global doar
## global teste
set teste(chan) "#bucuresti"
# Seteaza intrebarile
## Citeste info de mai sus , la fel si pentru intrebari
set teste(1) "Intrebarea1"
set teste(2) "Intrebarea2"
set teste(3) "Intrebarea3"
set teste(4) "Intrebarea4"
set teste(5) "Intrebarea5"
# BINDS
## Facem bindul, pentru a nu mai verifica dupa daca un user are sau nu ##access, punem direct in bind flagurile
## pentru care botul va asculta , este N global si nm local. Modificati dupa ##placere.
bind pub N|nm .intrebare teste:switch
# PROCES
## Incepem procesul pentru bind, simplu pana aici.
proc teste:switch {nick uhost hand chan text} {
## Definim variabila teste, am folosit array de aceea doar teste si nu global ##teste(chan) teste(1)
global teste
## Verificam daca textul e mai mic de 0 , adica daca avem doar .intrebare ##fara numar botul va da un mesaj
if {[llength $text] <= 0 } {
putserv "notice $nick :Comenzile: .intrebare <nr>"
}
## setam cuvantul pentru switch
set tt [lindex $text 0]
## Incepem switch
switch $tt {
"1" {putserv "privmsg $teste(chan) :$teste(1)"}
"2" {putserv "privmsg $teste(chan) :$teste(2)"}
"3" {putserv "privmsg $teste(chan) :$teste(3)"}
"4" {putserv "privmsg $teste(chan) :$teste(4)"}
"5" {putserv "privmsg $teste(chan) :$teste(5)"}
}
}
## Si am terminat, sper ca e usor pentru a adauga mai multe intrebari si a face switchurile adecvate.
putlog "teste loaded"
Informatii mai detaliate despre ce am folosit in el gasiti aici: Informatii despre switch: http://www.tcl.tk/man/tcl8.5/TclCmd/switch.htm Informatii despre array: http://www.tcl.tk/man/tcl8.5/TclCmd/array.htm Informatii generale: http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm P.S 1.McEagle nu era problema ca nu am ftp ci ca trebuie ceva schimbat la el, plus de asta nu se da linkuri cu ftp neverificate sau cu scripte ciudate 2.Am pus 5 pentru ca nu e script complect ci idee sau HOW TO. 3.Am sters posturile tale care nu aveau legatura si care continea acel link ciudat.
__________________
Owner of #ro-tcl |
|
|
|
|
|
#7 (permalink) |
|
Member
|
Alt cod care mult mai bun si mult mai optimizat
Code:
## $Id: intrebari.tcl, version 0.1 , ggdrop-1.6.x 2005 dpgc@purehype.net Exp $
## Author: Kurupt
## Info: Will ask questions
## Thanks to:
# smart@UnderNet#ro-tcl
#
## Contact: mail: dpgc@purehype.net
# irc : #ro-tcl (on undernet)
# web : http://code.aitia.info
## History: Am folosit altceva in afara de switch . Ideea lui universalia
set teste(chan) "#bucuresti"
set teste(1) "Intrebarea1"
set teste(2) "Intrebarea2"
set teste(3) "Intrebarea3"
set teste(4) "Intrebarea4"
set teste(5) "Intrebarea5"
bind pub N|nm .intrebare teste:info:exist
# PROCES
proc teste:info:exist {nick uhost hand chan text} {
global teste
if {[llength $text] <= 0 } {
putserv "notice $nick :Comenzile: .intrebare <nr>"
return 0
}
if { [info exists teste($text)]} {
puthelp "PRIVMSG $chan :$teste($text)"
} {
puthelp "PRIVMSG $chan :$nick - question \002$text\002 doesn't exist"
}
}
putlog "teste loaded"
__________________
Owner of #ro-tcl |
|
|
|
|
|
#8 (permalink) |
|
Member
Join Date: Oct 2004
Age: 20
Posts: 177
Rep Power: 0 ![]() |
Eu am facut un script prin care BOTul da test automat. Am zis sa nu fiu rau si sa-l impart si cu voi. Eventual sa imi dati idei cum as putea sa il fac mai simplu, ca arata urat de tot, si e complicat
![]() Code:
a:command -add test pub:test 0000 000 n
proc pub:test {hand chan args x mix} {
global botnick
set who1 [lindex $args 0]
set who2 [lindex $args 1]
set test(chan) "#Mtest"
logfile pjk $test(chan) "logs/test.log"
if { ($who1 == "") || ($who2 == "") } {a:usage $x test ; return "FAILED: someone is missing"}
set welcome "mesajul de intampinare"
set regula1 "regula 1"
set regula2 "regula 2"
set regula3 "regula 3"
set regula4 "regula 4"
set intr1 "intrebare"
set intr2 "intrebare"
set intr3 "intrebare"
set intr4 "intrebare"
set intr5 "intrebare"
set intr6 "intrebare"
set intr7 "intrebare"
set intr8 "intrebare"
set intr9 "intrebare"
set intr10 "intrebare"
set intr11 "intrebare"
set intr12 "intrebare"
set intr13 "intrebare"
set intr14 "intrebare"
set final "intrebare"
if { $chan == $test(chan) } {
putquick "MODE $chan +m" ; puthelp "PRIVMSG $chan :$welcome" ; puthelp "PRIVMSG $chan :$regula1" ; puthelp "PRIVMSG $chan :$regula2" ; puthelp "PRIVMSG $chan :$regula3" ; puthelp "PRIVMSG $chan :$regula4"
utimer 140[list puthelp "PRIVMSG $chan :Intrebarea $intr1"] ; utimer 145[list putquick "MODE $chan -m"] ; utimer 270[list putquick "MODE $chan +m"]
utimer 280[list puthelp "PRIVMSG $chan :Intrebarea $intr2"] ; utimer 285[list putquick "MODE $chan -m"] ; utimer 410[list putquick "MODE $chan +m"]
utimer 420[list puthelp "PRIVMSG $chan :Intrebarea $intr3"] ; utimer 425[list putquick "MODE $chan -m"] ; utimer 550[list putquick "MODE $chan +m"]
utimer 560[list puthelp "PRIVMSG $chan :Intrebarea $intr4"] ; utimer 565[list putquick "MODE $chan -m"] ; utimer 690[list putquick "MODE $chan +m"]
utimer 700[list puthelp "PRIVMSG $chan :Intrebarea $intr5"] ; utimer 705[list putquick "MODE $chan -m"] ; utimer 830[list putquick "MODE $chan +m"]
utimer 840[list puthelp "PRIVMSG $chan :Intrebarea $intr6"] ; utimer 845[list putquick "MODE $chan -m"] ; utimer 970[list putquick "MODE $chan +m"]
utimer 980[list puthelp "PRIVMSG $chan :Intrebarea $intr7"] ; utimer 985[list putquick "MODE $chan -m"] ; utimer 1110[list putquick "MODE $chan +m"]
utimer 1120[list puthelp "PRIVMSG $chan :Intrebarea $intr8"] ; utimer 1125[list putquick "MODE $chan -m"] ; utimer 1250[list putquick "MODE $chan +m"]
utimer 1260[list puthelp "PRIVMSG $chan :Intrebarea $intr9"] ; utimer 1265[list putquick "MODE $chan -m"] ; utimer 1390[list putquick "MODE $chan +m"]
utimer 1400[list puthelp "PRIVMSG $chan :Intrebarea $intr10"] ; utimer 1405[list putquick "MODE $chan -m"] ; utimer 1530[list putquick "MODE $chan +m"]
utimer 1540[list puthelp "PRIVMSG $chan :Intrebarea $intr11"] ; utimer 1545[list putquick "MODE $chan -m"] ; utimer 1670[list putquick "MODE $chan +m"]
utimer 1680[list puthelp "PRIVMSG $chan :Intrebarea $intr12"] ; utimer 1685[list putquick "MODE $chan -m"] ; utimer 1810[list putquick "MODE $chan +m"]
utimer 1820[list puthelp "PRIVMSG $chan :Intrebarea $intr13"] ; utimer 1825[list putquick "MODE $chan -m"] ; utimer 1950[list putquick "MODE $chan +m"]
utimer 1960[list puthelp "PRIVMSG $chan :Intrebarea $intr14"] ; utimer 1965[list putquick "MODE $chan -m"] ; utimer 2090[list putquick "MODE $chan +m"]
utimer 2100[list puthelp "PRIVMSG $chan :Intrebarea $intr15"] ; utimer 2105[list putquick "MODE $chan -m"]
utimer 2110[list puthelp "PRIVMSG $chan :$final"]
} else { puthelp "PRIVMSG $chan :Invalid channel to give command on." ; return "FAILED: invalid channel" }
return "for $who1 & $who2 started."
}
![]() PS: intre fiecare cifra si [ list este un spatiu, sa nu uitati sa il puneti |
|
|
|
|
|
#9 (permalink) |
|
TCB & Ratings projects Member, #Mythic representative
|
hmmm nice script dar am niste idei de imbunatatire. In primul rand ai spus ca pentru a adauga o regula se adauga un rand si se pune puthelp. Uite aici ceva care ar usura asta:
Code:
set regula1 "regula 1" set regula2 "regula 2" set regula3 "regula 3" set regula4 "regula 4" Code:
set reguli {
"regula 1"
"regula 2"
"regula 3"
"regula 4"
}
Code:
putquick "MODE $chan +m" ; puthelp "PRIVMSG $chan :$welcome" ; puthelp "PRIVMSG $chan :$regula1" ; puthelp "PRIVMSG $chan :$regula2" ; puthelp "PRIVMSG $chan :$regula3" ; puthelp "PRIVMSG $chan :$regula4" Code:
putquick "MODE $chan +m" ; puthelp "PRIVMSG $chan :$welcome" ; foreach line $reguli { puthelp "PRIVMSG $chan :[subst -noc $line]" }
|
|
|
|