[Include] [INC] Protioso String Funзхes (PSF) 1.2F3 (06~08/12/09)
#1

Dae turtas!

Notando a necessidade, de algumas funзхes no campo de string's (cadeia de caracteres/textos), de minha parte e principalmente de uns amigos, achei interessante criar um include com funзхes essenciais que lidassem com string, para ajudar a todos no geral.
O include й ao todo formado por funзхes simples e muito ъteis, mas tambйm existem funзхes que eu acho abismofodas, como й o caso do meu utilitбrio de codificaзгo, o PCOD. Seu uso й focado para codificaзгo de senhas, podendo codificar string's com tamanho mбximo definнvel no arquivo PSF_USER_DEF.inc (MAX_PCOD_CHAR). Ao codificar uma string ela pode retornar a 4 tamanhos padrхes que vocк informa na funзгo, esses tamanhos se chamam TAXA DE COMPRESSГO:
TAXA_BAIXA - Retorna uma senha codificada com 14 caracteres;
TAXA_MEDIANA - Retorna uma senha codificada com 26 caracteres;
TAXA_ALTA - Retorna uma senha codificada com 38 caracteres;
TAXA_MAXIMA - Retorna uma senha codificada com 50 caracteres.

Funзгo: psf_PCODStr(str[], taxa);

Outras trкs funзхes que acho interessantes sгo:
psf_CopiarStr(str_recebe[], str_origem[])
Copia o conteъdo de uma string para a string recebedora.

psf_CopiarStrL(str_recebe[], str_origem[], pos_inicial_origem, pos_final_origem)
Copia o conteъdo, limitado entre posiзхes (inicial e final), de uma string para uma string recebedora.

psf_FormatarStrTexto(str[])
Padroniza o texto para formato de TextDraw/GameText, ou seja os acentos serгo modificados por caracteres correspondentes para o formato citado anteriormente.


Quote:
Funзхes nativas (natives):

psf_PCODStr(str[], taxa = TAXA_MEDIANA);
psf_PCODNumero(numeral);
psf_CopiarStr(str_recebe[], str_origem[]);
psf_CopiarStrL(str_recebe[], str_origem[], pos_inicial_origem, pos_final_origem);
psf_ParteExiste(str[], parte[]);
psf_CharStr(c );
psf_FloatStr(Float:f);
psf_IntStr(i);
psf_CharFiltrado(c[3]);
psf_Filtrar(str[]);
psf_ReverterFiltro(str[]);
psf_SubstituirChar(str[], cs[], ct[], bool:ler_case_sensitive = true);
psf_ContagemChar(str[], cC[], bool:ler_case_sensitive = true);
psf_PosChar(str[], cC[], quantia_procurada, bool:ler_case_sensitive = true);
psf_FormatarStrTexto(str[]);
psf_LimparStr(str[]);
psf_strtokCI(str[], casa_inicial, charseparador[] = " ");
psf_strtokCL(str[], casa_inicial, casa_final, charseparador[] = " ");
psf_strtok(str[], &casa_inicial, charseparador[] = " ");
psf_PegarValorEntreCharStr(str[], c[MAX_psf_char_separador], vezesbuscarprimeirochar, vezesbuscarsegundochar);
psf_PegarValorEntreCharFloat(str[], c[MAX_psf_char_separador], vezesbuscarprimeirochar, vezesbuscarsegundochar);
psf_PegarValorEntreCharInt(str[], c[MAX_psf_char_separador], vezesbuscarprimeirochar, vezesbuscarsegundochar);
psf_PegarValorEntreCharBool(str[], c[MAX_psf_char_separador], vezesbuscarprimeirochar, vezesbuscarsegundochar);
psf_PegarValorStr(str[], pos_inicial, pos_final);
psf_PegarValorFloat(str[], pos_inicial, pos_final);
psf_PegarValorInt(str[], pos_inicial, pos_final);
psf_PegarValorBool(str[], pos_inicial, pos_final)
psf_StrNumerica(str[]);
psf_InverterStr(str[256]);

Instalaзгo:
1°- Extraia o arquivo compactado na pasta do seu PAWNO;
2°- Se vocк nгo tem o include PGD definido no seu script й necessбrio escrever #include "PSF" no inнcio de seu script para poder usar as funзхes do include.

Configuraзгo:
Vocк pode configurar o arquivo PSF_USER_DEF.inc com valores que vocк preferir.

Informaзгo e ajuda:
Se vocк tem dъvida em alguma funзгo, procure-a no arquivo PSF Manual.txt que fica dentro da pasta include/PSF. Lб todas as funзхes estгo listadas com uma breve explicaзгo.

Download (PSF 1.2F3 - 4* dezembro 2009):



Possнvel falha de seguranзa corrigida.
Atualizaзгo fortemente recomendada.
* Leves modificaзхes nas datas 06/12/09 e 08/12/09


AVISO: nгo me responsabilizo por scripts obtidos por outras referкncias! Os originais e garantidos sгo apenas no link acima!
Reply
#2

Ficou bom, bem diversificado.

Mas eu achei uma coisinha que ta deixando os cуdigos um pouco lento:

pawn Код:
for(new c; c < sizeof(string); c++)
Isso verifica o tamanho mбximo da string a cada execuзгo do loop, chamando uma funзгo todo instante.

Agora, existe uma forma de verificar se й o final de uma string, sem precisar a funзгo strlen/keyword sizeof, basta verificar, se o caractere atual, й EOS (0, NULL, '\0' sгo todos iguais), entгo, faзa assim:

pawn Код:
for(new c; string[c]; c++)
Ou seja: enquanto string[c] nгo retornar 0, o loop continua sendo executado. Sem necessidade de usar funзхes nativas ou constantes.
Reply
#3

