Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
[Pedido] - Mostrar HP de outro player
2 participantes
Página 1 de 1
[Pedido] - Mostrar HP de outro player
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.
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
- Mensagens : 92
Créditos : 10
Re: [Pedido] - Mostrar HP de outro player
Ahm c;c
Vamos ver se dá certo /o/
Servidor,
Procura pela:
No Fim dela tem:
troca por
Com isso o valor vai estar sendo enviado para todo o mapa.
Agora no Cliente,
Procura por..
Na EO 2.0 É assim:
Deixe assim:
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:
Dentro dela.. vamos procurar a área de minha "barra", que é essa aqui:
Essa área é responsável por mostrar meu HP.
Vamos Mudar isso... para isso aqui..
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;
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 ~- Colaborador
- Mensagens : 818
Créditos : 130
Re: [Pedido] - Mostrar HP de outro player
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
- Mensagens : 92
Créditos : 10
Re: [Pedido] - Mostrar HP de outro player
Bem o sistema eu não tinha aberto para testar.
Mas ao abrir ~
#Edit - > https://imgur.com/a/Ptn49w2
Link da Img
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.
Mas ao abrir ~
#Edit - > https://imgur.com/a/Ptn49w2
Link da Img
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 ~- Colaborador
- Mensagens : 818
Créditos : 130
Re: [Pedido] - Mostrar HP de outro player
Eu uso a EO2.0, refiz os códigos e nada
Feh- Semi-Experiente
- Mensagens : 92
Créditos : 10
Re: [Pedido] - Mostrar HP de outro player
Pronto, espero que agora consiga >
https://www.aldeiarpg.com/t13932-prof-mostrando-hp-de-outros-players-em-barras#105933
https://www.aldeiarpg.com/t13932-prof-mostrando-hp-de-outros-players-em-barras#105933
_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~- Colaborador
- Mensagens : 818
Créditos : 130
Tópicos semelhantes
» [Pedido] Script player atravessar outro player
» [Pedido] Npc que corre do player
» [DÚVIDA] Enviar o valor de uma variável para o outro player
» player nao ataca player podem ajudar?
» pedido sobre mostrar variavel
» [Pedido] Npc que corre do player
» [DÚVIDA] Enviar o valor de uma variável para o outro player
» player nao ataca player podem ajudar?
» pedido sobre mostrar variavel
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos