Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[EO] Paperdolling bug…?


viciousdead
 Share

Recommended Posts

![](http://www.freemmorpgmaker.com/files/imagehost/pics/5d1055a4d6ab2fc09a490997aa404cc7.PNG)
Umm how do I change the order of the paperdoll in the source?
Armor, Helmet, and so on all cover weapons… It doesn't look realistic.  :icon_meditation:
Link to comment
Share on other sites

@Ballie:

> Not a bug. Robin's gone over this one quite a few times in the main topic.
>
> To change the blitting order, you'd have to find the paperdoll loop, then manually swap the order in which equipment is paperdolled.

Shoot, this is what I get for not reading… Thanks Ballie! :)

Question though, how do I find the paperdoll loop?
Link to comment
Share on other sites

@Robin:

> BltPaperdoll…
>
> In the next version I'll have it so you can easily edit the render order in an awesomely dynamic way. ;D
>
> See? Even I buckle under stupid amounts of people requesting something. xD

Lol, rofl I'm an idiot. ;D
Go Robin! :)

Question, umm is this the sub I change?
```
Public Sub BltPaperdoll(ByVal x2 As Long, ByVal y2 As Long, ByVal Sprite As Long, ByVal anim As Long, ByVal spriteleft As Long)
    Dim rec As DxVBLib.RECT
    Dim X As Long, Y As Long
    Dim width As Long, height As Long

    If Sprite < 1 Or Sprite > NumPaperdolls Then Exit Sub

    If DDS_Paperdoll(Sprite) Is Nothing Then
        Call InitDDSurf("Paperdolls\" & Sprite, DDSD_Paperdoll(Sprite), DDS_Paperdoll(Sprite))
    End If

    With rec
        .Top = 0
        .Bottom = DDSD_Paperdoll(Sprite).lHeight
        .Left = (spriteleft * 3 + anim) * (DDSD_Paperdoll(Sprite).lWidth / 12)
        .Right = .Left + (DDSD_Paperdoll(Sprite).lWidth / 12)
    End With

    ' clipping
    X = ConvertMapX(x2)
    Y = ConvertMapY(y2)
    width = (rec.Right - rec.Left)
    height = (rec.Bottom - rec.Top)

    ' Clip to screen
    If Y < 0 Then
        With rec
            .Top = .Top - Y
        End With
        Y = 0
    End If

    If X < 0 Then
        With rec
            .Left = .Left - X
        End With
        X = 0
    End If

    If Y + height > DDSD_BackBuffer.lHeight Then
        rec.Bottom = rec.Bottom - (Y + height - DDSD_BackBuffer.lHeight)
    End If

    If X + width > DDSD_BackBuffer.lWidth Then
        rec.Right = rec.Right - (X + width - DDSD_BackBuffer.lWidth)
    End If
    ' /clipping

    Call Engine_BltFast(X, Y, DDS_Paperdoll(Sprite), rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End Sub
```
Sorta lost now… lul
Link to comment
Share on other sites

@Robin:

> No. BltPaperdoll's call in BltPlayer.

OK I'M HAVING PROBLEMS AGAIN…

I found what your talking about, but when I change the 1 to 2 it makes weapons unseeable, I tried several different changes to the subs, I can't figure it out, I fail at vb6.. :(

here's what I was changing and messing with...:

This:
```
    ' check for paperdolling
    For i = 1 To Equipment.Equipment_Count - 1
        If GetPlayerEquipment(Index, i) > 0 Then
            If Item(GetPlayerEquipment(Index, i)).Paperdoll > 0 Then
                Call BltPaperdoll(X, Y, Item(GetPlayerEquipment(Index, i)).Paperdoll, anim, spriteleft)
            End If
        End If
    Next
End Sub
```
This:
```
    For i = 1 To Equipment.Equipment_Count - 1
        itemnum = GetPlayerEquipment(MyIndex, i)
```
And a couple other things…
You told me to look under bltplayer at Call BltPaperdoll(X, Y, Item(GetPlayerEquipment(Index, i)).Paperdoll, anim, spriteleft) But I don't get it..
Link to comment
Share on other sites

The issue is the loop. Instead of going through one by one, copy and paste that 4 times, in the order that you want, replacing I with a value, like so:

```
        If GetPlayerEquipment(Index, 4) > 0 Then
            If Item(GetPlayerEquipment(Index, 4)).Paperdoll > 0 Then
                Call BltPaperdoll(X, Y, Item(GetPlayerEquipment(Index, 4)).Paperdoll, anim, spriteleft)
            End If
        End If

        If GetPlayerEquipment(Index, 1) > 0 Then
            If Item(GetPlayerEquipment(Index, 1)).Paperdoll > 0 Then
                Call BltPaperdoll(X, Y, Item(GetPlayerEquipment(Index, 1)).Paperdoll, anim, spriteleft)
            End If
        End If
```
That would blit shield first, then weapon. Just copy and paste your way through the 4 slots, ordering them however you want. The equipment numbers are in an enumeration in modEnumerations:

```
Public Enum Equipment
    Weapon = 1
    Armor
    Helmet
    Shield
```
Oh, and bumping is not okay. If others are needlessly bumping their topics, report them.
Link to comment
Share on other sites

@Ballie:

> The issue is the loop. Instead of going through one by one, copy and paste that 4 times, in the order that you want, replacing I with a value, like so:
>
> ```
>         If GetPlayerEquipment(Index, 4) > 0 Then
>             If Item(GetPlayerEquipment(Index, 4)).Paperdoll > 0 Then
>                 Call BltPaperdoll(X, Y, Item(GetPlayerEquipment(Index, 4)).Paperdoll, anim, spriteleft)
>             End If
>         End If
>
>         If GetPlayerEquipment(Index, 1) > 0 Then
>             If Item(GetPlayerEquipment(Index, 1)).Paperdoll > 0 Then
>                 Call BltPaperdoll(X, Y, Item(GetPlayerEquipment(Index, 1)).Paperdoll, anim, spriteleft)
>             End If
>         End If
> ```
> That would blit shield first, then weapon. Just copy and paste your way through the 4 slots, ordering them however you want. The equipment numbers are in an enumeration in modEnumerations:
>
> ```
> Public Enum Equipment
>     Weapon = 1
>     Armor
>     Helmet
>     Shield
> ```
> Oh, and bumping is not okay. If others are needlessly bumping their topics, report them.

Sorry Ballie, I didn't mean to bump, I saw two threads before, one had about 3 bumps… I really didn't know. Thanks for the help with the paperdolling! :)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...