Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
[E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
4 participantes
Página 1 de 1
[E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
Vamos agora dar emoção ao projeto! Adicionar passivas ás classes! Efeitos legais e únicos de classes, que poderão ser editados ao 'bel-prazer' de quem administra o projeto.
Nesse tópico, vou introduzir na sua engine o sistema de passivas, e já com o "Add-on" de "Mitigação de Dano"!!!
Abra seu "Server.Vbp" , e em "ModServerLoop" , na "Sub ServerLoop()" , procure por:
Logo abaixo, adicione isto:
Ainda na "Sub ServerLoop()" , procure por:
A abaixo, adicione isto:
Agora, em "ModPlayer" , na "Sub JoinGame()" , procure por:
E acima disto, adicione isto:
Agora, em "ModCombat" , na "Sub TryPlayerAttackNpc" , procure por isto:
E abaixo disto, adicione isto:
Ainda em "ModCombat" , mas na "Sub NpcAttackPlayer" , procure por:
E abaixo disto, adicione isso:
Ainda nesta "Sub NpcAttackPlayer" , procure por isso:
E acima disto, adicione isso:
Agora, mais abaixo, procure pela "Public Sub TryPlayerAttackPlayer" , e abaixo de
Adicione isso:
Agora na "Sub PlayerAttackPlayer" , procure por:
E abaixo disto, adicione isso:
Ainda na "Sub PlayerAttackPlayer" , procure por:
E abaixo disto, adicione isso
Agora, no final de "ModDatabase" , adicione isso:
Agora, em "ModTypes" , procure por:
E acima do "End Type" deste REC , adicione isso:
Ainda em "ModTypes" , procure por:
E antes do "End Type" deste REC, adicione isso:
Agora, em "ModGeneral" , na "Private Sub LoadGameData()" , procure por:
E abaixo disto, adicione isso:
Por fim, abra sua form "FrmServer", e de preferência na aba "Control" , adicione:
1x CommandButton
Name: CmdLoadPassives
Dê dois cliques, e dentro deste botão, adicione isso:
E pronto! Agora você tem classes com mitigação de dano!
Pontos a considerar:
- É mais um sistema que traz um leque de possibilidades! A primeira vez que terminar o sistema, "execute" o servidor, que ele irá criar o ".ini" dentro da pasta "\server\data" , e a partir daí, você edita qual classe quer que mitigue ou não.
- Explicação Geral:
1- O arquivo ".ini" vai vir com valores iniciais "= 0" caso seja a primeira vez que compilou o sistema, mas ele salva o valor que você abre e edita.
2- A mitigação é em PORCENTAGEM, e o tempo é em SEGUNDOS, ou seja:
Mitigation = 10
MitigationTime = 5
Significa que você irá mitigar 10% de todo o dano recebido por npc's e players , e quando parar de receber dano, terá ainda 5 segundos de duração com este dano acumulado.
- Dá pra colocar pra ganhar roubo de vida por vida perdida...dano aumentando a cada "%" de vida perdida , Drop ou Exp aumentando baseado na vida ou mana perdida...muita coisa limitada a imaginação e proposta do projeto...
Nesse tópico, vou introduzir na sua engine o sistema de passivas, e já com o "Add-on" de "Mitigação de Dano"!!!
-Server~Side-
Abra seu "Server.Vbp" , e em "ModServerLoop" , na "Sub ServerLoop()" , procure por:
- Spoiler:
- Dim LastUpdateSavePlayers, LastUpdateMapSpawnItems As Long, LastUpdatePlayerVitals As Long
Logo abaixo, adicione isto:
- Spoiler:
- Dim tmrMitigation As Long
Ainda na "Sub ServerLoop()" , procure por:
- Spoiler:
- If Tick > tmr1000 Then
If isShuttingDown Then
Call HandleShutdown
End If
tmr1000 = GetTickCount + 1000
End If
A abaixo, adicione isto:
- Spoiler:
- 'Check for mitigation time
If Tick > tmrMitigation Then
For i = 1 To MAX_PLAYERS
If IsPlaying(i) And TempPlayer(i).InGame Then
If TempPlayer(i).MitigationDamage > 0 Then
If TempPlayer(i).MitigationTime <= 0 Then
TempPlayer(i).MitigationTime = 0
TempPlayer(i).MitigationDamage = 0
End If
If TempPlayer(i).MitigationTime > 0 Then
TempPlayer(i).MitigationTime = TempPlayer(i).MitigationTime - 1
End If
End If
End If
Next
tmrMitigation = GetTickCount + 1000
End If
Agora, em "ModPlayer" , na "Sub JoinGame()" , procure por:
- Spoiler:
- ' Send the flag so they know they can start doing stuff
SendInGame index
E acima disto, adicione isto:
- Spoiler:
- 'Clear any stored mitigation in any case
TempPlayer(index).MitigationDamage = 0
Agora, em "ModCombat" , na "Sub TryPlayerAttackNpc" , procure por isto:
- Spoiler:
- ' randomise from 1 to max hit
Damage = RAND(1, Damage)
E abaixo disto, adicione isto:
- Spoiler:
- 'Increase damage based on mitigation
Damage = Damage + TempPlayer(index).MitigationDamage
Ainda em "ModCombat" , mas na "Sub NpcAttackPlayer" , procure por:
- Spoiler:
- Dim i as Long
E abaixo disto, adicione isso:
- Spoiler:
- Dim MitVal As Long, MitTime As Long, MitDmg As Long
Ainda nesta "Sub NpcAttackPlayer" , procure por isso:
- Spoiler:
- ' set the regen timer
MapNpc(MapNum).Npc(MapNpcNum).stopRegen = True
MapNpc(MapNum).Npc(MapNpcNum).stopRegenTimer = GetTickCount
E acima disto, adicione isso:
- Spoiler:
- MitVal = Class(GetPlayerClass(Victim)).Mitigation
MitTime = Class(GetPlayerClass(Victim)).MitigationTime
If MitVal > 0 Then
MitDmg = Damage * (MitVal / 100)
If MitDmg <= 0 Then MitDmg = 1 'get at least 1 point for too low mitigation
TempPlayer(Victim).MitigationDamage = TempPlayer(Victim).MitigationDamage + MitDmg
TempPlayer(Victim).MitigationTime = MitTime
End If
Agora, mais abaixo, procure pela "Public Sub TryPlayerAttackPlayer" , e abaixo de
- Spoiler:
- ' randomise for up to 10% lower than max hit
Damage = RAND(1, Damage)
Adicione isso:
- Spoiler:
- Damage = Damage + TempPlayer(Attacker).MitigationDamage
Agora na "Sub PlayerAttackPlayer" , procure por:
- Spoiler:
- Dim i As Long
E abaixo disto, adicione isso:
- Spoiler:
- Dim MitVal As Long, MitTime As Long, MitDmg As Long
Ainda na "Sub PlayerAttackPlayer" , procure por:
- Spoiler:
- ' set the regen timer
TempPlayer(Attacker).stopRegen = True
TempPlayer(Attacker).stopRegenTimer = GetTickCount
E abaixo disto, adicione isso
- Spoiler:
- MitVal = Class(GetPlayerClass(Victim)).Mitigation
MitTime = Class(GetPlayerClass(Victim)).MitigationTime
If MitVal > 0 Then
MitDmg = Damage * (MitVal / 100)
If MitDmg <= 0 Then MitDmg = 1 'get at least 1 point for too low mitigation
TempPlayer(Victim).MitigationDamage = TempPlayer(Victim).MitigationDamage + MitDmg
TempPlayer(Victim).MitigationTime = MitTime
End If
Agora, no final de "ModDatabase" , adicione isso:
- Spoiler:
- Public Sub SavePassives()
Dim fileName As String
Dim i As Long
fileName = App.Path & "\data\classpassives.ini"
For i = 1 To Max_Classes
PutVar fileName, "CLASS", "Name" & i, Trim$(Class(i).Name)
PutVar fileName, "CLASS", "Mitigation" & i, Val(Class(i).Mitigation)
PutVar fileName, "CLASS", "MitigationTime" & i, Val(Class(i).MitigationTime)
Next i
End Sub
Public Sub LoadPassives()
Dim fileName As String, i As Long
fileName = App.Path & "\data\classpassives.ini"
If FileExist(fileName, True) Then
For i = 1 To Max_Classes
Class(i).Mitigation = Val(GetVar(fileName, "CLASS", "Mitigation" & i))
Class(i).MitigationTime = Val(GetVar(fileName, "CLASS", "MitigationTime" & i))
Next i
Else
SavePassives
End If
End Sub
Agora, em "ModTypes" , procure por:
- Spoiler:
- Public Type TempPlayerRec
E acima do "End Type" deste REC , adicione isso:
- Spoiler:
- MitigationDamage As Long
MitigationTime As Long
Ainda em "ModTypes" , procure por:
- Spoiler:
- Private Type ClassRec
E antes do "End Type" deste REC, adicione isso:
- Spoiler:
- Mitigation As Long
MitigationTime As Long
Agora, em "ModGeneral" , na "Private Sub LoadGameData()" , procure por:
- Spoiler:
- Call SetStatus("Loading animations...")
Call LoadAnimations
E abaixo disto, adicione isso:
- Spoiler:
- Call SetStatus("Loading passives...")
Call LoadPassives
Por fim, abra sua form "FrmServer", e de preferência na aba "Control" , adicione:
1x CommandButton
Name: CmdLoadPassives
Dê dois cliques, e dentro deste botão, adicione isso:
- Spoiler:
- Call LoadPassives
Call TextAdd("All Passives reloaded.")
E pronto! Agora você tem classes com mitigação de dano!
Pontos a considerar:
- É mais um sistema que traz um leque de possibilidades! A primeira vez que terminar o sistema, "execute" o servidor, que ele irá criar o ".ini" dentro da pasta "\server\data" , e a partir daí, você edita qual classe quer que mitigue ou não.
- Explicação Geral:
1- O arquivo ".ini" vai vir com valores iniciais "= 0" caso seja a primeira vez que compilou o sistema, mas ele salva o valor que você abre e edita.
2- A mitigação é em PORCENTAGEM, e o tempo é em SEGUNDOS, ou seja:
Mitigation = 10
MitigationTime = 5
Significa que você irá mitigar 10% de todo o dano recebido por npc's e players , e quando parar de receber dano, terá ainda 5 segundos de duração com este dano acumulado.
- Dá pra colocar pra ganhar roubo de vida por vida perdida...dano aumentando a cada "%" de vida perdida , Drop ou Exp aumentando baseado na vida ou mana perdida...muita coisa limitada a imaginação e proposta do projeto...
Créditos
Eu - lucas100vzs/Kotol
Kotol- Moderador Local
- Mensagens : 77
Créditos : 17
Expert, WillMaiaBR, Mizuki e Nando Moura gostam desta mensagem
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
No meu game eu associei o número da skill com uma imagem aí fica igual no mmorpg, tipo os buff de lineage 2
_________________
Kotol gosta desta mensagem
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
Como assim? Para representar as passivas? Dá pra brincar também, adicionando ao tutorial um "IconNum=0" nos arquivos, e checando isso com o cliente, ai pelo server você edita o ícone para o cliente buscar na pasta própria, e setar na tela....
Ou fez suas passivas por um editor, igual um "editorItem" ?
Ou fez suas passivas por um editor, igual um "editorItem" ?
Kotol- Moderador Local
- Mensagens : 77
Créditos : 17
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
Não consigo postar uma print aqui, eu faço assim, uma pasta com os icones das imagens, cada icone.bmp tem o número da skill, aí qnd usa a skill aparece o icone na tela.
_________________
Kotol gosta desta mensagem
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
Ahh sim, mas isso seria para um sistema de buff/debuff, né ?
Sistema de buff/debuff, ter ícones com contador dentro deles, é a coisa mais linda de se ver
Passiva tem que ter muiiito cuidado para não poluir a tela, além de não fazer coisa tensa demais e descer o FPS....
Já joguei jogo mal otimizado em DX8+ , que o jogo era 2D feito em vxAce, e rodava pior do que um LoL da vida , que consome tudo do pc...Se tirava a HUD , o trem chegava a +120FPS , mas colocava, ia pra 40~30FPS...Aí o dono ainda fez o favor de adicionar partículas nas skills, detalhe, partículas bugadas, que faziam leitura criminosa...kk' foi a primeira vez que vi 1FPS em um jogo 2D....
Nem quando eu testo as coisas livremente no "Render_Graphics" , o jogo não desce a 1FPS...chega a 15-20 quando deixo correr solto, mas não faz aquela lambança...
Mas quando eu for mexer em buff/debuff , eu vejo se posto um tutorial aqui também...eu acho muiiito grande alguns tutoriais...A vontade é upar vídeos no youtube
Sistema de buff/debuff, ter ícones com contador dentro deles, é a coisa mais linda de se ver
Passiva tem que ter muiiito cuidado para não poluir a tela, além de não fazer coisa tensa demais e descer o FPS....
Já joguei jogo mal otimizado em DX8+ , que o jogo era 2D feito em vxAce, e rodava pior do que um LoL da vida , que consome tudo do pc...Se tirava a HUD , o trem chegava a +120FPS , mas colocava, ia pra 40~30FPS...Aí o dono ainda fez o favor de adicionar partículas nas skills, detalhe, partículas bugadas, que faziam leitura criminosa...kk' foi a primeira vez que vi 1FPS em um jogo 2D....
Nem quando eu testo as coisas livremente no "Render_Graphics" , o jogo não desce a 1FPS...chega a 15-20 quando deixo correr solto, mas não faz aquela lambança...
Mas quando eu for mexer em buff/debuff , eu vejo se posto um tutorial aqui também...eu acho muiiito grande alguns tutoriais...A vontade é upar vídeos no youtube
Kotol- Moderador Local
- Mensagens : 77
Créditos : 17
WillMaiaBR gosta desta mensagem
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
Vídeos são sempre legais, tenho alguns com 100views, outros com 1000, mas o importante é a lembrança e ver o nosso avanço conforme o tempo passa.
_________________
Kotol gosta desta mensagem
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
Isso sempre!! Quando quiser compartilhar uns vídeos de sistemas por aí..ou dar algumas ideias em "dúvidas" kk' porque as vezes falta ideia de sistemas também pra deixar jogos legais....a gente sempre tenta programar aqui xD
Kotol- Moderador Local
- Mensagens : 77
Créditos : 17
WillMaiaBR gosta desta mensagem
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
oque e mitigação ?
_________________
vem sempre aqui?
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
Mizuki escreveu:oque e mitigação ?
Intervenção visando reduzir o dano sofrido.
DragonicK- Experiente
- Mensagens : 543
Créditos : 81
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Mizuki gosta desta mensagem
Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo
Lucas, mandei uma pm sobre um sistema, a mensagem está a algum tempo lá, como a PM é de dificil visualização, fica a informação aqui, é sobre sombreamento no directx7, sistema já está pronto.
_________________
Conteúdo patrocinado
Tópicos semelhantes
» [E.O 2.0 com Passivas para Classes] Bônus de Dano por porcentagem de HP e MP perdidos com Limite
» [EO 2.0] Passivas para os NPC's
» Rarity Com % de Dano
» Dano do NPC
» Dano consecutivo do npc
» [EO 2.0] Passivas para os NPC's
» Rarity Com % de Dano
» Dano do NPC
» Dano consecutivo do npc
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos