+ Reply to Thread
Results 1 to 10 of 10

Thread: public comenzi cu nickul botului ca prefix si semnele in fata comenzilor

  1. #1
    Member Kurupt will become famous soon enough Kurupt's Avatar
    Join Date
    Jun 2004
    Location
    Hermannstadt
    Age
    26
    Posts
    108
    Rep Power
    46

    Default semnul din fatza comenzii publice

    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. #2
    Administrator

    aka aqwzsx
    UniversaliA is on a distinguished road
    Join Date
    Jun 2004
    Posts
    853
    Blog Entries
    128
    Rep Power
    3

    Default

    Generalizand, analizam urmatoarele doua posibilitati

    1. facem o comanda noua, de exemplu:
    Code:
    kbindk om|o kick kick
    care la randul ei va face

    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
    }
    Va crea 4 categorii de bind-uri cu toate semnele dorite, inclusiv bind fara semn (dupa dorinta).

    2. sau facem bind-urile:
    Code:
    bind pubm -|- * pubm
    care va "prinde" toate randurile, si fiecare rand de analizat daca contine o comanda sau alta info, de care avem nevoie, sau

    Code:
     
    bind pubm -|- "% ${settings(cmdpfix1)}*" cmdpfix
    bind pubm -|- "% ${settings(cmdpfix2)}*" cmdpfix
    bind pubm -|- "% ${settings(cmdpfix3)}*" cmdpfix
    care va "prinde" numai randurile care incep cu $cmdpfix3 sau cmdpfix2 sau cmdpfix1, si in continuare acelash algortim.

    ___

    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 20:19.

  3. #3
    Member Kurupt will become famous soon enough Kurupt's Avatar
    Join Date
    Jun 2004
    Location
    Hermannstadt
    Age
    26
    Posts
    108
    Rep Power
    46

    Default Nu inteleg

    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"
    }
    Eu intrebam de o modalitate mai simpla !
    Owner of #ro-tcl

  4. #4
    Junior Member d0oM is an unknown quantity at this point
    Join Date
    Aug 2004
    Location
    Planeta Moldova
    Age
    23
    Posts
    9
    Rep Power
    0

    Default

    Quote Originally Posted by Kurupt
    da am invatzat sa pun mai multe semne sau nici un semn acum explica mie cum sa fac sa asculte de nick la bot am incercat cu $botnick no restult alta idee nu am
    nu kiar am inteles ce ai in vedere, adica sa reactioneze la comenzi conform nickname-ul botului?

    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. #5
    Junior Member d0oM is an unknown quantity at this point
    Join Date
    Aug 2004
    Location
    Planeta Moldova
    Age
    23
    Posts
    9
    Rep Power
    0

    Default

    Quote Originally Posted by d0oM
    to Kurupt

    apropo de o varianta mai simpla poti folosi foreach, procedura arata cam asa:

    variable foo [.kick !kick -kick etc..]

    foreach blabla $foo { bind pub - $blabla my_kick }
    catch { unset blabla }

    proc my_kick { nick host hand chan text} {
    ...
    aici putzin am gresit, varianta corecta:

    variable foo[list .kick !kick -kick etc..]

    foreach blabla $foo { bind pub - $blabla my_kick }
    catch { unset blabla }
    empty

  6. #6
    Administrator

    aka aqwzsx
    UniversaliA is on a distinguished road
    Join Date
    Jun 2004
    Posts
    853
    Blog Entries
    128
    Rep Power
    3

    Default

    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 }
    sau varianta cu kbindk, unde e destul doar o data sa definesti procesul si dupa asta folosesti kbindk ca bind normal ?

  7. #7
    Member Kurupt will become famous soon enough Kurupt's Avatar
    Join Date
    Jun 2004
    Location
    Hermannstadt
    Age
    26
    Posts
    108
    Rep Power
    46

    Default bindul

    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
    }
    Last edited by Kurupt; 03-08-2004 at 03:41.
    Owner of #ro-tcl

  8. #8
    Administrator

    aka aqwzsx
    UniversaliA is on a distinguished road
    Join Date
    Jun 2004
    Posts
    853
    Blog Entries
    128
    Rep Power
    3

    Default

    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
     
    }
    sfirsit dedicatie
    Last edited by UniversaliA; 17-12-2004 at 20:01.

  9. #9
    Administrator

    aka aqwzsx
    UniversaliA is on a distinguished road
    Join Date
    Jun 2004
    Posts
    853
    Blog Entries
    128
    Rep Power
    3

    Default

    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]
       }
    }
    explicari in urmatorul post
    Last edited by UniversaliA; 04-08-2004 at 19:29.

  10. #10
    Administrator

    aka aqwzsx
    UniversaliA is on a distinguished road
    Join Date
    Jun 2004
    Posts
    853
    Blog Entries
    128
    Rep Power
    3

    Default

    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 Originally Posted by doc/tcl-commands.doc
    % matches 0 or more non-space characters (can be used to match a single word)
    ~ matches 1 or more space characters (can be used for whitespace between words)
    Last edited by UniversaliA; 04-08-2004 at 05:05.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Similar Threads

  1. din CHAT in PUBLIC
    By Campeon in forum Tcl scripting
    Replies: 5
    Last Post: 14-12-2008, 15:46
  2. Sa Aduag ink 2 - 3 comenzi
    By Setting in forum Tcl scripting
    Replies: 1
    Last Post: 28-10-2008, 03:41
  3. AutoNOTICE & public message
    By Madalin in forum Tcl scripting
    Replies: 2
    Last Post: 12-05-2006, 22:54
  4. Comenzi BOT
    By oxyg3n in forum a&a light script
    Replies: 10
    Last Post: 28-04-2006, 08:45
  5. ma intereseaza niste comenzi
    By solitare in forum #a&a
    Replies: 1
    Last Post: 26-01-2005, 16:12

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts