Universo Games
Ola , Convidado



Você ainda não e cadastrado então cadastre-se e veja todas as atualizações no mundo rpg!!!
Universo Games

Suporte e Desenvolvimento só no Universo Games

Ola Convidado, Seja Bem vindo a equipe lhe deseja boa sorte no seu projeto!

Você não está conectado. Conecte-se ou registre-se

[EE] Mini Mapa

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1Tutorial [EE] Mini Mapa em Dom 27 Nov 2011, 08:33

Luucas Robeerto


Fundador
Fundador
Nome: Mini Mapa
Nivel de Dificuldade : 3/5
Utiliza: VisualBasic 6.0


+ Verde = Concluído
- Amarelo = Iniciado
= Vermelho = Não Iniciado

+ Basic Minimap que mostra: Azulejo bloqueados, telhas Warp, NPCs, você / outros jogadores (e pkers), caíram itens, lojas e faz a walkable telhas transparentes.

+ Trabalha com rolagem e mapas não-rolagem

+ Tamanho Minimap Alterar

+ Minimap Avançado. Contém peças como portas, casas, portas trancadas, sinalização, telhas roteiro, avisos, bancos, cura, etc (Certifique-se de atualizar o arquivo de vídeo com o novo no final)

= Desativação Minimap em alguns mapas (como labirintos, etc)

= Friendly NPCs de diferenciar as agressivas e outros.

Quaisquer outras características / adiciona sobre para o minimap que você quer em post aqui.

Ok, ok. Primeiro de tudo: eu não fiz isso. Achei na web (de volta em 2006/07) feita para outro motor (As evidências apontam para Elysium), que aparentemente não existe mais. O que fiz foi modificar e porta-lo por isso seria totalmente funcional com o Eclipse já que o trabalho wouldnt original. Im também expandindo-o mais para conter mais recursos e ser mais útil (ler acima). Além disso, aqueles que ajudaram são creditados nos comentários de código. Parabéns a Dark Dragon para fazer o básico desta.

Agora, sobre a forma de configurá-lo:
Nota: eu sei que tendem a explicar as coisas em profundidade, mas estou na pressa, talvez mal atualizar o post mais tarde. Qualquer bug ou erro que você encontrar, em post aqui.

Antes de começar: faça um backup de sua fonte.

É tudo feito do lado do cliente

Primeiro baixe o arquivo anexado na parte inferior, e colocá-lo na pasta GFX.
Agora indo para a fonte. Adicione esta sob ModDirectX

Código:
Public DDSD_MiniMap As DDSURFACEDESC2
Public DD_MiniMap As DirectDrawSurface7

Agora olhe para o seu Sub InitSurfaces e adicione este

Código:
Or Not FileExists("\GFX\minimap.bmp") Then


no código que busca nos arquivos existentes.

Ainda em ModDirectX - em seu sub InitSurface adicionar este para onde o resto da bitmaps são carregados

Código:
' Init minimap ddsd type and load the bitmap
    DDSD_MiniMap.lFlags = DDSD_CAPS
    DDSD_MiniMap.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Or DDSCAPS_SYSTEMMEMORY
    Set DD_MiniMap = DD.CreateSurfaceFromFile(App.Path & "\GFX\minimap.bmp", DDSD_MiniMap)
    SetMaskColorFromPixel DD_MiniMap, 0, 0
Olhe para o seu sub, que destrói o DirectX e adicione este com o resto

Código:
    Set DD_MiniMap = Nothing

