MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

Participe do fórum, é rápido e fácil

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Pedido] Barrinha de HP nos players. Alguem tem?

3 participantes

Ir para baixo

[Pedido] Barrinha de HP nos players. Alguem tem? Empty [Pedido] Barrinha de HP nos players. Alguem tem?

Mensagem por Sih Sáb 27 Nov 2010, 16:12

Como o titulo do topico ja diz. Preciso do codigo para colocar as barrinha de hp no player. Eu vi o de npcs, mais ñ vi o de players.

Grato.
avatar
Sih
Membro Junior
Membro Junior

Mensagens : 62

Ir para o topo Ir para baixo

[Pedido] Barrinha de HP nos players. Alguem tem? Empty Tutorial Mini Barra De Hp e Mp Para Player

Mensagem por Ian Qua 15 Dez 2010, 23:11

Responde a Resposta do amigo acima

Server

modServerTCP -> Sub SendVital

agora troque toda a Sub SendVital por essa

Código:
Sub SendVital(ByVal Index As Long, ByVal Vital As Vitals)
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer

    Select Case Vital
        Case HP
            Buffer.WriteLong SPlayerHp
            Buffer.WriteLong Index
            Buffer.WriteLong GetPlayerMaxVital(Index, Vitals.HP)
            Buffer.WriteLong GetPlayerVital(Index, Vitals.HP)
        Case MP
            Buffer.WriteLong SPlayerMp
            Buffer.WriteLong Index
            Buffer.WriteLong GetPlayerMaxVital(Index, Vitals.MP)
            Buffer.WriteLong GetPlayerVital(Index, Vitals.MP)
        Case SP
            Buffer.WriteLong SPlayerSp
            Buffer.WriteLong GetPlayerMaxVital(Index, Vitals.SP)
            Buffer.WriteLong GetPlayerVital(Index, Vitals.SP)
    End Select
       
    If Vital <> SP Then
        Call SendDataToMap(GetPlayerMap(Index), Buffer.ToArray())
    Else
        Call SendDataTo(Index, Buffer.ToArray())
    End If
       
    Set Buffer = Nothing
End Sub

Agora Vamos

modPlayer -> Sub PlayerWarp

agora troque toda Sub PlayerWarp Por essa

Código:
Sub PlayerWarp(ByVal Index As Long, ByVal MapNum As Long, ByVal x As Long, ByVal y As Long)
    Dim OldMap As Long
    Dim I As Long
    Dim Buffer As clsBuffer

    ' Check for subscript out of range
    If IsPlaying(Index) = False Or MapNum <= 0 Or MapNum > MAX_MAPS Then
        Exit Sub
    End If

    ' Check if you are out of bounds
    If x > Map(MapNum).MaxX Then x = Map(MapNum).MaxX
    If y > Map(MapNum).MaxY Then y = Map(MapNum).MaxY
    TempPlayer(Index).Target = 0
    TempPlayer(Index).TargetType = TARGET_TYPE_NONE

    ' Save old map to send erase player data to
    OldMap = GetPlayerMap(Index)

    If OldMap <> MapNum Then
        Call SendLeaveMap(Index, OldMap)
    End If

    Call SetPlayerMap(Index, MapNum)
    Call SetPlayerX(Index, x)
    Call SetPlayerY(Index, y)
   
    ' send equipment of all people on new map
    If GetTotalMapPlayers(MapNum) > 0 Then
        For I = 1 To MAX_PLAYERS
            If IsPlaying(I) Then
                If GetPlayerMap(I) = MapNum Then
                    SendMapEquipmentTo I, Index
                    ' Send HP and MP of players on new map
                    SendVital I, Vitals.HP
                    SendVital I, Vitals.MP
                End If
            End If
        Next
    End If

    ' Now we check if there were any players left on the map the player just left, and if not stop processing npcs
    If GetTotalMapPlayers(OldMap) = 0 Then
        PlayersOnMap(OldMap) = NO

        ' Regenerate all NPCs' health
        For I = 1 To MAX_MAP_NPCS

            If MapNpc(OldMap).Npc(I).Num > 0 Then
                MapNpc(OldMap).Npc(I).Vital(Vitals.HP) = GetNpcMaxVital(MapNpc(OldMap).Npc(I).Num, Vitals.HP)
            End If

        Next

    End If

    ' Sets it so we know to process npcs on the map
    PlayersOnMap(MapNum) = YES
    TempPlayer(Index).GettingMap = YES
    Set Buffer = New clsBuffer
    Buffer.WriteLong SCheckForMap
    Buffer.WriteLong MapNum
    Buffer.WriteLong Map(MapNum).Revision
    SendDataTo Index, Buffer.ToArray()
    Set Buffer = Nothing
End Sub

Pronto Acabamos o Servidor Agora

Client

modDirectDraw7 -> Sub Render_Graphics

Procure na Sub Render_Graphics

