SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 09/05/2019, 02:13 AM   #1
NWDMadara
Gangsta
 
NWDMadara's Avatar
 
Join Date: Mar 2018
Posts: 511
Reputation: 16
Default SetPVarString e GetPVarString

Estou utilizando SetPVarString e GetPVarString para armazenar uma string que contém acentos, e percebi, que na hora de comparar essa string com outra, o acento não é "contado".

Exemplo:

PHP Code:
CMD:pvar1(playerid)
{
    
SetPVarString(playerid"Teste""pé");
    return 
1;
}

CMD:pvar2(playerid)
{
    new 
sPVar[20];
    
GetPVarString(playerid"Teste"sPVarsizeof(sPVar));

    
SendClientMessage(playerid, -1sPVar);

    if(!
strcmp(sPVar"pé"true)) SendClientMessage(playerid, -1"Sim");
    else if(!
strcmp(sPVar"pé"false)) SendClientMessage(playerid, -1"Não");
    return 
1;

Ele envia a mensagem normalmente, mas na hora de compará-la o acento não é "contado" (o sPVar passa a ser somente "p")

Mesmo que eu tente usar printf, o acento sai normalmente. Percebi que o acento não é contado após utilizar crashdetect, pois isso estava crashando o servidor.

OBS.: Eu já utilizei isso antes para comparar strings com acentos e estava dando certo. Está como o código acima, não mudei nada em relação ao modo de fazê-lo.
NWDMadara is offline   Reply With Quote
Old 09/05/2019, 02:37 AM   #2
MultiKill
High-roller
 
Join Date: Apr 2014
Posts: 1,687
Reputation: 111
Default Re: SetPVarString e GetPVarString

Pelo que eu vi a função GetPVarString passa alguns caracteres com outros valores, como o 'é' é retornado como -23 em vez de 233 que é o normal. Pelo que parece é uma incompatibilidade e acaba crashando na função strcmp.

http://prntscr.com/nm994l

Esse caractere seria a mesma coisa que 256 - 23 = 233.

A solução é bem simples, você vai rodar um loop pela string e verificar se cada índice é menor que 0, caso for some com 256:

PHP Code:
if(string[0] < 0){
    
string[0] += 256;

@Edit
Pelo que eu testei se não fizer esse pequeno tratamento na string, pode bugar os caracteres da função SendClientMessage (mostrando outros aleatórios).

Você pode usar a include fixes para arrumar isso:
https://github.com/Open-GTO/sa-mp-fi...ster/fixes.inc

Last edited by MultiKill; 09/05/2019 at 03:39 AM.
MultiKill is offline   Reply With Quote
Old 09/05/2019, 12:53 PM   #3
NWDMadara
Gangsta
 
NWDMadara's Avatar
 
Join Date: Mar 2018
Posts: 511
Reputation: 16
Default Re: SetPVarString e GetPVarString

muito obrigado

+rep
NWDMadara is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[duvida] tira minha duvida aqui felipe_mr Português/Portuguese 1 07/01/2012 04:02 PM
[Dúvida/Ajuda] Dúvida besta e significativa para mim :) Kuddy Português/Portuguese 21 25/08/2011 08:37 PM
[DUVIDA]Qual a diferença ZCMD, DCMD, e cmd Normal[DUVIDA] Dj_Paradox Português/Portuguese 3 21/02/2011 10:05 PM
[DUVIDA] Contas Resetam se... [DUVIDA] Diogo_braz Português/Portuguese 11 25/11/2010 09:00 PM
[Dúvida] Dúvida sobre objetos. renanzin Português/Portuguese 8 07/09/2010 08:46 PM


All times are GMT. The time now is 02:30 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.