Pular para o conteúdo principal

Textdraws

O que é um Textdraw?

Como o nome indica, um textdraw é um texto desenhado na tela de um jogador. Ao contrário das mensagens do cliente ou do texto do jogo, no entanto, os textdraws podem ser mostrados na tela do jogador por um período de tempo indefinido. Textdraws podem ser textos simples na tela, como o endereço de um site, ou textdraws dinâmicos com scripts complexos, como barras de progresso.

Esta ferramenta de 'editor de textdraw' pode tornar o design de textdraws muito mais fácil.


Sorteios de texto globais

Textdraws globais podem ser criados e mostrados a todos os jogadores. Porém, existe um limite de quantos podem ser criados. Isso significa que se você tiver um servidor com 500 jogadores, não será possível criar mais de 4 textdraws por jogador. É aí que entra o player-textdraws. Veja mais abaixo. Aqui está uma lista de todas as funções relacionadas ao global textdraws:


Player-textdraws

Player-textdraws são criados apenas para um jogador específico. Até 256 textdraws podem ser criados PER-PLAYER. São 128.000 em um servidor com 500 jogadores. Um pouco mais de 2048. Player-textdraws deve ser usado para coisas que não são 'estáticas'. Não os utilize para exibir o endereço de um site, por exemplo, mas para um indicador de saúde do veículo.


Declaração de Variável

Ao criar um textdraw, você deve sempre decidir se o textdraw que você vai criar deve ser global (por exemplo, o endereço do seu site, anúncio global) ou se será diferente por jogador (por exemplo, mortes, mortes, pontuação).

Textdraw Global

Um textdraw global é o mais fácil de criar e requer apenas uma variável. Esta variável é necessária para modificar o textdraw e mostrá-lo aos jogadores posteriormente. A declaração para tal textdraw precisa ser uma variável global na maioria dos casos. A variável textdraw também precisa ser prefixada com a tag Text: e deve ser inicializada com o valor Text:INVALID_TEXT_DRAW. Se você omitir a inicialização, o textdraw poderá entrar em conflito com outros à medida que você adicionar mais textdraws.

new Text:gMyText = Text:INVALID_TEXT_DRAW;

Textdraw por jogador

Um textdraw por jogador é exatamente igual a um textdraw 'global' normal, mas cria apenas o textdraw para um único jogador.

Isto é útil para textdraws que são únicos para cada jogador, como uma barra de 'estatísticas' mostrando suas mortes ou pontuação.

Isso pode ser usado para evitar ultrapassar o limite global de textdraws, já que você pode criar 256 textdraws por jogador.

Eles também são mais fáceis de gerenciar, pois se destroem automaticamente quando o jogador se desconecta.

new PlayerText:gMyPlayerText = PlayerText:INVALID_TEXT_DRAW;
informação

IMPORTANT NOTE: Ainda é necessário um array para a variável, pois o ID dos textdraws pode diferir de jogador para jogador, pois outros jogadores podem ter mais ou menos textdraws criados que o outro.

Os nomes das funções diferem apenas ligeiramente, com 'TextDraw' tornando-se 'PlayerTextDraw', com uma exceção: CreatePlayerTextDraw ('TextDrawSetString' torna-se 'PlayerTextDrawSetString').


Criando o Textdraw

Imagem:320px-Textdraw_map.png

Depois de declarar uma variável/matriz para armazenar o ID do(s) seu(s) textdraw(s), você pode prosseguir para criar o próprio textdraw. Para textdraws globais que são sempre criados, o código deve ser colocado em OnGameModeInit. Para criar o textdraw deve ser utilizada a função TextDrawCreate.

Note que esta função apenas cria o textdraw, outras funções são usadas para modificá-lo e mostrá-lo ao(s) jogador(es).

Parâmetros:

TextDrawCreate(Float:x, Float:y, texto[])

NomeDescrição
xCoordenada X na qual criar o textdraw
yCoordenada Y na qual criar o textdraw
text[]O texto no textdraw.

Valores de retorno:

O ID do textdraw criado

Vamos prosseguir com a criação do textdraw:

public OnGameModeInit()
{
gMyText = TextDrawCreate(320.0, 240.0, "Hello World!");
return 1;
}

Criamos um textdraw no centro da tela que diz "Hello World!".


Configurando a fonte

Existem 4 fontes disponíveis para texto textdraw:

Imagem:320px-Textdraw_map.png

IDInformaçõesDicas
0A fonte San Andreas.Use para cabeçalho ou títulos, não para uma página inteira.
1Fonte clara que inclui caracteres maiúsculos e minúsculos.Pode ser usado para muito texto.
2Fonte clara, mas inclui apenas letras maiúsculas.Pode ser usado em vários casos.
3Fonte GTAMantém a qualidade quando ampliado. Útil para textos grandes.

A partir de SA-MP 0.3d, uma nova fonte (id 4) pode ser definida. Isso é usado em combinação com as funções TextDrawCreate e TextDrawTextSize para mostrar um 'sprite' de textura na tela do jogador. Abordaremos isso mais tarde.


Mostrando o desenho do texto

Para este exemplo, o textdraw foi criado globalmente em OnGameModeInit e será mostrado ao jogador quando ele entrar no servidor.

Para mostrar um textdraw para um único jogador, a função TextDrawShowForPlayer é usada.

Parâmetros:

TextDrawShowForPlayer(playerid, Texto:texto)

NomeDescrição
playeridO ID do jogador para mostrar o textdraw para
textO ID do textdraw para mostrar

Valores de retorno:

Esta função não retorna nenhum valor específico.

O playerid é passado por OnPlayerConnect e o desenho de texto ID é armazenado na variável 'gMyText'.

public OnGameModeInit()
{
gMyText = TextDrawCreate(320.0, 320.0, "Hello World!");
return 1;
}

public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, gMyText);
return 1;
}

Dicas Diversas

  • Tente usar números inteiros ao especificar posições, isso garante a melhor compatibilidade em diferentes resoluções.
  • As fontes parecem ter melhor aparência com uma proporção de X para Y de 1 para 4 (por exemplo, se x = 0,5, então y deve ser 2).