Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: toncikica poslato Mart 16, 2024, 22:49:16 POSLE PODNE

Naslov: /adminlist
Poruka od: toncikica poslato Mart 16, 2024, 22:49:16 POSLE PODNE
Hocu napravit komandu da mi izbaci listu svih admina( imam posebnu cmd za online). Ali ne znam kako bih to uradio, znam da bi trebo preko fread, ali u mene nije da imam kao u drugim modovima 30 kreiranih fajlova pa da su pola prazni i pise niko. Kod mene kad dam admina kreira se novi file sa informacijama. E sad kako da ja to napravim, ako mi moze neko pojasnit, ne trazim citavu cmd
Naslov: Odg: /adminlist
Poruka od: Goku ^ poslato Mart 17, 2024, 00:02:24 PRE PODNE
Citat: toncikica poslato Mart 16, 2024, 22:49:16 POSLE PODNE
Hocu napravit komandu da mi izbaci listu svih admina( imam posebnu cmd za online). Ali ne znam kako bih to uradio, znam da bi trebo preko fread, ali u mene nije da imam kao u drugim modovima 30 kreiranih fajlova pa da su pola prazni i pise niko. Kod mene kad dam admina kreira se novi file sa informacijama. E sad kako da ja to napravim, ako mi moze neko pojasnit, ne trazim citavu cmd
Pusti poruku pm i napravicemo ocas posla.
Naslov: Odg: /adminlist
Poruka od: yeet poslato Mart 17, 2024, 02:30:23 PRE PODNE
[pawn]CMD:admini(playerid, params[])
{
    #pragma unused params
    if(UlogovanProvera[playerid] == 0) return SCM(playerid, -1, ""ORANGE2"#!: Morate se ulogovati !");
   new string[3000];
   format(string, sizeof(string), "");
   foreach(new i : Player)
   {
        if(PlayerInfo[pTestAdmin] >= 1)
        {
            new atext[50];
            format(atext, sizeof(atext), ""BELA"%s", GetName(i));
            strcat(string, atext);
            format(atext, sizeof(atext), ""SRWBOJA" [%d]", i);
            strcat(string, atext);
            strcat(string, ""SRWBOJA" >");
            strcat(string, ""BELA" Test Admin");
         strcat(string, ""SRWBOJA" >");
            if(AdminDuty == 0)
            {
                strcat(string, ""BELA" Duty: "CRVENA"(OFF)");
            }
            if(AdminDuty == 1)
            {
                strcat(string, ""BELA" Duty: "ZELENA"(ON)");
            }
            if(AFKDetekcija == 1)
           {
              strcat(string, ""SRWBOJA" > "BELA"Status: "CRVENA"(AFK)");
            }
            if(AFKDetekcija == 0)
           {
              strcat(string, ""SRWBOJA" > "BELA"Status: "ZELENA"(ONLINE)");
            }
         strcat(string, "\n");
      }
      if(PlayerInfo[pAdmin] >= 1)
        {
            new atext[50];
            format(atext, sizeof(atext), ""BELA"%s", GetName(i));
            strcat(string, atext);
            format(atext, sizeof(atext), ""SRWBOJA" [%d]", i);
            strcat(string, atext);
            strcat(string, ""SRWBOJA" >");
            strcat(string, ""BELA" Admin Level:");
            format(atext, sizeof(atext), ""SRWBOJA" %d", PlayerInfo[pAdmin]);
            strcat(string, atext);
         strcat(string, ""SRWBOJA" >");
            if(AdminDuty == 0)
            {
                strcat(string, ""BELA" Duty: "CRVENA"(OFF)");
            }
            if(AdminDuty == 1)
            {
                strcat(string, ""BELA" Duty: "ZELENA"(ON)");
            }
            if(AFKDetekcija == 1)
           {
              strcat(string, ""SRWBOJA" > "BELA"Status: "CRVENA"(AFK)");
            }
            if(AFKDetekcija == 0)
           {
              strcat(string, ""SRWBOJA" > "BELA"Status: "ZELENA"(ONLINE)");
            }
         strcat(string, "\n");
      }
   }
   if(strlen(string) == 0) return SendClientMessage(playerid, -1, ""CRVENA"[GRESKA]:"BELA" Nema online Admina.");
   SPD(playerid, 336, DIALOG_STYLE_MSGBOX, "ONLINE ADMINI", string, "OK", "");
   return 1;
}[/pawn]

