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.

Mini Mapa

+4
cenora06
Valentine
Gu1lh3rm3
Ricardo
8 participantes

Ir para baixo

Mini Mapa      Empty Mini Mapa

Mensagem por Ricardo Sex 24 Fev 2012, 11:26

Começando

Primeiro baixe o arquivo abaixo na sua pasta \data files\graphics com nome minimap e verifique se o arquivo está salvo em bmp.

Mini Mapa      Minimaph
http://www.mediafire.com/?fh6oh4t5gj1j023

Descrição

Esse é um Minimap beta que apenas mostra os bloqueios, os npcs e os players. Olhei em vários fóruns 3 tipos de minimaps e todos eles tinham que criar um tipo novo de tile chamado Blank ,que no português significa branco, para deixar um pedaço do minimap branco para saber que não havia nada em certo lugar, então resolvi criar um novo modo para que a opção não fosse usado e ficasse mais simples, fiz o código para criar em todo o minimap essa parte branca e após disso criar as outras camadas do minimap para que elas não se desenhem em baixo do blank.

Log

Ícone branco quando não houver nada no mapa.
Ícone que mostra os jogadores que estão presentes no mapa.
Ícone que mostra os npcs que estão no mapa.
Ícone que mostra os bloqueios do mapa.
Ícone diferente para jogadores killers.
Ícone que mostra os teletransporte do mapa.
Ícone que mostra os itens do mapa.
Ícone que mostra as lojas do mapa sendo por atributo e sendo por npc.
Ícone diferente para cada tipo de npc.

Imagem

Mini Mapa      Minimapn

Vídeo

https://www.youtube.com/watch?v=12ebvMxO0UM&feature=youtu.be

Client~side

modDirectDraw7

Procure por:

Código:
   ' Render the bars
   BltBars

Abaixo adicione:

Código:
   ' minimap
   If Options.Minimap = 1 Then BltMiniMap

Procure por:

Código:
Public DDS_Bars As DirectDrawSurface7

Abaixo adicione:

Código:
Public DDS_MiniMap As DirectDrawSurface7

Procure por:

Código:
Public DDSD_Bars As DDSURFACEDESC2

Abaixo adicione:

Código:
Public DDSD_MiniMap As DDSURFACEDESC2

Procure por:

Código:
   If FileExist(App.Path & "\data files\graphics\bars.bmp", True) Then Call InitDDSurf("bars", DDSD_Bars, DDS_Bars)

Abaixo adicione:

Código:
   If FileExist(App.Path & "\data files\graphics\minimap.bmp", True) Then Call InitDDSurf("minimap", DDSD_MiniMap, DDS_MiniMap)

Procure por:

Código:
   Set DDS_Target = Nothing
   ZeroMemory ByVal VarPtr(DDSD_Target), LenB(DDSD_Target)

Abaixo adicione:

Código:
   Set DDS_MiniMap = Nothing
   ZeroMemory ByVal VarPtr(DDSD_MiniMap), LenB(DDSD_MiniMap)

No final do modulo adicione:

Código:
Sub BltMiniMap()
Dim i As Long
Dim X As Integer, Y As Integer
Dim Direction As Byte
Dim CameraX As Long, CameraY As Long
Dim BlockRect As RECT, WarpRect As RECT, ItemRect As RECT, ShopRect As RECT, NpcOtherRect As RECT, PlayerRect As RECT, PlayerPkRect As RECT, NpcAttackerRect As RECT, NpcShopRect As RECT, NadaRect As RECT
Dim MapX As Long, MapY As Long

   ' If debug mode, handle error then exit out
   If Options.Debug = 1 Then On Error GoTo errorhandler

   MapX = Map.MaxX
   MapY = Map.MaxY

   ' ************
   ' *** Nada ***
   ' ************
   With NadaRect
      .top = 4
      .Bottom = .top + 4
      .Left = 0
      .Right = .Left + 4
   End With

   ' Defini-lo no minimap
   For X = 0 To MapX
      For Y = 0 To MapY
         CameraX = Camera.Left + 25 + (X * 4)
         CameraY = Camera.top + 25 + (Y * 4)
         Engine_BltFast CameraX, CameraY, DDS_MiniMap, NadaRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
      Next Y
   Next X

   ' *****************
   ' *** Atributos ***
   ' *****************

   ' Bloqueio
   With BlockRect
      .top = 4
      .Bottom = .top + 4
      .Left = 4
      .Right = .Left + 4
   End With

   ' Warp
   With WarpRect
      .top = 4
      .Bottom = .top + 4
      .Left = 8
      .Right = .Left + 4
   End With

   ' Item
   With ItemRect
      .top = 4
      .Bottom = .top + 4
      .Left = 12
      .Right = .Left + 4
   End With

   ' Shop
   With ShopRect
      .top = 4
      .Bottom = .top + 4
      .Left = 16
      .Right = .Left + 4
   End With

   ' Defini-los no minimap
   For X = 0 To MapX
      For Y = 0 To MapY
         Select Case Map.Tile(X, Y).Type
            Case TILE_TYPE_BLOCKED
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Engine_BltFast CameraX, CameraY, DDS_MiniMap, BlockRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
            Case TILE_TYPE_WARP
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Engine_BltFast CameraX, CameraY, DDS_MiniMap, WarpRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
            Case TILE_TYPE_ITEM
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Engine_BltFast CameraX, CameraY, DDS_MiniMap, ItemRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
            Case TILE_TYPE_SHOP
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Engine_BltFast CameraX, CameraY, DDS_MiniMap, ShopRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
         End Select
      Next Y
   Next X

   ' **************
   ' *** Player ***
   ' **************

   ' Normal
   With PlayerRect
      .top = 0
      .Bottom = .top + 4
      .Left = 4
      .Right = .Left + 4
   End With

   ' Pk
   With PlayerPkRect
      .top = 0
      .Bottom = .top + 4
      .Left = 8
      .Right = .Left + 4
   End With

   ' Defini-los no minimap
   For i = 1 To Player_HighIndex
      If IsPlaying(i) Then
         Select Case Player(i).PK
            Case 0
               X = Player(i).X
               Y = Player(i).Y
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Call DDS_BackBuffer.BltFast(CameraX, CameraY, DDS_MiniMap, PlayerRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            Case 1
               X = Player(i).X
               Y = Player(i).Y
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Call DDS_BackBuffer.BltFast(CameraX, CameraY, DDS_MiniMap, PlayerPkRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
         End Select
      End If
   Next i

   ' ***********
   ' *** NPC ***
   ' ***********

   ' Atacar ao ser atacado e quando for atacado
   With NpcAttackerRect
      .top = 0
      .Bottom = .top + 4
      .Left = 12
      .Right = .Left + 4
   End With

   ' Vendendor
   With NpcShopRect
      .top = 0
      .Bottom = .top + 4
      .Left = 16
      .Right = .Left + 4
   End With

   ' Outros
   With NpcOtherRect
      .top = 0
      .Bottom = .top + 4
      .Left = 20
      .Right = .Left + 4
   End With

   ' Defini-lo no minimap
   For i = 1 To Npc_HighIndex
      If MapNpc(i).num > 0 Then
         Select Case NPC(i).Behaviour
            Case NPC_BEHAVIOUR_ATTACKONSIGHT Or NPC_BEHAVIOUR_ATTACKWHENATTACKED
               X = MapNpc(i).X
               Y = MapNpc(i).Y
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Call DDS_BackBuffer.BltFast(CameraX, CameraY, DDS_MiniMap, NpcAttackerRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            Case NPC_BEHAVIOUR_SHOPKEEPER
               X = MapNpc(i).X
               Y = MapNpc(i).Y
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Call DDS_BackBuffer.BltFast(CameraX, CameraY, DDS_MiniMap, NpcShopRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
            Case Else
               X = MapNpc(i).X
               Y = MapNpc(i).Y
               CameraX = Camera.Left + 25 + (X * 4)
               CameraY = Camera.top + 25 + (Y * 4)
               Call DDS_BackBuffer.BltFast(CameraX, CameraY, DDS_MiniMap, NpcOtherRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
         End Select
      End If
   Next i

   ' Error handler
   Exit Sub
errorhandler:
   HandleError "BltMiniMap", "modDirectDraw7", Err.Number, Err.Description, Err.Source, Err.HelpContext
   Err.Clear
   Exit Sub
End Sub

frmMain

Dentro da picOptions crie uma label com o seguinte caption:

MiniMap

Agora crie uma pictureBox com qualquer nome e dentro dela adicione 2 optionsBox com as seguintes configurações:

OptionBox1
Name: optMiniMapOn
Caption: On

OptionBox2
Name: optMiniMapOff
Caption: Off

Dentro do optMiniMapOn adicione:

Código:
   ' If debug mode, handle error then exit out
   If Options.Debug = 1 Then On Error GoTo errorhandler

   Options.Minimap = 1
   SaveOptions

   ' Error handler
   Exit Sub
errorhandler:
   HandleError "optMiniMapOn_Click", "frmMain", Err.Number, Err.Description, Err.Source, Err.HelpContext
   Err.Clear
   Exit Sub

E dentro do optMiniMapOff adicione:

Código:
   ' If debug mode, handle error then exit out
   If Options.Debug = 1 Then On Error GoTo errorhandler

   Options.Minimap = 0
   SaveOptions

   ' Error handler
   Exit Sub
errorhandler:
   HandleError "optMiniMapOff_Click", "frmMain", Err.Number, Err.Description, Err.Source, Err.HelpContext
   Err.Clear
   Exit Sub

modTypes

No final da Private Type OptionsRec, antes do End type, adicione:

Código:
   Minimap As Byte

modDatabase

Procure por:

Código:
   Call PutVar(fileName, "Options", "Debug", Str(Options.Debug))

Abaixo adicione:

Código:
   Call PutVar(fileName, "Options", "MiniMap", Str(Options.Minimap))

Procure por:

Código:
      Options.Debug = 0

Abaixo adicione:

Código:
      Options.Minimap = 1

Procure por:

Código:
      Options.Debug = GetVar(fileName, "Options", "Debug")

Abaixo adicione:

Código:
      Options.Minimap = GetVar(fileName, "Options", "MiniMap")

Procure por:

Código:
   If Options.Sound = 0 Then
      frmMain.optSOff.Value = True
   Else
      frmMain.optSOn.Value = True
   End If

Abaixo adicione:

Código:
   If Options.Minimap = 0 Then
      frmMain.optMiniMapOff.Value = True
   Else
      frmMain.optMiniMapOn.Value = True
   End If

Agora é só ir em \data files\ e deletar o arquivo config.ini

Créditos

Ricardo


Última edição por Ricardo em Dom 01 Abr 2012, 11:53, editado 2 vez(es)
Ricardo
Ricardo


Mensagens : 1044

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por Gu1lh3rm3 Qua 07 Mar 2012, 18:11

parabens amigo, continue assim +1 credito para você
Gu1lh3rm3
Gu1lh3rm3
Membro de Honra
Membro de Honra

Mensagens : 1232

http://www.extremedbz.eu5.org

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por Valentine Sáb 31 Mar 2012, 21:49

Ícone branco quando não houver nada no mapa.
Esse ícone branco é o que mais reduz o fps, e o acho desnecessário.

Algumas coisas podem ser modificadas para deixar mais leve como mudar isso
Código:
  ' Defini-lo no minimap
  For X = 0 To MapX
      For Y = 0 To MapY
Para isso
Código:
        For X = TileView.Left To TileView.Right
            For y = TileView.Top To TileView.bottom

E como o NPC_HighIndex não está 100% funcionando corretamente aconselho trocar isso
Código:
  ' Defini-lo no minimap
  For i = 1 To Npc_HighIndex
Por:
Código:
  ' Defini-lo no minimap
  For i = 1 To MAX_MAP_NPCS
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por cenora06 Dom 01 Abr 2012, 10:51

valew ai pelo tutorial, se ta ligado q vc ta ficando fodao né kk
cenora06
cenora06
Membro Sênior
Membro Sênior

Mensagens : 322

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por Sαkurαy Dom 01 Abr 2012, 11:30

Agora sim funcionou, +1 crédito.
Sαkurαy
Sαkurαy
Membro Veterano
Membro Veterano

Mensagens : 1386

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por Ricardo Dom 01 Abr 2012, 11:52

Ricardo
Ricardo


Mensagens : 1044

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por Alumaary Sex 07 Set 2012, 06:11

funfo Very Happy
Alumaary
Alumaary
Membro Sênior
Membro Sênior

Mensagens : 407

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por TheKirin Sex 07 Set 2012, 12:40

Onde fica a picOpitons?
TheKirin
TheKirin
Membro Vitalicio
Membro Vitalicio

Mensagens : 561

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por Eduardo Sex 07 Set 2012, 12:44

Alumaary escreveu:funfo Mini Mapa      535201
Alumaary
- Punido por Flood , e já está no banned
Thekirin - FrmMain
Eduardo
Eduardo
Membro Veterano
Membro Veterano

Mensagens : 1178

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por TheKirin Sex 07 Set 2012, 12:47

Eu sei que está na frmmain mais eu não acho uma picturebox chamada PicOptions
TheKirin
TheKirin
Membro Vitalicio
Membro Vitalicio

Mensagens : 561

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

Mensagem por Alumaary Sex 07 Set 2012, 12:49

thekirin e a onde fica o iventario e tals, clika com botão de ca >> do mause e vai em back ate fica clicando ate chegar no picoptions, bom eu não pus la pus na interface principal mais ok e Eduardo eu to floodando uq?
Alumaary
Alumaary
Membro Sênior
Membro Sênior

Mensagens : 407

Ir para o topo Ir para baixo

Mini Mapa      Empty Re: Mini Mapa

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