Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Vegas. poslato Septembar 23, 2012, 01:09:26 PRE PODNE

Naslov: [TuT] Korišćenje strcat-a
Poruka od: Vegas. poslato Septembar 23, 2012, 01:09:26 PRE PODNE
(http://zaslike.com/files/fimvc6m5ngquj273vjsy.png)

Pozdrav.
Mnogo ljudi me pitalo kako uraditi stats u dijalogu, za stats kao naprimjer na GF modovima (pošto ih 90% servera koristi) je potreban strcat koji većina ljudi nezna koristiti. Odlučio sam napraviti jedan mali tut koji će vam pomoći da shvatite kako to uraditi, zaista je lagano. Uzeo sam komandu iz svog moda, dakle samo se koristi kao primjer, zanemarite ovo DV:RP.
Pa da počnemo..


Napravićemo osnovnu komandu /help u dijalogu. Evo kako. #define DIALOG_HELP 1999
#define SPD ShowPlayerDialog



Za početak odredite koliko želite velik dijalog, te otprilike izračunajte koliko će vam linija trebati. U ovom slučaju 6. Definirate ovako, primjera radi. new string[128]Ovo 128 je broj karaktera koji taj string može sadržati što je sasvim dovoljno, a za 6 linija morate ovako uraditi. new string[128],string1[128],string2[128],string3[128],string4[128],string5[128], string6[128]; Sigurno se pitate zašto 7 definicija kad ima 6 linija.. Videćete dalje zašto.

Počinjemo sa komandom.

â˜... STRCMP if (!strcmp("/help", cmdtext, true, 5))
{

â˜... ZCMD CMD:help(playerid, params[])
{

â˜... YCMD YCMD:help(playerid, params[], help)
{
          #pragma unused help


Komande bi trebale izgledati ovako.

â˜... STRCMP if(strcmp(cmd, "/help", true) == 0)
{
new string[128],string1[128],string2[128],string3[128],string4[128],string5[128],string6[128];
strcat(string, "==================================================", sizeof(string));
strcat(string1, "RP CMD: /me, /do, /w, /try, /s, /l.", sizeof(string1));
strcat(string2, "OPSTE CMD: /stats, /report, /new, /changepass", sizeof(string2));
strcat(string3, "CMD HELP: Da vidite komande za kuce kucajte ", sizeof(string3));
strcat(string4, "/househelp, za biznise /bizhelp, za org /orghelp", sizeof(string4));
strcat(string5, "==================================================", sizeof(string5));
format(string6, sizeof(string6),"%s\n%s\n%s\n%s\n%s\n%s",string,string1,string2,string3,string4,string5);
SPD(playerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"DV:RP | KOMANDE",string6,"Uredu","");
return 1;
}

â˜... ZCMD CMD:help(playerid, params[])
{
new string[128],string1[128],string2[128],string3[128],string4[128],string5[128],string6[128];
strcat(string, "==================================================", sizeof(string));
strcat(string1, "RP CMD: /me, /do, /w, /try, /s, /l.", sizeof(string1));
strcat(string2, "OPSTE CMD: /stats, /report, /new, /changepass", sizeof(string2));
strcat(string3, "CMD HELP: Da vidite komande za kuce kucajte ", sizeof(string3));
strcat(string4, "/househelp, za biznise /bizhelp, za org /orghelp", sizeof(string4));
strcat(string5, "==================================================", sizeof(string5));
format(string6, sizeof(string6),"%s\n%s\n%s\n%s\n%s\n%s",string,string1,string2,string3,string4,string5);
SPD(playerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"DV:RP | KOMANDE",string6,"Uredu","");
return 1;
}

â˜... YCMD YCMD:help(playerid, params[], help)
{
#pragma unused help
new string[128],string1[128],string2[128],string3[128],string4[128],string5[128],string6[128];
strcat(string, "==================================================", sizeof(string));
strcat(string1, "RP CMD: /me, /do, /w, /try, /s, /l.", sizeof(string1));
strcat(string2, "OPSTE CMD: /stats, /report, /new, /changepass", sizeof(string2));
strcat(string3, "CMD HELP: Da vidite komande za kuce kucajte ", sizeof(string3));
strcat(string4, "/househelp, za biznise /bizhelp, za org /orghelp", sizeof(string4));
strcat(string5, "==================================================", sizeof(string5));
format(string6, sizeof(string6),"%s\n%s\n%s\n%s\n%s\n%s",string,string1,string2,string3,string4,string5);
SPD(playerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"DV:RP | KOMANDE",string6,"Uredu","");
return 1;
}


Da objasnim šta se tu zapravo radi.
Linija strcat(string, "==================================================", sizeof(string)); --> Kao prvo stavljamo strcat, Å¡to znači da ćemo raditi sa njim. Onda pozivamo string, a to je ovaj dio (string, --> zatim ovaj dio "==================================================" --> predstavlja tekst koji će se nalaziti u tom stringu. , sizeof(string) uzima vrijednost stringa koji je u ovom slučaju 128 i importuje ga u ovaj tekst Å¡to znači da možemo imati max 128 karaktera inače se ostatak ne bi vidjeo. TakoÄ'e isto to se radi sa ostalim djelovima, samo Å¡to morate koristiti druge stringove koje smo gore definisali, znači sa drugu liniju bi bio string1, za treću string2, itd..

Idemo objasniti ovo. format(string6, sizeof(string6),"%s\n%s\n%s\n%s\n%s\n%s",string,string1,string2,string3,string4,string5);
SPD(playerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"DV:RP | KOMANDE",string6,"Uredu","");
Kao Å¡to vidite ovde formatiramo dijalog, jer ako bi uradili naprimjer ovako SPD(playerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"DV:RP | KOMANDE","%s\n%s\n%s\n%s\n%s\n%s", string,string1,string2,string3,string4,string5,"Uredu",""); pawno bi nam izbacio warning Number of arguments doesn't match the definition, takoÄ'e se mora to raditi sa SCM-om, labelom ukoliko ćete stavljati argumente kao Å¡to su imena igrača, IDovi njihovi, i ostale stvari. format(string6, sizeof(string6),"%s\n%s\n%s\n%s\n%s\n%s",string,string1,string2,string3,string4,string5); Ovom linijom formatiramo dijalog te pozivamo onaj string6 za koji sam vam gore naveo da ćete vidjeti zaÅ¡to, i evo. %s ovo se inače u pawnu koristi za slova, a %d za brojeve, mada i %s zna biti za brojeve, no nebitno to sada. %s\n%s ovo \n daje naredbu da posle ispisivanja prvog stringa drugi bude u drugom redu.

I na kraju prikazivanje dijaloga.
SPD(playerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"DV:RP | KOMANDE",string6,"Uredu","Uredu");
Dakle pokazujemo igraču dijalog, ovo string6 označava onaj dio gdje smo formatirali dijalog i stavili da se stringovi prikazuju jedan ispod drugog. Ukoliko želite da imate samo jedan GUMB, tj samo jedno Uredu, izbrišite drugo polje, da ostane samo ""...
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Poslednji Don poslato Septembar 23, 2012, 01:12:32 PRE PODNE
Super je...taman mi je ovo trebalo...10/10
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Casso [ Jancezz ] poslato Septembar 23, 2012, 01:39:28 PRE PODNE
Lepo Objasnjeno :) Pohvala..
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Kunnaâ„¢ poslato Septembar 23, 2012, 11:54:35 PRE PODNE
Lijepo objasnjeno 10/10
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: LOckeRâ„¢ poslato Septembar 23, 2012, 11:55:08 PRE PODNE
Lijepo
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Danijel96.pwn poslato Septembar 23, 2012, 12:25:04 POSLE PODNE
Dobar tut, pomocice nekome  :)
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Vegas. poslato Septembar 23, 2012, 12:50:14 POSLE PODNE
Hvala vam :D
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Kopra poslato Septembar 23, 2012, 14:43:28 POSLE PODNE
Ovo je skroz pogresno uradjeno,strcat se koristi na drugi nacin,primer :

new string[500];
strcat(string, "==================================================\n", sizeof(string));
strcat(string, "RP CMD: /me, /do, /w, /try, /s, /l.\n", sizeof(string1));
strcat(string, "OPSTE CMD: /stats, /report, /new, /changepass\n", sizeof(string2));
strcat(string, "CMD HELP: Da vidite komande za kuce kucajte\n", sizeof(string3));
strcat(string, "/househelp, za biznise /bizhelp, za org /orghelp\n", sizeof(string4));
strcat(string, "==================================================", sizeof(string5));
SPD(playerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"DV:RP | KOMANDE",string,"Uredu","");


STRCAT SLUZI DA NADOVEZES JEDAN STRING NA DRUGI !
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Vegas. poslato Septembar 23, 2012, 15:10:38 POSLE PODNE
Svako ima svoj način rada sa njim, znam i za to, ja radim ovako.
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Artieâ„¢ poslato Septembar 23, 2012, 17:52:59 POSLE PODNE
Super tut, mada sam ovo naucio na samp forums  :D
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Vegas. poslato Septembar 23, 2012, 19:46:10 POSLE PODNE
Hvala, sad ga ima i na balkanu za naučit :D
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: ...Nikola... poslato Septembar 23, 2012, 19:50:00 POSLE PODNE
Nije los tut,ja ovo koristim odavno  ;)
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: gReeDy.aMx poslato Septembar 23, 2012, 20:10:12 POSLE PODNE
Kakav profesionalan tutorijal svaka cast nemam reci jel ti teske pomagao?...
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Lemi Zero poslato Septembar 23, 2012, 20:17:47 POSLE PODNE
Svaka cast brate ja ovo nikada ne bih uradio, ja ne znam ni sta je strcmp,zcmd i ycmd...hvala ti  :D

EDIT: Salim se brate odlicno ! :P
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Capetroon. poslato Septembar 23, 2012, 22:10:04 POSLE PODNE
Lijepo od tebe. :)
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Vegas. poslato Septembar 25, 2012, 19:02:31 POSLE PODNE
Hvala :D
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: MaRkoS BE poslato Septembar 25, 2012, 19:56:47 POSLE PODNE
Dobar tut  ;)
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Djokoš poslato Septembar 25, 2012, 21:20:33 POSLE PODNE
Pohvala :D trebalo mi je :D
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Matej.Vercettiâ„¢ poslato Septembar 25, 2012, 22:43:48 POSLE PODNE
Dobar tut
Naslov: Odg: [TuT] Korišćenje strcat-a
Poruka od: Alexasssâ„¢ poslato Oktobar 05, 2012, 22:07:34 POSLE PODNE
Fenomenalan TuT! 10/10