![]() |
|
|||||||
| Tcl scripting Tcl scripting related questions |
![]() |
|
|
LinkBack | Thread Tools | Display Modes |
|
|
#1 (permalink) |
|
Member
|
Vreau ca scriptul sa raspunda si la ` ! . - cand se da o comanda publica
Code:
set cmdpfix "`"
set cmdpfix "!"
set cmdpfix "."
set cmdpfix "-"
bind pub om|o ${cmdpfix}k kick
proc kick {www liquid2k com slash xzziroz} {
set nick [lindex $xzziroz 0]
set reas [lrange $xzziroz 1 end]
if {![string length [string trim $reas]]} {
set reas "\[${com}/\002${www}\002] - No reason specified"} else {
set reas "\[${com}/\002${www}\002] - $reas"}
putserv "kick $slash $nick $reas"
}
__________________
Owner of #ro-tcl |
|
|
|
|
|
#2 (permalink) |
|
Administrator
aka aqwzsx |
Generalizand, analizam urmatoarele doua posibilitati
1. facem o comanda noua, de exemplu: Code:
kbindk om|o kick kick Code:
set settings(cmdpfix1) "."
set settings(cmdpfix1) "!"
set settings(cmdpfix1) "`"
proc kbindk {flags cmd proc} {
global settings
bind pub $flags ${settings(cmdpfix1)}${cmd} $proc
bind pub $flags ${settings(cmdpfix2)}${cmd} $proc
bind pub $flags ${settings(cmdpfix3)}${cmd} $proc
bind pub $flags ${cmd} $proc
}
2. sau facem bind-urile: Code:
bind pubm -|- * pubm Code:
bind pubm -|- "% ${settings(cmdpfix1)}*" cmdpfix
bind pubm -|- "% ${settings(cmdpfix2)}*" cmdpfix
bind pubm -|- "% ${settings(cmdpfix3)}*" cmdpfix
___ bind - comanda interna eggdrop (vezi doc/tcl-commands.doc) proc, set - comenzi Tcl (vezi http://tcl.tk/man/) Last edited by UniversaliA; 18-06-2004 at 21:19. |
|
|
|
|
|
#3 (permalink) |
|
Member
|
daca tot fac 4 binduri le pot face asa
Code:
bind pub om|o .k kick
bind pub om|o !k kick
bind pub om|o `k kick
bind pub om|o -k kick
proc kick {www liquid2k com slash xzziroz} {
set nick [lindex $xzziroz 0]
set reas [lrange $xzziroz 1 end]
if {![string length [string trim $reas]]} {
set reas "\[${com}/\002${www}\002] - No reason specified"} else {
set reas "\[${com}/\002${www}\002] - $reas"}
putserv "kick $slash $nick $reas"
}
__________________
Owner of #ro-tcl |
|
|
|
|
|
#4 (permalink) | |
|
Junior Member
Join Date: Aug 2004
Location: Planeta Moldova
Age: 21
Posts: 9
Rep Power: 0 ![]() |
Quote:
eu folosesc: if {![string compare -nocase "$botnick" [lindex [split $text] 0]]} { set text "$cmd(prefix)[join [lrange [split $text] 1 end]]" } $cmd(prefix) - specifici smenul tau de conducere poti folosi acest exemplu la event-ul bind pubm, un exemplu arata cam asa: bind pubm - * my_pub proc mypub {nick uhost hand chan text} { global botnick; variable conf if {![string compare -nocase "=$botnick" [lindex [split $text] 0]]} { set text "![join [lrange [split $text] 1 end]]" }
__________________
empty |
|
|
|
|
|
|
#5 (permalink) | |
|
Junior Member
Join Date: Aug 2004
Location: Planeta Moldova
Age: 21
Posts: 9
Rep Power: 0 ![]() |
Quote:
variable foo[list .kick !kick -kick etc..] foreach blabla $foo { bind pub - $blabla my_kick } catch { unset blabla }
__________________
empty |
|
|
|
|
|
|
#6 (permalink) |
|
Administrator
aka aqwzsx |
si cu ce e mai simpla varianta asta ? ca la fiecare comanda tu o sa folosesti
Code:
variable foo [.kick !kick -kick etc..]
foreach blabla $foo { bind pub - $blabla my_kick }
catch { unset blabla }
|
|
|
|
|
|
#7 (permalink) |
|
Member
|
asa arata bindul
Code:
set settings(cmdpfix1) "."
set settings(cmdpfix2) "!"
set settings(cmdpfix3) "`"
proc kbindk {flags cmd proc} {
global settings
bind pub $flags ${settings(cmdpfix1)}${cmd} $proc
bind pub $flags ${settings(cmdpfix2)}${cmd} $proc
bind pub $flags ${settings(cmdpfix3)}${cmd} $proc
bind pub $flags ${cmd} $proc
}
__________________
Owner of #ro-tcl Last edited by Kurupt; 03-08-2004 at 04:41. |
|
|
|
|
|
#8 (permalink) |
|
Administrator
aka aqwzsx |
O dedicatie pentru D0om care tot striga de optimizare cu foreach
Code:
set settings(binds) ". ` !"
proc kbindk {flags cmd proc} {
global settings
foreach bind [split $settings(binds)] {bind pub $flags ${bind}${cmd} $proc}
bind pub $flags ${cmd} $proc
}
Last edited by UniversaliA; 17-12-2004 at 21:01. |
|
|
|
|
|
#9 (permalink) |
|
Administrator
aka aqwzsx |
Reesind din bind-ul tau, pentru moment am impovizat urmatoarele:
Code:
bind nick -|- * nick:change
proc nick:change {nick uhost hand chan newnick} {
if {[isbotnick $nick]} {
foreach bind [binds $nick] {
set type [lindex $bind 0]
set flag [lindex $bind 1]
set mask [lindex $bind 2]
set proc [lindex $bind 4]
regsub -- $nick $mask $newnick newmask
unbind $type $flag $mask $proc
bind $type $flag $newmask $proc
}
}
}
bind evnt - init-server connect:irc
proc connect:irc {type} {
global botnick settings
set cmdpfix [lindex [split $settings(binds)] 0]
foreach bind [binds ${cmdpfix}*] {
set cmd [string trimleft [lindex $bind 2] $cmdpfix]
bind pubm [lindex $bind 1] "% $botnick~${cmd}*" [lindex $bind 4]
}
}
Last edited by UniversaliA; 04-08-2004 at 20:29. |
|
|
|
|
|
#10 (permalink) | |
|
Administrator
aka aqwzsx |
bind nick -|- * nick:change bind la chimbarea nick-ului (la orice nick) deci aici puteti adauga cod in plus pentru useri sau pentru BOT. In proc nick:change verificam daca aceasta a fost nick-ul BOTului care s-a schimbat: [isbotnick $nick], daca da - toate bind-urile care contineau nick-ul vechi al BOT-ului foreach bind [binds $nick] le stergem din memorie unbind $type $flag $mask $proc si adaugam acelash bind dar cu noul nick bind $type $flag $newmask $proc. $newmask = $mask doar ca am inlocuit nick vechi al BOTului cu cel nou regsub -- $nick $mask $newnick newmask.
bind evnt - init-server connect:irc bind la conectarea/intrarea BOTului pe irc, aici iarasi puteti aduga cod in plus pentru diferite proceduri interne. In proc connect:irc pentru fiecare bind care deja exista & incepe cu primul semn specificat in $settings(binds) foreach bind [binds ${cmdpfix }*] adaugam un bind cu nick-ul BOTului care el a luat cand s-a conectat la IRC bind [lindex $bind 0] [lindex $bind 1] "% $botnick~${cmd}*" [lindex $bind 4]. [string trimleft [lindex $bind 2] $cmdpfix] scoate semnul $cmdpfix din fata comenzii. De ce bind pe $botnick se face numai cand BOTul se conecteaza la irc si nu deodata in procedura kbindk specificata de Kurupt mai sus (cum el o face pentru prefixele ". ` !" ) ? Raspuns: pina in momentul cand BOTul se conecteaza la IRC, variabila $botnick nu are nici o valoare, ea e vida; adica BOTul logic nu stie ce nick va avea pe IRC, deci anume din acest motiv - bind pe $botnick o sa fie valabil numai cand BOTul se conecteaza pe IRC. ___ bind, unbind, isbotnick - comenzi interne eggdrop (vezi doc/tcl-commands.doc) proc, global, set, string, lindex, foreach, split, regsub - comenzi Tcl (vezi http://tcl.tk/man/) Quote:
Last edited by UniversaliA; 04-08-2004 at 06:05. |
|
|
|
|
![]() |
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| [Correct script] Acces Public -> Acces Admini | SoLLo | Tcl scripting | 3 | 11-04-2007 16:32 |
| AutoNOTICE & public message | Madalin | Tcl scripting | 2 | 12-05-2006 23:54 |
| Comenzi BOT | oxyg3n | a&a light script | 10 | 28-04-2006 09:45 |
| comenzi !plata !service etc | UltraS99 | Tcl scripting | 5 | 17-10-2005 03:53 |
| ma intereseaza niste comenzi | solitare | #a&a | 1 | 26-01-2005 17:12 |