ovo je neki system toga sto trazis pokusaj skontat o cemu se radi pa pokusaj uraditi sam ako zapnes sa problemima javi se ponovo
Naslov: Odg: /adminlist
Poruka od: Goku ^ poslato Mart 17, 2024, 03:27:01 PRE PODNE
Citat: yeet poslato Mart 17, 2024, 02:30:23 PRE PODNE
[pawn]CMD:admini(playerid, params[])
{
    #pragma unused params
    if(UlogovanProvera[playerid] == 0) return SCM(playerid, -1, ""ORANGE2"#!: Morate se ulogovati !");
   new string[3000];
   format(string, sizeof(string), "");
   foreach(new i : Player)
   {
        if(PlayerInfo[pTestAdmin] >= 1)
        {
            new atext[50];
            format(atext, sizeof(atext), ""BELA"%s", GetName(i));
            strcat(string, atext);
            format(atext, sizeof(atext), ""SRWBOJA" [%d]", i);
            strcat(string, atext);
            strcat(string, ""SRWBOJA" >");
            strcat(string, ""BELA" Test Admin");
         strcat(string, ""SRWBOJA" >");
            if(AdminDuty == 0)
            {
                strcat(string, ""BELA" Duty: "CRVENA"(OFF)");
            }
            if(AdminDuty == 1)
            {
                strcat(string, ""BELA" Duty: "ZELENA"(ON)");
            }
            if(AFKDetekcija == 1)
           {
              strcat(string, ""SRWBOJA" > "BELA"Status: "CRVENA"(AFK)");
            }
            if(AFKDetekcija == 0)
           {
              strcat(string, ""SRWBOJA" > "BELA"Status: "ZELENA"(ONLINE)");
            }
         strcat(string, "\n");
      }
      if(PlayerInfo[pAdmin] >= 1)
        {
            new atext[50];
            format(atext, sizeof(atext), ""BELA"%s", GetName(i));
            strcat(string, atext);
            format(atext, sizeof(atext), ""SRWBOJA" [%d]", i);
            strcat(string, atext);
            strcat(string, ""SRWBOJA" >");
            strcat(string, ""BELA" Admin Level:");
            format(atext, sizeof(atext), ""SRWBOJA" %d", PlayerInfo[pAdmin]);
            strcat(string, atext);
         strcat(string, ""SRWBOJA" >");
            if(AdminDuty == 0)
            {
                strcat(string, ""BELA" Duty: "CRVENA"(OFF)");
            }
            if(AdminDuty == 1)
            {
                strcat(string, ""BELA" Duty: "ZELENA"(ON)");
            }
            if(AFKDetekcija == 1)
           {
              strcat(string, ""SRWBOJA" > "BELA"Status: "CRVENA"(AFK)");
            }
            if(AFKDetekcija == 0)
           {
              strcat(string, ""SRWBOJA" > "BELA"Status: "ZELENA"(ONLINE)");
            }
         strcat(string, "\n");
      }
   }
   if(strlen(string) == 0) return SendClientMessage(playerid, -1, ""CRVENA"[GRESKA]:"BELA" Nema online Admina.");
   SPD(playerid, 336, DIALOG_STYLE_MSGBOX, "ONLINE ADMINI", string, "OK", "");
   return 1;
}[/pawn]

ovo je neki system toga sto trazis pokusaj skontat o cemu se radi pa pokusaj uraditi sam ako zapnes sa problemima javi se ponovo
Zar nije ovako lepse i bolje mozda?

Sorira takodje test admin je uvek zadnji pa ide al1 pa al2 itd itd od najveci admin lvl do najnizi.

[pawn]
CMD:admini(const playerid, const params[])
{
    if(UlogovanProvera[playerid] == 0) return SCM(playerid, NS_ORANGE,"* Moras se ulogovati da bi koristio ovu komandu!");
    new tempAdminData[20][2], idx = 0;
   foreach(new i : Player)
   {
      if (PlayerInfo[pAdmin] >= 1 || PlayerInfo[pTA] == 1)
      {
         tempAdminData[idx][0] = i;
         if(PlayerInfo[pTA] == 1) { tempAdminData[idx][1] = 0; }
         else { tempAdminData[idx][1] = PlayerInfo[pAdmin]; }
         idx++;
      }
   }
   if(idx == 0) { return SCM(playerid, NS_ORANGE, "* Trenutno nema ni jedan Admin online."); }
   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[j][0] ^= tempAdminData
    • ;
                  tempAdminData
      • ^= tempAdminData[j][0];
                    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
        • , atext[1024];
                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, 21400, DIALOG_STYLE_TABLIST_HEADERS, "Admini Online", string, "Izlaz", "");
             return 1;
          }
          [/pawn]
Naslov: Odg: /adminlist
Poruka od: yeet poslato Mart 17, 2024, 04:37:15 PRE PODNE
Uzeo sa najblizeg moda nazalost up, samo sam mu dao primjer kako moze da se uradi, naravno da jeste
Naslov: Odg: /adminlist
Poruka od: Bit Frosty poslato Mart 17, 2024, 08:02:28 PRE PODNE
Citat: toncikica poslato Mart 16, 2024, 22:49:16 POSLE PODNE
Hocu napravit komandu da mi izbaci listu svih admina( imam posebnu cmd za online). Ali ne znam kako bih to uradio, znam da bi trebo preko fread, ali u mene nije da imam kao u drugim modovima 30 kreiranih fajlova pa da su pola prazni i pise niko. Kod mene kad dam admina kreira se novi file sa informacijama. E sad kako da ja to napravim, ako mi moze neko pojasnit, ne trazim citavu cmd
Ako ne postoji fajl znaci da ne postoji admin, makar je tako u tvom slucaju (i tako je pravilno a ne ono "niko").
Posto imas fajl sistem, vjerovatno je najpametnije da napravis pomocni ini fajl u kojeg ces cuvati sve admine da ne bi loop kroz 300 fajlova zbog cega bi ti padao server na vise igraca).
Napravi jedan ini fajl i kad god dodas ili skines admina napravi isto i u tom ini fajlu.
Mozes i obican da nije ini, ali tu trebas znati malo vise oko stringova, loopova i imati samu logiku, tako da zaobidji to, koristi ini pametnije ti je i lakse