Estou pensando em um sistema onde o jogador receberá dano se não estiver usando uma armadura em determinados mapas como no gelo (receber dano por causa do congelamento). Alguém tem uma base para eu poder me espelhar ou conhece algum metodo funcional?.
4 participantes
[Dúvida] Receber dano sem equip.
- Mensagem nº2
Re: [Dúvida] Receber dano sem equip.
Vamo lá então ![[Dúvida] Receber dano sem equip. 2835316747](/users/1813/22/04/00/smiles/2835316747.png)
Abra o Serve-side.
Em modConstant procure por:
Abaixo adicione:
Agora em modServerLoop na Sub ServerLoop() procure por:
Acima adicione:
Ainda nessa mesma sub procura por:
Acima adicione:
Agora no Client-Side
Vá no frmEditor_MapProperties e na cmbMoral na propriedade "List"
adicione: Damage Zone
pronto, não testei fiz agr, então![[Dúvida] Receber dano sem equip. 2835316747](/users/1813/22/04/00/smiles/2835316747.png)
![[Dúvida] Receber dano sem equip. 2835316747](/users/1813/22/04/00/smiles/2835316747.png)
Abra o Serve-side.
Em modConstant procure por:
- Código:
Public Const MAP_MORAL_SAFE As Byte = 1
Abaixo adicione:
- Código:
Public Const MAP_MORAL_DAMAGE As Byte = 2
Agora em modServerLoop na Sub ServerLoop() procure por:
- Código:
ServerOnline = True
Acima adicione:
- Código:
Dim TickDamage as long
Ainda nessa mesma sub procura por:
- Código:
' Check for disconnections every half second
If Tick > tmr500 Then
Acima adicione:
- Código:
If Tick > TickDamage Then
For i = 1 To Player_HighIndex
If Map(GetPlayerMap(i)).Moral = MAP_MORAL_DAMAGE Then
SetPlayerVital i, HP, GetPlayerVital(i, HP) - 10 ' Onde tem 10 mude para o valor do dano
SendActionMsg GetPlayerMap(i), "-10 HP", BrightRed, ACTIONMSG_SCROLL, GetPlayerX(i) * 32, GetPlayerY(i) * 32, 1
End If
Next
TickDamage = GetTickCount + 1000 ' onde tem 1000 mude para o tempo q vc queira q dê o dando 1000 = 1s
End If
Agora no Client-Side
Vá no frmEditor_MapProperties e na cmbMoral na propriedade "List"
adicione: Damage Zone
pronto, não testei fiz agr, então
![[Dúvida] Receber dano sem equip. 2835316747](/users/1813/22/04/00/smiles/2835316747.png)
- Mensagem nº3
Re: [Dúvida] Receber dano sem equip.
Esta dando problema :
https://i.imgur.com/QqUbhT9.png
![[Dúvida] Receber dano sem equip. QqUbhT9](https://i.imgur.com/QqUbhT9.png)
Depois que eu salvo o mapa ele salva como damage zone mas quando fecho o editor ele da esse problema acima, mas mesmo com o problema, dentro do jogo ele detecta o mapa, causa o dano mas depois de um tempo da o erro tbm.
https://i.imgur.com/QqUbhT9.png
![[Dúvida] Receber dano sem equip. QqUbhT9](https://i.imgur.com/QqUbhT9.png)
Depois que eu salvo o mapa ele salva como damage zone mas quando fecho o editor ele da esse problema acima, mas mesmo com o problema, dentro do jogo ele detecta o mapa, causa o dano mas depois de um tempo da o erro tbm.
gui408- Ocasional
- Mensagens : 227
Créditos : 10
- Mensagem nº4
Re: [Dúvida] Receber dano sem equip.
Vc coloco sistema e deletou todos os maps antes?
- Mensagem nº6
Re: [Dúvida] Receber dano sem equip.
GallighanMaker escreveu:sim e não surtiu efeito, persiste o erro.
Não precisa apagar mapas!
mude o codigo para esse:
- Código:
If Tick > TickDamage Then
For i = 1 To Player_HighIndex
If IsPlaying(i) Then
If Map(GetPlayerMap(i)).Moral = MAP_MORAL_DAMAGE Then
SetPlayerVital i, HP, GetPlayerVital(i, HP) - 10 ' Onde tem 10 mude para o valor do dano
SendActionMsg GetPlayerMap(i), "-10 HP", BrightRed, ACTIONMSG_SCROLL, GetPlayerX(i) * 32, GetPlayerY(i) * 32, 1
SendVital i, HP
End If
End If
Next
TickDamage = GetTickCount + 1000 ' onde tem 1000 mude para o tempo q vc queira q dê o dando 1000 = 1s
End If
- Mensagem nº7
Re: [Dúvida] Receber dano sem equip.
Agora aparentemente esta tudo ok e funcionando, para quem quiser usar aqui o codigo com a verificação da armadura e adicionei a funcao KillPlayer quando o hp chegar a 0.
Demonstração (GIF):
![[Dúvida] Receber dano sem equip. 4k30Mr0](https://i.imgur.com/4k30Mr0.gif)
..
Pedido/Dúvida atendido, pode trancar o tópico se quiser.
- Código:
'Damege map cold
If Tick > TickDamage Then
For i = 1 To Player_HighIndex
If IsPlaying(i) Then
If Map(GetPlayerMap(i)).Moral = MAP_MORAL_DAMAGE Then
If GetPlayerEquipment(i, Armor) <= 0 Then 'Verifica se esta usando uma armadura
SetPlayerVital i, HP, GetPlayerVital(i, HP) - 10 ' Onde tem 10 mude para o valor do dano
SendActionMsg GetPlayerMap(i), "-10 HP", BrightRed, ACTIONMSG_SCROLL, GetPlayerX(i) * 32, GetPlayerY(i) * 32, 1
PlayerMsg i, "You lost 10 HP because of the cold, put on a armor for warmth.", BrightRed
SendVital i, HP
If GetPlayerVital(i, HP) <= 0 Then
KillPlayer i
PlayerMsg i, "You're killed by a cold.", BrightRed
End If
End If
End If
End If
Next
TickDamage = timeGetTime + 10000 ' onde tem 1000 mude para o tempo q vc queira q dê o dando 1000 = 1s
End If
Demonstração (GIF):
![[Dúvida] Receber dano sem equip. 4k30Mr0](https://i.imgur.com/4k30Mr0.gif)
..
Pedido/Dúvida atendido, pode trancar o tópico se quiser.
joaopaulo98- Experiente
- Mensagens : 632
Créditos : 45
- Mensagem nº8
Re: [Dúvida] Receber dano sem equip.
GallighanMaker escreveu:Agora aparentemente esta tudo ok e funcionando, para quem quiser usar aqui o codigo com a verificação da armadura e adicionei a funcao KillPlayer quando o hp chegar a 0.
- Código:
'Damege map cold
If Tick > TickDamage Then
For i = 1 To Player_HighIndex
If IsPlaying(i) Then
If Map(GetPlayerMap(i)).Moral = MAP_MORAL_DAMAGE Then
If GetPlayerEquipment(i, Armor) <= 0 Then 'Verifica se esta usando uma armadura
SetPlayerVital i, HP, GetPlayerVital(i, HP) - 10 ' Onde tem 10 mude para o valor do dano
SendActionMsg GetPlayerMap(i), "-10 HP", BrightRed, ACTIONMSG_SCROLL, GetPlayerX(i) * 32, GetPlayerY(i) * 32, 1
PlayerMsg i, "You lost 10 HP because of the cold, put on a armor for warmth.", BrightRed
SendVital i, HP
If GetPlayerVital(i, HP) <= 0 Then
KillPlayer i
PlayerMsg i, "You're killed by a cold.", BrightRed
End If
End If
End If
End If
Next
TickDamage = timeGetTime + 10000 ' onde tem 1000 mude para o tempo q vc queira q dê o dando 1000 = 1s
End If
Demonstração (GIF):
..
Pedido/Dúvida atendido, pode trancar o tópico se quiser.
TickDamage = timeGetTime + 10000 ' onde tem 1000 mude para o tempo q vc queira q dê o dando 1000 = 1s
timeGetTime " erro variavel não definida "
- Mensagem nº9
Re: [Dúvida] Receber dano sem equip.
é que a engine que eu uso utiliza timeGetTime no seu caso tente com:
- Código:
TickDamage = GetTickCount + 10000 ' onde tem 1000 mude para o tempo q vc queira q dê o dando 1000 = 1s
joaopaulo98- Experiente
- Mensagens : 632
Créditos : 45
- Mensagem nº10
Re: [Dúvida] Receber dano sem equip.
funcionou vlw mano ![Successful](/users/1813/22/04/00/smiles/3912376022.gif)
![Successful](/users/1813/22/04/00/smiles/3912376022.gif)
|
|