Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Zarathos poslato Jul 05, 2011, 18:09:40 POSLE PODNE

Naslov: [TuT][Pawn] String library
Poruka od: Zarathos poslato Jul 05, 2011, 18:09:40 POSLE PODNE
[Pawn]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 ‘%’[/li][/list]




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[MAX_PLAYER_NAME];
GetPlayerName(playerid, ime, sizeof ime);
new unos[24];
if(!sscanf(params, "s[24]", 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[128];
GetPlayerName(playerid, ime, sizeof ime);
new unos[64];
format(string, sizeof string, "Pronadji me!");
if(!sscanf(params, "s[64]", 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[16] = "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[15];
format(string, sizeof string, “Ovo je string”);
duzina = strval(string);
printf(“Duzina stringa je %i”, duzina); // izbacit ce broj 13...


#6
new PerPlayer[MAX_PLAYERS][64];
new string[24] = “Ubacit cemo ovo u string”;
strmid(PerPlayer[playerid], string, 0, strlen(string), 255);


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

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


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


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


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


#12
new string[64];
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)

Naslov: Odg: [TuT][Pawn] String library
Poruka od: System32 poslato Jul 05, 2011, 18:29:15 POSLE PODNE
lijepo ali malo je koplicirano
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Omega-300 poslato Jul 05, 2011, 18:34:52 POSLE PODNE
strcmp - "najkompliciranija", "iako slabo tko zna sta ona zapravo radi" ?  :D
strfind - "mada se izbjegava iz opravdanih razloga" ?
kakve trave ti pusis daj mi reci  :D

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  ;)
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Zarathos poslato Jul 05, 2011, 18:54:42 POSLE PODNE
Citat: Omega-300 poslato Jul 05, 2011, 18:34:52 POSLE PODNE
strcmp - "najkompliciranija", "iako slabo tko zna sta ona zapravo radi" ?  :D
strfind - "mada se izbjegava iz opravdanih razloga" ?
kakve trave ti pusis daj mi reci  :D

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...
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Pixel poslato Jul 06, 2011, 08:13:28 PRE PODNE
Super tut :D
Naslov: Odg: [TuT][Pawn] String library
Poruka od: dragan12 poslato Jul 06, 2011, 09:03:58 PRE PODNE
Dobar tut Pacino svidja mi se .
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Zarathos poslato Jul 06, 2011, 12:02:15 POSLE PODNE
Hvala, hvala :D
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Omega-300 poslato Jul 06, 2011, 12:17:47 POSLE PODNE
Citat: EM|Pacino poslato Jul 05, 2011, 18:54:42 POSLE PODNE
Citat: Omega-300 poslato Jul 05, 2011, 18:34:52 POSLE PODNE
strcmp - "najkompliciranija", "iako slabo tko zna sta ona zapravo radi" ?  :D
strfind - "mada se izbjegava iz opravdanih razloga" ?
kakve trave ti pusis daj mi reci  :D

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.
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Slay poslato Jul 06, 2011, 12:20:52 POSLE PODNE
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 )

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
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.

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
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.

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
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'

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
%i   Isto kao i %d.

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

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
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š.

Citat: Omega-300 poslato Jul 06, 2011, 12:17:47 POSLE PODNE
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.
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Zarathos poslato Jul 06, 2011, 12:23:52 POSLE PODNE
Citat: [H]265 poslato Jul 06, 2011, 12:20:52 POSLE PODNE
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 )

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
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.

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
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.

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
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'

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
%i   Isto kao i %d.

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

Citat: EM|Pacino poslato Jul 05, 2011, 18:09:40 POSLE PODNE
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š.

Citat: Omega-300 poslato Jul 06, 2011, 12:17:47 POSLE PODNE
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...
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Rotcod poslato Jul 06, 2011, 12:42:57 POSLE PODNE
Takodje bravo za trud, za neke stvari sam se nasmejao kao [H]265 i Bullet :D


Posto vidim da bas zelis da se pokazes kao sto rece [H]265 napravi neki dobar plugin...
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Zarathos poslato Jul 06, 2011, 12:44:43 POSLE PODNE
Citat: |β3tα|_eXtreme_ poslato Jul 06, 2011, 12:42:57 POSLE PODNE
Takodje bravo za trud, za neke stvari sam se nasmejao kao [H]265 i Bullet :D


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

Hajde eto, ocekujte neki plugin u toku dana... samo da smislim sta cu...
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Slay poslato Jul 06, 2011, 12:56:15 POSLE PODNE
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
Naslov: Odg: [TuT][Pawn] String library
Poruka od: Zarathos poslato Jul 06, 2011, 12:57:51 POSLE PODNE
Citat: [H]265 poslato Jul 06, 2011, 12:56:15 POSLE PODNE
Nemoj neke [cenzura]osti nego neki pošten plugin, mislim da svatko zna napraviti neku [cenzura]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 :D
btw. Otisli smo offtopic skroz xD