botlending forum  

Go Back   botlending forum > Eggdrop & TCL > Tcl scripting

Tcl scripting Tcl scripting related questions

Reply
 
LinkBack Thread Tools Display Modes
Old 10-06-2004, 00:33   #1 (permalink)
Member
 
Kurupt's Avatar
 
Join Date: Jun 2004
Location: Hermannstadt
Age: 24
Posts: 108
Rep Power: 36
Kurupt will become famous soon enough
Send a message via Yahoo to Kurupt
Default Tcl

Am facut urmatorul script nu e prea bine facut dar functzioneaza totusi am niste intrebari
1.cum sa fac sa dea help despre comanda de ex daca scrii !adduser el sa te ia la privat si sa iti zica !adduser <user> <nivel> si asa mai departe la restu
2.ce ar mai trebuii inbunatatzit la el
Code:

# Set what prefix you whant to use! Default is "!"
# you chan modify with "." "`"
set cmdpfix "!"

## BINDS
bind pub -|x ${cmdpfix}xautotopic pub:xautotopic
bind pub -|x ${cmdpfix}xdesc pub:xdesc
bind pub -|x ${cmdpfix}xurl pub:xurl
bind pub -|x ${cmdpfix}xadduser pub:xadduser
bind pub -|x ${cmdpfix}xremuser pub:xremuser
bind pub -|x ${cmdpfix}xclear pub:xclear
bind pub -|x ${cmdpfix}xvoice pub:xvoice
bind pub -|x ${cmdpfix}xdevoice pub:xdevoice
bind pub -|x ${cmdpfix}xop pub:xop
bind pub -|x ${cmdpfix}xdeop pub:xdeop
bind pub -|x ${cmdpfix}xkick pub:xkick
bind pub -|x ${cmdpfix}xban pub:xban
bind pub -|x ${cmdpfix}xunban pub:xunban
bind pub -|x ${cmdpfix}xsuspend pub:xsuspend
bind pub -|x ${cmdpfix}xunsuspend pub:xunsuspend
bind pub -|x ${cmdpfix}xtopic pub:xtopic

## Don't modify if you don't know what you do

# !xautotopic <on|off>
proc pub:xautotopic {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :set $chan autotopic $ar"
	putcmdlog "<<$nick>> !$hand! x autotopic $chan"
}


# !xdesc <text>
proc pub:xdesc {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :set $chan desc $ar"
	putcmdlog "<<$nick>> !$hand! x desc $chan"
}


# !xurl <url>
proc pub:xurl {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :set $chan url $ar"
	putcmdlog "<<$nick>> !$hand! x url $chan"
}


# !xadduser <user> <level>
proc pub:xadduser {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :adduser $chan $ar"
	putcmdlog "<<$nick>> !$hand! x adduser $chan"
}


# !xremuser <user>
proc pub:xremuser {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :remuser $chan $ar"
	putcmdlog "<<$nick>> !$hand! x remuser $chan"
}


# !xclear
proc pub:xclear {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :clearmode $chan"
	putcmdlog "<<$nick>> !$hand! x clear $chan"
}


# !xvoice <nick1> <nick2> .. <nickn>
proc pub:xvoice {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :voice $chan $ar"
	putcmdlog "<<$nick>> !$hand! x voice $chan"
}


# !xdevoice <nick1> <nick2> .. <nickn>
proc pub:xdevoice {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :devoice $chan $ar"
	putcmdlog "<<$nick>> !$hand! x devoice $chan"
}


# !xop <nick1> <nick2> .. <nickn>
proc pub:xop {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :op $chan $ar"
	putcmdlog "<<$nick>> !$hand! x op $chan"
}


# !xdeop <nick1> <nick2> .. <nickn>
proc pub:xdeop {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :deop $chan $ar"
	putcmdlog "<<$nick>> !$hand! x deop $chan"
}


# !xkick <nick> <reason>
proc pub:xkick {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :kick $chan $ar"
	putcmdlog "<<$nick>> !$hand! x kick $chan"
}


# !xban <nick/host> <duration> <reason>
proc pub:xban {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :ban $chan $ar"
	putcmdlog "<<$nick>> !$hand! x ban $chan"
}


# !xunban <mask>
proc pub:xunban {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :unban $chan $ar"
	putcmdlog "<<$nick>> !$hand! x unban $chan"
}


# !xsuspend <user> <duration>
proc pub:xsuspend {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :suspend $chan $ar"
	putcmdlog "<<$nick>> !$hand! x suspend $chan"
}


# !xunsuspend <user>
proc pub:xunsuspend {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :unsuspend $chan $ar"
	putcmdlog "<<$nick>> !$hand! x unsusped $chan"
}


# !xtopic <topic>
proc pub:xtopic {nick uhost hand chan ar} {
	global botnick
      putserv "PRIVMSG X :topic $chan $ar"
	putcmdlog "<<$nick>> !$hand! x topic $chan"
}
__________________
Owner of #ro-tcl
Kurupt is offline   Reply With Quote
Old 10-06-2004, 03:50   #2 (permalink)
Administrator

