[Ajuda] Usar chat somente se estiver logado...
#1

Boa tarde galera, tem algumas crianзas entrando em meu servidor e usando a porra do chat do clг sem estar conectado, tentei usar uma condiзгo com o IsPlayerConnect porйm nгo obtive resultado, se eu coloco ela no inнcio do cуdigo o chat do clг para de funcionar, a pessoa envia o texto no global, pois para usar o chat tem que digitar . [texto]...

Ou seja, gostaria de saber como faзo pra deixar apenas players conectados usarem esse chat do clг?

Код:
public OnPlayerText(playerid, text[])
{
    if(text[0] == '.')
    {
        	if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "[x] Vocк tem que estar logado para usar o chat do clг!");
         	format(pFile, sizeof(pFile), "clas/%s.ini", PlayerName(playerid));
         	if(dini_Exists(pFile))
         	{
             if(strcmp(dini_Get(pFile, "cla"), "Nenhum", false))
            {
                new
                    tmp[128]
                ;
                strmid(tmp, text, 1, strlen(text));
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COR_BRANCO, "[ > ] Uso correto: . [texto]");
                    return 0;
                }
                else
                {
                    for(new c = 0; c < MAX_PLAYERS; c++)
                    {
                        if(IsPlayerConnected©)
                        {
                            format(gFile, sizeof(gFile), "clas/%s.ini", PlayerName©);
                            if(strcmp(dini_Get(gFile, "cla"), "Nenhum", false))
                            {
                                if(strcmp(dini_Get(gFile, "cla"), dini_Get(pFile, "cla"), true) == 0)
                                {
                                    format(gstring, sizeof(gstring), "( C/C ) %s: %s", PlayerName(playerid), tmp);
                                    SendClientMessage(c, 0x00FF00AA, gstring);
                                }
                              }
                        }
                    }
                    return 0;
                }
               }
        }
    }

    return 1;
}
Obrigado!
Reply
#2

Crie uma variбvel booleana e defina-a toda vez que o player logar, quando logar altere seu valor para TRUE.
Coloque como primeira condicional na callback OnPlayerText:

Код:
new bool: pLogged[MAX_PLAYERS]; // global
public OnPlayerText(playerid, text[])
{
    if(!pLogged[playerid]) return 0;

    return 1;
}
Reply
#3

Vocк tem que cria uma variavel.
Exp Bбsico:

PHP код:
new bool:Logado[MAX_PLAYERS] = false;


public 
onPlayerSpawn(playerid)
{
    if(
Logado[playerid] == false)
    {
        
Logado[playerid] = true;
    }
}


