Naslov problema*: Komanda /admini.
Opis problema*: Prvi Admin na listi nikad nije AFK, cak i kada ide ESC ne pokazuje da je AFK. Dok svi ostali Admini koji su ispod prvog su uvijek AFK. Ne znam kako da rijesim to pa ako neko zna bilo bi super.
Pokušaj rešavanja*: ///
Deo programskog koda*: [pawn]YCMD:admini(playerid, params[], help)
{
if(UlogovanProvera[playerid] == 0) return SCM(playerid, -1,"* Moras se ulogovati da bi koristio ovu komandu!");
new tempAdminData[20][2], idx = 0;
foreach(new i : Player)
{
if (PlayerInfo
[pAdmin] >= 1 || PlayerInfo[pTAdmin] == 1)
{
tempAdminData[idx][0] = i;
if(PlayerInfo[pTAdmin] == 1) { tempAdminData[idx][1] = 0; }
else { tempAdminData[idx][1] = PlayerInfo[pAdmin]; }
idx++;
}
}
for (new i = 0; i <= idx; ++i)
{
for (new j = i + 1; j < idx; ++j)
{
if (tempAdminData[1] < tempAdminData[j][1])
{
tempAdminData tempAdminData[j][0] ^= tempAdminData tempAdminData tempAdminData[1] ^= tempAdminData[j][1];
tempAdminData[j][1] ^= tempAdminData[1];
tempAdminData[1] ^= tempAdminData[j][1];
}
}
}
new string[1024];
strcat(string, "Ime\tDuznost\tLevel");
for(new i = 0; i < idx; ++i)
{
new pid = tempAdminData strcat(string, "\n");
strcat(string, "{FFFFFF}");
if(IsPlayerPaused(pid))
{
strcat(string, GetName(pid)); strcat(string, " ");
strcat(string, ""CRVENA"[AFK]");
strcat(string, "\t");
}
else { strcat(string, GetName(pid)); strcat(string, "\t"); }
if(AdminDuty[pid] == 0) { strcat(string, ""CRVENA"Van Duznosti"); }
if(AdminDuty[pid] == 1) { strcat(string, ""ZELENA"Na duznosti"); }
if(tempAdminData[1] == 0) { format(atext, sizeof atext, "\tTest Admin"); }
else { format(atext, sizeof atext, "\t%d", tempAdminData[1]); }
strcat(string, atext);
strcat(string, "\n");
}
ShowPlayerDialog(playerid, 418, DIALOG_STYLE_TABLIST_HEADERS, "Admini Online ()", string, "Izlaz", "");
return 1;
}[/pawn]
Debug informacije: ///
Fotografija problema u igri: https://imgur.com/a/rUZqGGY
Korišćene biblioteke (includes): ///
Dodatne informacije: ///
Postavi kod na pastebin ili preko [pawn ] [/ pawn]
[pawn]Kod[/pawn]
Dodan kod.
Jos uvijek nije fixano, da li ima neko ko zna ?
for (new i = 0; i < idx; ++i)
oh god
Zameni liniju:
for (new i = 0; i <= idx; ++i)
sa:
for (new i = 0; i < idx; ++i)
[pawn]YCMD:admini(playerid, params[], help)
{
if(UlogovanProvera[playerid] == 0) return SCM(playerid, -1,"* Moras se ulogovati da bi koristio ovu komandu!");
new tempAdminData[20][2], idx = 0;
foreach(new i : Player)
{
if (PlayerInfo
[pAdmin] >= 1 || PlayerInfo[pTAdmin] == 1)
{
tempAdminData[idx][0] = i;
if(PlayerInfo[pTAdmin] == 1) { tempAdminData[idx][1] = 0; }
else { tempAdminData[idx][1] = PlayerInfo[pAdmin]; }
idx++;
}
}
for (new i = 0; i < idx; ++i)
{
for (new j = i + 1; j < idx; ++j)
{
if (tempAdminData[1] < tempAdminData[j][1])
{
tempAdminData tempAdminData[j][0] ^= tempAdminData tempAdminData tempAdminData[1] ^= tempAdminData[j][1];
tempAdminData[j][1] ^= tempAdminData[1];
tempAdminData[1] ^= tempAdminData[j][1];
}
}
}
new string[1024];
strcat(string, "Ime\tDuznost\tLevel");
for(new i = 0; i < idx; ++i)
{
new pid = tempAdminData strcat(string, "\n");
strcat(string, "{FFFFFF}");
if(IsPlayerPaused(pid))
{
strcat(string, GetName(pid)); strcat(string, " ");
strcat(string, ""CRVENA"[AFK]");
strcat(string, "\t");
}
else { strcat(string, GetName(pid)); strcat(string, "\t"); }
if(AdminDuty[pid] == 0) { strcat(string, ""CRVENA"Van Duznosti"); }
if(AdminDuty[pid] == 1) { strcat(string, ""ZELENA"Na duznosti"); }
if(tempAdminData[1] == 0) { format(atext, sizeof atext, "\tTest Admin"); }
else { format(atext, sizeof atext, "\t%d", tempAdminData[1]); }
strcat(string, atext);
strcat(string, "\n");
}
ShowPlayerDialog(playerid, 418, DIALOG_STYLE_TABLIST_HEADERS, "Admini Online ()", string, "Izlaz", "");
return 1;
}[/pawn]
Zamjenio sam i jos uvijek mi pokazuje da su svi Admini AFK osim prvog na listi.
[pawn]
YCMD:admini(playerid, params[], help)
{
if(UlogovanProvera[playerid] == 0) return SCM(playerid, -1,"* Moras se ulogovati da bi koristio ovu komandu!");
new string[ 1024 ];
new aLevel;
foreach(new i : Player)
{
if (PlayerInfo[pAdmin] >= 1 || PlayerInfo[pTAdmin] == 1)
{
if( PlayerInfo[ i ][ pAdmin >= 1]) aLevel = PlayerInfo[ i ][pAdmin ];
else aLevel = PlayerInfo[ i ][ pTAdmin ];
if( !IsPlayerPaused( playerid ))
format(string, sizeof string, "%s%s\t%s\t%d\n"\
,string
, GetName( i )
, AdminDuty == 0 ? "Van Duznosti" : "Na Duznosti"
, aLevel);
else
format(string, sizeof string, "%s%s"CRVENA"[ AFK]\t"BELA"%s\t%d\n"\
, string
, GetName( i )
, AdminDuty == 0 ? "Van Duznosti" : "Na Duznosti"
, aLevel);
}
}
new string2[2024];
strcat(string2, "Ime\tDuznost\tLevel\n");
strcat(string2, string );
ShowPlayerDialog(playerid, 418, DIALOG_STYLE_TABLIST_HEADERS, "Admini Online ()", string2, "Izlaz", "");
return 1;
}
[/pawn]
Trebalo bi da radi :)
Nisam testao, jer nemam samp compiler kod sebe, prilagodi kod onome sto zelis i ne komplikuj osnovne komande.