Lucas Roberto Administrador
Mensagens : 711
| Assunto: [EE] Mini Mapa Dom 27 Nov 2011, 10:33 | |
| 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 : [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]Creditos : Braiton Desenvolver o Codigo Creditos : ADM Geração Por Mudança de alguns erro , como o ajuste do tamanho. | |
|