Jump to content

Admin list přes dialog


Roox

Recommended Posts

Čau, přináším vám tutoriál na seznam adminů v dialogu. Před chvílí jsem tu na to viděl HELP, tak jsem se dal do práce a tady to je :)

 


Moje práce - 100 %

Doba programování - 15 minut

Doba testování - 1 minuta

 

Všechno je bez bugů a udělal jsem to maximálně pro 40 adminů.. Pochybuji, že někde bude víc :d

 


Upozorňuji, že já jsem používal proměnu Informace[playerid][AdminLevel]. Místo této proměny si dejte vlastní.

 


Mezi forwardy

forward ShowPlayerAdminList(playerid);


Někam do Módu/FS

- Max 40 adminů

public ShowPlayerAdminList(playerid)
{
    new string[40][64], Adminu, HLstring[1024]; // Nadefinujeme string na každýho admina, počet adminů a HL string, do kterého potom sloučíme stringy

    for(new i=0;i     {
         if(IsPlayerConnected(i)) // Je-li hráč na server
         {
              if(Informace[i][AdminLevel] != 0) // Jestli je hráč admin
              {
                   format(string[Adminu], 64, "%s   |  Level: %d", Jmeno(i), Informace[i][AdminLevel]); // Naformátuje string s adminem
                   Adminu++; // O admina více
              }
         }
    }

    if(Adminu < 40) // Když je adminů méně než 40
    {
         format(HLstring, sizeof(HLstring),
         "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
         string[0], string[1], string[2], string[3], string[4], string[5], string[6], string[7],
         string[8], string[9], string[10], string[11], string[12], string[13], string[14], string[15],
         string[16], string[17], string[18], string[19], string[20], string[21], string[22], string[23],
         string[24], string[25], string[26], string[27],string[28], string[29], string[30], string[31],
         string[32], string[33], string[34], string[35],string[36], string[37], string[38], string[39] );
         // Sloučí stringy do jednoho HLstringu
    }
    ShowPlayerDialog(playerid, 999999999999999, DIALOG_STYLE_LIST, "Administrátoři:", HLstring, "OK", "Konec"); // Zobrazí dialog s adminama
}

 

- Max 10 adminů

public ShowPlayerAdminList(playerid)
{
    new string[10][64], Adminu, HLstring[512]; // Nadefinujeme string na každýho admina, počet adminů a HL string, do kterého potom sloučíme stringy

    for(new i=0;i     {
         if(IsPlayerConnected(i)) // Je-li hráč na server
         {
              if(Informace[i][AdminLevel] != 0) // Jestli je hráč admin
              {
                   format(string[Adminu], 64, "%s   |  Level: %d", Jmeno(i), Informace[i][AdminLevel]); // Naformátuje string s adminem
                   Adminu++; // O admina více
              }
         }
    }

    if(Adminu < 10) // Když je adminů méně než 10
    {
         format(HLstring, sizeof(HLstring),
         "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s",
         string[0], string[1], string[2], string[3], string[4], string[5], string[6], string[7],
         string[8], string[9] );
         // Sloučí stringy do jednoho HLstringu
    }
    ShowPlayerDialog(playerid, 999999999999999, DIALOG_STYLE_LIST, "Administrátoři:", HLstring, "OK", "Konec"); // Zobrazí dialog s adminama
}

 


Erory :

Undefield symbol "Jmeno"

stock Jmeno(playerid)
{
    new j[64];
    GetPlayerName(playerid,j,64);
    return j;
}

 


Použití : ShowPlayerAdminList(playerid);

Link to comment
Share on other sites

Informace[playerid][AdminLevel] - zaujímavé... :d nepoužíva také Maverick ? hmm... a máš tam hore chybu

new string[40][64];
new HLstring[256];

Ja by som to urobil takto ---->>>

 

new string[64],HLstring[256];

Nemyslíš ? :d A ešte tu definaciu s levelom máš zle ;)... Inak celkom dobrý nápad ale s tímy dialogmi to už trocha preháňate a je to nepraktické... :)

Link to comment
Share on other sites

Nešlo by jak má:

