Extra Layers - Rian - 08-01-2007
Tutorial Originally Posted By: Shadow
Warning: If you use this tutorial, you will have to delete all your maps!
Ok, now open the client project (Mirage.vbp)
Open the Module called 'modTypes' and search for
Code: Type TileRec
Ground As Integer
Mask As Integer
Anim As Integer
Fringe As Integer
Type As Byte
Data1 As Integer
Data2 As Integer
Data3 As Integer
End Type
Replace with
Code: Type TileRec
Ground As Integer
Mask As Integer
Anim As Integer
Mask2 As Integer
M2Anim As Integer
Fringe As Integer
FAnim As Integer
Fringe2 As Integer
F2Anim As Integer
Type As Byte
Data1 As Integer
Data2 As Integer
Data3 As Integer
End Type
Now search for (still in modTypes)
In that sub Replace
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Ground = 0
Map.Tile(x, y).Mask = 0
Map.Tile(x, y).Anim = 0
Map.Tile(x, y).Fringe = 0
Map.Tile(x, y).Type = 0
Map.Tile(x, y).Data1 = 0
Map.Tile(x, y).Data2 = 0
Map.Tile(x, y).Data3 = 0
Next x
Next y
With
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Ground = 0
Map.Tile(x, y).Mask = 0
Map.Tile(x, y).Anim = 0
Map.Tile(x, y).Mask2 = 0
Map.Tile(x, y).M2Anim = 0
Map.Tile(x, y).Fringe = 0
Map.Tile(x, y).FAnim = 0
Map.Tile(x, y).Fringe2 = 0
Map.Tile(x, y).F2Anim = 0
Map.Tile(x, y).Type = 0
Map.Tile(x, y).Data1 = 0
Map.Tile(x, y).Data2 = 0
Map.Tile(x, y).Data3 = 0
Next x
Next y
Search for
Code: Sub BltTile(ByVal x As Long, ByVal y As Long)
in that sub Replace
Code: Dim Ground As Long
Dim Anim1 As Long
Dim Anim2 As Long
With
Code: Dim Ground As Long
Dim Anim1 As Long
Dim Anim2 As Long
Dim Mask2 As Long
Dim M2Anim As Long
Replace
Code: Ground = Map.Tile(x, y).Ground
Anim1 = Map.Tile(x, y).Mask
Anim2 = Map.Tile(x, y).Anim
With
Code: Ground = Map.Tile(x, y).Ground
Anim1 = Map.Tile(x, y).Mask
Anim2 = Map.Tile(x, y).Anim
Mask2 = Map.Tile(x, y).Mask2
M2Anim = Map.Tile(x, y).M2Anim
Replace
Code: 'Call DD_BackBuffer.Blt(rec_pos, DD_TileSurf, rec, DDBLT_WAIT)
Call DD_BackBuffer.BltFast(x * PIC_X, y * PIC_Y, DD_TileSurf, rec, DDBLTFAST_WAIT)
If (MapAnim = 0) Or (Anim2 0 And TempTile(x, y).DoorOpen = NO Then
rec.top = Int(Anim1 / 7) * PIC_Y
rec.Bottom = rec.top + PIC_Y
rec.Left = (Anim1 - Int(Anim1 / 7) * 7) * PIC_X
rec.Right = rec.Left + PIC_X
'Call DD_BackBuffer.Blt(rec_pos, DD_TileSurf, rec, DDBLT_WAIT Or DDBLT_KEYSRC)
Call DD_BackBuffer.BltFast(x * PIC_X, y * PIC_Y, DD_TileSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End If
Else
' Is there a second animation tile to plot?
If Anim2 > 0 Then
rec.top = Int(Anim2 / 7) * PIC_Y
rec.Bottom = rec.top + PIC_Y
rec.Left = (Anim2 - Int(Anim2 / 7) * 7) * PIC_X
rec.Right = rec.Left + PIC_X
'Call DD_BackBuffer.Blt(rec_pos, DD_TileSurf, rec, DDBLT_WAIT Or DDBLT_KEYSRC)
Call DD_BackBuffer.BltFast(x * PIC_X, y * PIC_Y, DD_TileSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End If
End If
If (MapAnim = 0) Or (M2Anim 0 Then
rec.top = Int(Fringe / 7) * PIC_Y
rec.Bottom = rec.top + PIC_Y
rec.Left = (Fringe - Int(Fringe / 7) * 7) * PIC_X
rec.Right = rec.Left + PIC_X
'Call DD_BackBuffer.Blt(rec_pos, DD_TileSurf, rec, DDBLT_WAIT Or DDBLT_KEYSRC)
Call DD_BackBuffer.BltFast(x * PIC_X, y * PIC_Y, DD_TileSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End If
With
Code: If (MapAnim = 0) Or (FAnim 0 Then
rec.top = Int(FAnim / 7) * PIC_Y
rec.Bottom = rec.top + PIC_Y
rec.Left = (FAnim - Int(FAnim / 7) * 7) * PIC_X
rec.Right = rec.Left + PIC_X
'Call DD_BackBuffer.Blt(rec_pos, DD_TileSurf, rec, DDBLT_WAIT Or DDBLT_KEYSRC)
Call DD_BackBuffer.BltFast(x * PIC_X, y * PIC_Y, DD_TileSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End If
End If
If (MapAnim = 0) Or (F2Anim 0 Then
rec.top = Int(F2Anim / 7) * PIC_Y
rec.Bottom = rec.top + PIC_Y
rec.Left = (F2Anim - Int(F2Anim / 7) * 7) * PIC_X
rec.Right = rec.Left + PIC_X
'Call DD_BackBuffer.Blt(rec_pos, DD_TileSurf, rec, DDBLT_WAIT Or DDBLT_KEYSRC)
Call DD_BackBuffer.BltFast(x * PIC_X, y * PIC_Y, DD_TileSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End If
End If
Now Search for
Code: Public Sub EditorMouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Replace
Code: If frmMirage.optGround.Value = True Then .Ground = EditorTileY * 7 + EditorTileX
If frmMirage.optMask.Value = True Then .Mask = EditorTileY * 7 + EditorTileX
If frmMirage.optAnim.Value = True Then .Anim = EditorTileY * 7 + EditorTileX
If frmMirage.optFringe.Value = True Then .Fringe = EditorTileY * 7 + EditorTileX
With
Code: If frmMirage.optGround.Value = True Then .Ground = EditorTileY * 7 + EditorTileX
If frmMirage.optMask.Value = True Then .Mask = EditorTileY * 7 + EditorTileX
If frmMirage.optAnim.Value = True Then .Anim = EditorTileY * 7 + EditorTileX
If frmMirage.optMask2.Value = True Then .Mask2 = EditorTileY * 7 + EditorTileX
If frmMirage.optM2Anim.Value = True Then .M2Anim = EditorTileY * 7 + EditorTileX
If frmMirage.optFringe.Value = True Then .Fringe = EditorTileY * 7 + EditorTileX
If frmMirage.optFAnim.Value = True Then .FAnim = EditorTileY * 7 + EditorTileX
If frmMirage.optFringe2.Value = True Then .Fringe2 = EditorTileY * 7 + EditorTileX
If frmMirage.optF2Anim.Value = True Then .F2Anim = EditorTileY * 7 + EditorTileX
Replace
Code: If frmMirage.optGround.Value = True Then .Ground = 0
If frmMirage.optMask.Value = True Then .Mask = 0
If frmMirage.optAnim.Value = True Then .Anim = 0
If frmMirage.optFringe.Value = True Then .Fringe = 0
With
Code: If frmMirage.optGround.Value = True Then .Ground = 0
If frmMirage.optMask.Value = True Then .Mask = 0
If frmMirage.optAnim.Value = True Then .Anim = 0
If frmMirage.optMask2.Value = True Then .Mask2 = 0
If frmMirage.optM2Anim.Value = True Then .M2Anim = 0
If frmMirage.optFringe.Value = True Then .Fringe = 0
If frmMirage.optFAnim.Value = True Then .FAnim = 0
If frmMirage.optFringe2.Value = True Then .Fringe2 = 0
If frmMirage.optF2Anim.Value = True Then .F2Anim = 0
Now Search for:
Code: Public Sub EditorClearLayer()
Replace
Code: ' Ground layer
If frmMirage.optGround.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the ground layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Ground = 0
Next x
Next y
End If
End If
' Mask layer
If frmMirage.optMask.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the mask layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Mask = 0
Next x
Next y
End If
End If
' Mask Animation layer
If frmMirage.optAnim.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the animation layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Anim = 0
Next x
Next y
End If
End If
' Fringe layer
If frmMirage.optFringe.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the fringe layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Fringe = 0
Next x
Next y
End If
End If
With
Code: ' Ground layer
If frmMirage.optGround.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the ground layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Ground = 0
Next x
Next y
End If
End If
' Mask layer
If frmMirage.optMask.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the mask layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Mask = 0
Next x
Next y
End If
End If
' Mask Animation layer
If frmMirage.optAnim.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the animation layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Anim = 0
Next x
Next y
End If
End If
' Mask 2 layer
If frmMirage.optMask2.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the mask 2 layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Mask2 = 0
Next x
Next y
End If
End If
' Mask 2 Animation layer
If frmMirage.optM2Anim.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the mask 2 animation layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).M2Anim = 0
Next x
Next y
End If
End If
' Fringe layer
If frmMirage.optFringe.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the fringe layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Fringe = 0
Next x
Next y
End If
End If
' Fringe Animation layer
If frmMirage.optFAnim.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the fringe animation layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).FAnim = 0
Next x
Next y
End If
End If
' Fringe 2 layer
If frmMirage.optFringe2.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the fringe 2 layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).Fringe2 = 0
Next x
Next y
End If
End If
' Fringe 2 Animation layer
If frmMirage.optF2Anim.Value = True Then
YesNo = MsgBox("Are you sure you wish to clear the fringe 2 animation layer?", vbYesNo, GAME_NAME)
If YesNo = vbYes Then
For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map.Tile(x, y).F2Anim = 0
Next x
Next y
End If
End If
Search for
Code: If LCase(Parse(0)) = "mapdata" Then
Replace
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
SaveMap.Tile(x, y).Ground = Val(Parse(n))
SaveMap.Tile(x, y).Mask = Val(Parse(n + 1))
SaveMap.Tile(x, y).Anim = Val(Parse(n + 2))
SaveMap.Tile(x, y).Fringe = Val(Parse(n + 3))
SaveMap.Tile(x, y).Type = Val(Parse(n + 4))
SaveMap.Tile(x, y).Data1 = Val(Parse(n + 5))
SaveMap.Tile(x, y).Data2 = Val(Parse(n + 6))
SaveMap.Tile(x, y).Data3 = Val(Parse(n + 7))
n = n + 8
Next x
Next y
With
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
SaveMap.Tile(x, y).Ground = Val(Parse(n))
SaveMap.Tile(x, y).Mask = Val(Parse(n + 1))
SaveMap.Tile(x, y).Anim = Val(Parse(n + 2))
SaveMap.Tile(x, y).Mask2 = Val(Parse(n + 3))
SaveMap.Tile(x, y).M2Anim = Val(Parse(n + 4))
SaveMap.Tile(x, y).Fringe = Val(Parse(n + 5))
SaveMap.Tile(x, y).FAnim = Val(Parse(n + 6))
SaveMap.Tile(x, y).Fringe2 = Val(Parse(n + 7))
SaveMap.Tile(x, y).F2Anim = Val(Parse(n + 8))
SaveMap.Tile(x, y).Type = Val(Parse(n + 9))
SaveMap.Tile(x, y).Data1 = Val(Parse(n + 10))
SaveMap.Tile(x, y).Data2 = Val(Parse(n + 11))
SaveMap.Tile(x, y).Data3 = Val(Parse(n + 12))
n = n + 13
Next x
Next y
Now Search for
Replace
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
With Map.Tile(x, y)
Packet = Packet & .Ground & SEP_CHAR & .Mask & SEP_CHAR & .Anim & SEP_CHAR & .Fringe & SEP_CHAR & .Type & SEP_CHAR & .Data1 & SEP_CHAR & .Data2 & SEP_CHAR & .Data3 & SEP_CHAR
End With
Next x
Next y
With
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
With Map.Tile(x, y)
Packet = Packet & .Ground & SEP_CHAR & .Mask & SEP_CHAR & .Anim & SEP_CHAR & .Mask2 & SEP_CHAR & .M2Anim & SEP_CHAR & .Fringe & SEP_CHAR & .FAnim & SEP_CHAR & .Fringe2 & SEP_CHAR & .F2Anim & SEP_CHAR & .Type & SEP_CHAR & .Data1 & SEP_CHAR & .Data2 & SEP_CHAR & .Data3 & SEP_CHAR
End With
Next x
Next y
thats all the Code for in the Client, Now for the hard part, Adding 'Option Buttons' to the Map Editor
Ok, Open the form called 'frmMirage'
Click on the Layers Frame, Make it Longer, so it looks something like this:
Drag the 'Clear Button' down to the bottom
click the OptionButton
Add a Few OptionButtons so it looks something like this:
Now to name them all, alright, they go like this:
Ground's name is 'optGround' (Should already be done)
Mask's name is 'optMask' (Should already be done)
Animation's (first one, Animates Mask1) name is 'optAnim' (Should already be done)
Mask2's name is 'optMask2'
Animation's name is 'optM2Anim'
Fringe's name is 'optFringe' (Should already be done)
Animation's name is 'optFAnim'
Fringe2's name is 'optFringe2'
Animation's name is 'optF2Anim'
Thats all in the Client to do!
Congratulations for getting this far, now onto the Server!
______________________________________________________
open the Server project (Server.vbp)
Open the Module called 'modTypes' and search for
Code: Type TileRec
Ground As Integer
Mask As Integer
Anim As Integer
Fringe As Integer
Type As Byte
Data1 As Integer
Data2 As Integer
Data3 As Integer
End Type
Replace with
Code: Type TileRec
Ground As Integer
Mask As Integer
Anim As Integer
Mask2 As Integer
M2Anim As Integer
Fringe As Integer
FAnim As Integer
Fringe2 As Integer
F2Anim As Integer
Type As Byte
Data1 As Integer
Data2 As Integer
Data3 As Integer
End Type
Now search for
In that sub Replace
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map(MapNum).Tile(x, y).Ground = 0
Map(MapNum).Tile(x, y).Mask = 0
Map(MapNum).Tile(x, y).Anim = 0
Map(MapNum).Tile(x, y).Fringe = 0
Map(MapNum).Tile(x, y).Type = 0
Map(MapNum).Tile(x, y).Data1 = 0
Map(MapNum).Tile(x, y).Data2 = 0
Map(MapNum).Tile(x, y).Data3 = 0
Next x
Next y
With
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map(MapNum).Tile(x, y).Ground = 0
Map(MapNum).Tile(x, y).Mask = 0
Map(MapNum).Tile(x, y).Anim = 0
Map(MapNum).Tile(x, y).Mask2 = 0
Map(MapNum).Tile(x, y).M2Anim = 0
Map(MapNum).Tile(x, y).Fringe = 0
Map(MapNum).Tile(x, y).FAnim = 0
Map(MapNum).Tile(x, y).Fringe2 = 0
Map(MapNum).Tile(x, y).F2Anim = 0
Map(MapNum).Tile(x, y).Type = 0
Map(MapNum).Tile(x, y).Data1 = 0
Map(MapNum).Tile(x, y).Data2 = 0
Map(MapNum).Tile(x, y).Data3 = 0
Next x
Next y
Done with modTypes, now onto 'modServerTCP'
Seach for
Code: If LCase(Parse(0)) = "mapdata" Then
Replace
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map(MapNum).Tile(x, y).Ground = Val(Parse(n))
Map(MapNum).Tile(x, y).Mask = Val(Parse(n + 1))
Map(MapNum).Tile(x, y).Anim = Val(Parse(n + 2))
Map(MapNum).Tile(x, y).Fringe = Val(Parse(n + 3))
Map(MapNum).Tile(x, y).Type = Val(Parse(n + 4))
Map(MapNum).Tile(x, y).Data1 = Val(Parse(n + 5))
Map(MapNum).Tile(x, y).Data2 = Val(Parse(n + 6))
Map(MapNum).Tile(x, y).Data3 = Val(Parse(n + 7))
n = n + 8
Next x
Next y
With
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
Map(MapNum).Tile(x, y).Ground = Val(Parse(n))
Map(MapNum).Tile(x, y).Mask = Val(Parse(n + 1))
Map(MapNum).Tile(x, y).Anim = Val(Parse(n + 2))
Map(MapNum).Tile(x, y).Mask2 = Val(Parse(n + 3))
Map(MapNum).Tile(x, y).M2Anim = Val(Parse(n + 4))
Map(MapNum).Tile(x, y).Fringe = Val(Parse(n + 5))
Map(MapNum).Tile(x, y).FAnim = Val(Parse(n + 6))
Map(MapNum).Tile(x, y).Fringe2 = Val(Parse(n + 7))
Map(MapNum).Tile(x, y).F2Anim = Val(Parse(n + 8))
Map(MapNum).Tile(x, y).Type = Val(Parse(n + 9))
Map(MapNum).Tile(x, y).Data1 = Val(Parse(n + 10))
Map(MapNum).Tile(x, y).Data2 = Val(Parse(n + 11))
Map(MapNum).Tile(x, y).Data3 = Val(Parse(n + 12))
n = n + 13
Next x
Next y
Search for
Code: Sub SendMap(ByVal Index As Long, ByVal MapNum As Long)
Replace
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
With Map(MapNum).Tile(x, y)
Packet = Packet & .Ground & SEP_CHAR & .Mask & SEP_CHAR & .Anim & SEP_CHAR & .Fringe & SEP_CHAR & .Type & SEP_CHAR & .Data1 & SEP_CHAR & .Data2 & SEP_CHAR & .Data3 & SEP_CHAR
End With
Next x
Next y
With
Code: For y = 0 To MAX_MAPY
For x = 0 To MAX_MAPX
With Map(MapNum).Tile(x, y)
Packet = Packet & .Ground & SEP_CHAR & .Mask & SEP_CHAR & .Anim & SEP_CHAR & .Mask2 & SEP_CHAR & .M2Anim & SEP_CHAR & .Fringe & SEP_CHAR & .FAnim & SEP_CHAR & .Fringe2 & SEP_CHAR & .F2Anim & SEP_CHAR & .Type & SEP_CHAR & .Data1 & SEP_CHAR & .Data2 & SEP_CHAR & .Data3 & SEP_CHAR
End With
Next x
Next y
- Obsidian - 09-01-2007
Right now, you have an "attribute" that is saved as Type (a byte), check your "Type TileRec", you'll see... Type as Byte. If you want multiple attributes, my suggestion would be to make a Type2 as Byte, or Even Type2 and 3 depending on how many you want to do. Then, just set the editor up, so it can check for multiple "Types", ratehr than just one. It's quite simple actually.
- Robin - 09-01-2007
Tile and type number algorism's ftw.
- William - 09-01-2007
I dont remember it being so long
- Robin - 09-01-2007
Code tags also ftw >.>
- Matt - 09-01-2007
He just pulled it from a text file, slapped in up, and posted it. Lol.
At least it's up now.
- Robin - 09-01-2007
Now to wait for the Out Of Memory and Too Many Static Variables RTE to fill the bug section!
Yaaaaay!
- Matt - 09-01-2007
Lol, I added this tut in last night for someone, and I had no issue with it.
- Robin - 09-01-2007
Just wait till people decide to make their maps 50x50, add more Data thingies and load 15 graphics files at the same time!
- Matt - 09-01-2007
Haha, yeah.
Far as I know, you can't go higher than 30x30 with MS. Not that you would need to, 25x18 fits to 800x600. Lol.
- Robin - 09-01-2007
Scrolling maps ftw
- Matt - 09-01-2007
Yeah, I'm sure you could. But I was just saying, default you can't go over 30x30, or is it 32x32? I'm not sure.
- Robin - 09-01-2007
God knows =\
But the default mirage way is great when displaying the whole map at once, although saving it all as longs and integers could be improved.
- Suki - 09-01-2007
Anyone know if in the near future there will be extra animation layers?
More like:
Mask 1
Animation 1
Animation 2
Mask 2
Animation 1
Animation 2
Etc...........
*So totally against scrolling maps* XD.
- Matt - 09-01-2007
You could easily add it in. Just follow the tut and add the extra stuff in.
Or did you mean something else?
- Suki - 10-01-2007
Nope, that's what I meant.
- lucidar - 10-01-2007
add a third part to the animation subs.
So instead of the masks going 1, 2, 1, 2, 1, 2.
It goes 1, 2, 3, 1, 2, 3
or 1, 2, 3, 2, 1, 2, 3, 2
Either way, add a third tile layer and third anim-process?
Essentially you do jsut follow the tut and add extra stuff in
The tutorial is older than me. Don't expect anything Ever.
|