[Pedido] - Mostrar HP de outro player Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Pedido] - Mostrar HP de outro player

2 participantes

Ir para baixo

[Pedido] - Mostrar HP de outro player Empty [Pedido] - Mostrar HP de outro player

Mensagem por Feh Seg Abr 30, 2018 8:15 pm

Iae Galera
Como eu faço para poder colocar para mostrar o hp dos outros players. pois quando entra em pvp não tem como saber se ele ta ou não morrendo.

Feh
Semi-Experiente
Semi-Experiente

Mensagens : 92
Créditos : 10

Ir para o topo Ir para baixo

[Pedido] - Mostrar HP de outro player Empty Re: [Pedido] - Mostrar HP de outro player

Mensagem por Profane ~ Seg Abr 30, 2018 11:41 pm

Ahm c;c

Vamos ver se dá certo /o/

Servidor,

Procura pela:
Código:
Sub SendVital(ByVal index As Long, ByVal Vital As Vitals)

No Fim dela tem:

Código:
SendDataTo index, Buffer.ToArray()

troca por

Código:
SendDataToMap GetPlayerMap(index), Buffer.ToArray()

Com isso o valor vai estar sendo enviado para todo o mapa.

Agora no Cliente,

Procura por..

Código:
Private Sub HandlePlayerHp(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long

Na EO 2.0 É assim:

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

    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler
   
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
    Player(MyIndex).MaxVital(Vitals.HP) = Buffer.ReadLong
    Call SetPlayerVital(MyIndex, Vitals.HP, Buffer.ReadLong)

    If GetPlayerMaxVital(MyIndex, Vitals.HP) > 0 Then
        'frmMain.lblHP.Caption = Int(GetPlayerVital(MyIndex, Vitals.HP) / GetPlayerMaxVital(MyIndex, Vitals.HP) * 100) & "%"
        frmMain.lblHP.Caption = GetPlayerVital(MyIndex, Vitals.HP) & "/" & GetPlayerMaxVital(MyIndex, Vitals.HP)
        ' hp bar
        frmMain.imgHPBar.width = ((GetPlayerVital(MyIndex, Vitals.HP) / HPBar_Width) / (GetPlayerMaxVital(MyIndex, Vitals.HP) / HPBar_Width)) * HPBar_Width
    End If

    ' Error handler
    Exit Sub
errorhandler:
    HandleError "HandlePlayerHP", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Deixe assim:

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

    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler
   
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
    Player(Index).MaxVital(Vitals.HP) = Buffer.ReadLong
    Call SetPlayerVital(Index, Vitals.HP, Buffer.ReadLong)

    If Index = MyIndex Then 'Sou eu?
        If GetPlayerMaxVital(MyIndex, Vitals.HP) > 0 Then
            'frmMain.lblHP.Caption = Int(GetPlayerVital(MyIndex, Vitals.HP) / GetPlayerMaxVital(MyIndex, Vitals.HP) * 100) & "%"
            frmMain.lblHP.Caption = GetPlayerVital(MyIndex, Vitals.HP) & "/" & GetPlayerMaxVital(MyIndex, Vitals.HP)
            ' hp bar
            frmMain.imgHPBar.width = ((GetPlayerVital(MyIndex, Vitals.HP) / HPBar_Width) / (GetPlayerMaxVital(MyIndex, Vitals.HP) / HPBar_Width)) * HPBar_Width
        End If
    End If

    ' Error handler
    Exit Sub
errorhandler:
    HandleError "HandlePlayerHP", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Se notar a parte de cima que era "MyIndex" (EU) foi trocado por Index, onde poderá recepcionar outros jogadores.. assim o cliente passaria a receber o HP atual de outros jogadores.

E ali embaixo uma verificação se Index = MyIndex, para poder fazer a movimentação das Barras.
Creio que possa mudar um pouco em outras engines.

Vamos que ainda não acabou /o/

Ainda no Cliente, procura por:

Código:
Private Sub BltBars()

Dentro dela.. vamos procurar a área de minha "barra", que é essa aqui:

Código:
' draw own health bar
    If GetPlayerVital(MyIndex, Vitals.HP) > 0 And GetPlayerVital(MyIndex, Vitals.HP) < GetPlayerMaxVital(MyIndex, Vitals.HP) Then
        ' lock to Player
        tmpX = GetPlayerX(MyIndex) * PIC_X + Player(MyIndex).XOffset + 16 - (sWidth / 2)
        tmpY = GetPlayerY(MyIndex) * PIC_X + Player(MyIndex).YOffset + 35
     
        ' calculate the width to fill
        barWidth = ((GetPlayerVital(MyIndex, Vitals.HP) / sWidth) / (GetPlayerMaxVital(MyIndex, Vitals.HP) / sWidth)) * sWidth
     
        ' draw bar background
        With sRECT
            .top = sHeight * 1 ' HP bar background
            .Left = 0
            .Right = .Left + sWidth
            .Bottom = .top + sHeight
        End With
        Engine_BltFast ConvertMapX(tmpX), ConvertMapY(tmpY), DDS_Bars, sRECT, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
     
        ' draw the bar proper
        With sRECT
            .top = 0 ' HP bar
            .Left = 0
            .Right = .Left + barWidth
            .Bottom = .top + sHeight
        End With
        Engine_BltFast ConvertMapX(tmpX), ConvertMapY(tmpY), DDS_Bars, sRECT, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
    End If

Essa área é responsável por mostrar meu HP.

Vamos Mudar isso... para isso aqui..

Código:
' draw own health bar
    For i = 1 To MAX_PLAYERS
        If GetPlayerMap(i) = GetPlayerMap(MyIndex) Then
            If GetPlayerVital(i, Vitals.HP) > 0 And GetPlayerVital(i, Vitals.HP) < GetPlayerMaxVital(i, Vitals.HP) Then
                ' lock to Player
                tmpX = GetPlayerX(i) * PIC_X + Player(i).XOffset + 16 - (sWidth / 2)
                tmpY = GetPlayerY(i) * PIC_X + Player(i).YOffset + 35
             
                ' calculate the width to fill
                barWidth = ((GetPlayerVital(i, Vitals.HP) / sWidth) / (GetPlayerMaxVital(i, Vitals.HP) / sWidth)) * sWidth
             
                ' draw bar background
                With sRECT
                    .top = sHeight * 1 ' HP bar background
                    .Left = 0
                    .Right = .Left + sWidth
                    .Bottom = .top + sHeight
                End With
                Engine_BltFast ConvertMapX(tmpX), ConvertMapY(tmpY), DDS_Bars, sRECT, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
             
                ' draw the bar proper
                With sRECT
                    .top = 0 ' HP bar
                    .Left = 0
                    .Right = .Left + barWidth
                    .Bottom = .top + sHeight
                End With
                Engine_BltFast ConvertMapX(tmpX), ConvertMapY(tmpY), DDS_Bars, sRECT, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
            End If
        End If
    End If

O For passará por todos os players que estarão no seu mapa atualizando o HP Barra (HP que fica embaixo ou em cima /o/ do Player) atualizando os valores.

Se sua engine foi dx8 vai mudar pouca coisa.. a lógica é a mesma.

Att e Bjus;

_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[Pedido] - Mostrar HP de outro player Empty Re: [Pedido] - Mostrar HP de outro player

Mensagem por Feh Ter maio 01, 2018 12:31 am

[Pedido] - Mostrar HP de outro player 10010

Infelizmente não foi. Ele acaba setando o hp do outro jogador na minha barra. tanto a que está em cima do personagem e a que está na picture la em cima junto com a mana.
observe que até a quantidade de hp fica igual

Feh
Semi-Experiente
Semi-Experiente

Mensagens : 92
Créditos : 10

Ir para o topo Ir para baixo

[Pedido] - Mostrar HP de outro player Empty Re: [Pedido] - Mostrar HP de outro player

Mensagem por Profane ~ Ter maio 01, 2018 2:27 am

Bem o sistema eu não tinha aberto para testar.

Mas ao abrir ~

#Edit - > https://imgur.com/a/Ptn49w2
Link da Img

[Pedido] - Mostrar HP de outro player 9ZtQaPB

Faltando apenas colocar o SendVitals, creio que precise apenas de ajustes ;c Mas que está chegando está ;c

Acho que precisa ajustar ai na sua dx8 /o/ ou caso sua Skywire (creio que seja skywire ai a sua) tenha algo a mais.

Não abri uma para olhar.

Pode usar a tese para dumpar o Pacote com outro nome e enviar uma atualização rotineira também.. ou mesmo apenas local em relação ao cara que você feriu. 

Basta usar a mesma visão do NPC Atacando Player que é enviado o PlayerVital, fazer isso no PlayerAtacandoPlayer o/.

#Edit² - Amanha vejo de fazer a edição numa 3.0 e posto aqui na aldeia.

_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[Pedido] - Mostrar HP de outro player Empty Re: [Pedido] - Mostrar HP de outro player

Mensagem por Feh Ter maio 01, 2018 3:15 am

Eu uso a EO2.0, refiz os códigos e nada

Feh
Semi-Experiente
Semi-Experiente

Mensagens : 92
Créditos : 10

Ir para o topo Ir para baixo

[Pedido] - Mostrar HP de outro player Empty Re: [Pedido] - Mostrar HP de outro player

Mensagem por Profane ~ Ter maio 01, 2018 8:03 am


_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[Pedido] - Mostrar HP de outro player Empty Re: [Pedido] - Mostrar HP de outro player

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