SA-MP Forums Archive
[Ajuda] Limite de Caracteres - 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] Limite de Caracteres (/showthread.php?tid=597948)



Limite de Caracteres - JPedro - 06.01.2016

Fiz um comando e nele eu queria colocar um limite de caracteres a ser inserido no motivo em qual o ADM deu o /slap(/tapa), se o motivo passar de 24 caracteres retornar a mensagem dizendo que ultrapassou o limite, tentei usar o strlen sу que consigo passar o limite =/, fiz alguma coisa errada?, alguem ajuda?

if(strlen(reason) > 24) return SendClientMessage(playerid, -1, "[SERVER]: Reason limit is 24 characters!");

PHP код:
CMD:slap(playeridparams[])
{
    new 
reason[24], str[140], Float:XFloat:YFloat:Z;
    if(
pInfo[playerid][pConectado] == false) return SendClientMessage(playerid, -1"[SERVER]: You are not logged in!");
    if(
pInfo[playerid][pAdmin] < 2) return SendClientMessage(playerid, -1"[SERVER]: You are not allowed to use this command!");
    if(
sscanf(params,"us[24]"params[0], reason)) return SendClientMessage(playerid, -1"[SYNTAX]: /slap [Player ID] [Reason]");
    if(
strlen(reason) > 24) return SendClientMessage(playerid, -1"[SERVER]: Reason limit is 24 characters!"); 
    if(!
IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1"[SERVER]: Player not connected!");
    
GetPlayerPos(params[0], XYZ), SetPlayerPos(params[0], XYZ+10);
    
format(strsizeof(str), "[SERVER]: {8CACDE}%s {628DD1}has been slapped, Reason: {8CACDE}%s."PegarNome(params[0]), reason);
    
SendClientMessage(playeridCOLOR_ADMINstr);
    
format(strsizeof(str), "[SERVER]: Admin {8CACDE}%s {628DD1}has slapped you, Reason: {8CACDE}%s."PegarNome(playerid), reason);
    
SendClientMessage(params[0], COLOR_ADMINstr);
    return 
1;




Re: Limite de Caracteres - arakuta - 06.01.2016

Essa mensagem nunca serб superior a 24 caracteres, por que o vetor sу possui 24 colunas.

23 caracteres + EOS.

O motivo serб cortado automaticamente para ter 23 caracteres, nunca satisfazendo a condiзгo de 25 caracteres ou mais.

@edit

Vocк pode rodar este bloco de cуdigos para entender melhor:

PHP код:
new params[53] = "666 Meu motivo й este e й superior a 24 caracteres";
new 
reason[24];
    
if(
sscanf(params,"us[24]"params[0], reason))
    return;
        
printf("Comprimento: %d caracteres.",strlen(reason)); 
Код:
Comprimento: 23 caracteres.
Nunca tenho medo de "brincar" com as funзхes, a melhor maneira de programar й saber 100% sobre o que estб fazendo


Re: Limite de Caracteres - JPedro - 06.01.2016

Sim, no chat ele й cortado, mas no console ele da um warning do sscanf e por isso que eu queria colocar um limite quando o admin for colocar o motivo pra ele nгo fazer isso /slap ID motivooooooooooooooooooooooooooooooooooooooooooooo ooooooooo


Re: Limite de Caracteres - arakuta - 07.01.2016

Como dito neste post й apenas um aviso para indicar que a string й maior do que o destino. Nгo vejo necessidade de se preocupar com isto, mas se realmente fazes questгo, podes fazer isto:

PHP код:
new temp[10];
format(temp,10,"us[%d]",strlen(params));
if(
sscanf(params,tempparams[0], reason))
        return 
SendClientMessage(playerid,-1,"Uso: /blabla ID Reason"); 



Re: Limite de Caracteres - JPedro - 07.01.2016

Obrigado novamente pela Ajuda


Re: Limite de Caracteres - [BOPE]Seu._.Madruga - 07.01.2016

PHP код:
CMD:slap(playeridparams[])
{
    new 
reason[24], idplayerstr[140], Float:XFloat:YFloat:Z;
    if(
pInfo[playerid][pConectado] == false) return SendClientMessage(playerid, -1"[SERVER]: You are not logged in!");
    if(
pInfo[playerid][pAdmin] < 2) return SendClientMessage(playerid, -1"[SERVER]: You are not allowed to use this command!");
    if(
sscanf(params,"ds[24]"idplayerreason)) return SendClientMessage(playerid, -1"[SYNTAX]: /slap [Player ID] [Reason]");
    if(
strlen(reason) > 24) return SendClientMessage(playerid, -1"[SERVER]: Reason limit is 24 characters!");
    if(!
IsPlayerConnected(idplayer)) return SendClientMessage(playerid, -1"[SERVER]: Player not connected!");

    
GetPlayerPos(idplayerXYZ), SetPlayerPos(idplayerXYZ+10);

    
format(strsizeof(str), "[SERVER]: {8CACDE}%s {628DD1}has been slapped, Reason: {8CACDE}%s."PegarNome(idplayer), reason);
    
SendClientMessage(playeridCOLOR_ADMINstr);

    
format(strsizeof(str), "[SERVER]: Admin {8CACDE}%s {628DD1}has slapped you, Reason: {8CACDE}%s."PegarNome(playerid), reason);
    
SendClientMessage(idplayerCOLOR_ADMINstr);
    return 
1;




Re: Limite de Caracteres - Dayvison_ - 07.01.2016

Sу aumentar o tamanho da matriz em + 2 e depois verificar se passou do tamanho.

PHP код:
CMD:slap(playeridparams[]) 

    new 
reason[27], str[140], Float:XFloat:YFloat:Z
    if(
pInfo[playerid][pConectado] == false) return SendClientMessage(playerid, -1"[SERVER]: You are not logged in!"); 
    if(
pInfo[playerid][pAdmin] < 2) return SendClientMessage(playerid, -1"[SERVER]: You are not allowed to use this command!"); 
    if(
sscanf(params,"us[27]"params[0], reason)) return SendClientMessage(playerid, -1"[SYNTAX]: /slap [Player ID] [Reason]"); 
    if(
strlen(reason) > 24) return SendClientMessage(playerid, -1"[SERVER]: Reason limit is 24 characters!");  
    if(!
IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1"[SERVER]: Player not connected!"); 

    
GetPlayerPos(params[0], XYZ), SetPlayerPos(params[0], XYZ+10); 

    
format(strsizeof(str), "[SERVER]: {8CACDE}%s {628DD1}has been slapped, Reason: {8CACDE}%s."PegarNome(params[0]), reason); 
    
SendClientMessage(playeridCOLOR_ADMINstr); 

    
format(strsizeof(str), "[SERVER]: Admin {8CACDE}%s {628DD1}has slapped you, Reason: {8CACDE}%s."PegarNome(playerid), reason); 
    
SendClientMessage(params[0], COLOR_ADMINstr); 
    return 
1