Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte no desenvolvimento de jogos


    [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    lucas100vzs
    lucas100vzs
    Iniciante
    Iniciante

    Mensagens : 34
    Créditos : 8

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por lucas100vzs Seg Jun 07, 2021 7:09 am

    - Basicamente, quando você troca de mapa, há um efeito de "Arraste" do mapa atual que está, para o próximo, resultando em uma animação mais legal.

     Vamos ao tutorial, que é full "Client~Side".

    Abra seu "Client.Vbp" , e no final de "ModGlobals" adicione isto:

    Spoiler:

    Public InTransition As Boolean
    Public PicPerSec As Long

    Agora, em "ModGameLogic" , defina bem no início, ou abaixo de "Dim tmr10000 As Long" , isto:

    Spoiler:

    Dim MapTransitionTimer As Long

    Ainda em "ModGameLogic" , na SUB "GameLoop()" , procure por:

    Spoiler:

    If tmr25 < Tick Then

    E acima disto, adicione isto: 

    Spoiler:

    If InTransition = True Then
                
                'Check for counter
            If MapTransitionTimer < GetTickCount Then
                Select Case GetPlayerDir(MyIndex)
                    Case DIR_UP
                        PicPerSec = PicPerSec + 1
                        
                    Case DIR_DOWN
                        PicPerSec = PicPerSec - 1
                        
                    Case DIR_LEFT
                        PicPerSec = PicPerSec + 1
                        
                    Case DIR_RIGHT
                        PicPerSec = PicPerSec - 1
                        
                End Select
                MapTransitionTimer = GetTickCount + 50
            End If
                
                'Check for map value and correct all position
                Select Case GetPlayerDir(MyIndex)
                    Case DIR_UP
                        If PicPerSec >= TileView.Bottom Then
                        PicPerSec = TileView.Bottom
                        InTransition = False
                        End If
                    Case DIR_DOWN
                        If PicPerSec <= TileView.top Then
                        PicPerSec = TileView.top
                        InTransition = False
                        End If
                    Case DIR_LEFT
                        If PicPerSec > TileView.Right Then
                        PicPerSec = TileView.Right
                        InTransition = False
                        End If
                    Case DIR_RIGHT
                        If PicPerSec <= TileView.Left Then
                        PicPerSec = TileView.Left
                        InTransition = False
                        End If
                End Select
                
            End If

    Agora, em "ModDirectDraw7" , procure na SUB "Render_Graphics()" , procure por:

    Spoiler:

    ' fill it with black
    DDS_BackBuffer.BltColorFill rec_pos, 0


    E substitua por:

    Spoiler:

    ' fill it with black, but now when in transition
    If Not InTransition Then DDS_BackBuffer.BltColorFill rec_pos, 0


    Procure por:

    Spoiler:

    ' Lock the backbuffer so we can draw text and names
    TexthDC = DDS_BackBuffer.GetDC


    E substitua por:

    Spoiler:

    ' Lock the backbuffer so we can draw text and names, but not on transition
    If Not InTransition Then TexthDC = DDS_BackBuffer.GetDC


    Procure também por:

    Spoiler:

    ' Release DC
    DDS_BackBuffer.ReleaseDC TexthDC


    E substitua por:

    Spoiler:

    ' Release DC, but not when in transition
    If Not InTransition Then DDS_BackBuffer.ReleaseDC TexthDC


    Ainda em "ModDirectDraw7" , procure por "Public Sub UpdateCamera()" , e nesta SUB, subtitua isto:

    Spoiler:

            With TileView
                .top = StartY
                .Bottom = EndY
                .Left = StartX
                .Right = EndX
            End With
            
            With Camera
                .top = offsetY
                .Bottom = .top + ScreenY
                .Left = offsetX
                .Right = .Left + ScreenX
            End With

    Por isto: 

    Spoiler:

    'Transition system
        If InTransition Then
            Select Case GetPlayerDir(MyIndex)
                Case DIR_UP
                    With TileView
                        .top = (StartY + EndY) - PicPerSec
                        .Bottom = EndY
                        .Left = StartX
                        .Right = EndX
                    End With
                Case DIR_DOWN
                    With TileView
                        .top = StartY - PicPerSec
                        .Bottom = EndY
                        .Left = StartX
                        .Right = EndX
                    End With
                    With Camera
                        .top = offsetY
                        .Bottom = .top + ScreenY
                        .Left = offsetX
                        .Right = .Left + ScreenX
                    End With
                Case DIR_LEFT
                    With TileView
                        .top = StartY
                        .Bottom = EndY
                        .Left = (StartX + EndX) - PicPerSec
                        .Right = EndX
                    End With
                Case DIR_RIGHT
                    With TileView
                        .top = StartY
                        .Bottom = EndY
                        .Left = StartX - PicPerSec
                        .Right = EndX
                    End With
            End Select
            
            With Camera
                .top = offsetY
                .Bottom = .top + ScreenY
                .Left = offsetX
                .Right = .Left + ScreenX
            End With
        
        Else

            With TileView
                .top = StartY
                .Bottom = EndY
                .Left = StartX
                .Right = EndX
            End With
            
            With Camera
                .top = offsetY
                .Bottom = .top + ScreenY
                .Left = offsetX
                .Right = .Left + ScreenX
            End With
        
        End If

    Agora, vá até "ModHandleData" , e em "Sub HandleCheckForMap" , antes de:

    Spoiler:

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

    Adicione: 

    Spoiler:

    InTransition = True
        Select Case GetPlayerDir(MyIndex)
        Case DIR_UP
                PicPerSec = 0
        Case DIR_DOWN
                PicPerSec = Map.MaxY
        Case DIR_LEFT
                PicPerSec = 0
        Case DIR_RIGHT
                PicPerSec = Map.MaxX
        End Select

    Agora, em "ModGeneral" , na SUB "GameInit()" , procure por: 

    Spoiler:

    InTrade = False

    E adicione abaixo, isto:

    Spoiler:

    InTransition = False

    E por fim, em "ModInput" , na SUB "CheckInputKeys()",  abaixo de:

    Spoiler:

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

    Adicione isto:

    Spoiler:

    'Check for transition and block any movement
    If InTransition Then Exit Sub

    E pronto!! Agora você muda entre mapas, com efeito de transição!  Indignity




    Link de Demonstração: https://imgur.com/xEQMee4


    Pontos a considerar:
    - Versão 1.0;
    - Mapas sem tiles setados, como eu fiz ele não preencher o 'Backbuffer', deixa feio, ou seja, pra deixar bonitinho, é só ter ao menos um "ground" setado, que já faz a função;
    - Mapas menores indo para mapas maiores, perde-se posição(bug visual somente), mas funciona normal do maior para o menor;
    - Falta adicionar detalhes de conforto background como "Não ter transição quando editor de mapa for salvar mapa.." , mas são coisas que não influenciam na gameplay do jogador;

    Créditos
    Eu - lucas100vzs/Kotol


    Última edição por lucas100vzs em Ter Jun 08, 2021 4:17 pm, editado 1 vez(es)

    Valentine, WillMaiaBR, Profane ~ e Sonart gostam desta mensagem

    WillMaiaBR
    WillMaiaBR
    Iniciante
    Iniciante

    Mensagens : 58
    Créditos : 7

    Ficha do personagem
    Nível: 1
    Experiência:
    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Left_bar_bleue0/0[E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty_bar_bleue  (0/0)
    Vida:
    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Left_bar_bleue30/30[E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty_bar_bleue  (30/30)

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por WillMaiaBR Seg Jun 07, 2021 11:36 am

    Vou testar aqui Lucas <3


    _________________
    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Logo_xstrond

    lucas100vzs gosta desta mensagem

    Profane ~
    Profane ~
    Colaborador
    Colaborador

    Mensagens : 805
    Créditos : 128

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por Profane ~ Ter Jun 08, 2021 8:34 am

    Parabéns. 

    Ver conteúdo novamente é sempre bom.

    Para uma versão 1.0 ta muito bom.


    _________________
    "Mistress of shattered hopes and forever broken dreams"

    lucas100vzs gosta desta mensagem


    Conteúdo patrocinado

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qua Jun 23, 2021 9:10 pm