Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
[Resolvido]---Renderizar na tela ao lado do nome[dx7]
2 participantes
Página 1 de 1
[Resolvido]---Renderizar na tela ao lado do nome[dx7]
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
Ex:
mais ou menos 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
Ex:
mais ou menos isso...
Última edição por Akio em Dom Set 30, 2018 12:11 pm, editado 1 vez(es)
Akio- Membro Ativo
- Mensagens : 353
Créditos : 35
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Re: [Resolvido]---Renderizar na tela ao lado do nome[dx7]
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.
&
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)
(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:
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.
Fim.
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- Iniciante
- Mensagens : 65
Créditos : 21
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Akio- Membro Ativo
- Mensagens : 353
Créditos : 35
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Tópicos semelhantes
» [pedido] Level ao lado do nome
» [Pedido] Reset ao lado do Nome
» [PEDIDO]Icones no lado direito da tela
» [Pedido] - Classe Ninja ao lado do nome
» Nível ao lado do nome do jogador no chat
» [Pedido] Reset ao lado do Nome
» [PEDIDO]Icones no lado direito da tela
» [Pedido] - Classe Ninja ao lado do nome
» Nível ao lado do nome do jogador no chat
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos