Pretraga

Pritisnite Enter za pretragu ili Escape za zatvaranje

Zaključano

[TuT][Pawn] String library

Započeo Zarathos
pre 14 godina
3,714
pregleda
14
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
| Pacino
Made Man
pre 14 godina
  • String library

    Evo, posto vidim da se svi patite i komplicirate sebi zivot ( a i drugima ) sa stringovima, varijablama, uporedjivanjima i slicno, odlucio sam da vas upoznam sa laksim nacinom. To jeste laksim nacinom izvodjenja kompliciranih naredbi pomocu najjednostavnijih funkcija...

    Evo da vas upoznam sa prvom funkcijom koja po mom misljenju i nema neki znacaj, posto stvari koje ja radim ne zahtjevaju ovakve funckije...


    1# funckija je i ujedno najrasirenija i najkomplikovanija, iako slabo tko zna sta ona zapravo radi, ja cu vam objasniti:

    Strcmp(const string1[], const string2[], bool:ignorecase, length);
     
    Ovo je funckija koja sluzi za uporedjivanje 2 stringa/sloga. Njeni argumenti su:
    string1[] - Prvi string
    string2[] - Drugi string
    bool:ignorecase - E ovo je ono sto vecinu zbunjuje, a sama rijec kaze: "ignorecase", ako stavite true vrijedit ce:

    KuCa ce biti isto kao kuca pa time ce returnati 0 ( sjetite se u GF-u uvijek onoga == 0 poslije strmp 🙂 ), a ako stavite false:
    kuca nece biti jednako KuCa i onda ce returnati 1 ili -1, zavisno od mjesta stringa ( -1 ako je string1 prije stringa2, a 1 ako je obrnuto)

    length ( opcionalno ) - Kada ovo postavite, vi postavljate "daljinu" do koje strcmp upoređuje 2 stringa. npr. Kuca ce biti jednako Kufa ako stavite duzinu = 3.


    2# funkcija je strfind. I ona je donekle poznata mnogima...
    Da ovo objasnimo možemo se posluziti jednostavnim primjerom iz zivota: Traženje igle u plastu sijena... Upravo to ova funkcija radi, trazi neki skup znakova u stringu.


    Strfind(const string[],const sub[],bool:ignorecase=false,pos=0)
    const string[] - slog/string u kojem zelimo da nadjemo skup znakova.
    const sub[] - skup znakova koji trazimo u stringu.
    bool:ignorecase - isto kao i za strcmp ( procitati paragraf iznad za vise informacija )
    pos - mjesto u stringu odakle pocinje pretraga


    #3 funkcija, manje poznata, ali ipak veoma bitna i jednostavna je funkcija strdel. Ona sluzi za brisanje određenog dijela gdje se u argumentu oznacava raspon brisanja.

    Strdel(string[], start, end)
    string[] - string iz kojeg zelimo da brisemo znakovni niz.
    start – pozicija znaka u stringu
    end – pozicija do koje se brise


    4# funkcija, isto manje poznata funkcija je strins, koja sluzi za ubacivanje jednog manjeg stringa u drugi veci string.

    Strins(string[],const substr[],pos,maxlength=sizeof string)
    string[] – string u koji zelite da ubacite ovaj manji
    const substr[] – string koji ubacujete
    pos – pozicija u stringu odakle zelite da pocnete ubacivanje
    maxlength=sizeof string – maksimalna duzina za ubaciti


    5# funkcija, veoma popularna funkcija i po meni jedna od najbitnijih je strlen. Ona vraca duzinu stringa u obliku integera.

    Strlen(const string[])
    const string – string od kojeg odredujemo duzinu

    #6 funkcija, veoma popularna, ali i ne manje vazna je funkcija strmid. Ona uzima dio znakova iz stringa/sloga i prebacuje ga u drugi ( male slicnosti sa funkcijom strins ).

    Strmid(dest[],const source[],start,end,maxlength=sizeof dest)
    dest[] – string u kojeg zelimo da ubacimo dio drugog
    const source[] – string koji ubacujemo u dest[]
    start – pozicija prvog znaka
    end – pozicija posljednjeg znaka
    maxlength=sizeof dest – duzina dest[]


    7# funkcija, veoma korisna ali gotov zaboravljena funkcija je strpack. Ova funkcija kreira “upakovanog” kopiju stringa.

    Strpack(dest[],const source[],maxlength=sizeof dest)
    dest[] – string u kojeg zelite da spremite “upakirani” string
    const source[] – izvor “upakiranog” stringa
    maxlength=sizeof dest – duzina dest[]


    8# funkcija koja je povezana sa proslom je strunpack. Ona kreira “ispakovanu” kopiju stringa.

    Strunpack(dest[], const source[],maxlength=sizeof dest)
    dest[] - string u kojeg zelite da spremite “ispakovani” string
    const source[] – izvor “ispakovanog” stringa
    maxlength=sizeof dest – duzina dest[]


    #9 funkcija jos manje poznata funkcija je valstr. Iako je nepopularna veoma je korisna. Ona pretvara integer u string.

    Valstr(dest[], value, bool:packed/unpacked)
    dest[] – string u koji zelite da ubacite value
    value – integer koji ubacujete u dest[]
    bool:packed/unpacked – da li zelite da string bude “upakovan” ili “ispakovan” (true/false)


    #16 funkcija, isto slabo popularna funkcija je floatstr. Ona pretvara string u float.

    floatstr(const string[])
    const string[] - string koji zelis da prtvoris

    #11 funkcija, jedna od najpopularnijih je strval. Veoma jednostavna, pretvara string u integer. Obrnuto od valstr.

    Strval(string[])
    string[] – string za pretvoriti.

    #12 funkcija, negdje je ima, negdje nema… Ta funkcija je strcat. Ona nadovezuje jedan string na drugi, kao lanac...

    Strcat(dest[], string[],maxlength=sizeof string)
    dest[] – string na koji zelite da nadovezete string[]
    string[] – string koji nadovezujete na dest[]
    maxlength=sizeof string – duzina string[]


    #13 funkcija, svima poznata je format. Ova funkcija formatira string po parametrima koje joj vi ponudite...

    Format(string[], len, formatirani string, parametri)
    string[] – string koji zelite da formatirate
    len – duzina string[]-a
    formatirani string – rezultat formatiranja
    parametri – ovde unosite varijable koje zelita se ispisu u string – u



    %c Ubacuje samo jedan znak/slovo.
    %d Ubacuje neki broj/integer.
    %f Ubacuje racionalni broj/float.
    %i Isto kao i %d.
    %s Ubacuje niz znakova(string/slog).
    %x Ubacuje broj u heksadecimalnom format.
    %% Ubacuje znak postotka ‘%’




    E to bi bilo to sto se tice objasnjavanja, preostaju samo jos primjeri... Nadam se da ste do sada nesto shvatili...

    Primjeri:

    #1
    YCMD:provjeri(playerid, params[], help)
    {
    #pragma unused help
    new ime;
    GetPlayerName(playerid, ime, sizeof ime);
    new unos;
    if(!sscanf(params, "s", unos))
    {
    if(strcmp(unos, ime, true) == 0)
    {
    SCM(playerid, -1, "Pogodio si ime!");
    }
    else return SCM(playerid, -1, "Nazalost pogrijesio si ime!");
    }
    return 1;
    }

    #2
    YCMD:provjeri(playerid, params[], help)
    {
    #pragma unused help
    new string;
    GetPlayerName(playerid, ime, sizeof ime);
    new unos;
    format(string, sizeof string, "Pronadji me!");
    if(!sscanf(params, "s", unos))
    {
    if(strfind(unos, string, true) != -1)
    {
    SCM(playerid, -1, "Pronasao si slovo!");// ako unese npr. pro - ispisace ovu poruku...
    }
    else return SCM(playerid, -1, "Nazalost pogrijesio si ime!");
    }
    return 1;
    }

    #3
    new string = "Ostat ce samo A";
    strdel(string, 0, 14); // string je sada "A"


    #4
    strins("Ubacit cemo ", "rijec", 32);
    //string je sada "Ubacit cemo rijec!"


    #5
    new duzina;
    new string;
    format(string, sizeof string, “Ovo je string”);
    duzina = strval(string);
    printf(“Duzina stringa je %i”, duzina); // izbacit ce broj 13...


    #6
    new PerPlayer;
    new string = “Ubacit cemo ovo u string”;
    strmid(PerPlayer, string, 0, strlen(string), 255);


    #7
    new string;
    strpack(string, “Ovo cemo upakovati!”);

    #8
    new string;
    new upakovani[24 char]= !”Ispakovacemo ovo!”);
    srunpack(string, pstring);


    #9
    new string;
    new vrijednost = 50;
    valstr(string, vrijednost);


    #10
    new string = “15.500604”;
    new floatvrijednost = floatstr(string);


    #11
    new string = “5000058”;
    new integer = strval(string);


    #12
    new string;
    strcat(string, “a”); strcat(string, “b”); strcat(string, “c”); strcat(string, “d”);
    print(string); // printat ce “abcd”;


    #13
    Mislim da ovu svi znate, pa nema potrebe za objasnjavanjem...




    Eto to bi bilo to sto se tice ovoga tut-a, ako vam nesto nije jasno ili
    zelite da saznate vise, slobodno se obratite za pomoc u ovoj temi...

    Vecina ovih funkcija je dostupna u standardnom C/C++ programskom
    okruzenju.
    (Moguce su pravopisne i gramaticke greske u ovome tekstu)

Mr.Lowrey
Godfather
pre 14 godina
lijepo ali malo je koplicirano
Omega-300
Rookie
pre 14 godina
strcmp - "najkompliciranija", "iako slabo tko zna sta ona zapravo radi" ?  😄
strfind - "mada se izbjegava iz opravdanih razloga" ?
kakve trave ti pusis daj mi reci  😄

mislim da za vecinu ako se procita ime i argumenti se zna sta radi, a ti tu plasis ko da su ne znam sta, joj joj, nije dobro se drogirat  😉
| Pacino
Made Man
pre 14 godina
Omega-300 wrote on July 5, 2011, 4:34 pm:
strcmp - "najkompliciranija", "iako slabo tko zna sta ona zapravo radi" ?  😄
strfind - "mada se izbjegava iz opravdanih razloga" ?
kakve trave ti pusis daj mi reci  😄

mislim da za vecinu ako se procita ime i argumenti se zna sta radi, a ti tu plasis ko da su ne znam sta, joj joj, nije dobro se drogirat  😉


Hajde ako si ti neki genijalac objasni nesto iz pawn library-a...
Mogu se kladiti da pojma nemas...
snicht_carter
Shot Caller
pre 14 godina
Super tut 😄
Obrisan korisnik Obrisan korisnik
pre 14 godina
Dobar tut Pacino svidja mi se .
| Pacino
Made Man
pre 14 godina
Hvala, hvala 😄
Omega-300
Rookie
pre 14 godina
EM|Pacino wrote on July 5, 2011, 4:34 pm:
strcmp - "najkompliciranija", "iako slabo tko zna sta ona zapravo radi" ?  😄
strfind - "mada se izbjegava iz opravdanih razloga" ?
kakve trave ti pusis daj mi reci  😄

