MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

Participe do fórum, é rápido e fácil

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[EE]Mini Mapa Primitivo

3 participantes

Ir para baixo

[EE]Mini Mapa Primitivo  Empty [EE]Mini Mapa Primitivo

Mensagem por Rio Absolut Dom 26 Set 2010, 15:46

A Pedidos de Infinit World .

+ 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
Agora adicione este sub-
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:
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)



Spoiler:

Anexo : Mini Mapa


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

Mensagens : 655

Ir para o topo Ir para baixo

[EE]Mini Mapa Primitivo  Empty Re: [EE]Mini Mapa Primitivo

Mensagem por Karlos Dom 26 Set 2010, 15:55

mt bom ^.^, vou testar primeiro Smile
Karlos
Karlos
Membro Veterano
Membro Veterano

Mensagens : 2851

http://www.talack.com.br

Ir para o topo Ir para baixo

[EE]Mini Mapa Primitivo  Empty Re: [EE]Mini Mapa Primitivo

Mensagem por V-Force Dom 26 Set 2010, 18:34

curti esse sistema

+1 de Cred pra ti
V-Force
V-Force
Administrador V-Force
Administrador V-Force

Mensagens : 933

Ir para o topo Ir para baixo

[EE]Mini Mapa Primitivo  Empty Re: [EE]Mini Mapa Primitivo

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