Jump to content

Search the Community

Showing results for tags 'admins'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Obecné
    • Všeobecné
    • Všechno možné
  • Programování
    • Poradna
    • Návody
    • Tvorba
    • Hledám programátora
  • Herní oblast
    • Poradna
    • Jak na to?
    • Herní kontext
    • Herní zážitky
    • Komunita
  • Grafika
    • Poradna
    • Návody
    • Tvorba
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Archiv
    • 3D Tisk

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

Found 2 results

  1. Zdravím, Mám problém s príkazom /admins dcmd_admins(playerid, params[]) { #pragma unused params if(info[playerid][ALevel] == 0) return ShowPlayerDialog(playerid,d_admins1,DIALOG_STYLE_MSGBOX,"Online A-Team","Momentálne nie je prítomný žiaden člen A-Teamu","Potvrdiť",""); new string[255]; for(new i=0;i<=MAX_PLAYERS_EX;i++) { if(IsPlayerConnected(i)) { if(info[playerid][ALevel] == 1) { format(string, 60, "%s | Organizátor Akcii",meno(i)); ShowPlayerDialog(playerid,d_admins,DIALOG_STYLE_MSGBOX,"Online A-Team",string,"Potvrdiť",""); } else if(info[playerid][ALevel] == 2) { format(string, 60, "%s | Moderátor", meno(i)); ShowPlayerDialog(playerid,d_admins,DIALOG_STYLE_MSGBOX,"Online A-Team",string,"Potvrdiť",""); } else if(info[playerid][ALevel] == 3) { format(string, 60, "%s | Administrátor",meno(i)); ShowPlayerDialog(playerid,d_admins,DIALOG_STYLE_MSGBOX,"Online A-Team",string,"Potvrdiť",""); } } } return true; } Ked sa pripojím na server a dám si ALevel 3, a pripojí sa na server dalsí hráč s alevel 0, v /admins ukazuje jeho s "levelom 2" ako moderátor a mňa vôbec ... Za každú radu budem rád.
  2. YSI4 ADMINS #3 ***** Zdravím vás u dalšího návodu práce s YSI. Dnešní díl se bude týkat velice známého příkazu /admins. Nevyužijeme bohužel knihovnu na plno, ale hledal jsem způsob, jak vám ukázat využití iterate(foreach). Hledal jsem nějakou zajímavou ukázku. Jenže, takových scriptů je skutečně mnoho, od návodů, po helpy, kde někteří autoři mají dokonce svojí vlastní. Tak jsem vybral asi ten nejpříhodnější: Kód, celkem už slušnější, nám zaslal autor do helpu (pawno.cz/topic/41048), s tím, že prý s tím má problém, ale i tak ho můžeme využít jako ukázku. Nebudeme pracovat s jmény místo levelů. To si tam můžete již každý přidat individuálně. No, pustíme se do toho, nejdříve si jako vždy nahrajeme includy z knihovny, které budeme potřebovat pro práci: YSI_Visual\y_commands - pro lepší, efektivnější práci s příkazy, včetně parametrů. YSI_Data\y_iterate - Dříve známo jako foreach. Zjednodušený, rychlejší a efektivnější cyklus, se kterým se lépe pracuje. YSI_Visual\y_dialog - Include je propracovaný tak, aby se dialogID, se kterým bude s tímto includem pracovat, aby se nekřížil s nějakým jiným. YSI_Server\y_colours - Obsahuje propracované preprocesory s barvami, které pak může uživatel jednoduše využít prakticky kdekoliv. Potřebné includy z knihovny máme nahrané a tak můžeme pokračovat. Začneme tím, že si deklarujeme jednu integer proměnnou, která nám bude sloužit jako AdminLevel našich hráčů: new iAdmin[MAX_PLAYERS char]; Všimněte si slovíčka char. Co je to? Zkráceně a zjednodušeně, nám to vrátí číslo po dělení pole číslem 4(například [200] / 4 = [50]). Dále si přidáme samozřejmě příkaz, který nám bude zobrazovat naše administrátory: YCMD:admins(playerid, params[], help) { Tak, a ťed budeme potřebovat deklarovat lokálně tři proměnné. Dvě budou string, přesněji první proměnná string bude pro text v dialogu a druhý pro nick, a třetí proměnná bude integer, který nám bude udávat počet přitomných administrátorů na serveru: new sString[800 + 1], sNick[MAX_PLAYER_NAME + 1], iPocet; Když to máme za sebou, tak za další budeme přidat samotný cyklus, kterým nám projete všechny hráče na serveru. Princip foreach je prakticky stejný jako cyklus se GetPlayerPoolSize, ale samozřejmě lepší: foreach(new i: Player) { Slovíčko Player nám říká, že cyklus má project pouze přítomné hráče na serveru. Je samozřejmě více možností pro cyklus(Bot, Character, Actor, Vehicle). Po cyklusu následuje funkce, která nám všech hráčů zjistí jméno. Můžeme jí samozřejmě přidat, že je bude zjišťovat, až najde ty naše administrátory, ale zas taková hrůzná to nebude, když to necháme takhle mimo: GetPlayerName(i, sNick, sizeof(sNick)); Konečně můžeme hledat naše administrátory. Postačí nám 2 úplně základní a typické podmínky, a to sice, jestliže má nějaký AdminLevel a pokud je přihlášen na rcon. Začneme podmínkou v případě, že je přihlášen na RCON ale nemá AdminLevel, včetně formatování samozřejmě, a nesmíme zapomenou zvyšovat naší proměnnou iPocet: if(IsPlayerAdmin(i) && !iAdmin{i}) format(sString, sizeof(sString), "{%06x}%s\t{FFFFFF}\t+RCON", GetPlayerColor(i) >>> 8, sNick, iPocet++; Další podmínkou v případě, že není přihlášen na RCON ale má nějaký AdminLevel: if(!IsPlayerAdmin(i) && iAdmin{i}) format(sString, sizeof(sString), "{%06x}%s\t{FFFFFF}LEVEL %i\t", GetPlayerColor(i) >>> 8, sNick, iAdmin{i}), iPocet++; A třetí podmínkou v případě, že je přihlášen na RCON a zároveň má nějaký AdminLevel: if(IsPlayerAdmin(i) && iAdmin{i}) format(sString, sizeof(sString), "{%06x}%s\t{FFFFFF}LEVEL %i\t+RCON", GetPlayerColor(i) >>> 8, sNick, iAdmin{i}), iPocet++; Všimněte si, jak pracujeme s tou proměnnou. Jako s boolen. Tudíž, v případě, jestli vrací true/false, nikoliv číslo... k čemu? Jelikož, nepotřebujeme vědět jaký má přesně adminlevel (1, 2, 3...), nám stačí, pokud nějaký má(1) a pokud má žádný(0). A ano přesně tak. To jsou stejné hodnoty jako u boolenu: true(1) a false(0). Když máme tyhle podmínky za sebou, tak za další budeme potřebovat podmínku, jestliže je vůbec nějaký přítomný administrátor. Na to nám poslouží naše lokální proměnná. Začneme v případě, že nejsou, tak nám pomocí návratové hodnoty zobrazí zprávu: if (!iPocet) return (SendClientMessage(playerid, X11_RED, "[ ! ] Nikdo z přítomných hráčů není administrátor !")); V případě, že je nějaký přítomný, tak budeme potřebovat už blok, jelikož se stane více věci. Začneme tím, že si formátujeme string s našimi administrátory: format(sString, sizeof(sString), "%s\n\n{A9C4E4}Počet online administrátorů: {FFFFFF}%i", sString, iPocet); A nakonec zobrazíme samotný dialog. Díky y_dialog nemusíme vepisovat dialogID, najde nám samo, které nejnižší dialogID je volné: Dialog_Show(playerid, DIALOG_STYLE_TABLIST, "Administrátoři Online", sString, "Zavrit", ""); Pak už jen ukončíme blok a ukončíme i příkaz návratovou hodnotou a máme hotovo: } return (true); } Celý kód pro shlédnutí zde: Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
×
×
  • Create New...