Print Page | Close Window

Support 32x64 sprites

Printed From: Mirage Source
Category: Tutorials
Forum Name: Submitted Tutorials
Forum Discription: Tutorial submissions for MSE are posted here, waiting for approval
URL: http://ms.shannaracorp.com/backup-forums/forum_posts.asp?TID=116
Printed Date: 20 December 2006 at 6:03pm
Software Version: Web Wiz Forums 8.01 - http://www.webwizforums.com


Topic: Support 32x64 sprites
Posted By: Sync
Subject: Support 32x64 sprites
Date Posted: 11 February 2006 at 2:13pm
Originally posted by Misunderstood

This has been updated to work with the new MSE

Ok Find the for next loop which calls bltPlayer
' Blit out players
        For i = 1 To MAX_PLAYERS
             If IsPlaying(i) And GetPlayerMap(i) = GetPlayerMap(MyIndex) Then
                 Call BltPlayer(i)
             End If
        Next i


Now copy it, we need to make another sub to blt the top of the player, this way it will be above other players bottoms.
We need to make a new loop instead of adding just another sub in the first one, because otherwise if there was a player ontop of your player, which was bltted after you in the loop, it will show ontop of your head, and thats not cool.

So make it look like this:
' Blit out players top
        For i = 1 To MAX_PLAYERS
             If IsPlaying(i) And GetPlayerMap(i) = GetPlayerMap(MyIndex) Then
                 Call BltPlayerTop(i)
             End If
        Next i


(it goes right after the other loop if you hadnt figured that out)

Now we need to make the sub.

Copy the bltPlayer Sub
Paste the bltPlayer Sub right below there
Rename it bltPlayerTop

Find this if statement in the BltPlayerTop Sub, its something like:
If y < 0 then
    y = 0
    With Rec
        .top = .top + (Y * -1)
    End With
end if

Change it to this:
y = y - 32
    If y < 0 And y > -32 Then
        With Rec
             .top = .top - y
             y = 0
        End With   
    End If

This blts it 1 tile higher then normal.

Now go to the BltPlayer sub
Find:
.top = GetPlayerSprite(Index) * PIC_Y

Make it:
.Top = GetPlayerSprite(Index) * PIC_Y + PIC_Y

This takes one block down from the top of the sprite

Oh yea, in both of the subs, add a * 2 after the getplayersprite(index) in the rec.top line, this make it so each block of 2 is thought of as 1 sprite.

you dont really NEED it though.

Oh, and for the names...
Go to the BltPlayerName sub and find the texty = whatever and change it to:
TextY = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset + 28 '(or-4 + pic_y)

Or if you want the name to show up above the player(the one there ^ makes it below) make it this:
TextY = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - 50 '(or-4 -  pic_y - pic_y/2)


Now you will probably have to change other things, like for the npcs if you want them like that too. Or whatever.
If I missed something in here let me know.



Print Page | Close Window

Bulletin Board Software by Web Wiz Forums version 8.01 - http://www.webwizforums.com
Copyright ©2001-2006 Web Wiz Guide - http://www.webwizguide.info