Made it with help of William, Robin, Advocate and Obsidian. Because of my lak of ability in being creative with my code, and not having a basic rundown on how to do it.
I'll share the way how I did it.
//:::::::::::::::::::::\\
||:::::Client Side::::||
\\::::::::::::::::::::://
Make a new form and call it: frmMapEditor
In frmMirage find the picMapEditor, cut it.
Paste It in your frmMapEditor.
Set the picMapEditor's visibility attribute to TRUE
in frmMirage's code find:
Code:
' // MAP EDITOR STUFF //
Private Sub optAttribs_Click()
If optAttribs.Value = True Then
fraLayers.Visible = False
fraAttribs.Visible = True
End If
End Sub
Private Sub picBackSelect_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Call EditorChooseTile(Button, Shift, x, y)
End Sub
Private Sub picBackSelect_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Call EditorChooseTile(Button, Shift, x, y)
End Sub
Private Sub cmdSend_Click()
Call EditorSend
End Sub
Private Sub cmdCancel_Click()
Call EditorCancel
End Sub
Private Sub cmdProperties_Click()
frmMapProperties.Show vbModal
End Sub
Private Sub optWarp_Click()
frmMapWarp.Show vbModal
End Sub
Private Sub optItem_Click()
frmMapItem.Show vbModal
End Sub
Private Sub optKey_Click()
frmMapKey.Show vbModal
End Sub
Private Sub optKeyOpen_Click()
frmKeyOpen.Show vbModal
End Sub
Private Sub scrlPicture_Change()
Call EditorTileScroll
End Sub
Private Sub cmdClear_Click()
Call EditorClearLayer
End Sub
Private Sub cmdClear2_Click()
Call EditorClearAttribs
End Sub
Cut this and paste it in the frmMapeditor's code.
In modHandleData find:
Code:
frmMirage.picMapEditor.Visible = False
and change it with
Code:
frmMapeditor.Visible = False
In modGameLogic find:
Code:
Public Sub EditorInit()
frmMirage.picMapEditor.Visible = True
With frmMirage.picMapEditor.picBackselect
And replace it with:
Code:
Public Sub EditorInit()
frmMapEditor.Visible = True
With frmMapEditor.picBackSelect
Find:
Code:
Public Sub EditorMouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Replace the whole sub with:
Code:
Public Sub EditorMouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim x1, y1 As Long
If InEditor Then
x1 = Int(x / PIC_X)
y1 = Int(y / PIC_Y)
If (Button = 1) And (x1 >= 0) And (x1 <= MAX_MAPX) And (y1 >= 0) And (y1 <= MAX_MAPY) Then
If frmMapeditor.optLayers.Value = True Then
With Map.Tile(x1, y1)
If frmMapeditor.optGround.Value = True Then .Ground = EditorTileY * 7 + EditorTileX
If frmMapeditor.optMask.Value = True Then .Mask = EditorTileY * 7 + EditorTileX
If frmMapeditor.optAnim.Value = True Then .Anim = EditorTileY * 7 + EditorTileX
If frmMapeditor.optFringe.Value = True Then .Fringe = EditorTileY * 7 + EditorTileX
End With
Else
With Map.Tile(x1, y1)
If frmMapeditor.optBlocked.Value = True Then .Type = TILE_TYPE_BLOCKED
If frmMapeditor.optWarp.Value = True Then
.Type = TILE_TYPE_WARP
.Data1 = EditorWarpMap
.Data2 = EditorWarpX
.Data3 = EditorWarpY
End If
If frmMapeditor.optItem.Value = True Then
.Type = TILE_TYPE_ITEM
.Data1 = ItemEditorNum
.Data2 = ItemEditorValue
.Data3 = 0
End If
If frmMapeditor.optNpcAvoid.Value = True Then
.Type = TILE_TYPE_NPCAVOID
.Data1 = 0
.Data2 = 0
.Data3 = 0
End If
If frmMapeditor.optKey.Value = True Then
.Type = TILE_TYPE_KEY
.Data1 = KeyEditorNum
.Data2 = KeyEditorTake
.Data3 = 0
End If
If frmMapeditor.optKeyOpen.Value = True Then
.Type = TILE_TYPE_KEYOPEN
.Data1 = KeyOpenEditorX
.Data2 = KeyOpenEditorY
.Data3 = 0
End If
End With
End If
End If
If (Button = 2) And (x1 >= 0) And (x1 <= MAX_MAPX) And (y1 >= 0) And (y1 <= MAX_MAPY) Then
If frmMapeditor.optLayers.Value = True Then
With Map.Tile(x1, y1)
If frmMapeditor.optGround.Value = True Then .Ground = 0
If frmMapeditor.optMask.Value = True Then .Mask = 0
If frmMapeditor.optAnim.Value = True Then .Anim = 0
If frmMapeditor.optFringe.Value = True Then .Fringe = 0
End With
Else
With Map.Tile(x1, y1)
.Type = 0
.Data1 = 0
.Data2 = 0
.Data3 = 0
End With
End If
End If
End If
End Sub
Replace whole sub:
Code:
Public Sub EditorChooseTile(Button As Integer, Shift As Integer, x As Single, y As Single)
With:
Code:
Public Sub EditorChooseTile(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = 1 Then
EditorTileX = Int(x / PIC_X)
EditorTileY = Int(y / PIC_Y)
End If
Call BitBlt(frmMapeditor.picSelect.hdc, 0, 0, PIC_X, PIC_Y, frmMapeditor.picBackSelect.hdc, EditorTileX * PIC_X, EditorTileY * PIC_Y, SRCCOPY)
End Sub
Replace whole sub:
Code:
Public Sub EditorTileScroll()
With:
Code:
Public Sub EditorTileScroll()
frmMapeditor.picBackSelect.top = (frmMapeditor.scrlPicture.Value * PIC_Y) * -1
End Sub
Replace whole sub:
Code:
Public Sub EditorCancel()
With:
Code:
Public Sub EditorCancel()
Map = SaveMap
InEditor = False
frmMapeditor.Visible = False
End Sub
Replace whole sub:
Code:
Public Sub EditorClearLayer()
with:
Code:
Public Sub EditorClearLayer()
Dim YesNo As Long, x As Long, y As Long
' Ground layer
If frmMapeditor.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 frmMapeditor.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
' Animation layer
If frmMapeditor.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 frmMapeditor.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
End Sub
And That's it realy, Have fun.
--Cheers Styre
EDIT: Typo pointed out by boo