[TuT] Korišćenje strcat-a

Započeo Vegas., Septembar 23, 2012, 01:09:26 PRE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Vegas.


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 ""...

Super je...taman mi je ovo trebalo...10/10



Kad bih ponovo mogao da biram...al' nemozes da biras.
Zajebes jedan minus i ode ceo zadatak u kurac. Ceo fazon brate, nema druge sanse.




Dobar tut, pomocice nekome  :)
Respect: Gagi, Maki187, Phillips, TerminuS, Neno, Lepotic, [AL] K4[Я]!K3â,,¢, Gotti747


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 !
Izvinjavam se na svim glupostima i ako sam nekome napisao nesto lose, neko drugi je koristio moj profil!
__________________________________________
https://bk.gta.world - GTA World Balkan - RAGEMP

Vegas.

Svako ima svoj način rada sa njim, znam i za to, ja radim ovako.

Super tut, mada sam ovo naucio na samp forums  :D

Vegas.




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
Poslednja Izmena: Septembar 23, 2012, 20:18:50 POSLE PODNE od Lemi_Zero