format(HLstring, sizeof(HLstring),
         "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
         string[0], string[1], string[2], string[3], string[4], string[5], string[6], string[7],
         string[8], string[9], string[10], string[11], string[12], string[13], string[14], string[15],
         string[16], string[17], string[18], string[19], string[20], string[21], string[22], string[23],
         string[24], string[25], string[26], string[27],string[28], string[29], string[30], string[31],
         string[32], string[33], string[34], string[35],string[36], string[37], string[38], string[39] );

Dát:

for(new i=0;i<40;i++){
format(HLstring, sizeof(HLstring),"%s\n",string[i]);
}

Link to comment
Share on other sites

a jeden radek tam ma moc dlouhej...takze mu to pawno neveme....

Proto jsem tam udělal Mezery ;) A ikdyž sem to roztáh, pawno mě to pořád bralo.

 


Nešlo by jak má:

format(HLstring, sizeof(HLstring),
         "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
         string[0], string[1], string[2], string[3], string[4], string[5], string[6], string[7],
         string[8], string[9], string[10], string[11], string[12], string[13], string[14], string[15],
         string[16], string[17], string[18], string[19], string[20], string[21], string[22], string[23],
         string[24], string[25], string[26], string[27],string[28], string[29], string[30], string[31],
         string[32], string[33], string[34], string[35],string[36], string[37], string[38], string[39] );

Dát:

for(new i=0;i<40;i++){
format(HLstring, sizeof(HLstring),"%s\n",string[i]);
}

Ne, protože by pak ten HLstring obsahoval jakoby jenom

format(HLstring, sizeof(HLstring), "%s\n", string[39]);

Protože se ty první začnou přemazávat těma druhýma.

Link to comment
Share on other sites

  • Globální moderátor

výborný script :v::clap:

¨

johnysek co třeba napsat v čem ti to dělá errory?...

A jinak opravdu nevěřím tomu, že na serveru budou hned online 40 :-D Když už tak dej 10

Link to comment
Share on other sites

a jeden radek tam ma moc dlouhej...takze mu to pawno neveme....

Proto jsem tam udělal Mezery ;) A ikdyž sem to roztáh, pawno mě to pořád bralo.

 


Nešlo by jak má:

format(HLstring, sizeof(HLstring),
         "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
         string[0], string[1], string[2], string[3], string[4], string[5], string[6], string[7],
         string[8], string[9], string[10], string[11], string[12], string[13], string[14], string[15],
         string[16], string[17], string[18], string[19], string[20], string[21], string[22], string[23],
         string[24], string[25], string[26], string[27],string[28], string[29], string[30], string[31],
         string[32], string[33], string[34], string[35],string[36], string[37], string[38], string[39] );

Dát:

for(new i=0;i<40;i++){
format(HLstring, sizeof(HLstring),"%s\n",string[i]);
}

Ne, protože by pak ten HLstring obsahoval jakoby jenom

format(HLstring, sizeof(HLstring), "%s\n", string[39]);

Protože se ty první začnou přemazávat těma druhýma.

 

 

Větší blbost sem dneska ještě nečetl(dnešek je teprv 22 minut).

Když máš prázdný string a zapíšeš do něj ABC, tak se prázdné místo přepisuje na ABC. Pak dáš další příkaz k zápisu a to je 123, který se připíše do stringu. Přdstav si, že máš ABC a 123 v proměnné s dvojrozměrným polem: pole[2][3] - pole[0][] = "ABC"; pole[1][] = "123"; (u 123 jsou uvozovky volitelné, pak se ale ve formatu musí zvolit správný datový typ pro zápis).

No to sem rozkecal: nejdříve zapíšeš do string ABC z pole[0][] a pak stringu dopíšeš 123 z pole[1][]. Takto upravuješ string, ale ne pole[][]. Takže to co napsal on je dobře, když máš více %s, nebo jiných datových typů za sebou, tak se zapisují taky jednotlivě, jak jsem vysvětlil a dosazované stringy se tudíš nemění. Je to sloh, ale myslím že jsem ještě nevyšel ze cviku(dlóóóóuho sem nebyl v pwn, ani c++) "lol" :v::boss:

Link to comment
Share on other sites

  • 1 month later...
  • 4 months later...

new adminu=0;

for(new a=0;a 0) adminu++;

return adminu;

 

 

pouzij to treba ve stocku a stock nasledne porovnej s poctem a vrat hodnotu zpravy ze nikdo neni na serveru admin

Link to comment
Share on other sites

  • 9 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...