[EE] Mini Mapa
Página 1 de 1
[EE] Mini Mapa
+ 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
Agora olhe para o seu Sub InitSurfaces e adicione este
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
Olhe para o seu sub, que destrói o DirectX e adicione este com o resto
Agora, em ModGlobals, procure por 'Damage variables and below Em baixo Adicione :
declarar o seguinte:
No olhar ModGeneral for Public Sub Main e acima
Adicione isto :
Em ModGameLogic, na busca de GameLoop
Embaixo disso adicione :
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.:
Ainda no mesmo módulo, no final acrescentar:
E isso é o fim.
Opcional: Como mudar o tamanho mini.
1) Encontre Sub BltMiniMap e encontrar esta linha de código
Agora, mudança que também
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:
[url= [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] aqui para baixar o anexo.[/url]
Creditos : Braiton Desenvolver o Codigo
Creditos : ADM Geração Por Mudança de alguns erro , como o ajuste do tamanho .
- 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)
Embaixo 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!
[url= [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] aqui para baixar o anexo.[/url]
Creditos : Braiton Desenvolver o Codigo
Creditos : ADM Geração Por Mudança de alguns erro , como o ajuste do tamanho .
- Pontos : 0
Data de inscrição : 31/12/1969
Desineria RPG Maker
Nível de atividade:
(138/1000)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|