Código:
work with EE by Braiton
Sub BltMiniMap()
Dim I As Long
Dim x As Integer
Dim y As Integer
Dim MMx As Long
Dim MMy As Integer

    ' Tiles Layer
    ' Select MM Tile to Use for Tiles Layer
    rec.Top = 8
    rec.Bottom = 16
    rec.Left = 0
    rec.right = 8
 
    For y = 0 To MAX_MAPY
        For x = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(x, y).Type = TILE_TYPE_BLOCKED Then
                MMx = 400 + (x * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next x
    Next y
 
 
    ' Player Layer
    ' Select MM Tile to Use for Players Layer
    rec.Top = 16
    rec.Bottom = 24
    rec.Left = 0
    rec.right = 8
 
    For I = 1 To MAX_PLAYERS
        If Player(I).Map = Player(MyIndex).Map Then
            x = Player(I).x
            y = Player(I).y
            MMx = 400 + (x * 8)
            MMy = 32 + (y * 8)
            If Not I = MyIndex Then
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        End If
    Next I

    ' MyPlayer Layer
    rec.Top = 32
    rec.Bottom = 40
    rec.Left = 0
    rec.right = 8
    x = Player(MyIndex).x
    y = Player(MyIndex).y
    MMx = 400 + (x * 8)
    MMy = 32 + (y * 8)
    Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
 
 
    ' NPC Layer
    ' Select the MM Tile to use for the NPC Layer
    rec.Top = 24
    rec.Bottom = 32
    rec.Left = 0
    rec.right = 8
 
    For I = 1 To MAX_MAP_NPCS
        If MapNpc(I).num > 0 Then
            x = MapNpc(I).x
            y = MapNpc(I).y
            MMx = 400 + (x * 8)
            MMy = 32 + (y * 8)
            Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
    Next I
 
    'Shops (Thanks to NexSteve)
    rec.Top = 40
    rec.Bottom = 48
    rec.Left = 0
    rec.right = 8
    For y = 0 To MAX_MAPY
        For x = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(x, y).Type = TILE_TYPE_SHOP Then
                MMx = 400 + (x * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next x
    Next y
 
    'Walkable tiles (Thanks to Me)

    rec.Top = 48
    rec.Bottom = 56
    rec.Left = 0
    rec.right = 8
 
    For y = 0 To MAX_MAPY
        For x = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(x, y).Type = TILE_TYPE_WALKABLE Then
                MMx = 400 + (x * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next x
    Next y
 
    'Warps (Thanks to Me)

    rec.Top = 56
    rec.Bottom = 64
    rec.Left = 0
    rec.right = 8
 
    For y = 0 To MAX_MAPY
        For x = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(x, y).Type = TILE_TYPE_WARP Then
                MMx = 400 + (x * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next x
    Next y

'Dropped item (Thanks to Aranshada)

    rec.Top = 64
    rec.Bottom = 72
    rec.Left = 0
    rec.right = 8
 
    For I = 1 To MAX_MAP_ITEMS
        If MapItem(I).num > 0 Then
            x = MapItem(I).x
            y = MapItem(I).y
            MMx = 400 + (x * 8)
            MMy = 32 + (y * 8)
            Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
    Next I
     
 
    ' PKers(Thanks to me)
    rec.Top = 104
    rec.Bottom = 112
    rec.Left = 0
    rec.right = 8
 
    For I = 1 To MAX_PLAYERS
        If Player(I).Map = Player(MyIndex).Map Then
            If Player(I).PK = YES Then
                x = Player(I).x
                y = Player(I).y
                MMx = 400 + (x * 8)
                MMy = 32 + (y * 8)
                If Not I = MyIndex Then
                    Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
                End If
            End If
        End If
    Next I

 'Signs (Thanks to Braiton)

    rec.Top = 112
    rec.Bottom = 120
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_SIGN Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
            'Key Doors (Thanks to Braiton)

    rec.Top = 120
    rec.Bottom = 128
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_KEY Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
                'Doors (Thanks to Braiton)

    rec.Top = 128
    rec.Bottom = 136
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_DOOR Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
                    'Scripted Tile (Thanks to Braiton)

    rec.Top = 136
    rec.Bottom = 144
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_SCRIPTED Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
                        'Bank (Thanks to Braiton)

    rec.Top = 144
    rec.Bottom = 152
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_BANK Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
                            'Heal (Thanks to Braiton)

    rec.Top = 152
    rec.Bottom = 160
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_HEAL Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
                                'Notice (Thanks to Braiton)

    rec.Top = 160
    rec.Bottom = 168
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_NOTICE Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
                                    'Arena (Thanks to Braiton)

    rec.Top = 168
    rec.Bottom = 176
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_ARENA Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
                                        'Player House (Thanks to Braiton)

    rec.Top = 176
    rec.Bottom = 184
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_HOUSE Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
                                            'Grapple (Thanks to Braiton)

    rec.Top = 184
    rec.Bottom = 192
    rec.Left = 0
    rec.Right = 8
 
    For y = 0 To MAX_MAPY
        For X = 0 To MAX_MAPX
            If Map(Player(MyIndex).Map).Tile(X, y).Type = TILE_TYPE_HOOKSHOT Then
                MMx = 400 + (X * 8)
                MMy = 32 + (y * 8)
                Call DD_BackBuffer.BltFast(MMx, MMy, DD_MiniMap, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            End If
        Next X
    Next y
 
 
End Sub

Agora, em ModGlobals, procure por 'Damage variables and below Em baixo Adicione :

Código:
    Public ii As Long, iii As Long
    Public sx As Long

declarar o seguinte:

Código:
Public Minimap As Boolean

No olhar ModGeneral for Public Sub Main e acima

Código:
    frmMainMenu.lblVersion.Caption = "Version: " & App.Major & "." & App.Minor

Adicione isto :

Código:
Minimap = False

Em ModGameLogic, na busca de GameLoop

Código:
' Release DC
                Call DD_BackBuffer.ReleaseDC(TexthDC)

Em Baixo disso adicione :

Código:
' Blit out MiniMap
            If Minimap = True Then
                Call BltMiniMap
            End If

Agora, no mesmo módulo, procure onde estão os comandos e colocar isso lá. Certifique-se de seu posto com os comandos, onde todos os usuários podem usá-lo.:

Código:
'Choose to see or not to see minimap
                            If LCase(Mid(MyText, 1, 8)) = "/minimap" Then
                If Minimap = True Then
                    Minimap = False
                Else
                    Minimap = True
                End If
                Exit Sub
            End If

Ainda no mesmo módulo, no final acrescentar:

Código:
    Sub MiniMapOff(Index)
    Minimap = False
    If Minimap = True Then
                Call BltMiniMap
            Else
            End If
    End Sub

    Sub MiniMapOn(Index)
    Minimap = True
    If Minimap = True Then
                Call BltMiniMap
            End If
    End Sub
E isso é o fim.

Opcional: Como mudar o tamanho mini.

1) Encontre Sub BltMiniMap e encontrar esta linha de código

Código:
    MMx = 400 + (x * 8)
                    MMy = 32 + (y * 8)

Agora, mudança que também

Código:

    MMx = 400 + (x * X)
                    MMy = 32 + (y * X)

Onde X é o tamanho. Eu aconselho não maior que 10 e não inferior a 3 ou 4.

2) As linhas devem ser em todas as camadas diferentes para ter certeza de mudá-los todos.

Instruções:
Spoiler:

1-Boot seu sever
2-Junte o seu jogo
3-No bate-papo tipo / minimap para ativá-lo. Se você quiser desativá-lo, digite / minimap novamente.

*****+ Problemas conhecidos +******
* X = 0 e Y = 0 irá sempre mostrar um ponto azul (Fixo - Graças a Balli / Derrick)
* Apenas administradores podem usar minimap - usuários normais não podem (Fixo)

-As telhas cinzas representam a "sólida" objetos representados pelo atributo bloqueados
-Os azulejos azuis representam Warp atributos.
-O círculo amarelo é você.
-O círculo azul é um npc
-O! é um aviso / evento especial
-O conselho ícone / sinal é um sinal

Há muitas mais peças que representam outras coisas, como: Lojas, Pkers, itens que cair no chão, portas trancadas, agarrar pedras, bancos, curar telhas, etc Mas não são mostradas na imagem acima.

Além disso, não se esqueça de baixar o arquivo em anexo!
Eu fiz os gráficos abaixo, a pessoa vermelha (O sinal, em diante), eu tomo nenhum crédito para o resto.

EDIT: Os ícones originais desapareceram, e eu já não tê-los, mas deixo-lhe um modelo em seu lugar. Cada ícone é 8x8. Olhe através do código para ver em que ordem elas são.

DICA: Ao editar o modelo abaixo, deixe o quadrado 8x8 primeiro negro desde a sua a telha "Walkable" e deve ser transparente. O segundo quadrado 8x8 deve ser o ícone de outros jogadores. O terceiro quadrado de 8x8 no ícone npc eo quadrado 4 8x8 no ícone que mostra o jogador atual. Eu não estou indo para inundá-lo com outra enorme parede de texto, para olhar através do código (como eu disse antes) para ver a ordem dos ícones ir dentro

E, finalmente, divirta-se!

Anexo : [Você precisa estar registrado e conectado para ver este link.]


Creditos : Braiton Desenvolver o Codigo
Creditos : ADM Geração Por Mudança de alguns erro , como o ajuste do tamanho.


_______________________________________________________________________________________________________

[Você precisa estar registrado e conectado para ver esta imagem.]
Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
http://universogamesmmo.forumeiros.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum