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.

Sistema de Auto Tile

5 participantes

Ir para baixo

Sistema de Auto Tile Empty Sistema de Auto Tile

Mensagem por math320 Sex 04 maio 2012, 18:24

Alguem poderia me faser um tutorial de auto tile ja preocurei pra caramba e nao acho
math320
math320
Membro Sênior
Membro Sênior

Mensagens : 255

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por Eduardo Sex 04 maio 2012, 18:55

auto tile deixa o game com leg e trava a vezes na hora de criar chars
Eduardo
Eduardo
Membro Veterano
Membro Veterano

Mensagens : 1178

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por math320 Sex 04 maio 2012, 19:46

mano no tem problema isso dps eu arrumo
math320
math320
Membro Sênior
Membro Sênior

Mensagens : 255

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por GM HaLT X2 Sex 04 maio 2012, 19:55

é eu também tava precisando de um sistema de autotile,acostumado a mexer no RPG Maker XP,sem autotile mapear fica dificil .-.
GM HaLT X2
GM HaLT X2
Novato
Novato

Mensagens : 47

http://arenarpgmaker.eclipserpg.com

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por Eduardo Sex 04 maio 2012, 19:59

manis nao arruma mano o auto tile trava sua enginer pode dar ate bug nao aconselho
Eduardo
Eduardo
Membro Veterano
Membro Veterano

Mensagens : 1178

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por Pablo Sex 04 maio 2012, 20:07

nossa cara eu tinha auto-tile para eeb e eo só que perdi na hora de formatar o pc e fiquei sem nada ;S só pedindo há alguem que tenha muita experiencia mesmo para fazer.

Att: Pablo
Pablo
Pablo
Moderador Global
Moderador Global

Mensagens : 1371

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por GM HaLT X2 Sex 04 maio 2012, 20:19

Pablo: Mas não é para Elysium é para Eclipse Origins
GM HaLT X2
GM HaLT X2
Novato
Novato

Mensagens : 47

http://arenarpgmaker.eclipserpg.com

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por math320 Ter 08 maio 2012, 15:20

Alguem tem este sistema?
math320
math320
Membro Sênior
Membro Sênior

Mensagens : 255

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por Sαkurαy Qua 09 maio 2012, 13:16

math320 escreveu:Alguem poderia me faser um tutorial de auto tile ja preocurei pra caramba e nao acho


Mesmo sendo não recomendável, tá aqui ele.
Obs: Não é recomendável por motivos de lag, ele abaixa consequentemente o FPS do teu jogo, até mesmo o PING.




Antes de fazer o tutorial, faça um backup, caso de erros, e não esqueça de deletar os mapas após colocar o mesmo.

Baixe o frmEditor_Map e substitua pelo teu, caso você queira modificar sem substituir, oque muda no novo frmEditor_map é a fraLayers, só alterar a do tutorial pela tua.
LINK: http://www.multiupload.nl/H6Z2GKVH06

Abra o modGameLogic
Procure por If tmr25 < Tick Then
Acima de "If tmr25 < Tick Then" coloque:
Código:
If tmr250 < Tick Then
          If autoAnim < 3 Then
                autoAnim = autoAnim + 1
            Else
                autoAnim = 0
            End If
            tmr250 = GetTickCount + 250
        End If

Abra o modGameEditors

E procure por If EditorTileWidth = 1 And EditorTileHeight = 1 Then

E substitua por:

Código:
[/font]
[font=Verdana]If (EditorTileWidth = 1 And EditorTileHeight = 1) Or CurLayer = MapLayer.Autotile Then 'single tile
[/font][font=Verdana]
E procure por:
Código:
[b]frmEditor_Map.shpSelected.height = PIC_Y[/b]
Abaixo adicione:


Código:
If frmEditor_Map.optLayer(MapLayer.Autotile) Then
            EditorTileX = (X \ 32)
            EditorTileY = (Y \ 32)
            EditorTileWidth = 3
            EditorTileHeight = 4
            frmEditor_Map.shpSelected.top = EditorTileY * PIC_Y
            frmEditor_Map.shpSelected.Left = EditorTileX * PIC_X
            frmEditor_Map.shpSelected.Sou lammer =D = 96
            frmEditor_Map.shpSelected.height = 128
        End If

