[TuT][Pawn] String library

Započeo Zarathos
5. Jul 2011. Zaključano
3,733
pregleda
14
postova
| Pacino
4
Made Man
5. Jul 2011.
  • 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
5
Godfather
5. Jul 2011.
lijepo ali malo je koplicirano
Omega-300
2
Rookie
5. Jul 2011.
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
4
Made Man
5. Jul 2011.
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
4
Shot Caller
6. Jul 2011.
Super tut 😄
Deleted User
Obrisan korisnik
6. Jul 2011.
Dobar tut Pacino svidja mi se .
| Pacino
4
Made Man
6. Jul 2011.
Hvala, hvala 😄
Omega-300
2
Rookie
6. Jul 2011.
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
5
Underboss
6. Jul 2011.
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
4
Made Man
6. Jul 2011.
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
5
Crime Lord
6. Jul 2011.
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
4
Made Man
6. Jul 2011.
|β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
5
Underboss
6. Jul 2011.
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
4
Made Man
6. Jul 2011.
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

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha