Problem(error/warning): Imam problem sa offmultiacc cmd izbacuje mi ovu gresku
Deo skripte: [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[debug] Stack pointer (STK) is 0x7EB6BC4, heap pointer (HEA) is 0x7EB71A4
[debug] AMX backtrace:
[debug] #0 00000000 in public ucitajAliasForPlayerOff ()
Kod:
private ucitajAliasForPlayerOff(playerid, name[]) {
new rows;
cache_get_row_count(rows);
if(!rows) return SendErrorMessage(playerid, "Trenutno nema Multiacc od ovog igraca!");
else
{
if(rows > 50) return SendErrorMessage(playerid, "Odabrani igrac ima vise nego 50 ip adresa.");
new str_ime[1050];
new imena[50][MAX_PLAYER_NAME];
for(new i = 0; i < rows; i++) {
cache_get_value_name( i, "ip", imena[i], MAX_PLAYER_NAME );
format(str_ime, sizeof(str_ime), "%s OR `ip` = '%s'", str_ime, imena[i]);
}
new query[1050],rowss;
mysql_format( dbSQL, query, sizeof(query), "SELECT * FROM `"TABLE_ALIAS"` WHERE `ime_igraca` = '%e'%s", name, str_ime );
new Cache:cache_alias = mysql_query( dbSQL, query );
cache_get_row_count(rowss);
if(rowss)
{
if(rowss > 35) return SendErrorMessage(playerid, "Odabrani igrac ima vise nego 35 acc-a.");
new str[1000], str_konacno[750];
new imenaa[35][MAX_PLAYER_NAME];
for(new i = 0; i < rowss; i++)
{
cache_get_value_name( i, "ime_igraca", imenaa[i], MAX_PLAYER_NAME );
}
new count_name[35], id_name[35];
for(new i = 0; i < rowss; i++) {
id_name[i] = 0;
for(new j = 0; j < rowss; j++) {
if(!strcmp(imenaa[i],imenaa[j],true)) {
count_name[i]++;
}
}
if(count_name[i] == 1) {
format(str_konacno, sizeof(str_konacno), "%s%s\n", str_konacno, imenaa[i]);
}
}
for(new i = 0; i < rowss; i++) {
if(count_name[i] >= 2) {
for(new j = 0; j < rowss; j++) {
if(!strcmp(imenaa[i],imenaa[j],true)) {
if(id_name[i] == 0) format(str_konacno, sizeof(str_konacno), "%s%s\n", str_konacno, imenaa[i]);
id_name[i] = 1; id_name[j] = 1;
}
}
}
}
format(str, sizeof(str), ""col_white"Drugi korisnicki racuni za ime {FFA200}%s "col_white"su:\n%s", name, str_konacno );
SPD(playerid, DIALOG_OSTALO, DIALOG_STYLE_MSGBOX, ""col_white"PROVERA {FFA200}MULTI RACUNA", str, "Zatvori", "");
}
cache_delete(cache_alias);
}
return true;
}
Prevelike stringove koristiš, smanji ih.
Smanji broj redova u petljama..
Zaustavi petlju kada pronadje razultat.
To bi trebalo riješiti tvoj problem
Citat: K ROSE poslato Septembar 17, 2024, 01:42:57 PRE PODNEPrevelike stringove koristiš, smanji ih.
Smanji broj redova u petljama..
Zaustavi petlju kada pronadje razultat.
To bi trebalo riješiti tvoj problem
Problem mi pravi ovaj string
new imena[50][MAX_PLAYER_NAME];
prvo je array drugo je duzina
Glupo je ovo napravljeno..
Nema logike da ide kroz loop od rows-a, šta ako u bazi ima 1000 redova a ti si stavio velicinu stringa na 50 redova...
Ne može ovo ovako, ponovo sve pravi