Código:
' Players
            For I = 1 To MAX_PLAYERS
                If IsPlaying(I) And GetPlayerMap(I) = GetPlayerMap(MyIndex) Then
                    If Player(I).Y = Y Then
                        Call BltPlayer(I)
                    End If
                End If
            Next

agora troque por essa

Código:
' Players
            For I = 1 To MAX_PLAYERS
                If IsPlaying(I) And GetPlayerMap(I) = GetPlayerMap(MyIndex) Then
                  ' Player mini HP and MP bars
                    Call BltPlayerHP(I)
                    Call BltPlayerMP(I)
                    If Player(I).Y = Y Then
                        Call BltPlayer(I)
                    End If
                End If
            Next

Procure a Sub BltPlayer e Coleque issu Encima Dela

Código:
Public Sub BltPlayerHP(ByVal Index As Long)
    Dim X As Long, Y As Long, Sprite As Long
   
    X = GetPlayerX(Index) * PIC_X + Player(Index).XOffset
   
    Sprite = GetPlayerSprite(Index)
   
    If Sprite < 1 Or Sprite > NumCharacters Then
        Y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - 25
    Else
        Y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - (DDSD_Character(Sprite).lHeight) + 7
    End If
   
    ' Draw the outside box
    Call DDS_BackBuffer.SetFillColor(RGB(0, 0, 0))
    Call DDS_BackBuffer.DrawBox(ConvertMapX(X), ConvertMapY(Y), ConvertMapX(X + 32), ConvertMapY(Y + 4))
   
    ' Draw the HP bar
    Call DDS_BackBuffer.SetFillColor(RGB(0, 255, 0))
    Call DDS_BackBuffer.DrawBox(ConvertMapX(X), ConvertMapY(Y), ConvertMapX(X + Int(((GetPlayerVital(Index, Vitals.HP) / 32) / (GetPlayerMaxVital(Index, Vitals.HP) / 32)) * 32)), ConvertMapY(Y + 4))
End Sub

Public Sub BltPlayerMP(ByVal Index As Long)
    Dim X As Long, Y As Long, Sprite As Long
   
    X = GetPlayerX(Index) * PIC_X + Player(Index).XOffset
   
    Sprite = GetPlayerSprite(Index)
   
    If Sprite < 1 Or Sprite > NumCharacters Then
        Y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - 20
    Else
        Y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - (DDSD_Character(Sprite).lHeight) + 12
    End If
   
    ' Draw the outside box
    Call DDS_BackBuffer.SetFillColor(RGB(0, 0, 0))
    Call DDS_BackBuffer.DrawBox(ConvertMapX(X), ConvertMapY(Y), ConvertMapX(X + 32), ConvertMapY(Y + 4))
   
    ' Draw the HP bar
    Call DDS_BackBuffer.SetFillColor(RGB(148, 0, 211))
    Call DDS_BackBuffer.DrawBox(ConvertMapX(X), ConvertMapY(Y), ConvertMapX(X + Int(((GetPlayerVital(Index, Vitals.MP) / 32) / (GetPlayerMaxVital(Index, Vitals.MP) / 32)) * 32)), ConvertMapY(Y + 4))
End Sub

modHandleData -> Private Sub HandlePlayerHp

Troque Toda a Sub HandlePlayerHp Por issu

