- Toate post`urile care tineau de multumiri & bla bla - au fost sterse.
- Post`ul in care era dat link la script NEVERICAT de pe site strain NEVERICAT - a fost sters.
- Post`ul care continea cod la script care NU LUCRA si nici nu a fost TESTAT de autor inainte de a posta - a fost sters.
Acuma arcade ceva sugestii tie. Eu si restul apreciaza mult dorinta ta de a ajuta. Dar conteaza si modalitatea in care o faci. Inainte de a posta un script, sa fii CEL PUTIN SIGUR ca el lucreaza. In plus la asta cand scrii script`ul ar fi bine sa fii atent la optimizarea lui, sa nu incluzi elemente necesare in script. In plus ai putea verifica daca asa gen de script cu aceleasi functii sau logica nu mai exista undeva - si sa te inspiri sau doar sa vezi cum altii au facut. Aceasta ajuta mult sa eviti unele erori si sa faci script`uri proprii de calitate.
Acuma insasi analiza la codul tau.
Code:
set question(1) {"line 1"}
De ce si paranteze si ghilimele ? sau una sau alta, stii care e diferenta de a folosi sau una sau alta, sau cand sunt folosite ambele in acelas timp ?
Code:
bind pub - !question pub:question
De ce comanda e accesibila la toti ? nu destul ca nu este autorizare dar macar un flag ceva sa specifici ai putea.
Code:
global question(1) question(2) question(3) question(4) question(5) question(6) question(7) question(8) question(9) question(10)
NONSENSE, unde ai vazut asa exemplu de coding ? stii ce e arrays ? stii ca in cazul dat era destul sa scrii doar
global question ?
Code:
if {![matchattr $hand m|m $channel]} {
Dupa cum am mentionat, asta ar fi mai bine sa folosesti direct in comanda
bind.
Code:
putserv "PRIVMSG $channel :Sorry, you are not authorized to use this command."
De ce putserv ? putserv e folosit pentru lucruri mai importante, pentru ca foloseste un queue intern al bot`lui prioritar. Pentru mesaje ar fi mai bine de folost puthelp.
Code:
if {[string tolower [lindex $arg 0]] == "1"} {
In primul rand, de unde tu ai luat variabila $arg ? Ea nu e difinita in script. Deci eroare. In plus cel mai mare nonsense sa folosesti
string tolower ca sa verifici un numar. Stii ce face string tolower ? Din LITERA majuscula face litera minuscula, folosit in cazuri ca sa fie comparate cuvinte care folosesc aceleasi litere dar din registru diferit. Atunci cu string tolower le facem sa fie in acelas registru si comparam. Dar eu nu stiam ca cifre sunt minuscule si majuscule ca sa folosesti asa ceva la ele. In plus toate aceste 10 randuri de verificare se poate fi inlocuit cu asa ceva
Code:
if { [info exists question($text)]} {puthelp "PRIVMSG $chan :$question($text)" } {puthelp "PRIVMSG $chan : $nick - question $text doesn't exist"}
Deci a tale 10 randuri inlocuite cu o singura linie de cod, plus tot in aceasta linie user`ul este anuntat daca exista asa intrebare sau nu. Dar la tine ? daca erau 100 de intrebari ? tot 100 linii de cod aveai ? Aceasta linie este pentru intrebari/info care contin doar o singur rand.
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 :)