Jump to content
  • 0

pomoc Dotaz/Odpověď


Stellet

Dotaz

Ahoj udělal jsem si Admin System, je to

AdminLevel[playerid]

Nahoře mám Definici:

#define pAdmin AdminLevel[playerid]

No a Mám 6 Admin Levelů. A potřebuju aby to vypsalo ten dotaz jen adminům:

dcmd_dotaz(playerid,params[])
{
    new text[500];
    if(sscanf(params,"s", text)) return SCM(playerid,-1,"Použití: /dotaz [TEXT]");
    else
    {
        new str[500];
        new Name[64];
        GetPlayerName(playerid,Name,64);
        format(str,500,"Hrac %s (ID: %d ) ma dotaz: %s",Name,playerid,text);
        SendClientMessage(playerid,-1,"!POZOR! Dotaz ve kterém se nachází urážky a tak dále, tak se to přísnš trestá!");
        SendClientMessage(pAdmin <= 1,-1,str);
    }
    return 1;
}

Tak jsem tam dal:

SendClientMessage(pAdmin <= 1,-1,str);

Jenže se to ukáže všem hráčům..

 

A Odpověď:

dcmd_odpoved(playerid,params[])
{
    if(pAdmin < 0) return SCM(playerid,COLOR_ADMINISTRATOR,"Nejsi Administrator!");
    {
        new text[500];
        new str[500];
        new ID;
        new Name[64]; //Admina
        GetPlayerName(playerid, Name, 64);
        new Name1[64]; //ID
        GetPlayerName(ID, Name1, 64);
        if(sscanf(params, "us", ID, text)) return SCM(playerid,-1,"Použití: /odpoved [ID] [ODPOVĚD]");
        else if(!IsPlayerConnected(ID)) return SCM(playerid,-1,"Tento hráč není na serveru !");
        else
        {
            if(pAdmin == 1)
            {
                format(str,500,"Helper %s odpoveděl na váš dotaz: %s",Name,text);
                SCM(ID,-1,str);
            }
            if(pAdmin == 2)
            {
                format(str,500,"Moderátor %s odpověděl na váš dotaz: %s",Name,text);
                SCM(ID,-1,str);
            }
            if(pAdmin <= 3)
            {
                format(str,500,"Administrátor %s odpověděl na váš dotaz: %s",Name,text);
                SCM(ID,-1,str);
            }
        }
     }
     return 1;
}

A tu odpověď to neodešle vůbec.. Jestli je to tím: if(pAdmin <= 3) Fakt nevím. A proto jdu za vámi.

Link to comment
Share on other sites

7 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Administrátor

Z prvné si dej pozor kdo je playerid a kdo je admin... nepoužívej debilní definice... to je nejrychlejší způsob jak dělat chyby....

 

Když opomenu že ten řádek v dotazu je píčovina tak tam kontroluješ jestli je ten kdo odesila dotaz je admin

Edited by Ewwe
Link to comment
Share on other sites

  • 0
  • Administrátor

SendClientMessage(pAdmin 1,-1,str);

 

změn na

 

for(new i = 0;i{if(AdminLevel[i] != 0) return  SendClientMessage(i,-1,str);}

To si mu pomohl ... Tím že mu postneš hotový řešení se nic nevyřeší

Link to comment
Share on other sites

  • 0

Já pokud bych chtěl udělat podobnou věc, který by měla odeslat zprávu pouze administrátorům, tak asi jednoduše si vytvořím stock(vlastní funkci) a použi ju ji při odeslání zprávy..Pokud si nebudeš vědět rady jak na to napiš..ale můžeš to aspon zkusit.

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0
Volfík, to není stock, stock je tag, který dělá kompilátor ignorovat kód, pokud není používán, které lze provést s proměnnými (pouze globální proměnné):

Nový stock My Variable;

A funkce:

stock My Funkce ()

 

Také odebrat "text" pole, a stačí použít "params" místo toho, plýtváte 2kilobajt paměti.

A se svým "řetězec" pole, proč používat až 500 buněk? Že na 2 KB paměti, stejně, což není nutné, protože zprávy mohou být pouze 128 znaků, takže stačí použít 128 místo 500.

Nakonec vaše "Name" pole má 64 buněk, ale maximální délka název může mít, je 24, takže to je jen plýtvání místem také, měli byste jej dát k 24 místo z 64.

 

Tady je funkce poslat zprávu všem adminů:


SendAdminMessage(color, message[])
{
    for(new i = 0; i < MAX_PLAYERS; i ++)
    {
        if(AdminLevel[i] > 0)
        {
            SendClientMessage(i, color, message);
        }
    }
}

Edited by CalvinC
  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

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...