SA-MP Forums Archive
[Ajuda] Usar chat somente se estiver logado... - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Usar chat somente se estiver logado... (/showthread.php?tid=611946)



Usar chat somente se estiver logado... - viniciussvl - 12.07.2016

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!


Re: Usar chat somente se estiver logado... - F1N4L - 12.07.2016

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;
}



Respuesta: Usar chat somente se estiver logado... - SammyJ - 12.07.2016

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;




Re: Usar chat somente se estiver logado... - viniciussvl - 12.07.2016

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


Re: Usar chat somente se estiver logado... - F1N4L - 12.07.2016

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;
}



Re: Usar chat somente se estiver logado... - viniciussvl - 12.07.2016

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


Respuesta: Usar chat somente se estiver logado... - Kanuy - 12.07.2016

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

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



Re: Usar chat somente se estiver logado... - viniciussvl - 12.07.2016

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


Re: Usar chat somente se estiver logado... - pWesley - 12.07.2016

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


Respuesta: Re: Usar chat somente se estiver logado... - Kanuy - 12.07.2016

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;
}