Ah certo, um amigo jб tinha me alertado sobre isso mas acabei deixando. Valeu pela dica turta! Atualizei e hospedei o arquivo com as modificaзхes, jб aproveitei e arrumei a checagem de tamanho das matrizes tambйm (em loops).
Reply
#4

Mas enfim, ficou muito massa mesmo, eu realmente gostei do seu estilo "C++ programmer", separando os arquivos, configuraзхes etc.

Muito bem organizado.
Reply
#5

Hehe, obrigado.
Reply
#6

Gostei!

Jб estou a usar
Reply
#7

Quote:
Originally Posted by [VGS
gilomania ]
Gostei!

Jб estou a usar
Jб estamos // a um tempinho ja..
Reply
#8

Quote:
Originally Posted by [VGS
speliarmos_OC ]
Quote:
Originally Posted by [VGS
gilomania ]
Gostei!

Jб estou a usar
Jб estamos // a um tempinho ja..
Acho que todos que programam no clan jб usavam... *:
Reply
#9

muito bom ja deu uma ajuda aki
Reply
#10

Quote:
Originally Posted by .::Gangster::.[PT
]
muito bom ja deu uma ajuda aki
Que bom que ajudou!

---

PSF atualizado! De 1.2 para 1.2F2 (Formulaзгo 2).
O que foi alterado? Uma possнvel falha no PCOD quando usado em loop de codificaзгo com taxas diferentes foi corrigido.
Atualize seu PSF pois se trata de uma atualizaзгo importante!
Bom proveito, abraзo!
Reply
#11

Mtu Bгao \o/ , Woozie Fodastico

hehehe
Reply
#12

Opa! tem como alguйm me dar uma mгo?

Tipo, eu estou querendo saber como usar o "psf_FormatarStrTexto(str[])"?

й desse modo? \/

pawn Код:
new string [128];
format(string, sizeof(string), "~w~Vocк ganharб:~g~$%d ~w~por ler isto.",valor);
psf_FormatarStrTexto(string)
GameTextForPlayer(playerid, string,5000,0);
й desse modo? /\

Nгo funcionou comigo....
Reply
#13

Muito Bom , Testei Aqui ja to usando no meu Game Mode !
Reply
#14

Gostei Manoo-=-

Sou Seu Fг
Reply
#15

Dae pessoal! Agradeзo os elogios!


Quote:
Originally Posted by Knight Rider
Opa! tem como alguйm me dar uma mгo?

Tipo, eu estou querendo saber como usar o "psf_FormatarStrTexto(str[])"?

й desse modo? \/

pawn Код:
new string [128];
format(string, sizeof(string), "~w~Vocк ganharб:~g~$%d ~w~por ler isto.",valor);
psf_FormatarStrTexto(string)
GameTextForPlayer(playerid, string,5000,0);
й desse modo? /\

Nгo funcionou comigo....
Knight Rider boa pergunta, talvez nгo tenha ficado claro no manual isso.
Bem, para esta funзгo funcionar (que por sinal muitos deveriam conhecer, pois facilita muito) vocк teria que ter feito assim:
pawn Код:
new string[256];
format(string, sizeof(string), "~w~Vocк ganharб:~g~$%d ~w~por ler isto.",valor);
string = psf_FormatarStrTexto(string);
GameTextForPlayer(playerid, string,5000,0);
Explicaзгo: primeiramente, esta funзгo retorna um valor de 256 caracteres, portanto teria que aumentar o seu new string[128] para string[256]. A funзгo psf_FormatarStrTexto nгo modifica o texto que vocк envia, e sim retorna um texto convertido. Portanto vocк deveria ter colocado variбvel_de_string = psf_FormatarStrTexto(string);!
Espero que consiga, boa sorte!

Reply
#16

pawn Код:
Compilando KichnerBeta.pwn...
C:\Users\Leonardo\Documents\Server\Server\pawno\include\PSF\1.2F3#PSF_LIB\PSF_DPPFI.inc(21) : error 010: invalid function or declaration

Pawn compiler 3.2.3664             Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
pawn Код:
stock psf_PCODStr(str[MAX_PCOD_CHAR], taxa = TAXA_MEDIANA) _PCOD_COMPACTAR_FINAL;
Reply
#17

Quote:
Originally Posted by Leo Nikov
pawn Код:
Compilando KichnerBeta.pwn...
C:\Users\Leonardo\Documents\Server\Server\pawno\include\PSF\1.2F3#PSF_LIB\PSF_DPPFI.inc(21) : error 010: invalid function or declaration

Pawn compiler 3.2.3664             Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
pawn Код:
stock psf_PCODStr(str[MAX_PCOD_CHAR], taxa = TAXA_MEDIANA) _PCOD_COMPACTAR_FINAL;
Como citei no tуpico do P-Streamer:
Quote:

(...) Pois bem, seu include PSF pode ter sido editado de forma incorreta (para baixar novamente http://forum.sa-mp.com/index.php?topic=132830.0) ou vocк pode estar usando outro compilador diferente do original, recomendo que leia este post do Speliarmos http://forum.sa-mp.com/index.php?top...037#msg1034037 se o seu compilador for o mesmo, se for outro poste o nome que tentarei ajudar. Como citado por ele no post, o PSF foi analogado com base no editor/compilador padrгo/original (pawno).

Creio que possa ser isso.
Boa sorte, flws!
Reply
#18

Por Isso Digo, Protioso й o Cara
Reply
#19

Quote:
Originally Posted by DraKoNeoN
Por Isso Digo, Protioso й o Cara
Agradeзo a descriзгo. mas nгo acho que eu seja tanto assim uhaeuhae

Flws, EH NOEIS NA FITA MALANDRAUM
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)