Aldeia RPG

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

Suporte no desenvolvimento de jogos


    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    lucas100vzs
    lucas100vzs
    Iniciante
    Iniciante

    Mensagens : 34
    Créditos : 8

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    Mensagem por lucas100vzs Qui Jun 10, 2021 10:33 am

    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"!!! 


    -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!  Indignity

    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

    Expert e WillMaiaBR gostam desta mensagem

    WillMaiaBR
    WillMaiaBR
    Iniciante
    Iniciante

    Mensagens : 58
    Créditos : 7

    Ficha do personagem
    Nível: 1
    Experiência:
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Left_bar_bleue0/0[E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty_bar_bleue  (0/0)
    Vida:
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Left_bar_bleue30/30[E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty_bar_bleue  (30/30)

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    Mensagem por WillMaiaBR Qui Jun 10, 2021 7:07 pm

    No meu game eu associei o número da skill com uma imagem aí fica igual no mmorpg, tipo os buff de lineage 2

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Maxresdefault


    _________________
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Logo_xstrond

    lucas100vzs gosta desta mensagem

    lucas100vzs
    lucas100vzs
    Iniciante
    Iniciante

    Mensagens : 34
    Créditos : 8

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    Mensagem por lucas100vzs Qui Jun 10, 2021 10:47 pm

    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" ?
    WillMaiaBR
    WillMaiaBR
    Iniciante
    Iniciante

    Mensagens : 58
    Créditos : 7

    Ficha do personagem
    Nível: 1
    Experiência:
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Left_bar_bleue0/0[E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty_bar_bleue  (0/0)
    Vida:
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Left_bar_bleue30/30[E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty_bar_bleue  (30/30)

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    Mensagem por WillMaiaBR Sab Jun 12, 2021 2:37 am

    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.


    _________________
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Logo_xstrond

    lucas100vzs gosta desta mensagem

    lucas100vzs
    lucas100vzs
    Iniciante
    Iniciante

    Mensagens : 34
    Créditos : 8

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    Mensagem por lucas100vzs Sab Jun 12, 2021 8:42 am

    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  Razz
    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... [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo 1f602 

    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  [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo 1f605

    WillMaiaBR gosta desta mensagem

    WillMaiaBR
    WillMaiaBR
    Iniciante
    Iniciante

    Mensagens : 58
    Créditos : 7

    Ficha do personagem
    Nível: 1
    Experiência:
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Left_bar_bleue0/0[E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty_bar_bleue  (0/0)
    Vida:
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Left_bar_bleue30/30[E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty_bar_bleue  (30/30)

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    Mensagem por WillMaiaBR Sab Jun 12, 2021 6:08 pm

    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.


    _________________
    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Logo_xstrond

    lucas100vzs gosta desta mensagem

    lucas100vzs
    lucas100vzs
    Iniciante
    Iniciante

    Mensagens : 34
    Créditos : 8

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    Mensagem por lucas100vzs Dom Jun 13, 2021 1:49 pm

    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

    WillMaiaBR gosta desta mensagem


    Conteúdo patrocinado

    [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo Empty Re: [E.O 2.0] - Passivas para Classes(v1.0) + Passiva: Mitigação de Dano por Tempo

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qua Jun 23, 2021 9:50 pm