Portal SAMP
[Pedido] Anti-Caps lock - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Pedido] Anti-Caps lock (/showthread.php?tid=1919)



Anti-Caps lock - Tiago Medeiros - 10/12/2021

bom, estou a procurar de um anti casplock para gamemode MySQL !! Por exemplo, Por exemplo, ele escreve "OLÁ", mas "olá" é enviado para o chat.

por favor, me ajudem.


RE: Anti-Caps lock - SrBlue - 11/12/2021

(10/12/2021 23:57)Tiago Medeiros Escreveu: bom, estou a procurar de um anti casplock para gamemode MySQL !! Por exemplo, Por exemplo, ele escreve "OLÁ", mas "olá" é enviado para o chat.

por favor, me ajudem.


opa utilize a função tolower



exemplo de uso:








Código:
new g[24],b,j;
g = "iSso teste";
while ((j = g[b])){
g[b++] = tolower(j);
}
printf("%s",g); // retorna: isso teste



RE: Anti-Caps lock - xbruno1000x - 11/12/2021

Use a função nativa do Pawn tolower.

Documentação:
https://sampwiki.blast.hk/wiki/Tolower


RE: Anti-Caps lock - Tiago Medeiros - 12/12/2021

mas eu preciso, que todas as letras que o indivíduo digitou em capslock fique minúsculas. Exemplo: se ele digitou "OLÀ" em maiúsculo, no chat, deve sair "olá".


RE: Anti-Caps lock - xbruno1000x - 13/12/2021

(12/12/2021 15:39)Tiago Medeiros Escreveu: mas eu preciso, que todas as letras que o indivíduo digitou em capslock fique minúsculas. Exemplo: se ele digitou "OLÀ" em maiúsculo, no chat, deve sair "olá".

Creio que o código do Sr Blue seja pra isso.

Mas caso não seja, crie um looping para repetir o processo com todas as letras.


RE: Anti-Caps lock - SrBlue - 13/12/2021

se quiseres uma função (stock) aqui possui, no código úteis...

o usuario Dr Editorfez uma postagem de um código que faz essa função que você queres...


Código:
enum
{
    TO_LOWER,
    TO_UPPER,
    INTERCALATE,
    INVERT,
    UPPER_FIRST_CHAR
}

stock ChangeStringCase(input_text[], output_text[], case_type)
{
    new count = 0;
    if(case_type == TO_LOWER)
    {
        while(count < strlen(input_text))
        {
            new _char[2];
            format(_char, 2, "%c", tolower(input_text[count]));
            strcat(output_text, _char, strlen(input_text) + 1);
            count ++;
        }
    }
    else if(case_type == TO_UPPER)
    {
        while(count < strlen(input_text))
        {
            new _char[2];
            format(_char, 2, "%c", toupper(input_text[count]));
            strcat(output_text, _char, strlen(input_text) + 1);
            count ++;
        }
    }
    else if(case_type == INTERCALATE)
    {
        new bool:intercalate = true;
        while(count < strlen(input_text))
        {
            new _char[2];
            format(_char, 2, "%c", intercalate ? toupper(input_text[count]) : tolower(input_text[count]));
            strcat(output_text, _char, strlen(input_text) + 1);
            intercalate = !intercalate;
            count ++;
        }
    }
    else if(case_type == INVERT)
    {
        while(count < strlen(input_text))
        {
            new _char[2];
            switch(input_text[count])
            {
                case 'a'..'z':
                {
                    format(_char, 2, "%c", toupper(input_text[count]));
                    strcat(output_text, _char, strlen(input_text) + 1);
                }
                case 'A'..'Z':
                {
                    format(_char, 2, "%c", tolower(input_text[count]));
                    strcat(output_text, _char, strlen(input_text) + 1);
                }
                default:
                {
                    format(_char, 2, "%c", input_text[count]);
                    strcat(output_text, _char, strlen(input_text) + 1);
                }
            }
            count ++;
        }
    }
    else if(case_type == UPPER_FIRST_CHAR)
    {
        new bool:upper = false;
        while(count < strlen(input_text))
        {
            new _char[2];
            switch(input_text[count])
            {
                case 'a'..'z', 'A'..'Z':
                {
                    if(upper)
                    {
                        format(_char, 2, "%c", toupper(input_text[count]));
                        strcat(output_text, _char, strlen(input_text) + 1);
                        upper = false;
                    }
                    else
                    {
                        format(_char, 2, "%c", input_text[count]);
                        strcat(output_text, _char, strlen(input_text) + 1);
                    }
                }
                default:
                {
                    format(_char, 2, "%c", input_text[count]);
                    strcat(output_text, _char, strlen(input_text) + 1);
                    upper = true;
                }
            }
            count ++;
        }
    }
}


seu uso:
Código:
ChangeStringCase(input_text[], output_text[], case_type)

exemplo:

Código:
new teste0[13] = "PoRtAl SaMp";
new teste1[13];

ChangeStringCase(teste0,teste1,TO_LOWER);

resultando:

printf("%s",teste1);
// "portal samp"