Započeo .Drakula.
•9. Avg. 2018.Problem sa sscanf
1,655
pregleda
17
postova
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
172
Postovi:
23
Teme:
Pridružio se:Feb. 2017
9. Avg. 2018.
Problem(error/warning): Imam problem sa ssanf. Nisam bas nesto naucio oko njega, jos uvek ucim. Izbauje mi Debug, kod je dole.
Problem je u liniji: if(sscanf(params, "si", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)"); .Moze li mi neko pokazati kako i sta da uradim jer imam na nekoliko mesta u skripti slicnu stvar.
Dio skripte:
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
Slika/video ingame problema(obavezno ako je ingame problem): //
Problem je u liniji: if(sscanf(params, "si", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)"); .Moze li mi neko pokazati kako i sta da uradim jer imam na nekoliko mesta u skripti slicnu stvar.
Dio skripte:
new akcija;
if(sscanf(params, "s", akcija)) return Cmd(playerid, "/agiveall (xp/level/money/gold)");
if(strfind(akcija, "money", true) != -1)
{
new kolicina, nacin, str;
if(sscanf(params, "si", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
if(kolicina < 1) return Error(playerid, "Ne moze manje od 1.");
if(!strcmp(nacin, "usd", true))
{
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 == 1) m_GivePlayerMoney(i, kolicina);
}
}
else if(!strcmp(nacin, "eur", true))
{
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 == 1) m_GivePlayerEuro(i, kolicina);
}
}
}
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
sscanf warning: String buffer overflow.Slika/video ingame problema(obavezno ako je ingame problem): //
Underboss
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
705
Postovi:
25
Teme:
Pridružio se:Jan. 2015
OG Legend
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
249 / 250 XP
Početnik(0)
2,525
Postovi:
119
Teme:
Pridružio se:Sep. 2016
10. Avg. 2018.
buLLeT_ wrote on August 10, 2018, 8:31 am:
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");Cemu ovo? Bukvalno si iskopirao kod koji je Dragan_Milosavljevic poslao.
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
172
Postovi:
23
Teme:
Pridružio se:Feb. 2017
10. Avg. 2018.
Nije isto kod.
Moj:
if(sscanf(params, "si", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
buLLeT_:
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
Komanda radi, daje usd normalno i daje eur normalno ali mi baca
sscanf warning: String buffer overflow.
Moj:
if(sscanf(params, "si", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
buLLeT_:
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
Komanda radi, daje usd normalno i daje eur normalno ali mi baca
sscanf warning: String buffer overflow.
Underboss
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
705
Postovi:
25
Teme:
Pridružio se:Jan. 2015
10. Avg. 2018.
Dragan_Milosavljevic wrote on August 10, 2018, 12:17 pm:
Nije isto kod.
Moj:
if(sscanf(params, "si", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
buLLeT_:
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
Komanda radi, daje usd normalno i daje eur normalno ali mi baca
sscanf warning: String buffer overflow.
Moj:
if(sscanf(params, "si", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
buLLeT_:
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
Komanda radi, daje usd normalno i daje eur normalno ali mi baca
sscanf warning: String buffer overflow.
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
172
Postovi:
23
Teme:
Pridružio se:Feb. 2017
10. Avg. 2018.
ᴢɪᴠᴋá´á´ ɪᴄ wrote on August 10, 2018, 1:56 pm:
Je si li uradio ovo sto ti rekoh? Probaj staviti vrednost akcije vece od same nje
Uradio sam ovako:
new akcija;
if(sscanf(params, "s", akcija)) return Cmd(playerid, "/agiveall (xp/level/money/gold)");
if(strfind(akcija, "money", true) != -1)
{
new kolicina, nacin, str;
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
if(kolicina < 1) return Error(playerid, "Ne moze manje od 1.");
if(kolicina > 999999) return Error(playerid, "Ne moze vise od 999.999.");
if(!strcmp(nacin, "usd", true))
{
format(str, sizeof(str), ""zuta"(info) "bela"Administrator %s je dao svim igracima po %d dolar/a.", GetNameEx(playerid), kolicina);
SCMTA(-1, str);
for(new i = 0; i <= GetPlayerPoolSize(); i++)
{
if(UlogovanIgrac == 1) m_GivePlayerMoney(i, kolicina);
}
}
else if(!strcmp(nacin, "eur", true))
{
format(str, sizeof(str), ""zuta"(info) "bela"Administrator %s je dao svim igracima po %d euro/a.", GetNameEx(playerid), kolicina);
SCMTA(-1, str);
for(new i = 0; i <= GetPlayerPoolSize(); i++)
{
if(UlogovanIgrac == 1) m_GivePlayerEuro(i, kolicina);
}
}
}Sada komanda radi sasvin normalno i ne baca nikakav error ili warning.
Ali kao sto gore vidis napravio sam limit
if(kolicina < 1) return Error(playerid, "Ne moze manje od 1.");
if(kolicina > 999999) return Error(playerid, "Ne moze vise od 999.999.");To mi nedozvoljava da dam igracima manje od 1 i vise od 999.999 dolara ili evra.
Ali iznad limita je
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");Pa ako ja ukucam /agiveall monej usd 9999999999
meni izbaci error da ne mogu dati vise od 999.999 ali mi baci warning
sscanf warning: String buffer overflow.Underboss
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
705
Postovi:
25
Teme:
Pridružio se:Jan. 2015
10. Avg. 2018.
Dragan_Milosavljevic wrote on August 10, 2018, 2:20 pm:
Uradio sam ovako:
Sada komanda radi sasvin normalno i ne baca nikakav error ili warning.
Ali kao sto gore vidis napravio sam limit
To mi nedozvoljava da dam igracima manje od 1 i vise od 999.999 dolara ili evra.
Ali iznad limita je
Pa ako ja ukucam /agiveall monej usd 9999999999
meni izbaci error da ne mogu dati vise od 999.999 ali mi baci warning
new akcija;
if(sscanf(params, "s", akcija)) return Cmd(playerid, "/agiveall (xp/level/money/gold)");
if(strfind(akcija, "money", true) != -1)
{
new kolicina, nacin, str;
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");
if(kolicina < 1) return Error(playerid, "Ne moze manje od 1.");
if(kolicina > 999999) return Error(playerid, "Ne moze vise od 999.999.");
if(!strcmp(nacin, "usd", true))
{
format(str, sizeof(str), ""zuta"(info) "bela"Administrator %s je dao svim igracima po %d dolar/a.", GetNameEx(playerid), kolicina);
SCMTA(-1, str);
for(new i = 0; i <= GetPlayerPoolSize(); i++)
{
if(UlogovanIgrac == 1) m_GivePlayerMoney(i, kolicina);
}
}
else if(!strcmp(nacin, "eur", true))
{
format(str, sizeof(str), ""zuta"(info) "bela"Administrator %s je dao svim igracima po %d euro/a.", GetNameEx(playerid), kolicina);
SCMTA(-1, str);
for(new i = 0; i <= GetPlayerPoolSize(); i++)
{
if(UlogovanIgrac == 1) m_GivePlayerEuro(i, kolicina);
}
}
}Sada komanda radi sasvin normalno i ne baca nikakav error ili warning.
Ali kao sto gore vidis napravio sam limit
if(kolicina < 1) return Error(playerid, "Ne moze manje od 1.");
if(kolicina > 999999) return Error(playerid, "Ne moze vise od 999.999.");To mi nedozvoljava da dam igracima manje od 1 i vise od 999.999 dolara ili evra.
Ali iznad limita je
if(sscanf(params, "ssi", akcija, nacin, kolicina)) return Cmd(playerid, "/agiveall money (usd/eur) (kolicina)");Pa ako ja ukucam /agiveall monej usd 9999999999
meni izbaci error da ne mogu dati vise od 999.999 ali mi baci warning
sscanf warning: String buffer overflow.lool zasto u parametru %i a ne %d? stavi %d pa mi reci sta kaze
Underboss
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
705
Postovi:
25
Teme:
Pridružio se:Jan. 2015
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
172
Postovi:
23
Teme:
Pridružio se:Feb. 2017
10. Avg. 2018.
ᴢɪᴠᴋá´á´ ɪᴄ wrote on August 10, 2018, 2:28 pm:
PS: moja greska
mislio sam na ' "ssi" ' da stavis ovako ' "ssd" '
mislio sam na ' "ssi" ' da stavis ovako ' "ssd" '
Razumeo sam sta si hteo da kazes, stavio sam ali se isto ponavlja
Ako ja ukucam /agiveall money usd 9999999999
Izbaci mi
sscanf warning: String buffer overflow.
verovatno cim prekoracim ovo: akcija
Desi se isto kao gore sto sam ti obijasnio.
Underboss
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
705
Postovi:
25
Teme:
Pridružio se:Jan. 2015
10. Avg. 2018.
Citiracu Alexa(yless-a): "Actually it means that the string you tried to store in the buffer is longer than the specified string." probaj ga povecati pa vidi debugaj probaj pa javi sta kaze
Underboss
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
705
Postovi:
25
Teme:
Pridružio se:Jan. 2015
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
172
Postovi:
23
Teme:
Pridružio se:Feb. 2017
10. Avg. 2018.
Ako mozes da mi pomognes bio bi ti zahvalan.
Meni se desava ovako nesto:
http://forum.sa-mp.com/showthread.php?t=304609
Ako moze neko od iskusnijih da pogleda, ako ne postoji resenje za ovaj problem kako bi mogao da preradim komandu.?
Meni se desava ovako nesto:
http://forum.sa-mp.com/showthread.php?t=304609
Ako moze neko od iskusnijih da pogleda, ako ne postoji resenje za ovaj problem kako bi mogao da preradim komandu.?
OG Legend
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosAktivan Član
23 / 250 XP
Početnik(2)
3,748
Postovi:
73
Teme:
Pridružio se:Jan. 2012
10. Avg. 2018.
evo ti nesto lakse na moj nacin / preradjena komanda,nemam vremena da ti ispravljam tvoju trenutno zurim idem negdje pa sam ti zacas ispisao na moj nacin / preradio komandu, uglavnom stavio sam velicinu sta 15 da mozes stavit moneyusd ili moneyeuro ili money-usd ili money-euro,ja sam stavio monusd i moneuro, mozes izmijenit kako zelis
EDIT - obojao za sta & velicinu sta - da skontas bolje / da razumijes bolje
CMD:agiveall(playerid, params[]) {
new sta,kolicina,str;
if(sscanf(params, "si",sta,kolicina)) return Cmd(playerid, "/agiveall [monusd/moneuro] ");
if(strcmp(sta, "monusd", true) == 0)
{
if(sscanf(params, "si", sta, kolicina)) return Cmd(playerid, "/agiveall ");
if(kolicina < 1) return Error(playerid, "Kolicina mora biti veca od 1.");
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 == 1) m_GivePlayerMoney(i, kolicina);
}
}
if(strcmp(sta, "moneuro", true) == 0)
{
if(sscanf(params, "si", sta, kolicina)) return Cmd(playerid, "/agiveall ");
if(kolicina < 1) return Error(playerid, "Kolicina mora biti veca od 1.");
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 == 1) m_GivePlayerEuro(i, kolicina);
}
}
return 1;
}EDIT - obojao za sta & velicinu sta - da skontas bolje / da razumijes bolje
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
172
Postovi:
23
Teme:
Pridružio se:Feb. 2017
11. Avg. 2018.
youngdeal wrote on August 10, 2018, 11:20 pm:
evo ti nesto lakse na moj nacin / preradjena komanda,nemam vremena da ti ispravljam tvoju trenutno zurim idem negdje pa sam ti zacas ispisao na moj nacin / preradio komandu, uglavnom stavio sam velicinu sta 15 da mozes stavit moneyusd ili moneyeuro ili money-usd ili money-euro,ja sam stavio monusd i moneuro, mozes izmijenit kako zelis
EDIT - obojao za sta & velicinu sta - da skontas bolje / da razumijes bolje
CMD:agiveall(playerid, params[]) {
new sta,kolicina,str;
if(sscanf(params, "si",sta,kolicina)) return Cmd(playerid, "/agiveall [monusd/moneuro] ");
if(strcmp(sta, "monusd", true) == 0)
{
if(sscanf(params, "si", sta, kolicina)) return Cmd(playerid, "/agiveall ");
if(kolicina < 1) return Error(playerid, "Kolicina mora biti veca od 1.");
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 == 1) m_GivePlayerMoney(i, kolicina);
}
}
if(strcmp(sta, "moneuro", true) == 0)
{
if(sscanf(params, "si", sta, kolicina)) return Cmd(playerid, "/agiveall ");
if(kolicina < 1) return Error(playerid, "Kolicina mora biti veca od 1.");
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 == 1) m_GivePlayerEuro(i, kolicina);
}
}
return 1;
}EDIT - obojao za sta & velicinu sta - da skontas bolje / da razumijes bolje
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
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava