[Resolvido]---Renderizar na tela ao lado do nome[dx7] Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Resolvido]---Renderizar na tela ao lado do nome[dx7]

2 participantes

Ir para baixo

[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty [Resolvido]---Renderizar na tela ao lado do nome[dx7]

Mensagem por Akio Sáb Set 29, 2018 12:41 pm

Eae galera, seguinte to estudando a parada de renderizar coisas na tela e etc, essa parte ja deu bom, ja to conseguindo manipular isso, agora to com uma duvida, tentei ontem algumas vezes e não deu, mas o que eu quero fazer é basicamente isso>

renderizar um icone ou algo, ao lado do nome de um npc especifico ou player,
por exemplo se o player for admin ficar um icone em cima dele, deu pra entender, então é isso me ajudem pf Very Happy

Ex:
[Resolvido]---Renderizar na tela ao lado do nome[dx7] Ae10 mais ou menos isso...


Última edição por Akio em Dom Set 30, 2018 12:11 pm, editado 1 vez(es)
Akio
Akio
Membro Ativo
Membro Ativo

Mensagens : 353
Créditos : 35

Ficha do personagem
Nível: 1
Experiência:
[Resolvido]---Renderizar na tela ao lado do nome[dx7] Left_bar_bleue0/0[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty_bar_bleue  (0/0)
Vida:
[Resolvido]---Renderizar na tela ao lado do nome[dx7] Left_bar_bleue30/30[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty Re: [Resolvido]---Renderizar na tela ao lado do nome[dx7]

Mensagem por Nãner Dom Set 30, 2018 1:49 am

Já que iremos renderizar um ícone, usaríamos um gráfico novo. Portanto, começamos por declarar nosso novo gráfico no módulo do DirectX.

Você verá códigos parecidos com esses, tente encaixá-los próximos aos já existentes. Usarei o nome Icone nos meus códigos.

Código:
Public DDS_Icone As DirectDrawSurface7

&

Código:
Public DDSD_Icone As DDSURFACEDESC2

Continuando, precisamos fazer com que o gráfico seja carregado. Então na Sub InitSurfaces encaixaremos isso:
(OBS: Aqui indicamos onde está o nosso arquivo gráfico, no exemplo na pasta graphics)

Código:
If FileExist(App.Path & "\data files\graphics\icone.bmp", True) Then Call InitDDSurf("icone", DDSD_Icone, DDS_Icone)

(verifica se o arquivo gráfico existe -> envia-o para inicialização)

É importante que também saibamos quando devemos "desligar" o gráfico do aplicativo. Então entraremos na Sub DestroyDirectDraw (utilizada ao fechar o jogo) e adicionaremos:

Código:
Set DDS_Icone = Nothing
    ZeroMemory ByVal VarPtr(DDSD_Icone), LenB(DDSD_Icone)


A partir de aqui já temos nosso gráfico declarado e inicializando corretamente. Só precisamos renderizar.

Como exemplo, usaremos para renderizar em cima de jogadores Admin. Sendo assim, poderíamos utilizar a Sub DrawPlayerName para facilitar tudo? Não. Nas engines dx7 temos um bloqueio onde devemos primeiro desenhar os gráficos e então desenhar os textos. Então podemos utilizar da sub bltplayer, ou como prefiro, criar uma nova sub e chamá-la no mesmo local onde chamos a Sub BltPlayer.

Aqui está um exemplo da nova Sub, esta está responsável por desenhar o nosso Ícone, nela controlamos o X, Y, e, mais importante, o tamanho do ícone (do nosso arquivo gráfico). Nesse exemplo utilizei um ícone 32x32.

Código:
Sub BltPlayerIcone(ByVal Index As Long)
Dim rec As DxVBLib.RECT
Dim x As Long, y As Long
Dim Name As String
    
    If Index <= 0 Then Exit Sub ' Evita erros
    If GetPlayerAccess(Index) < 2 Then Exit Sub ' Apenas jogadores com acesso igual ou maior que 2 continuam na Sub
    
    ' // Determina como pegamos o gráfico //
    rec.top = 0
    rec.Bottom = 32 ' 32 de Altura
    rec.Left = 0
    rec.Right = 32  ' 32 de Largura
    
    
    ' Calcula X e Y baseado no Nome
    Name = GetPlayerName(Index)
    x = ConvertMapX(GetPlayerX(Index) * PIC_X) + Player(Index).XOffset + (PIC_X \ 2) - getWidth(TexthDC, (Trim$(Name))) + 32
    If GetPlayerSprite(Index) < 1 Or GetPlayerSprite(Index) > NumCharacters Then
        y = ConvertMapY(GetPlayerY(Index) * PIC_Y) + Player(Index).YOffset - 16
    Else
        y = ConvertMapY(GetPlayerY(Index) * PIC_Y) + Player(Index).YOffset - (DDSD_Character(GetPlayerSprite(Index)).lHeight / 4) + 16
    End If
    
    ' Renderiza
    Call Engine_BltFast(x, y, DDS_Icone, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End Sub

Fim.
Nãner
Nãner
Iniciante
Iniciante

Mensagens : 65
Créditos : 21

Ficha do personagem
Nível: 1
Experiência:
[Resolvido]---Renderizar na tela ao lado do nome[dx7] Left_bar_bleue0/0[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty_bar_bleue  (0/0)
Vida:
[Resolvido]---Renderizar na tela ao lado do nome[dx7] Left_bar_bleue30/30[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty Re: [Resolvido]---Renderizar na tela ao lado do nome[dx7]

Mensagem por Akio Dom Set 30, 2018 12:10 pm

Perfeito! vlw mano!
[Resolvido]---Renderizar na tela ao lado do nome[dx7] Sem_tz10 +1cred <3
Akio
Akio
Membro Ativo
Membro Ativo

Mensagens : 353
Créditos : 35

Ficha do personagem
Nível: 1
Experiência:
[Resolvido]---Renderizar na tela ao lado do nome[dx7] Left_bar_bleue0/0[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty_bar_bleue  (0/0)
Vida:
[Resolvido]---Renderizar na tela ao lado do nome[dx7] Left_bar_bleue30/30[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[Resolvido]---Renderizar na tela ao lado do nome[dx7] Empty Re: [Resolvido]---Renderizar na tela ao lado do nome[dx7]

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos