[Tutorial] Strings: How to...
#1

Strings how to...
Introduзгo

Bem hoje vim fazer um simples tutorial de como usar bem a string, lembrando que й mais a minha maneira, como eu aprendi, estarei ensinando as coisas detalhadamente para que vocкs entendem o que й uma string e como usar, entгo vamos lб.

O que й uma string?

Strings sгo variбveis ​​que podem armazenar palavras e letras em si, como por exemplo, sistema de save de senhas, nomes de jogadores, frases, etc...

Como usar uma string?

Bem primeiro vocк terб que defenir ela, vocк tem 2 Opзхes, 1є Vocк pode defenir a string como uma variavel global, ou seja, ele pode ser usada em varios locais, 2є Vocк pode defenir a string para usar sу naquele local, agora vocк pensa, Como? Simples, para defenir global basta criar uma varriavel (array) no topo do GM.

pawn Код:
new mystring[128];
Para defenir no proprio local basta colocar na public, stock, comando, etc...

pawn Код:
CMD:my_nick(playerid,params[])
{
    new myname[36];
    GetPlayerName(playerid,myname,sizeof(myname);
    format(myname,sizeof(myname),"Seu nome й: %s",myname);
    SendClientMessage(playerid,-1,myname);
    return true;
}
Bem o que eu fiz й, criei a variavel "myname" dentro do comando(ZCMD) "my_nick", ou seja, essa variavel sу pode ser usanda dentro desse comando, se vocк for colocar em outro comando vai dar erro. Agora vamos aos promenores.

Como criar uma string?

Para criar a string vocк deverб comeзar por criar uma variavel normal, com o nome que desejar, de preferivel pequeno, depois vocк terб que adicionar o numero de celulas, ou seja, cada celula corrusponde a um caracter, veja um exemplo.

pawn Код:
new myname[36];
GetPlayerName(playerid,myname,sizeof(myname);
format(myname,sizeof(myname),"Seu nome й: %s",myname);
SendClientMessage(playerid,-1,myname);
A variavel й "myname", eu fiz com que ela passase de variavel a uma string, adicionando um valor para as celulas, agora veja esta parte com muita atenзгo.

A string tem 36 Celulas, vocк pensa, porque nгo usar 256? Porque vocк vai usar sу 36, eu usei a string para fazer duas coisas, pegar o nome, e formatar a mensagem, 1є Coisa, pelo que dizem o "MAX_PLAYER_NAME" й igual a 24 celulas, entгo eu coloquei 24, depois contei quantos caracters tem a mensagem (Contando com os espaзos, pois eles sгo considerados caracteres) e reparei que tem 12 (O %s й a string, e neste caso serб o nome do player que й 24 caracteres no maximo), entгo fiz a soma de 24+12 e deu me 36, entгo ao fazer esta string, sei que irei usar todas as celulas, logo depois adicionei a funзгo para pegar o nome do player, e gastei 24 celulas jб, depois formatei a mensagem e gastei + 12 celulas, por fim, mandei uma mensagem formatada para o player.

Vejamos outros tipos de exemplos

pawn Код:
new my_string[6] = "BlueX"

public OnFilterScriptInit()
{
    printf("%s",my_string);
}
O que temos aqui, bem defenimos a variavel "my_string" com 6 celulas e com o texto de "BlueX" quando o FilterScript inicia ele irб mandar uma printf (Para quem nгo sabe, printf й uma print formatada, dai vem o "f" no fim), com o valor da "my_string".

Agora vamos para algo mais avanзado.

pawn Код:
CMD:aan(playerid,params[])
{
    new my_name[164];
    GetPlayerName(playerid,my_name,24)
    if(params[0] == 1)
            return SendClientMessage(playerid,-1,"USE: /aan [texto]");
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid,-1,"Vocк nгo й admin");
    format(my_name,sizeof(my_name),"<Admin %s>: %s",my_name,params);
    return SendClientMessageToAll(-1,my_name),true;
}
O que eu fiz aqui? Bem, criei uma sу string, chamada "my_name" e coloquei 164 celulas, vocк deve estar pensando, paraque 164 celulas? Simples, veja bem os seguintes dados. 24 celulas do Nome + 12 da mensagem + 128 do texto, que da 164 no total, ou seja, quando este comando for usando nunca serб desperdiзado nenhuma celula.

Conculsгo

Vocк pode criar dois tipos de strings (Global ou "privada") ao criar vocк deve ter em nota o valor para com que nenhuma celula seja desperdiзada, sendo assim vocк deverб contar os caracteres para que tenha um valor exato.
Espero que tenha gostado deste tutorial.
Reply
#2

...
Reply
#3

Paga pau dos meus titulos foda. D:
Dahora.
Reply
#4

Quote:
Originally Posted by Stewie`
Посмотреть сообщение
Paga pau dos meus titulos foda. D:
Dahora.
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK, eu ri, Mas na moral gosto mais do ingles, fica mais legal kk'
Reply
#5

No cmd do aan nгo gostei da parte de 128 para texto, ninguem usa 128 caracters :O
E muda:
pawn Код:
if(params[0] == 1)
            return SendClientMessage(playerid,-1,"USE: /aan [texto]");
Para:
pawn Код:
if(params[0] == 0)
            return SendClientMessage(playerid,-1,"USE: /aan [texto]");
De resto gostei, parabens!
Reply
#6

Quote:
Originally Posted by FireCat
Посмотреть сообщение
No cmd do aan nгo gostei da parte de 128 para texto, ninguem usa 128 caracters :O
E muda:
pawn Код:
if(params[0] == 1)
            return SendClientMessage(playerid,-1,"USE: /aan [texto]");
Para:
pawn Код:
if(params[0] == 0)
            return SendClientMessage(playerid,-1,"USE: /aan [texto]");
De resto gostei, parabens!
Nгo й a questгo de ninguem usar, mas nunca se sabe, por isso mais vale prevenir do que remediar...
Sobre a questгo do params, esta certo, pois eu testei antes de fazer o post, e se usar "if(params[0] == 0)" ele nгo vai mandar a mensagem. Podem testar.
Reply
#7

http://www.asciitable.com/
Reply
#8

pawn Код:
#define isnull(%1) \
        ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))

if(isnull(params))
n й mais facil?
Reply
#9

Quote:
Originally Posted by Pharrel
Посмотреть сообщение
pawn Код:
#define isnull(%1) \
        ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))

if(isnull(params))
n й mais facil?
Desculpe, mas eu fiz o topico com intenзгo de ensinar String nгo params.
Reply
#10

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Nгo й a questгo de ninguem usar, mas nunca se sabe, por isso mais vale prevenir do que remediar...
Sobre a questгo do params, esta certo, pois eu testei antes de fazer o post, e se usar "if(params[0] == 0)" ele nгo vai mandar a mensagem. Podem testar.
Fgo 128 й muito so para esse cmd.
Usa static entao <.<
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)