Mirage Source
Automation Error... - Printable Version

+- Mirage Source (https://mirage-engine.uk/forums)
+-- Forum: Mirage Source (Nostalgia) (https://mirage-engine.uk/forums/forumdisplay.php?fid=61)
+--- Forum: Archive (2006-2011) (https://mirage-engine.uk/forums/forumdisplay.php?fid=18)
+---- Forum: General (https://mirage-engine.uk/forums/forumdisplay.php?fid=17)
+---- Thread: Automation Error... (/showthread.php?tid=2545)



Automation Error... - Nean - 01-02-2009

Trying to render the guild name over players head, and it doesn't seem to want to work.

[Image: Error.jpg]

Code:
TexthDC = DDS_BackBuffer.GetDC ' Lock the backbuffer so we can draw text and names

Code:
For i = 1 To PlayersOnMapHighIndex
            Call DrawPlayerGuild(PlayersOnMap(i))
        Next

Code:
Sub DrawPlayerGuild(ByVal Index As Long)
Dim TextX As Long
Dim TextY As Long
Dim Color As Long
    
    ' Check guild rank level to determine color
    If GetPlayerPK(Index) = NO Then
        Select Case Player(Index).GuildRank
            Case 0
                Color = QBColor(Brown)
            Case 1
                Color = QBColor(DarkGrey)
            Case 2
                Color = QBColor(Cyan)
            Case 3
                Color = QBColor(Blue)
            Case 4
                Color = QBColor(Pink)
        End Select
    Else
        Color = QBColor(BrightRed)
    End If

    ' Determine location for text
    TextX = GetPlayerX(Index) * PIC_X + Player(Index).XOffset + (PIC_X \ 2) - ((Len(GetPlayerName(Index)) / 2) * 8)
    TextY = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - (PIC_Y \ 2) - 2
    
    ' Draw name
    Call DrawText(TexthDC, TextX, TextY, GetPlayerGuild(Index), Color)
End Sub



Re: Automation Error... - Robin - 01-02-2009

Make sure you unlock the DC after you've rendered the text.


Re: Automation Error... - Nean - 01-02-2009

I've tried to put
Code:
' Release DC
    Call DDS_BackBuffer.ReleaseDC(TexthDC)

Everywhere. Sad

Doesn't work


Re: Automation Error... - Robin - 01-02-2009

Rather than making an entire new loop, just put;

Code:
Call DrawPlayerGuild(PlayersOnMap(i))

Under the call for DrawPlayerName.

Then, tell me what line it errors on.

Remove any extra DC locks or unlocks you added.


Re: Automation Error... - Nean - 01-02-2009

It errors on the same line.

Code:
ErrorHandle:
    
    If Err.Number = 91 Then
        Sleep 100
        Call ReInitDD
        Err.Clear
        Exit Sub
    End If
    
    TexthDC = DDS_BackBuffer.GetDC ' Lock the backbuffer so we can draw text and names
    
    Call DrawText(TexthDC, 10, 15, "Error Rendering Graphics - Unhandled Error", QBColor(BrightRed))
    Call DrawText(TexthDC, 10, 28, "Error Number : " & Err.Number & " - " & Err.Description, QBColor(BrightCyan))

    GoTo Continue
            
End Sub

On
Code:
TexthDC = DDS_BackBuffer.GetDC ' Lock the backbuffer so we can draw text and names



Re: Automation Error... - Nean - 02-02-2009

Lea Wrote:is it already locked?

I believe so.


Re: Automation Error... - Robin - 02-02-2009

Robin Wrote:Rather than making an entire new loop, just put;

Code:
Call DrawPlayerGuild(PlayersOnMap(i))

Under the call for DrawPlayerName.

Then, tell me what line it errors on.

Remove any extra DC locks or unlocks you added.



Re: Automation Error... - Nean - 02-02-2009

Robin Wrote:
Robin Wrote:Rather than making an entire new loop, just put;

Code:
Call DrawPlayerGuild(PlayersOnMap(i))

Under the call for DrawPlayerName.

Then, tell me what line it errors on.

Remove any extra DC locks or unlocks you added.

I did. There are only two DC Unlocks in my whole project. And three locks.... I'm assuming that's it?


Re: Automation Error... - Nean - 02-02-2009

I set an unlock bfore a new lock and I get this:
Code:
Call DrawText(TexthDC, 10, 15, "Error Rendering Graphics - Unhandled Error", QBColor(BrightRed))
    Call DrawText(TexthDC, 10, 28, "Error Number : " & Err.Number & " - " & Err.Description, QBColor(BrightCyan))
(They appear on the screen)


Re: Automation Error... - Robin - 02-02-2009

Nean Wrote:I set an unlock bfore a new lock and I get this:
Code:
Call DrawText(TexthDC, 10, 15, "Error Rendering Graphics - Unhandled Error", QBColor(BrightRed))
    Call DrawText(TexthDC, 10, 28, "Error Number : " & Err.Number & " - " & Err.Description, QBColor(BrightCyan))
(They appear on the screen)

STOP MAKING NEW LOCKS AND UNLOCKS


Re: Automation Error... - Nean - 02-02-2009

Robin Wrote:
Nean Wrote:I set an unlock bfore a new lock and I get this:
Code:
Call DrawText(TexthDC, 10, 15, "Error Rendering Graphics - Unhandled Error", QBColor(BrightRed))
    Call DrawText(TexthDC, 10, 28, "Error Number : " & Err.Number & " - " & Err.Description, QBColor(BrightCyan))
(They appear on the screen)

STOP MAKING NEW LOCKS AND UNLOCKS

Awww Sad

Okay. I stopped.

I'll probably try this from a new source. xDD


Re: Automation Error... - Nean - 03-02-2009

Alright so I got it to work... Sorta. No errors, but this is what I get when it draws my "guild"

[Image: mahguildiszero.jpg]

Code:
If GetPlayerGuild(i)  vbNullString Then
            For i = 1 To PlayersOnMapHighIndex
                Call DrawPlayerGuild(PlayersOnMap(i))
            Next i
        End If

Code:
Public Sub DrawPlayerGuild(ByVal Index As Long)
Dim TextX As Long
Dim TextY As Long
Dim Color As Long
    
    ' Check access level to determine color
    If GetPlayerPK(Index) = NO Then
        Select Case GetPlayerAccess(Index)
            Case 0
                Color = QBColor(Brown)
            Case 1
                Color = QBColor(DarkGrey)
            Case 2
                Color = QBColor(Cyan)
            Case 3
                Color = QBColor(Blue)
            Case 4
                Color = QBColor(Pink)
        End Select
    Else
        Color = QBColor(BrightRed)
    End If

    ' Determine location for text
    TextX = GetPlayerX(Index) * PIC_X + Player(Index).XOffset + (PIC_X \ 2) - ((Len(GetPlayerGuild(Index)) / 2) * 8)
    TextY = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - (PIC_Y \ 2) - 16
    
    ' Draw name
    Call DrawText(TexthDC, TextX, TextY, GetPlayerGuild(Index), Color)
End Sub



Re: Automation Error... - Matt - 03-02-2009

The packet isn't parsing the guild.


Re: Automation Error... - Nean - 03-02-2009

Matt Wrote:The packet isn't parsing the guild.


How do I do that? I thought I was doing it right, seeing as how i can do /info and it shows me my guild. :\


Re: Automation Error... - Matt - 03-02-2009

In every instance of the playerdata packet, you need to add "getplayerguild(index)" to the end of it, then make the client receive it.


Re: Automation Error... - Nean - 03-02-2009

Matt Wrote:In every instance of the playerdata packet, you need to add "getplayerguild(index)" to the end of it, then make the client receive it.

Much appreciated. I should've figured that one out.


Re: Automation Error... - Robin - 03-02-2009

Glad you got it working, but next time I tell you to do something, do it xD

So damn aggrivating.


Re: Automation Error... - Nean - 03-02-2009

Robin Wrote:Glad you got it working, but next time I tell you to do something, do it xD

So damn aggrivating.

No, I was. I honestly was. I'm not that stupid. It was just that I didn't change the write thing in the DrawPlayerGuild, so it was trying to draw two names, and that's what was screwing things up. It was when I did what you said, and it didn't work, that I started making more locks/unlocks. Big Grin


Re: Automation Error... - Matt - 03-02-2009

Feel free to add me on GTalk if you need help in the future, Nean. It's easier to help you over a messenger, than to sift through all the insults on these forums.


Re: Automation Error... - Robin - 03-02-2009

Matt Wrote:Feel free to add me on GTalk if you need help in the future, Nean. It's easier to help you over a messenger, than to sift through all the insults on these forums.

Yeah, go ahead and add me too.

Matt smells.


Re: Automation Error... - Matt - 03-02-2009

It's the weed and alcohol. I can't help it.


Re: Automation Error... - Nean - 04-02-2009

Alright, I'll add you guys. =]