aka aqwzsx
 
Join Date: Jun 2004
Posts: 832
Blog Entries: 126
Rep Power: 3
UniversaliA is on a distinguished road
Default

1. ai uitat de autorizare.

2. nu ar fi rau bind sa faci in afara de local X si pe global X

folosim X, pentru ca x global e utilizat deja. corect ?

Code:
bind pub X|X ${cmdpfix}xautotopic pub:xautotopic
3. "global botnick" ... presupun ca nu cunosti ce face aceasta comanda & e utilizata pretutindeni, pentru ea sa deschizi topic aparte daca te intereseaza ce face, pentru moment doar i-ti spun ca nu ai nevoie de ea, deci o stergi.

4. pentru a verifica daca lipseste textul (optiunea la comanda, exemplu la xdesc)
Code:
if {![string length $ar]} {
puthelp "PRIVMSG $nick :FAILED: no argument Specified"
return "FAILED: no argument specified"
}
5. pentru a verifica daca argumentul e valid (de exemplu la xautoopic)
Code:
if {![string equal -nocase $ar on] && ![string equal -nocase $ar off]} {
puthelp "PRIVMSG $nick :Specify valid options ON or OFF"
return "FAILED: invalid argument specified"
}
Aceasta a fost o maniera simplista si putin greshita, pentru a arata algoritm-ul. Mai bine ar fi asa:

Code:
set option [lindex [split $ar] 0]
 
if {![string equal -nocase $option on] && ![string equal -nocase $option off]} {
puthelp "PRIVMSG $nick :Specify valid options ON or OFF"
return "FAILED: invalid argument specified"
}
Pentru detalii in plus, deschideti alt topic.

6. pentru a verifica daca e cifra & nu depaseste 499 & nu e mai mica ca 1 (exemplu la xadduser)
Code:
set whom [lindex [split $ar] 0]
set access [lindex [split $ar] 1]
 
if {![string length $whom]} {
puthelp "PRIVMSG $nick :FAILED: no argument Specified"
return "FAILED: no argument specified"
}
 
if {![isnumber $access] || $access > 498 || $access < 1} {
puthelp "PRIVMSG $nick :FAILED: invalid level access"
return "FAILED: no/invalid argument specified"
}
isnumber e functie luata din alltools.tcl, pentru ea deschideti topic aparte, daca va intereseaza. Deasemenea am verificat, in plus, daca e specificat user-ul. Logic am putea evita acest pas, verificand doar acces-ul, fiindca daca e specificat access-ul care e pe locul doi, locul unu SIGUR e ocupat (specificat), detalii in continuare.
O suggestie in plus, daca nu e specificat nivelul de acces (din orice motiv), BOTul "by default" sa atribuie acces-ul 399, adica comanda !xadduser blabla sa fie echivalenta cu !xadduser blabla 399
Code:
set whom [lindex [split $ar] 0]
set access [lindex [split $ar] 1]
 
if {![string length $whom]} {
puthelp "PRIVMSG $nick :FAILED: no argument Specified"
return "FAILED: no argument specified"
}
 
if {![isnumber $access] || $access > 498 || $access < 0} {
set access 399}
#continuare la script
7. pentru comenzile xvoice, xdevoice, xdeop, xop

a. verificam daca user-ul e pe chan
b. verificam daca user-ul are deja voice sau op etc.

Folosim comenzile din tcl-commands.doc, daca va intereseaza topic nou deschideti.
Code:
set whom [lindex [split $ar] 0]
 
if {![string length $whom]} {
set whom $nick
}
 
#daca utilizatorul nu specifica nici un argument, deci el vrea el insusi sa fie deopdat
 
if {![onchan $whom $chan]} {
puthelp "PRIVMSG $nick :FAILED: nick not on chan"
return "FAILED: nick not on chan"
}
 
if {![isop $whom $chan]} {
puthelp "PRIVMSG $nick :FAILED: nick is not opped on chan"
return "FAILED: nick is not opped on chan"
}
 
#pentru "voice" if {![isvoice $whom $chan]} ***
8. comenzile is date pe canal, logic chan-ul e valid (fiindca BOT-ul e pe chan), daca comenzile ar fi date din privat, logic la fiecare comanda am verifica daca chan-ul (in care se cere de dat comanda) e valid.

Detalii in plus, dupa ce apare a doua versiune a script-lui

___

bind, puthelp, onchan, isop, isvoice - comanda interna eggdrop (vezi doc/tcl-commands.doc)
isnumber - proc intern eggdrop (vezi scripts/alltools.tcl)
proc, set, string, return - comenzi Tcl (vezi http://tcl.tk/man/)

Last edited by UniversaliA; 11-06-2004 at 06:50.
UniversaliA is offline   Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT +3. The time now is 11:58.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.