| Mirage Source http://www.miragesource.net/forums/ |
|
| How to make a frmMapEditor http://www.miragesource.net/forums/viewtopic.php?f=210&t=1628 |
Page 1 of 3 |
| Author: | Styre [ Mon Apr 09, 2007 4:54 pm ] |
| Post subject: | How to make a frmMapEditor |
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 |
|
| Author: | JokeofWeek [ Mon Apr 09, 2007 6:56 pm ] |
| Post subject: | |
Dang, the day after I implement this in my source, someone remakes a tut for it |
|
| Author: | Reece [ Mon Apr 09, 2007 8:18 pm ] |
| Post subject: | |
Me and funky was talking about this on TS. Personally this is a silly thing to do (unless you made it always on top like funky suggested) Have you ever mapped with the map editor outside the client? it's fucking hard. Imo, just my opinion. |
|
| Author: | Boo [ Mon Apr 09, 2007 9:41 pm ] |
| Post subject: | |
its not outside client, it just loads an new form isntead of an picture box >.> |
|
| Author: | Robin [ Mon Apr 09, 2007 9:43 pm ] |
| Post subject: | |
http://www.animerealm.co.uk/uploads/tutorials/Temporary_Archive/Admin%20Panel%20Tut.html |
|
| Author: | Boo [ Mon Apr 09, 2007 9:47 pm ] |
| Post subject: | |
what is that for? |
|
| Author: | JokeofWeek [ Mon Apr 09, 2007 10:06 pm ] |
| Post subject: | |
Boo wrote: what is that for?
It's for making an admin panel, even though that has nothing to do with the map editor out in it's own form. |
|
| Author: | Reece [ Mon Apr 09, 2007 10:08 pm ] |
| Post subject: | |
Boo wrote: its not outside client, it just loads an new form isntead of an picture box >.>
I know what it does. I'm just saying its much harder for mappers having the map editor on the outside. |
|
| Author: | Boo [ Mon Apr 09, 2007 10:12 pm ] |
| Post subject: | |
i guess it sorta gets in way but then u can expand it |
|
| Author: | Robin [ Tue Apr 10, 2007 1:18 am ] |
| Post subject: | |
Sorry, firefox crashed and I didn't re-read my post before I Restored my session and pressed post. I was just saying what would be a nice addition, instead of having everything pop up everywhere, is if you have an admin panel, have the mapeditor picturebox in the same frame and load over everything else when it is called. So one big "Admin" panel rather than lots of half-arsed spin-offs. |
|
| Author: | Boo [ Tue Apr 10, 2007 2:10 am ] |
| Post subject: | |
hmm that just gave me an idea. I should put all the frm editors in the admin panel and just have it open in a blank spot |
|
| Author: | Boo [ Tue Apr 10, 2007 2:28 am ] |
| Post subject: | |
found a bug in tut, in... Code: Public Sub EditorInit()
frmMapEditor.Visible = True With frmMapEditor.Visible = True It highlights 'With' for Quote: With object must be user-defined type, Object, or Varient
Any idea? |
|
| Author: | Robin [ Tue Apr 10, 2007 2:34 am ] |
| Post subject: | |
Boo wrote: found a bug in tut, in... Code: Public Sub EditorInit() frmMapEditor.Visible = True With frmMapEditor.Visible = True It highlights 'With' for Quote: With object must be user-defined type, Object, or Varient Any idea? :) Oh dead God you seriously are retarded. You could split that up, and change it to Code: With frmMapEditor .Visible = True end with Or just delete the with Code: frmMapEditor.visible = true
|
|
| Author: | Boo [ Tue Apr 10, 2007 2:41 am ] |
| Post subject: | |
thats what i did, i was just making sure lol xD |
|
| Author: | Styre [ Tue Apr 10, 2007 2:17 pm ] |
| Post subject: | |
Oops did that wrong it the tut ,, I'll change it |
|
| Author: | funkynut [ Tue Apr 10, 2007 3:25 pm ] |
| Post subject: | |
Yep, maybe should try expand it with code to make it always stay hovering over the main window or whatever, because having it in a separate windows is annoying, when you select something, draw it on the main window, then have to search for the side window again to change |
|
| Author: | Robin [ Tue Apr 10, 2007 4:03 pm ] |
| Post subject: | |
funkynut wrote: Yep, maybe should try expand it with code to make it always stay hovering over the main window or whatever, because having it in a separate windows is annoying, when you select something, draw it on the main window, then have to search for the side window again to change
I think there's a property to do that. |
|
| Author: | Rian [ Tue Apr 10, 2007 4:42 pm ] |
| Post subject: | |
Having the frmMapEditor on top is a must, it does get very annoying. My client is fitted perfectly for an 800x600 screen though, so unless your resolution is actually 800x600 (and I doubt many people still have screens that small) the frmMirage and frmMapEditor fit neatly beside each other. |
|
| Author: | funkynut [ Tue Apr 10, 2007 6:14 pm ] |
| Post subject: | |
Well I know when you open a window, you can set the window to have priority over the other by using vbmodal, but It doesn't allow you to use the window its staying on top of. You could also use vbmodalless or something, but I think that just resets it to standard. I do have an edited module from planetsourcecode that does it |
|
| Author: | Styre [ Tue Apr 10, 2007 7:23 pm ] |
| Post subject: | |
You cou;d also move it to the side of the window if you don't want to search :S And if you don't think it's handy then don't use it. No offense, I made it for poeple who wanted it, people like me |
|
| Author: | funkynut [ Tue Apr 10, 2007 9:41 pm ] |
| Post subject: | |
I'm not saying its useless, just suggesting its annoying for admin with low res screens, so maybe should add the ability to hook it so it always stays above main screen but in its own window.. |
|
| Author: | Styre [ Thu Apr 12, 2007 8:28 pm ] |
| Post subject: | |
d'you think someone has a res lower then 800*600 these days? |
|
| Author: | Reece [ Thu Apr 12, 2007 8:59 pm ] |
| Post subject: | |
People who run text based games usually do |
|
| Author: | Styre [ Thu Apr 12, 2007 9:02 pm ] |
| Post subject: | |
The text based game i play has a screen res, req. of 1024*sumthing |
|
| Author: | funkynut [ Thu Apr 12, 2007 11:30 pm ] |
| Post subject: | |
Do you think anyone who plays (no offence) crappy ms games, would have a computer good enough, worthwhile enough to have higher res? (perhaps its their parents computer, perhaps they have old monitor, perhaps their gfx card sucks, 100's of possibility's) And what if they maximise the game? Then it covers the whole screen, and a lot of people do that... |
|
| Page 1 of 3 | All times are UTC |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|