[TuT] Korišćenje strcat-a

Započeo Obrisan korisnik
22. Sep. 2012. Zaključano
2,627
pregleda
19
postova
Deleted User
Obrisan korisnik
22. Sep. 2012.

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
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,string1,string2,string3,string4,string5, string6;
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,string1,string2,string3,string4,string5,string6;
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,string1,string2,string3,string4,string5,string6;
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,string1,string2,string3,string4,string5,string6;
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 ""...
kocho
5
Underboss
22. Sep. 2012.
Super je...taman mi je ovo trebalo...10/10
-[The]Casso|^^
5
Underboss
22. Sep. 2012.
Lepo Objasnjeno 🙂 Pohvala..
EuroGaming
5
Underboss
23. Sep. 2012.
Lijepo objasnjeno 10/10
eQ| Cubee
5
Kingpin
23. Sep. 2012.
Lijepo
danijel123
5
Kingpin
23. Sep. 2012.
Dobar tut, pomocice nekome  🙂
Deleted User
Obrisan korisnik
23. Sep. 2012.
Hvala vam 😄
Marko Koprivanac
5
Underboss
23. Sep. 2012.
Ovo je skroz pogresno uradjeno,strcat se koristi na drugi nacin,primer :
new string;
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 !
Deleted User
Obrisan korisnik
23. Sep. 2012.
Svako ima svoj način rada sa njim, znam i za to, ja radim ovako.
The Woozie
5
Kingpin
23. Sep. 2012.
Super tut, mada sam ovo naucio na samp forums  😄
Deleted User
Obrisan korisnik
23. Sep. 2012.
Hvala, sad ga ima i na balkanu za naučit 😄
Savo
4
Shot Caller
23. Sep. 2012.
Kakav profesionalan tutorijal svaka cast nemam reci jel ti teske pomagao?...
Lemi_Zero
4
Shot Caller
23. Sep. 2012.
Svaka cast brate ja ovo nikada ne bih uradio, ja ne znam ni sta je strcmp,zcmd i ycmd...hvala ti  😄

EDIT: Salim se brate odlicno ! 😛
Deleted User
Obrisan korisnik
23. Sep. 2012.
Lijepo od tebe. 🙂
Deleted User
Obrisan korisnik
25. Sep. 2012.
Hvala 😄

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha