Problem sa sscanf


Započeo .Drakula., Avgust 10, 2018, 00:31:33 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Citat: Dragan_Milosavljevic poslato Avgust 11, 2018, 21:59:22 POSLE PODNE
Komanda je ok ali testiraj je i probaj da ukucas /agiveall monusd 99999999 ili /agiveall monusd 999999999
Tada nastaje problem.
Zanima me da li to mooze nekako da se resi, niko nece davati tolike pare ali ako se nadje neka budala da proba, server krene da bode i baca errore i warninge
testirao je i radi i na /agiveall monusd 99999999 i /agiveall monusd 999999999 i /agiveall monusd 999999999 /agiveall monusd 999999999999 - samo sa ovoliko ne msm radi ne izbacuje warning nikakav nit error samo izbaci kolicina mora biti veca od 1. jer kad ukucas 999999999999 kolicinu ta kolicina ide u minus jer je previse nije normalna kolicina.
  azuriraj sscanf na najnoviju verziju,vidi da nema errora/warninga niti server krene da bode

a to ako zelis postaviti max odredjenu kolicinu novca koja se moze dati trebao si reci tako ja sam ti samo rijesio komandu da radi (na moj nacin),evo ovako onda nek ti ide komanda
CMD:agiveall(playerid, params[]) {
	new sta[15],kolicina,str[90];
 	if(sscanf(params, "s[15]i",sta,kolicina)) return Cmd(playerid, "/agiveall [monusd/moneuro] [kolicina]");
 	if(strcmp(sta, "monusd", true) == 0)
 	{
 		if(sscanf(params, "s[15]i", sta, kolicina)) return Cmd(playerid, "/agiveall [monusd] [kolicina]");
 		if(kolicina < 1 || kolicina > 100000) return Error(playerid, "Kolicina mora biti veca od 1 i manja od 100 000.");
    	format(str, sizeof(str), ""zuta"(info) "bela"Administrator %s je dao svim igracima po %d dolara.", GetNameEx(playerid), kolicina);
    	SCMTA(-1, str);
 		for(new i = 0; i <= GetPlayerPoolSize(); i++)
		{
			if(UlogovanIgrac[i] == 1) m_GivePlayerMoney(i, kolicina);
		}
  	}
  	if(strcmp(sta, "moneuro", true) == 0)
    {
		if(sscanf(params, "s[15]i", sta, kolicina)) return Cmd(playerid, "/agiveall [moneuro] [kolicina]");
 		if(kolicina < 1 || kolicina > 100000) return Error(playerid, "Kolicina mora biti veca od 1 i manja od 100 000.");
   	 	format(str, sizeof(str), ""zuta"(info) "bela"Administrator %s je dao svim igracima po %d eura.", GetNameEx(playerid), kolicina);
    	SCMTA(-1, str);
 		for(new i = 0; i <= GetPlayerPoolSize(); i++)
		{
			if(UlogovanIgrac[i] == 1) m_GivePlayerEuro(i, kolicina);
		}
	}
  	return 1;
}
stavio sam da moze /agiveall monusd od 1 kolicine do 100 000  i /agiveall moneuro od 1 kolicine do 100 000, ti mozes zamijenit stavit umjesto 100000 stavit 99999999 (jer je max 8 devetki u moneybaru (kod huda), znaci if(kolicina < 1) sam zamijenio sa if(kolicina < 1 || kolicina > 100000)
69

Hvala.
Sredio sam svoju komandu.
Azurirao sam sscanf i streamer na najnoviju verziju.
Sada je sve ok, sve radi kako treba.
Hvala svima na pomoci.