public 
OnPlayerText(playeridtext[])
{
    if(
text[0] == '.')
    {
            if(
Logado[playerid] == false) return SendClientMessage(playerid, -1"[x] Vocк tem que estar logado para usar o chat do clг!");
             
format(pFilesizeof(pFile), "clas/%s.ini"PlayerName(playerid));
             if(
dini_Exists(pFile))
             {
             if(
strcmp(dini_Get(pFile"cla"), "Nenhum"false))
            {
                new
                    
tmp[128]
                ;
                
strmid(tmptext1strlen(text));
                if(!
strlen(tmp))
                {
                    
SendClientMessage(playeridCOR_BRANCO"[ > ] Uso correto: . [texto]");
                    return 
0;
                }
                else
                {
                    for(new 
0MAX_PLAYERSc++)
                    {
                        if(
IsPlayerConnected(c))
                        {
                            
format(gFilesizeof(gFile), "clas/%s.ini"PlayerName(c));
                            if(
strcmp(dini_Get(gFile"cla"), "Nenhum"false))
                            {
                                if(
strcmp(dini_Get(gFile"cla"), dini_Get(pFile"cla"), true) == 0)
                                {
                                    
format(gstringsizeof(gstring), "( C/C ) %s: %s"PlayerName(playerid), tmp);
                                    
SendClientMessage(c0x00FF00AAgstring);
                                }
                              }
                        }
                    }
                    return 
0;
                }
               }
        }
    }
    return 
1;

Reply
#4

Entгo nгo funcionou F1NAL e Glederson, eu consigo falar no chat do clг mesmo sem estar logado...
Reply
#5

Funciona perfeitamente, apenas coloque no lugar certo.

Vou demonstrar:

--Supondo que o jogador logue ao dar spawn, como o colega acima fez:
Код:
new bool:Logado[MAX_PLAYERS];

public OnPlayerSpawn(playerid)
{
    if(Logado[playerid] == false) Logado[playerid] = true;

    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    if(Logado[playerid] == true) Logado[playerid] = false;
    
    return 1;
}

public OnPlayerText(playerid, text[])
{
    if(Logado[playerid] == false) 
    {
        SendClientMessage(playerid, -1, "[x] Vocк tem que estar logado para usar o chat!");
        return 0;
    }

    if(text[0] == '.')
    {
             format(pFile, sizeof(pFile), "clas/%s.ini", PlayerName(playerid));
             if(dini_Exists(pFile))
             {
             if(strcmp(dini_Get(pFile, "cla"), "Nenhum", false))
            {
                new
                    tmp[128]
                ;
                strmid(tmp, text, 1, strlen(text));
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COR_BRANCO, "[ > ] Uso correto: . [texto]");
                    return 0;
                }
                else
                {
                    for(new c = 0; c < MAX_PLAYERS; c++)
                    {
                        if(IsPlayerConnected©)
                        {
                            format(gFile, sizeof(gFile), "clas/%s.ini", PlayerName©);
                            if(strcmp(dini_Get(gFile, "cla"), "Nenhum", false))
                            {
                                if(strcmp(dini_Get(gFile, "cla"), dini_Get(pFile, "cla"), true) == 0)
                                {
                                    format(gstring, sizeof(gstring), "( C/C ) %s: %s", PlayerName(playerid), tmp);
                                    SendClientMessage(c, 0x00FF00AA, gstring);
                                }
                              }
                        }
                    }
                    return 0;
                }
               }
        }
    }
    return 1;
}
Reply
#6

Nгo estб funcionando aqui, no dialog do login consigo usar o chat do clг normalmente
Reply
#7

Код:
new bool:Logado[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
     Logado[playerid] = false;
     return 1;
}
public OnPlayerSpawn(playerid)
{
     Logado[playerid] = true;
     return 1;
}
Reply
#8

Olб Kanuy, infelizmente tambйm nгo funcionou, era pra ser uma coisa tгo simples mas nгo funciona kk
Reply
#9

Como exatamente vocк usa o chat para falar? Precisamos saber. Vocк disse que й em dialog?
Reply
#10

Quote:
Originally Posted by viniciussvl
Посмотреть сообщение
Olб Kanuy, infelizmente tambйm nгo funcionou, era pra ser uma coisa tгo simples mas nгo funciona kk
Provavelmente hб algum conflito, este cуdigo deve ser de um filterscript, altere o nome do bool para algum outro, ex: pUSARCHATCLAN ao invйs de Logado

Quote:
Originally Posted by pWesley
Посмотреть сообщение
Como exatamente vocк usa o chat para falar? Precisamos saber. Vocк disse que й em dialog?
Ao que entendi й que da maneira que estб o usuбrio pode falar no chat do clan antes de efetuar login..

@edit
Код:
new bool:pUSARCHATCLAN[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
     pUSARCHATCLAN[playerid] = false;
     return 1;
}
public OnPlayerSpawn(playerid)
{
     pUSARCHATCLAN[playerid] = true;
     return 1;
}

public OnPlayerText(playerid, text[])
{
     if(pUSARCHATCLAN[playerid] == false) return SendClientMessage(playerid, -1, "Nгo й possivel usar o chat");
     return 0;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)