(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 ""...
Super je...taman mi je ovo trebalo...10/10
Lepo Objasnjeno :) Pohvala..
Lijepo objasnjeno 10/10
Lijepo
Dobar tut, pomocice nekome :)
Hvala vam :D
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 !
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
Hvala, sad ga ima i na balkanu za nauÄit :D
Nije los tut,ja ovo koristim odavno ;)
Kakav profesionalan tutorijal svaka cast nemam reci jel ti teske pomagao?...
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
Lijepo od tebe. :)
Hvala :D
Dobar tut ;)
Pohvala :D trebalo mi je :D
Dobar tut
Fenomenalan TuT! 10/10