[Pomoc] Prebacivanje iz strcmp u zcmd

Započeo kristiankico, April 15, 2012, 16:56:07 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Skripta koju koristim: Moja
Detaljan opis problema: Zanima me kako tipa ove komande,prebacit u ZCMD komande,jer mi je ZCMD potpuno nejasan i novi i bas ga ne kuzim pa ako bi mi mogao nekako neko pojasnit kako to prebacivat ili postoji neki program za te stvari.
Dio skripte: NPR komanda
if(strcmp(cmd, "/setjob", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "Koriscenje: /setjob [ID Igraca/Dio Imena] [jobid)]");
				return 1;
			}
			new para1;
			new jobid;
			para1 = ReturnUser(tmp);
			tmp = strtok(cmdtext, idx);
			jobid = strval(tmp);
			if (PlayerInfo[playerid][pAdmin] >= 1337)
			{
			    if(IsPlayerConnected(para1))
			    {
			        if(para1 != INVALID_PLAYER_ID)
			        {
						GetPlayerName(para1, giveplayer, sizeof(giveplayer));
						GetPlayerName(playerid, sendername, sizeof(sendername));
						PlayerInfo[para1][pJob] = jobid;
						format(string, 256, "("COL_RED"-team{FFFFFF}!) "COL_RED"%s {FFFFFF}je dodijelio "COL_RED"%s {FFFFFF}posao sa ID brojem "COL_RED"%d.", sendername,giveplayer,jobid);
						ABroadCast(WHITE,string,1);
						SendClientMessage(playerid, COLOR_GRAD1, "Posao je dodjeljen uspjesno !");
					}
				}
			}
			else
			{
				SendClientMessage(playerid, WHITE, "("COL_RED"team{FFFFFF}!) Niste ovlasteni da koristite tu komandu!");
			}
		}
		return 1;
	}

Neke slike/video za lakse dobivanje pomoci(neobavezno): /

Uz ZCMD trebas koristiti i sscanf za proveru sta ide posle komande, evo ovako .. prvo skini sscanf i ubaci ga:

http://forum.sa-mp.com/showthread.php?t=120356

E sad,

klasicna komanda bez ikakvih podataka iza primer: /healall izgleda ovako:

CMD:healall(playerid,params[])
{
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i))
	    {
	        SetPlayerHealth(i, 100);
	        SendClientMessage(i, 0x0000FFAA, "*Izlecen si!");
		}
	}
	return 1;
}


ako ista razumes u tome odlicno je jer se bar malo razumes u skriptanje...

e sad kako napraviti malo kompleksniju komandu, recimo /sethp [playerid] [hp] [poruka]

playerid = id igraca nad kojim se vrsi komanda
hp = koliki health da mu stavi
poruka = sta da mu ispise

Ovakav tip komande sam uzeo zato sto obuhvata 3 najcesce vrste podataka iza komande (igrac, broj, text)

i komanda bi izgledala ovako:

CMD:heal(playerid,params[])
{
	new id, heal, text[128];
	if(sscanf(params, "uis[128]", id, heal, text)) return SendClientMessage(playerid, 0xFFFFFFFF, " *Koristi: /heal [igrac] [hp] [text]");
	if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xffffffff, " *Igrac nije online!");
	SetPlayerHealth(id, hp);
	SendClientMessage(id, 0xffffffff, text);
	return 1;
}


ova linija ti je najbitnija u sustini...

if(sscanf(params, "uis[128]", id, heal, text)) return SendClientMessage(playerid, 0xFFFFFFFF, " *Koristi: /heal [igrac] [hp] [text]");


e sad ovoako da ti je objasnim malo bolje..

sscanf(params, "uis[128]", id, heal, text) ti je nacin koriscenja sscanfa,

params = sve sto ide posle komande, parametri komande

"uis[128]" = to su specifieri

u = ime igraca/id igraca
i = broj
s[128] = string(text) u velicini 128 karaktera

od specifiera ti je cesto koriscen i "f" koji oznacava float, u temi gore imas sve specifiere pa ako ti treba nesto opsirnije tu potrazi.

e sad ovo:

,id, hp, text) = to su varijable u koje ce se upisivati parametri redom po specifierima, znaci

za upisan id, id ce se zapisati u varijabli 'id', za health koji upises zapisace se u 'hp' za text koji napises zapisace se u 'text'...

ovo

return SendClientMessage(playerid, 0xFFFFFFFF, " *Koristi: /heal [igrac] [hp] [text]");

ti je da ukoliko neko ne napise sve parametre da mu izadje string da objasni kako se koristi komanda.

Ako ti nesto dalje nije jasno sscanf je detaljno opisan u temi na vrhu posta.

nadam se da sam ti bar malo pomogao da skontas :)

hvala na pokusaju,ali neznam,nekuzim jos nikako,probavao sam druge komande prilagodit po tome ali neide..ima li nekakve Å¡anse da STRCMP i ZCMD komande budu u skripti??

Imas tut za ovo prije 2-3 dana lik postavio koristi trazilicu




Balkan Ulice RPG opis servera: Click



-Tutorial za mijesanje ID-ova na vozilima: Click