Suporte ao desenvolvimento de jogos!


    MiniMap 1.2

    Compartilhe
    avatar
    Ricardo
    Ocasional
    Ocasional

    Mensagens : 156
    Créditos : 69

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    MiniMap 1.2

    Mensagem por Ricardo em Dom Jan 29, 2012 10:39 am

    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.


    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


      [li]Ícone branco quando não houver nada no mapa.[/li]


      [li]Ícone que mostra os jogadores que estão presentes no mapa.[/li]

      [li]Ícone que mostra os npcs que estão no mapa.[/li]

      [li]Ícone que mostra os bloqueios do mapa.[/li]

      [li]Ícone diferente para jogadores killers.[/li]

      [li]Ícone que mostra os teletransporte do mapa.[/li]

      [li]Ícone que mostra os itens do mapa.[/li]

      [li]Ícone que mostra as lojas do mapa sendo por atributo e sendo por npc.[/li]

      [li]Ícone diferente para cada tipo de npc.[/li]


    Imagem



    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 Ter Fev 14, 2012 8:46 am, editado 2 vez(es)
    avatar
    Juton
    Experiente
    Experiente

    Mensagens : 490
    Créditos : 129

    Re: MiniMap 1.2

    Mensagem por Juton em Dom Jan 29, 2012 1:58 pm

    Muito Bom, ajudou bastante . +1 Cred!
    avatar
    HugoFreitas
    Administrador
    Administrador

    Medalhas :
    Mensagens : 661
    Créditos : 175

    Re: MiniMap 1.2

    Mensagem por HugoFreitas em Dom Jan 29, 2012 10:36 pm

    Bacana cara. +1 cred.


    _________________


    avatar
    Ricardo
    Ocasional
    Ocasional

    Mensagens : 156
    Créditos : 69

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: MiniMap 1.2

    Mensagem por Ricardo em Seg Jan 30, 2012 8:06 am

    Topico atualizado! O que mudou:


      [li]Ícone diferente para jogadores killers.[/li]

      [li]Ícone que mostra os teletransporte do mapa.[/li]

      [li]Ícone que mostra os itens do mapa.[/li]

      [li]Ícone que mostra as lojas do mapa sendo por atributo e sendo por npc.[/li]

      [li]Ícone diferente para cada tipo de npc.[/li]


    avatar
    gabriel190
    Membro Ativo
    Membro Ativo

    Mensagens : 278
    Créditos : 19

    Re: MiniMap 1.2

    Mensagem por gabriel190 em Ter Jan 31, 2012 12:18 am

    Muito bom cara!
    consegui colocar!
    + 1 cred ae!
    agora só falta eu descobrir como mudar o minimapa de lugar...(sou noob Razz )

    @edit:
    aff, nao tem como deixar o minimapa sempre do mesmo tamnho n? tipo se eu chegar para o lado o minimapa chega tbm. entendeu? porque eu queria deixar ele sempre on, mas se o mapa for grande ele cobre um pedação da tela...

    @edit 2: consegui fazer ele mudar de lugar...mas n sei como colocar para ele ficar sempre do mesmo tamanho...


    _________________



    avatar
    gabriel190
    Membro Ativo
    Membro Ativo

    Mensagens : 278
    Créditos : 19

    Re: MiniMap 1.2

    Mensagem por gabriel190 em Ter Jan 31, 2012 9:59 am

    Topico atualizado! O que mudou:


    [li]Ícone diferente para jogadores killers.[/li]

    [li]Ícone que mostra os teletransporte do mapa.[/li]

    [li]Ícone que mostra os itens do mapa.[/li]

    [li]Ícone que mostra as lojas do mapa sendo por atributo e sendo por npc.[/li]

    [li]Ícone diferente para cada tipo de npc.[/li]

    Desculpa o double post, mas agora q eu reparei n tem isso n...
    acho que vc esqueceu de mudar o tópico...


    _________________



    avatar
    Ricardo
    Ocasional
    Ocasional

    Mensagens : 156
    Créditos : 69

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: MiniMap 1.2

    Mensagem por Ricardo em Qui Fev 02, 2012 8:40 am

    Ops, desculpe ae eu esqueci de atualizar mais ja arrumei Very Happy
    avatar
    gabriel190
    Membro Ativo
    Membro Ativo

    Mensagens : 278
    Créditos : 19

    Re: MiniMap 1.2

    Mensagem por gabriel190 em Qui Fev 02, 2012 9:28 am

    agora sim! Very Happy
    ta bem mais legal! + 1 cred ae pelo seu trabalho mano Razz


    _________________



    avatar
    FilipeJF
    Aldeia Friend
    Aldeia Friend

    Medalhas :
    Mensagens : 1920
    Créditos : 134

    Re: MiniMap 1.2

    Mensagem por FilipeJF em Qui Fev 02, 2012 9:57 am

    Nossa tá cada vez melhor o minimap, concerteza você está fazendo um bom trabalho ai.
    Parabéns mano, e espero que sempre traga atualizações dele!


    _________________


    FFogomax
    Experiente
    Experiente

    Mensagens : 564
    Créditos : 37

    Re: MiniMap 1.2

    Mensagem por FFogomax em Qui Fev 02, 2012 1:26 pm

    Ótimo script cara, posso fazer designers para ele?
    Mas claro, com créditos a você?
    Ah, já ia esquecendo, +Credit. Successful

    Conteúdo patrocinado

    Re: MiniMap 1.2

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sab Fev 17, 2018 6:18 pm