Abra o modDirectDraw7
Procure por:
Código:
[b]BltMapTile[/b]
E substitua a SUB pela seguinte:


Código:
Public Sub BltMapTile(ByVal X As Long, ByVal Y As Long)
    Dim rec As DxVBLib.RECT
    Dim i As Long
   
    With Map.Tile(X, Y)
        For i = MapLayer.Ground To MapLayer.Mask2
            ' skip tile if tileset isn't set
            If i = MapLayer.Autotile Then
                BltAutotile X, Y
            Else
                If .Layer(i).Tileset > 0 And .Layer(i).Tileset <= NumTileSets Then
                    ' sort out rec
                    rec.top = .Layer(i).Y * PIC_Y
                    rec.Bottom = rec.top + PIC_Y
                    rec.Left = .Layer(i).X * PIC_X
                    rec.Right = rec.Left + PIC_X
                    ' render
                    Call Engine_BltFast(ConvertMapX(X * PIC_X), ConvertMapY(Y * PIC_Y), DDS_Tileset(.Layer(i).Tileset), rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
                End If
            End If
        Next
    End With
   
    ' Error handler
    Exit Sub
   
errorhandler:
    HandleError "BltMapTile", "modDirectDraw7", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Agora vá até o final do modDirectDraw7 e coloque o códico:

Código:

Public Function isAutotileMatch(ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Boolean
    isAutotileMatch = False
    ' end of the map, pretend there's a tile there :3
    If x1 < 0 Or x1 > Map.MaxX Or x2 < 0 Or x2 > Map.MaxX Or y1 < 0 Or y1 > Map.MaxY Or y2 < 0 Or y2 > Map.MaxY Then
        isAutotileMatch = True
    Else
        If Map.Tile(x1, y1).Layer(MapLayer.Autotile).X = Map.Tile(x2, y2).Layer(MapLayer.Autotile).X Then
            If Map.Tile(x1, y1).Layer(MapLayer.Autotile).Y = Map.Tile(x2, y2).Layer(MapLayer.Autotile).Y Then
                If Map.Tile(x1, y1).Layer(MapLayer.Autotile).Tileset = Map.Tile(x2, y2).Layer(MapLayer.Autotile).Tileset Then
                    isAutotileMatch = True
                End If
            End If
        End If
    End If
End Function

Public Sub BltAutotile(ByVal X As Long, ByVal Y As Long)
    Dim rec As DxVBLib.RECT
    Dim AutoSet As Long
    Dim bTop As Long
    Dim bLeft As Long
   
    AutoSet = Map.Tile(X, Y).Layer(MapLayer.Autotile).Tileset
   
    If AutoSet <= 0 Or AutoSet > NumTileSets Then Exit Sub
   
    bTop = Map.Tile(X, Y).Layer(MapLayer.Autotile).Y * 32
    bLeft = Map.Tile(X, Y).Layer(MapLayer.Autotile).X * 32
   
    ' animate
    If DDSD_Tileset(AutoSet).lWidth = 384 Then bLeft = autoAnim * 96
   
    ' ########################
    ' ########################
    ' ###    top left    ###
    ' ########################
    ' ########################
    With rec
        .top = bTop + 32
        .Bottom = .top + 16
        .Left = bLeft + 0
        .Right = .Left + 16
    End With
    ' 1-dir horizontal join
    If isAutotileMatch(X, Y, X - 1, Y) Then
        With rec
            .top = bTop + 32
            .Bottom = .top + 16
            .Left = bLeft + 64
            .Right = .Left + 16
        End With
        ' 2-dir horizontal join
        If isAutotileMatch(X, Y, X + 1, Y) Then
            With rec
                .top = bTop + 32
                .Bottom = .top + 16
                .Left = bLeft + 32
                .Right = .Left + 16
            End With
        End If
    End If
    ' 1-dir vertical join
    If isAutotileMatch(X, Y, X, Y - 1) Then
        With rec
            .top = bTop + 96
            .Bottom = .top + 16
            .Left = bLeft + 0
            .Right = .Left + 16
        End With
        ' 2-dir vertical join
        If isAutotileMatch(X, Y, X, Y + 1) Then
            With rec
                .top = bTop + 64
                .Bottom = .top + 16
                .Left = bLeft + 0
                .Right = .Left + 16
            End With
        End If
    End If
    ' 1-dir corner join
    If isAutotileMatch(X, Y, X - 1, Y) And isAutotileMatch(X, Y, X, Y - 1) Then
        With rec
            .top = bTop + 0
            .Bottom = .top + 16
            .Left = bLeft + 64
            .Right = .Left + 16
        End With
        ' 2-dir corner join
        If isAutotileMatch(X, Y, X - 1, Y - 1) Then
            With rec
                .top = bTop + 96
                .Bottom = .top + 16
                .Left = bLeft + 64
                .Right = .Left + 16
            End With
        End If
    End If
    ' surrounded to the left or top
    If (isAutotileMatch(X, Y, X - 1, Y) And isAutotileMatch(X, Y, X, Y - 1) And _
    isAutotileMatch(X, Y, X, Y + 1) And isAutotileMatch(X, Y, X - 1, Y - 1) And _
    isAutotileMatch(X, Y, X - 1, Y + 1)) Or (isAutotileMatch(X, Y, X - 1, Y) And _
    isAutotileMatch(X, Y, X + 1, Y) And isAutotileMatch(X, Y, X, Y - 1) And _
    isAutotileMatch(X, Y, X + 1, Y - 1) And isAutotileMatch(X, Y, X - 1, Y - 1)) Then
        With rec
            .top = bTop + 64
            .Bottom = .top + 16
            .Left = bLeft + 32
            .Right = .Left + 16
        End With
    End If
    Call Engine_BltFast(ConvertMapX((X * PIC_X)), ConvertMapY((Y * PIC_Y)), DDS_Tileset(AutoSet), rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)

    ' ########################
    ' ########################
    ' ###    top right    ###
    ' ########################
    ' ########################
    With rec
        .top = bTop + 32
        .Bottom = .top + 16
        .Left = bLeft + 80
        .Right = .Left + 16
    End With
    ' 1-dir horizontal join
    If isAutotileMatch(X, Y, X + 1, Y) Then
        With rec
            .top = bTop + 32
            .Bottom = .top + 16
            .Left = bLeft + 16
            .Right = .Left + 16
        End With
        ' 2-dir horizontal join
        If isAutotileMatch(X, Y, X - 1, Y) Then
            With rec
                .top = bTop + 32
                .Bottom = .top + 16
                .Left = bLeft + 48
                .Right = .Left + 16
            End With
        End If
    End If
    ' 1-dir vertical join
    If isAutotileMatch(X, Y, X, Y - 1) Then
        With rec
            .top = bTop + 96
            .Bottom = .top + 16
            .Left = bLeft + 80
            .Right = .Left + 16
        End With
        ' 2-dir vertical join
        If isAutotileMatch(X, Y, X, Y + 1) Then
            With rec
                .top = bTop + 64
                .Bottom = .top + 16
                .Left = bLeft + 80
                .Right = .Left + 16
            End With
        End If
    End If
    ' 1-dir corner join
    If isAutotileMatch(X, Y, X + 1, Y) And isAutotileMatch(X, Y, X, Y - 1) Then
        With rec
            .top = bTop + 0
            .Bottom = .top + 16
            .Left = bLeft + 80
            .Right = .Left + 16
        End With
        ' 2-dir corner join
        If isAutotileMatch(X, Y, X + 1, Y - 1) Then
            With rec
                .top = bTop + 96
                .Bottom = .top + 16
                .Left = bLeft + 16
                .Right = .Left + 16
            End With
        End If
    End If
    ' surrounded to the right or top
    If (isAutotileMatch(X, Y, X + 1, Y) And isAutotileMatch(X, Y, X, Y - 1) And _
    isAutotileMatch(X, Y, X, Y + 1) And isAutotileMatch(X, Y, X + 1, Y - 1) And _
    isAutotileMatch(X, Y, X + 1, Y + 1)) Or (isAutotileMatch(X, Y, X - 1, Y) And _
    isAutotileMatch(X, Y, X + 1, Y) And isAutotileMatch(X, Y, X, Y - 1) And _
    isAutotileMatch(X, Y, X + 1, Y - 1) And isAutotileMatch(X, Y, X - 1, Y - 1)) Then
        With rec
            .top = bTop + 64
            .Bottom = .top + 16
            .Left = bLeft + 48
            .Right = .Left + 16
        End With
    End If
    Call Engine_BltFast(ConvertMapX((X * PIC_X) + 16), ConvertMapY((Y * PIC_Y)), DDS_Tileset(AutoSet), rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
   
    ' ########################
    ' ########################
    ' ###  bottom left    ###
    ' ########################
    ' ########################
    With rec
        .top = bTop + 112
        .Bottom = .top + 16
        .Left = bLeft + 0
        .Right = .Left + 16
    End With
    ' 1-dir horizontal join
    If isAutotileMatch(X, Y, X - 1, Y) Then
        With rec
            .top = bTop + 112
            .Bottom = .top + 16
            .Left = bLeft + 64
            .Right = .Left + 16
        End With
        ' 2-dir horizontal join
        If isAutotileMatch(X, Y, X + 1, Y) Then
            With rec
                .top = bTop + 112
                .Bottom = .top + 16
                .Left = bLeft + 32
                .Right = .Left + 16
            End With
        End If
    End If
    ' 1-dir vertical join
    If isAutotileMatch(X, Y, X, Y + 1) Then
        With rec
            .top = bTop + 48
            .Bottom = .top + 16
            .Left = bLeft + 0
            .Right = .Left + 16
        End With
        ' 2-dir vertical join
        If isAutotileMatch(X, Y, X, Y - 1) Then
            With rec
                .top = bTop + 80
                .Bottom = .top + 16
                .Left = bLeft + 0
                .Right = .Left + 16
            End With
        End If
    End If
    ' 1-dir corner join
    If isAutotileMatch(X, Y, X - 1, Y) And isAutotileMatch(X, Y, X, Y + 1) Then
        With rec
            .top = bTop + 16
            .Bottom = .top + 16
            .Left = bLeft + 64
            .Right = .Left + 16
        End With
        ' 2-dir corner join
        If isAutotileMatch(X, Y, X - 1, Y + 1) Then
            With rec
                .top = bTop + 48
                .Bottom = .top + 16
                .Left = bLeft + 64
                .Right = .Left + 16
            End With
        End If
    End If
    ' surrounded to the left or top
    If (isAutotileMatch(X, Y, X - 1, Y) And isAutotileMatch(X, Y, X, Y - 1) And _
    isAutotileMatch(X, Y, X, Y + 1) And isAutotileMatch(X, Y, X - 1, Y - 1) And _
    isAutotileMatch(X, Y, X - 1, Y + 1)) Or (isAutotileMatch(X, Y, X - 1, Y) And _
    isAutotileMatch(X, Y, X + 1, Y) And isAutotileMatch(X, Y, X, Y + 1) And _
    isAutotileMatch(X, Y, X + 1, Y + 1) And isAutotileMatch(X, Y, X - 1, Y + 1)) Then
        With rec
            .top = bTop + 80
            .Bottom = .top + 16
            .Left = bLeft + 64
            .Right = .Left + 16
        End With
    End If
    Call Engine_BltFast(ConvertMapX((X * PIC_X)), ConvertMapY((Y * PIC_Y) + 16), DDS_Tileset(AutoSet), rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
   
    ' ########################
    ' ########################
    ' ###  bottom right  ###
    ' ########################
    ' ########################
    With rec
        .top = bTop + 112
        .Bottom = .top + 16
        .Left = bLeft + 80
        .Right = .Left + 16
    End With
    ' 1-dir horizontal join
    If isAutotileMatch(X, Y, X + 1, Y) Then
        With rec
            .top = bTop + 112
            .Bottom = .top + 16
            .Left = bLeft + 16
            .Right = .Left + 16
        End With
        ' 2-dir horizontal join
        If isAutotileMatch(X, Y, X - 1, Y) Then
            With rec
                .top = bTop + 112
                .Bottom = .top + 16
                .Left = bLeft + 48
                .Right = .Left + 16
            End With
        End If
    End If
    ' 1-dir vertical join
    If isAutotileMatch(X, Y, X, Y + 1) Then
        With rec
            .top = bTop + 48
            .Bottom = .top + 16
            .Left = bLeft + 80
            .Right = .Left + 16
        End With
        ' 2-dir vertical join
        If isAutotileMatch(X, Y, X, Y - 1) Then
            With rec
                .top = bTop + 80
                .Bottom = .top + 16
                .Left = bLeft + 80
                .Right = .Left + 16
            End With
        End If
    End If
    ' 1-dir corner join
    If isAutotileMatch(X, Y, X + 1, Y) And isAutotileMatch(X, Y, X, Y + 1) Then
        With rec
            .top = bTop + 16
            .Bottom = .top + 16
            .Left = bLeft + 80
            .Right = .Left + 16
        End With
        ' 2-dir corner join
        If isAutotileMatch(X, Y, X + 1, Y + 1) Then
            With rec
                .top = bTop + 48
                .Bottom = .top + 16
                .Left = bLeft + 16
                .Right = .Left + 16
            End With
        End If
    End If
    ' surrounded to the left or top
    If (isAutotileMatch(X, Y, X + 1, Y) And isAutotileMatch(X, Y, X, Y - 1) And _
    isAutotileMatch(X, Y, X, Y + 1) And isAutotileMatch(X, Y, X + 1, Y - 1) And _
    isAutotileMatch(X, Y, X + 1, Y + 1)) Or (isAutotileMatch(X, Y, X - 1, Y) And _
    isAutotileMatch(X, Y, X + 1, Y) And isAutotileMatch(X, Y, X, Y + 1) And _
    isAutotileMatch(X, Y, X + 1, Y + 1) And isAutotileMatch(X, Y, X - 1, Y + 1)) Then
        With rec
            .top = bTop + 80
            .Bottom = .top + 16
            .Left = bLeft + 48
            .Right = .Left + 16
        End With
    End If
    Call Engine_BltFast(ConvertMapX((X * PIC_X) + 16), ConvertMapY((Y * PIC_Y) + 16), DDS_Tileset(AutoSet), rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End Sub


Abra o modEnumerations
E procure por
Código:
[b]Public Enum MapLayer[/b]
Substitua toda a Enum por:

Código:


Public Enum MapLayer
    Ground = 1
    Autotile
    Mask
    Mask2
    Fringe
    Fringe2
    ' Make sure Layer_Count is below everything else
    Layer_Count
End Enum
Sαkurαy
Sαkurαy
Membro Veterano
Membro Veterano

Mensagens : 1386

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por math320 Qua 09 maio 2012, 13:17

valeu

OBs deu erro aki

Código:
If tmr250 < Tick Then
          If autoAnim < 3 Then
                autoAnim = autoAnim + 1
            Else
                autoAnim = 0
            End If
            tmr250 = GetTickCount + 250
        End I
math320
math320
Membro Sênior
Membro Sênior

Mensagens : 255

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por Sαkurαy Qui 10 maio 2012, 15:44

Então não sei..
Aqui funciona..
Nem recomendo por também este sistema, bugado, lagger, e bugará os mapas.
É uma dica.
Sαkurαy
Sαkurαy
Membro Veterano
Membro Veterano

Mensagens : 1386

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por math320 Qui 10 maio 2012, 16:09

o erro era que vc esqueceu o Dim Tmr250 As Long
math320
math320
Membro Sênior
Membro Sênior

Mensagens : 255

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por Pablo Qui 10 maio 2012, 19:11

GM HaLT X2 escreveu:Pablo: Mas não é para Elysium é para Eclipse Origins

Pablo Diz: tinha auto-tile para eeb e eo

Bom sobre o auto-tile eu não consegui arranjar um para você, e sobre oque você disse que tinha que por Tmr250 não era para por era só criar 1 timer e nomeia-lo de Tmr250
Pablo
Pablo
Moderador Global
Moderador Global

Mensagens : 1371

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

Mensagem por math320 Qui 10 maio 2012, 19:12

valeu mais o dim quase arrumo meu problema Sistema de Auto Tile 535201
math320
math320
Membro Sênior
Membro Sênior

Mensagens : 255

Ir para o topo Ir para baixo

Sistema de Auto Tile Empty Re: Sistema de Auto Tile

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