Código:
Private Sub HandlePlayerHp(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim Buffer As clsBuffer
    Dim I As Long
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
   
    I = Buffer.ReadLong
    Player(I).MaxHP = Buffer.ReadLong
    Call SetPlayerVital(I, Vitals.HP, Buffer.ReadLong)

    If GetPlayerMaxVital(I, Vitals.HP) > 0 And I = MyIndex Then
        'frmMainGame.lblHP.Caption = Int(GetPlayerVital(I, Vitals.HP) / GetPlayerMaxVital(I, Vitals.HP) * 100) & "%"
        frmMainGame.lblHP.Caption = GetPlayerVital(I, Vitals.HP) & "/" & GetPlayerMaxVital(I, Vitals.HP)
        ' hp bar
        frmMainGame.imgHPBar.Width = Int(((GetPlayerVital(I, Vitals.HP) / 169) / (GetPlayerMaxVital(I, Vitals.HP) / 169)) * 169)
    End If
End Sub

Troque essa outra Sub HandlePlayerMp Por essa


Código:
Private Sub HandlePlayerMp(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim Buffer As clsBuffer
    Dim I As Long
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
   
    I = Buffer.ReadLong
    Player(I).MaxMP = Buffer.ReadLong
    Call SetPlayerVital(I, Vitals.MP, Buffer.ReadLong)

    If GetPlayerMaxVital(I, Vitals.MP) > 0 And I = MyIndex Then
        'frmMainGame.lblMP.Caption = Int(GetPlayerVital(I, Vitals.MP) / GetPlayerMaxVital(I, Vitals.MP) * 100) & "%"
        frmMainGame.lblMP.Caption = GetPlayerVital(I, Vitals.MP) & "/" & GetPlayerMaxVital(I, Vitals.MP)
        ' mp bar
        frmMainGame.imgMPBar.Width = Int(((GetPlayerVital(I, Vitals.MP) / 169) / (GetPlayerMaxVital(I, Vitals.MP) / 169)) * 169)
    End If
End Sub

Pronta Acabou Question não ainda não Acabou Voce Pode Personalizar Sua Barra Como Question Asim Olha

Primeiramente Vamos novamente No Servidor>> modHandleData -> Private Sub HandlePlayerHp

Procure Por
Código:

' Draw the HP bar
    Call DDS_BackBuffer.SetFillColor(RGB(0, 255, 0))
    Call DDS_BackBuffer.DrawBox(ConvertMapX(X), ConvertMapY(Y), ConvertMapX(X + Int(((GetPlayerVital(Index, Vitals.HP) / 32) / (GetPlayerMaxVital(Index, Vitals.HP) / 32)) * 32)), ConvertMapY(Y + 4))

e troque por

Código:
Dim HPPercent As Integer
    HPPercent = Int(((GetPlayerVital(Index, Vitals.HP) / 32) / (GetPlayerMaxVital(Index, Vitals.HP) / 32)) * 32)
    'Checks to see if the amount of hp you have is greater than (>) 75%. (0.75 * 32) = 24. 32 is the width of the hp bar.
    If HPPercent > 24 Then
        Call DDS_BackBuffer.SetFillColor(RGB(0, 255, 0)) 'Changes the HP bar's color to GREEN. 0 Red, 255 Green, 0 Blue.
       
        'Check if the HP you have is greater than 50%, but if it's greater than 75% too, it will go to green in the code above.
        '0.50 * 32 = 16. 0.50 represents the % we want, 50% and 32 represents the width of the hp bar.
    ElseIf HPPercent > 16 Then
        Call DDS_BackBuffer.SetFillColor(QBColor(Yellow)) 'Changes the HP Bar's color to YELLOW. QBColor(Yellow) returns yellow.
       
        'Check if the HP you have is less than 50%.
        'Anything less than 50% (16 pixels) is red.
    ElseIf HPPercent < 16 Then
        Call DDS_BackBuffer.SetFillColor(RGB(255, 0, 0)) ' Changes the HP bar's color to RED. RGB value of 255 red, 0 green, 0 blue.
    End If
    'This just draws the filling of the HP bar.
    Call DDS_BackBuffer.DrawBox(ConvertMapX(X), ConvertMapY(Y), ConvertMapX(X + Int(((GetPlayerVital(Index, Vitals.HP) / 32) / (GetPlayerMaxVital(Index, Vitals.HP) / 32)) * 32)), ConvertMapY(Y + 4))

Resultado Final

>75% HP(Verde):
[Pedido] Barrinha de HP nos players. Alguem tem? Baa2ae56cf9357624803652a44463739

>50% HP <75% HP(Amarelo):
[Pedido] Barrinha de HP nos players. Alguem tem? 62a6fd60184b3f4ad56ca0a4fab9f96a

<50% HP(Vermelho):
[Pedido] Barrinha de HP nos players. Alguem tem? 3fd3d4b869fdaa47b3efd9d730034dee

Agora Sim Acabou

Creditos
Kimimaru : Desenvolveu o Sistema
Novur : Pela Customisação
Eu Magnata: Por Traduzir Tudo ^^
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

[Pedido] Barrinha de HP nos players. Alguem tem? Empty Re: [Pedido] Barrinha de HP nos players. Alguem tem?

Mensagem por Lucas Roberto Sex 17 Dez 2010, 14:10

Oloco nem presisava desse Pedido pois era so dar uma olhada no senção de tutorias que voce ia ver que ja tem ^^
Lucas Roberto
Lucas Roberto
Membro Veterano
Membro Veterano

Mensagens : 1794

http://universogamesmmo.forumeiros.com/forum

Ir para o topo Ir para baixo

[Pedido] Barrinha de HP nos players. Alguem tem? Empty Re: [Pedido] Barrinha de HP nos players. Alguem tem?

Mensagem por Ian Sex 17 Dez 2010, 22:26

Agora ja Postei mallz =/
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

[Pedido] Barrinha de HP nos players. Alguem tem? Empty Re: [Pedido] Barrinha de HP nos players. Alguem tem?

Mensagem por Sih Ter 28 Dez 2010, 18:52

Assunto resolvido adm tranca o post e move ele.
avatar
Sih
Membro Junior
Membro Junior

Mensagens : 62

Ir para o topo Ir para baixo

[Pedido] Barrinha de HP nos players. Alguem tem? Empty Re: [Pedido] Barrinha de HP nos players. Alguem tem?

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos