Portal SAMP
[Ajuda] Random sprite TextDraw - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Random sprite TextDraw (/showthread.php?tid=3314)



Random sprite TextDraw - KruCz - 10/02/2023

Oi gente, boa tarde! Tudo bem?
Tenho tentado fazer uma seleção de forma randômica de sprite (Textdraw), porém, o valor que me retorna é somente o nome desta sprite, sem ação gráfica.

Código PHP:
enum DadoSpriteNum
{
    ID,
    SpriteName[32]
}

#define MAX_SPRITE 4
new DadosSprite[][DadosSpriteEnum] =
{
    {
0"LD_TATT:9rasta"},
    {
1"LD_TATT:9homby"},
    {
2"LD_TATT:9gun"}
};

  format(formatosizeof(formato), "%s"formato);
  TextDrawSprite1[i] = TextDrawCreate(300.000000185.000000formato);
  TextDrawFont(TextDrawSprite1[i], 4);
  TextDrawBackgroundColor(TextDrawSprite1[i], 255);
  TextDrawFont(TextDrawSprite1[i], 1);
  TextDrawAlignment(TextDrawSprite1[i], 1);
  TextDrawLetterSize(TextDrawSprite1[i], 0.6000002.000000);
  TextDrawTextSize(TextDrawSprite1[i], 78.00000099.000000);
  TextDrawColor(TextDrawSprite1[i], 0xFFFF00FF);
  TextDrawSetOutline(TextDrawSprite1[i], 1);
  TextDrawSetProportional(TextDrawSprite1[i], 1);


CMD:testar(playerid)
{
    new 
randomSprite random(MAX_SPRITE);
    TextDrawShowForPlayer(playeridText:TextDrawSprite1[playerid]);
    
format(formatosizeof(formato), "%s"DadosSprite[randomSprite][SpriteName]);
    
TextDrawSetString(Text:TextDrawSprite1[playerid], formato);
    return 1;



Ao digitar o comando, em minha tela ao invés de aparecer o sprite, aparecem os textos definidos na enum DadoSpriteNum.
Alguém poderia me ajudar? Agradeço desde já.


RE: Random sprite TextDraw - Dr Editor - 10/02/2023

Primeiramente o valor de MAX_SPRITE deve ser 3 e não 4. Isso porque o tamanho do enumerador é 3 (0-2).
Após fazer qualquer alteração na textdraw é necessário atualizá-la para refletir essa atualização usando TextDrawShowForPlayer APÓS as respectivas alterações.
Um último detalhe é esse valor númerico adicionado ao enumerador para, provavelmente, endereçar os sprites. Se for isso então é algo totalmente desnecessário, visto que a ordem da matriz é justamente essa. Agora se for usar valores fora de ordem aí sim seria válido.


RE: Random sprite TextDraw - KruCz - 10/02/2023

(10/02/2023 14:13)Dr Editor Escreveu: Primeiramente o valor de MAX_SPRITE deve ser 3 e não 4. Isso porque o tamanho do enumerador é 3 (0-2).
Após fazer qualquer alteração na textdraw é necessário atualizá-la para refletir essa atualização usando TextDrawShowForPlayer APÓS as respectivas alterações.
Um último detalhe é esse valor númerico adicionado ao enumerador para, provavelmente, endereçar os sprites. Se for isso então é algo totalmente desnecessário, visto que a ordem da matriz é justamente essa. Agora se for usar valores fora de ordem aí sim seria válido.

Oi, tudo bem?
Então, o problema maior é que a TextDraw ela não é exibida da maneira correta. Esta só está sendo chamada a partir de um comando "/teste", e ela está vindo de maneira incorreta.
Ao invés de vir uma imagem na qual eu adicionei (sprite), ela está digitando na tela o nome da TXD desta sprite.
Obrigado pela resposta.


RE: Random sprite TextDraw - MarcosBrazz - 10/02/2023

Voce está definindo a fonte da textdraw 2 vezes:
Código:
TextDrawFont(TextDrawSprite1[i], 4);
  TextDrawBackgroundColor(TextDrawSprite1[i], 255);
  TextDrawFont(TextDrawSprite1[i], 1);
Seguindo o codigo, a fonte da textdraw vira 4 e depois vira 1, para sprite, a fonte tem que ser 4.