mislim da za vecinu ako se procita ime i argumenti se zna sta radi, a ti tu plasis ko da su ne znam sta, joj joj, nije dobro se drogirat  😉


Hajde ako si ti neki genijalac objasni nesto iz pawn library-a...
Mogu se kladiti da pojma nemas...

Ja sam Bullet, Joe Bullet, tako da mi nemoj srat.
taft
Underboss
pre 14 godina
Prije svega, jako lijep tutorial siguran sam da će koristiti nekima. Svaka čast na trudu. - Iako me puno nasmijalo neka tvoja mišljenja o npr. 'strfind' da se izbjegava ( hehehe )

EM|Pacino wrote on July 5, 2011, 4:09 pm:
bool:ignorecase - E ovo je ono sto vecinu zbunjuje, a sama rijec kaze: "ignorecase", ako stavite true vrijedit ce:


ignorecase - ne kaže sama riječ, jednostavnije to je on/off gumb strcmp komande.

EM|Pacino wrote on July 5, 2011, 4:09 pm:
funkcija, jedna od najpopularnijih je strval. Veoma jednostavna, pretvara string u integer. Obrnuto od valstr.


Također, pretavaranje integer u float je isto jako važno, to radi ova naredba: http://wiki.sa-mp.com/wiki/Floatround

Iako nije samo za to, ali između ostalog.

EM|Pacino wrote on July 5, 2011, 4:09 pm:
funkcija, svima poznata je format. Ova funkcija formatira string po parametrima koje joj vi ponudite...


format nije funkcija. Tj. jest jedna vrsta funkcije. ima 'optional'

EM|Pacino wrote on July 5, 2011, 4:09 pm:
%i Isto kao i %d.


Heh, donekle točno ali nije isto. %i formatira integer u 'pokretu' dok je %d stalni integer

EM|Pacino wrote on July 5, 2011, 4:09 pm:
Vecina ovih funkcija je dostupna u standardnom C/C++ programskom okruzenju.


Vidim da u svakom svom radu koji objaviš počneš nešto sa C/C++ ajde mi sada reci kakve veze to ima sa ovom temom? :S
- Mislim nemam ništa protiv ali samo zbunjuješ one koji se ne razumiju ni u PAWN, a kamoli u C/C++ ako se toliko voliš hvaliti ili se želiš dokazati sa tim C/C++ onda napravi neki plugin, a ne samo filozofirati da ispadne da se razumiješ.

Omega-300 wrote on July 6, 2011, 10:17 am:
Ja sam Bullet, Joe Bullet, tako da mi nemoj srat.


Bullet pusti, nemoj se svađati. Jednostavno se želi dokazati.

A Pacino mislim da Bulletu nemaš šta posebno govoriti jer je on u Dev. Timu sa Yless-om, zajedno rade YSI tako da to sve objašnjava.
| Pacino
Made Man
pre 14 godina
Quote from July 5, 2011, 4:09 pm:
bool:ignorecase - E ovo je ono sto vecinu zbunjuje, a sama rijec kaze: "ignorecase", ako stavite true vrijedit ce:


ignorecase - ne kaže sama riječ, jednostavnije to je on/off gumb strcmp komande.

EM|Pacino wrote on July 5, 2011, 4:09 pm:
funkcija, jedna od najpopularnijih je strval. Veoma jednostavna, pretvara string u integer. Obrnuto od valstr.


Također, pretavaranje integer u float je isto jako važno, to radi ova naredba: http://wiki.sa-mp.com/wiki/Floatround

Iako nije samo za to, ali između ostalog.

EM|Pacino wrote on July 5, 2011, 4:09 pm:
funkcija, svima poznata je format. Ova funkcija formatira string po parametrima koje joj vi ponudite...


format nije funkcija. Tj. jest jedna vrsta funkcije. ima 'optional'

EM|Pacino wrote on July 5, 2011, 4:09 pm:
%i Isto kao i %d.


Heh, donekle točno ali nije isto. %i formatira integer u 'pokretu' dok je %d stalni integer

EM|Pacino wrote on July 5, 2011, 4:09 pm:
Vecina ovih funkcija je dostupna u standardnom C/C++ programskom okruzenju.


Vidim da u svakom svom radu koji objaviš počneš nešto sa C/C++ ajde mi sada reci kakve veze to ima sa ovom temom? :S
- Mislim nemam ništa protiv ali samo zbunjuješ one koji se ne razumiju ni u PAWN, a kamoli u C/C++ ako se toliko voliš hvaliti ili se želiš dokazati sa tim C/C++ onda napravi neki plugin, a ne samo filozofirati da ispadne da se razumiješ.

Omega-300 wrote on July 6, 2011, 10:17 am:
Ja sam Bullet, Joe Bullet, tako da mi nemoj srat.


Bullet pusti, nemoj se svađati. Jednostavno se želi dokazati.

A Pacino mislim da Bulletu nemaš šta posebno govoriti jer je on u Dev. Timu sa Yless-om, zajedno rade YSI tako da to sve objašnjava.

Nisam znao da je on... Ali ja to samo uporedjujem samo radi reda (C), jer je poprilicno slican...
pavle.bakun
Crime Lord
pre 14 godina
Takodje bravo za trud, za neke stvari sam se nasmejao kao 265 i Bullet 😄


Posto vidim da bas zelis da se pokazes kao sto rece 265 napravi neki dobar plugin...
| Pacino
Made Man
pre 14 godina
|β3tα|_eXtreme_ wrote on July 6, 2011, 10:42 am:
Takodje bravo za trud, za neke stvari sam se nasmejao kao 265 i Bullet 😄


Posto vidim da bas zelis da se pokazes kao sto rece 265 napravi neki dobar plugin...


Hajde eto, ocekujte neki plugin u toku dana... samo da smislim sta cu...
taft
Underboss
pre 14 godina
Nemoj neke gluposti nego neki pošten plugin, mislim da svatko zna napraviti neku glupost u plugin-u. Nego napravi npr. Facebook chat za SA:MP da se mozes preko FB-a spojit nes kao IRC
| Pacino
Made Man
pre 14 godina
Quote from July 6, 2011, 10:56 am:
Nemoj neke osti nego neki pošten plugin, mislim da svatko zna napraviti neku ost u plugin-u. Nego napravi npr. Facebook chat za SA:MP da se mozes preko FB-a spojit nes kao IRC


Hajd ok, pokusat cu to srediti 😄
btw. Otisli smo offtopic skroz xD

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava