Srecne Novogodisnje i Bozicne praznike zeli Vam BalkanIRC Forum :)


    Skripting tutorials

    Share
    avatar
    Zika023
    Super Admin
    Super Admin

    Number of posts : 1456
    Age : 24
    Локација : Melenci
    Registration date : 2008-09-20

    Skripting tutorials

    Post by Zika023 on Tue Sep 23, 2008 7:30 pm

    Code:
    Remotes

    Da ubacis skripte u remote prvo kucaš alt+r
    Vecina skripti imaju isti format kao što je npr.
    on level:EVENT:trigger:#channel: { output }
    Počećemo sa osnovnim TEXT event-om, this will run the output when ever someone ways what you have in the trigger
    on *:TEXT:hello:#:{ /msg $chan Hello World }
    Kada neko na bilo kom kanalu kaže rijec hello, ti (ili tvoj bot) ces automatski da odgovoris sa Hello Word. Da ovo ucinimo malo komplikovanije, mogu da postoje izrazi kao "hello people" ili "why hello there" koje sadrze vise rijeci od samo hello. Da raspoznamo hello u vise rijeci, to cemo uraditi dodavanjem zvijezdica * na rijec hello, sto ce znaciti – ukoliko se rijec hello nadje u tekstu chatera koji ga izgovara.
    on *:TEXT:* hello *:#:{ /msg $chan Hello World }
    Zvijezdica u ovom primjeru (*hello*) znaci da se moze naci bilo koja rijec ili tekst ispred ili iza rijeci hello.
    Mozda se pitate sta znaci /msg $chan u ovoj skripti, to je jednostavno poruka na kanalu koju aktivira skripta (kod) sa odredjenim tekstom – to je sada hello. Postoji I druga stvar  koju mozete iskoristiti umjesto poruke  da iskaze npr. akciju, to je ona komanda /me koja se u kodu (skripti) koristi kao npr. /describe $chan
    on *:TEXT:smile:#:{ /describe $chan grins evilly }
    ovo je kratka lista korisnih stvari prije nego sto nastavimo:
    Identifiers
    $nick
    $chan
    $opnick
    $vnick
    $me
    $active
    $1 $2 $3 $4 etc (explained later)
    Komande
    /msg
    /describe
    /notice
    /kick #chan nick
    /mode #chan +o/v/b/h nick
    /echo
    Events
    TEXT
    ACTION
    KICK
    JOIN

    Pitao sam se mnogo puta kako da  autovoice/op ljude koji udju na kanal pa cu to  postaviti ovdje kako bi to imalo novu komandu; identifier i event koje nismo jos koristili.
    on *:JOIN:#SGT:{ /mode $chan +v $nick }
    on *:JOIN:#SGT:{ /mode $chan +o $nick }
    Dakle, mozes vidjeti kako ovo radi: kada bilo koja osoba udje na kanal #SGT t ices joj dati voice/op (+v za voice, +o za op) ali ova skripta nije potpuna jer ukoliko nemas op na kanalu a osobe ulaze na kanal, pojavice se error poruke da nisi opovan. Da rijesis ovaj problem, koristi znak @ ispred levela u skripti:
    on @*:JOIN:#SGT:{ /mode $chan +v $nick }
    on @*:JOIN:#SGT:{ /mode $chan +o $nick }
    Ovaj kod (skripta) sada opuje/daje voice kada neko udje na kanal #SGT ali samo kada ti imas Op status.
    Mozes koristiti mIRC skripte da kreiras komande za bota ili nekog drugog usera da to radi, na primjer kick komanda koju svaki bot ima.
    on @*:TEXT:kick *:#:{ /kick $chan $2 $3- }
    Opet mozes vidjeti znak @ jer samo opovi mogu da kickuju, Isto mozes primijetiti I znakove  $2 i $3- Ovo moze raditi i samo ako se koristi komanda $2- ali zbog ovog tutorijala koristicu i komande $2 $3- da bi ih lakes objasnio. Znak $2 znaci drugi niz znakova u tirggeru, u ovom slucaju to bi bio nick ili osoba koju kickujes, $3- predstavlja treci niz znakova, u ovom slucaju bi to bila kick poruka.
    Da aktiviras ovaj kod (skriptu) samo otkucas kick nick (ime nicka) I bilo koju kick poruku, npr. Ukoliko otkucas kick SGT izadji! Komanda ce kickovati usera SGT sa kanala uz poruku izadji!.

    Ovo su najosnovniji script kodovi, kada ovo proucite, idemo na ljedeci korak ovog tutoriala.

    Alias's

    Da ubacis alias skripte (kodove) kucaj Alt+A
    Aliases su jednostavni kodovi koji se mogu pisati u alias odjeljku a isto tako i u remote.. Aliases mogu biti veoma korisni i mogu da smanje mnogo vremena (kod kucanja npr.)a isto se moze koristiti za kreiranje identifiers-a  o cemu necemo govoriti u ovom tutorijalu za pocetnike. Aliase koje cu dolje napisati su oni koji se upisuju u Alias odjeljku.
    /testing { /msg $active I just used my new testing alias }
    Kad god napises /testing na kanalu, to ce pokrenuti skriptu. Evo kodova za one ljude kojima je mrsko da kucaju join i whois:
    /j { /join $1- }
    /w { /whois $1 }
    Join komanda ce biti sada ista kao kad otkucas /j #SGT I uci ces na kanal #SGT,  razlog zasto $1- nije isto sto i $1 je zato sto je moguce da postoje kanali koji imaju password a to bi bila druga rijec koja se kuca. Sada cu pokazati kako izgleda pisanje aliasa u remote
    alias j {
      join $1-
    }
    Kao i sto vidis, ipak je duze pa se najvjerovatnije pitas zasto bih pisao sve ovo  , razlog je zato sto ovo moze da zamijeni i alias u skripti remote i alias u alias sekciji u isto vrijeme.

    Popups

    Ovo su popups koje vidis kada desnim tasterom kliknes na mirc, postoje 5 razlicitih mjesta gdje se koriste I upisuju: Status, Channel, Chat, Nick List i Menu Bar. Pritisni alt+p da otvoris popups, a onda izabrei koji ces da upisujes time sto ces kliknuti na view pa na menu bar npr. Evo uradicemo jednu interesantnu autokick poruku:
    footkick:/kick # $$1 oo slight itch on my foot. thats better hehe.
    Ovaj popup moras postaviti u "Nick List" odjeljku. Kada kliknes desnim tasterom na neki nick ovo ce se realizovati, dakle kikovaces osobu uz poruku "oo slight itch on my foot. ah thats better hehe."
    Postoje isto tako i podgrupe  popups koje se obiljezavaju sa tackom (.) Npr.
    Kicks
    .foot:/kick # $$1 oo slight itch on my foot. thats better hehe.
    .annoy:/kick # $$1 u were foolish to annoy me.
    Ovo su dvije podgrupe u osnovnoj grupi Kicks.




    Variables

    Variable su veoma korisne u mIRC skriptingu i lake za koriscenje. To su mali djelovi podataka oznaceni imenima koja uvijek pocinju sa  %  i postavljju se sljedecim komandama:
    /set %variable = data
    /var %variable = data
    Znak = nije potreban. Evo primjera:
    on *:TEXT:hello:#:{ set %useless Hello $nick | msg $chan %useless }
    Vjerovatno biste rekli da je ovo potpuno beskoristan kod (skripta) ali to je samo pocetak postavke varijabli. Vjerovatno se pitate sta znaci znak | izmedju $nick i msg. Taj znak jednostavno stvara nove redove u skripti. Koristitite ovaj znak da razdvojite linije (redove) u skripti .
    Pokusacemo da u radimo nesto cisto prakticno sto biste koristili u mircu koristeci komandu /inc (mozete koristiti i komandu /dec )
    on *:KICK:#:{ inc %kickcounter 1 | msg $chan I have now seen %kickcounter kicks }
    Kod (skripta) iznad ce dodati  1 kao broj u %kickcounter. Ako %kickcounter ne postoji ova komanda ce ga kreirati sa vrijednoscu 1 . Nakon kicka izaci ce poruka na kanalu I ljudima reci koliko kickova je skripta detektovala.
    Ako ne odredite broj, dodace se broj 1 kao uopsteni (isto je i kod dec)

    Komanda /var za kreiranje varijable se moze koristiti samo za trenutnu skriptu. Ovo je posebno korisno kada se koriste loops (o cemu ce kasnije biti rijeci)
    Mozete takodje kreirati varijable koje mogu automatski da uklone podatak varijable
    /set -u %variable . Ovo je veoma korisno u skriptama da sprijece ljude da flooduju. Za to bi mogli da koristite “ if ”  (sto je sljedeci stepen tutorijala).
    on *:TEXT:hello:#:{
      if (%antiflood) { halt }
      else { msg $chan Hello World | set -u10 %antiflood on }
    }
    Ovo ce postaviti varijablu za  10 sekundi a onda je ukloniti u znacenju d ace ta komanda biti jednom iskoriscena. Komanda if (%antiflood) provjerava da li varijabla koja se zove %antiflood vec postoji, Ako vec postoji, skripti je receno da stopira provjeru i nista da ne radi. Ako varijabla ne postoji, skripta ce reci Hello World I postaviti varijablu za 10 sekundi pa komanda ne moze biti ponovno koriscena za ovo odredjeno vrijeme.





    If/Then/Else

    Ovo prati isti format koji ima normalna skripta , I dalje imate na pocetku dogadjaj koji prethodi  itd. a rezultat (output) se mijenja.
    {
    а if (nesto) { output }
    а elseif (nesto) { output }
    а else { output }
    }

    Sigurno ste primijetili da se ovo veoma koristi u skriptama I postoje razna ogranicenja koja skripta treba da prihvati ili ne. Pogledajmo kako se aktivira skripta kada je varijabla postavljena:
    on *:TEXT:hello:#: { if (%auto reply == on) { /msg $chan Hello World } }
    Ovo ce provjeriti da li je varijabla %autoreply postavljena kao "on". Mozemo i postaviti i komande “ako (if) je nesto drugo (else) receno ili uradjeno”,npr.
    on @*:TEXT:kick *:#:{
      if ($2 == SGT) { msg $chan no I wont kick SGT }
    а else { kick $chan $2 I can kick you because your not SGT }
    }
    Ovaj kod provjerava da li se osoba koju kickujes naziva SGT, ako jeste, slijedi joj kick. Dalje cemo razmotriti da li je osoba trenutno na kanalu, ali osoba ne mora biti, da bi to provjerili koristicemo:
    on @*:TEXT:kick *:#: {
      if ($2 ison $chan) { kick $chan $2 }а
      else { msg $chan sorry $nick I cannot kick $2 as s/he is not on the channel }
    }
    ison se koristi da li je nick na kanalu :) mozete takodje koristiti i !ison za provjeru ako nick nije na kanalu.

    Koristicemo elseif komandu:
    on *:TEXT:who are you:#: {
      if ($me == SGT) { msg $chan I am SGT }
      elseif ($me == Spirle) { msg $chan I am Spirle }
      else { msg $chan I am not SGT or Spirle }
    }
    Primijetili ste kako ove komande funkcionisu, (if) ukoliko  $me (tvoj nick) nije SGT nastavak ide za jednu liniju ispod, (if) ukoliko $me nije Spirle nastavak ide u else liniju. Mozete koristiti vise elseif komandi ali samo jednu else komandu. Mozete koristiti i vise if komandi.
    Evo jos nekoliko znakova koje mozete koristiti I pored ==, na primjer:
    ==      jednakost
    ===    oznacava senzitivnu jednakost
    !=      nejednakost
    <manje>        vise od
    <manje>=      vise ili isto od

    I - ILI

    Mozete provjeriti da li dvije stvari ne znace jedno koristeci komandu I - ILI
    I = &&
    ILI = ||
    Na primjer
    on *:TEXT:add * and *:#: {
      if ($2 isnum) && ($4 isnum) { msg $chan $2 add $4 is $calc($2 + $4) }
      else { msg $chan I cant add letters }
    }
    Or
    on *:TEXT:say *:#: {
      if ($nick == SGT) || ($nick == Tifa) { msg $chan $2- }
      else { msg $chan sorry but I only take orders from SGT and Tifa }
    }






    Loops

    While

    Ova komanda jednostavno izvrsava nesto dok (while) je izraz u zagradama istinit. Na primjer:
    on *:TEXT:say * times:#:{
      var %a 1
      while (%a <= $3) {
      msg $chan $2
      inc %a 1
      }
    }
    Ukoliko neko otkuca  "say anything 5 times" poslaces mu poruku koja ce sadrzati "anything" 5 times
    Ovaj kod je potpuno beskoristan I nikad ga ne biste koristili ali zato ova  forma koda moze biti korisna za druge, mocnije script kodove:
    on *:TEXT:!power:#:{
    а var %a 1
    а var %b 0
    а while (%a <= $chan(0)) {
    ааа if ($me isop ($chan(%a)) { inc %b $nick($chan(%b),0) }
    а  inc %a 1
    а }
      msg $chan I am on $chan(0) channels and have power over %b people
    }
    $chan(0) oznacava na kojim kanalima se nalazis, $chan(1) prikazuje ti prvi kanal, $chan(2) je drugi I sve tako, pa %a samo kruzi po svim tvojim kanalima. Komanda $nick(#sgt,0) pokazuje broj ljudi na kanalu #sgt. Posto je $chan(1) tvoj prvi kanal mozes ih sastaviti da bi dobio $nick($chan(%a),0).
    Ovo izgleda malo komplikovano ali ako procitate nekoliko puta shvaticete.

    Goto

    Ova komanda omogucava da sa odredjenog mjesta u skripti mozete da predjete na razlicita mjesta da bi ostvarili odredjene komande.
    on *:TEXT:!power:#:{
    а var %a 0
    а var %b 0
    а inc %a 1
    а :loop
      if ($me isop $chan(%a) { inc %b $nick($chan(%a),0) }
    а if (%a == $chan(0)) { goto end }
    а goto loop
    а :end
    а msg $chan I am on $chan(0) channels and have power over %b people
    }
    Ja licno preferšem komandu while ali mnogo ljudi pokusavaju razne kako bi vidjeli koja od njih bolje funkcionise.

    $read and /write

    /write

    Ova komanda ti omogucuje da pises stvari u text fajlu. Postoje razliciti “pokretaci” koji mogu da promijene nacin na koji dodajete tekst. Pocnimo sa ovim primjerom:
    on *:TEXT:!ajoke *:#:{ write joke.txt $2- }
    Ovaj kod (skripta) ce dodati staged nick kaze poslije !ajoke u text fajlu joke.  Ili na primjer ukoliko Bill napise !ajoke Pit.. Koliko je dva plus dva? Odg. Cetiri. Dakle  sve ono sto je napisao nakon !ajoke ce se pojaviti u posljednjem redu text fajla.
    Postoje I razne forme “pokretaca” (/write pokretac file text) koji mogu biti
     -c
    Pokretac -c brise fajl prije dodavanja novog tekst reda tako d ace sve u tekst fajlu izgledati kao nova tekst linija (red)
    /write -c path/to/file.txt your text here
    -i
    Pokretac -i sluzi da stopira skriptu da nagomilava tekst u jednoj liniji (redu) I umjesto toga spusta se u nove linije (redove) da bi napravila proctor za novi red
    used with -l -w or -s switch
    -d
    Pokretac -d se koristi da izbrise jedan red (liniju) iz text fajla.
    used with -l -w or -s switch
    -a
    Pokretac -a sluzi da doda ekstra tekst u vec postojecem redu (liniji).
    used with -l -w or -s switch
    -l
    Pokretac -l odredjuje broj reda koji ce da bude napisan , ako red vec postoji, skripta ce napisati novi tekst umjesto njega.
    /write -ln path/to/file.txt your text (n = je broj linije - reda)
    -s
    Pokretac -s  trazi u tekstu fajl za zvaki red (liniju) koja pocinje onim sto trazite.
    /write -s"n" path/to/file.txt (n = linija-red koju trazite)
    -w
    Pokretac  -w trazi u cijelom tekstu ono sto trazite
    /write -w"n" path/to/file.txt (n = linija-red koju trazite)

    Pokazacu vam 2 primjera koristeci -d i -i
    on *:TEXT:!ijoke *:#:/write -il1 jokes.txt $2-
    on *:TEXT:!djoke *:#:/write -ds"$2-"
    - ijoke skripta ce upisati tekst kao prvu liniju (red br.1)
    - djoke skripta ce izbrisati joke koji pocinje sa bilo cime sto se napise kao $2-



    $read

    $read se koristi da cita tekst linije normalno, napisane komandom /write. Evo primjera:
    on *:TEXT:!joke:#:msg $chan $read(jokes.txt)
    Ova komanda ce poslati poruku na kanal citajuci bilo koji red iz text fajla ,  mozete i odrediti broj reda za citanje koristeci komande:
    on *:TEXT:!joke *:#:if ($2 isnum) msg $chan $read(jokes.txt,$2)
    Ovo ce odrediti  $2 kao broj koji ce procitati taj red (to naravno mora biti broj koji nije veci od broja redova koji su u tekst fajlu sto lako mozemo provjeriti sa  if ($2 <= $lines(jokes.txt))
    Isto kao i  /write komanda, postoje pokretaci i I za  $read komande I oni su u formi $read(file,switch,match_text)
    n
    the  n switch makes the text front the text file be read as plain text and not evluated into any variables/identifiers even if they start with $ or %
    t
    the t switch makes mirc treat the first line as text even if it is a number
    s
    Ovaj pokretac je isti kao kod /write. Koristi se da pronadje pocetak reda.
    w
    Pokretac se koristi da pronadje bilo sto u bilo kom djelu tekst fajla.

    A quick example
    /findmircjoke { //echo $read(jokes.txt,w,*mirc*)
    on *:TEXT:op:#:if ($read(allowedop.txt, s, $nick)) mode $chan +o $nick
    Alias ce traziti u tekst fajlu red koji sadrzi rijec mirc i prikazati ga
    On* :text komanda ce provjeriti da li je nick osobe u tekst fajlu, ukoliko postoji, opovace ga.






    Raws

    Raws nisu toliko komplikovani kako izgledaju. Najtezi dio kod njih je kako dobiti trazeni broj.
    Raw su postavljeni kao events u formatu: raw ::
    Nema puno toga da se kaze o njima pa cu vam pokazati nekoliko primjera:
    raw 433:*:{ echo That name is allready taken | halt }
    Ukoliko pokusas da promijenis nick u neki koji vec postoji dobices datu poruku  koju ce ti I server dati.

    Brzi nacin da saznas broj od Raw koji ti je potreban bio bi da kreiras skriptu koja ce ti reci koji su brojevi I tekstovi za odredjene akcije. Dacu vam jednu:
    raw *:*:echo -a raw: $numeric gives out the text: $1-
    Ocigledno necete prihvatiti ovu skriptu jer ce vam biti malo dosadna zato je stavite ispred rijeci Rawa, kada necete da vam dosadjuje vi je uklonite
    avatar
    Marko023
    Pocetnik
    Pocetnik

    Number of posts : 49
    Age : 25
    Локација : Zrenjanin
    Registration date : 2008-09-20

    Re: Skripting tutorials

    Post by Marko023 on Sat Sep 27, 2008 5:39 pm

    Lepo odradjeno...

      Current date/time is Thu Sep 20, 2018 11:31 am