Aldeia RPG

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

Suporte ao desenvolvimento de jogos


4 participantes

    [Hells] Boss Fight (EO)

    GalaxyHells
    GalaxyHells
    Ocasional
    Ocasional


    Mensagens : 196
    Créditos : 22

    Ficha do personagem
    Nível: 1
    Experiência:
    [Hells] Boss Fight (EO) Left_bar_bleue0/0[Hells] Boss Fight (EO) Empty_bar_bleue  (0/0)
    Vida:
    [Hells] Boss Fight (EO) Left_bar_bleue30/30[Hells] Boss Fight (EO) Empty_bar_bleue  (30/30)

    [Hells] Boss Fight (EO) Empty [Hells] Boss Fight (EO)

    Mensagem por GalaxyHells Seg Fev 18, 2019 2:43 pm

    Sobre o Sistema
    Esse é um sistema de transformação para o seu npc.
    Ele sofrerá algumas mudanças quando atingir determinada % de vida. São elas:
    Mudar a Sprite, Soltar uma animação no NPC, Aumentar o dano fisico e magico do NPC e 
    Aumentar a defesa do NPC.

    Inicio - Client-Side


    Vá na frmEditor_NPC e crie 3 CheckBox, 1 HScrollBar, 5 TextBox, 6 Label.

    1
    ª CheckBox:
    Name: chkBossFight
    Caption: 
    Ativar Boss Fight?

    2ª CheckBox: 
    Name: chkChangeAnim
    Caption: 
    Animação ao Mudar

    3
    ª CheckBox:
    Name: chkChangeSprite
    Caption: Mudar Sprite

    1
    ª HScrollBar: 
    Name: scrollFormLifePercent
    Min: 1
    Max: 99

    1
    ª TextBox: 
    Name: txtPoderFisico

    2ª TextBox:
    Name: txtPoderMagico

    3ª TextBox:
    Name: txtDefesa

    4ª TextBox:
    Name: txtAnimacao

    5ª TextBox:
    Name: txtSprite

    1ª Label: 
    Name: lblFormLifePercent
    Caption: Mudar quando vida estiver abaixo de: x%

    2ª Label: 
    Caption: Poder Fisico %

    3ª Label: 
    Caption: Poder Magico %

    3ª Label: 
    Caption: Defesa  Fisica/Magica %

    5ª Label: 
    Caption: Animação

    6ª Label: 
    Caption: Mudar Sprite

    No final do frmEditor_NPC adicione: 

    Código:
    Private Sub chkBossFight_Click()
        Npc(EditorIndex).BossFight = chkBossFight.Value
    End Sub

    Private Sub chkChangeAnim_Click()
        Npc(EditorIndex).ChangeAnim = chkChangeAnim.Value
    End Sub

    Private Sub chkChangeSprite_Click()
        Npc(EditorIndex).ChangeSprite = chkChangeSprite.Value
    End Sub

    Private Sub scrollFormLifePercent_Change()
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

        lblFormLifePercent.Caption = "Mudar quando vida estiver abaixo de: " & scrollFormLifePercent.Value & "%"
        Npc(EditorIndex).ChangeFormLife = scrollFormLifePercent.Value


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


    Private Sub txtPoderFisico_Change()
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

        If Not Len(txtPoderFisico.text) <= 999 Then
            MsgBox "Coloque um valor abaixo de 999"
        End If

        If Not IsNumeric(txtPoderFisico.text) Then
            MsgBox "Você não pode usar letras aqui, seu animal!", vbCritical
        End If

        Npc(EditorIndex).AddAtkFisico = Val(txtPoderFisico.text)

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


    Private Sub txtPoderMagico_Change()
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler


        If Not Len(txtPoderFisico.text) <= 999 Then
            MsgBox "Coloque um valor abaixo de 999"
        End If

        If Not IsNumeric(txtPoderMagico.text) Then
            MsgBox "Você não pode usar letras aqui, seu animal!", vbCritical
        End If


        Npc(EditorIndex).AddAtkMagico = Val(txtPoderMagico.text)

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

    Private Sub txtAnimacao_Change()
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

        If Not IsNumeric(txtAnimacao.text) Then
            MsgBox "Você não pode usar letras aqui, seu animal!", vbCritical
        End If

        Npc(EditorIndex).BFAnim = Val(txtAnimacao.text)

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

    Private Sub txtSprite_Change()
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

        If Not IsNumeric(txtSprite.text) Then
            MsgBox "Você não pode usar letras aqui, seu animal!", vbCritical
        End If


        Npc(EditorIndex).BFSprite = Val(txtSprite.text)

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

    Na modGameEditors, na sub NpcEditorInit procure por:

    Código:
    .txtDamage.text = Npc(EditorIndex).Damage

    Em baixo adicione:
    Código:
    .scrollFormLifePercent.Value = Npc(EditorIndex).ChangeFormLife
            .chkChangeAnim.Value = Npc(EditorIndex).ChangeAnim
            .chkChangeSprite.Value = Npc(EditorIndex).ChangeSprite
            .txtPoderFisico.text = Npc(EditorIndex).AddAtkFisico
            .txtPoderMagico.text = Npc(EditorIndex).AddAtkMagico
            .txtDefesa.text = Npc(EditorIndex).AddDefesa
            .txtSprite.text = Npc(EditorIndex).BFSprite
            .txtAnimacao.text = Npc(EditorIndex).BFAnim
            .chkBossFight.Value = Npc(EditorIndex).BossFight

    Na modTypes, na Private Type NpcRec, em baixo de 

    Código:
    Level As Long 


    adicione:
    Código:
    BossFight As Byte
        ChangeFormLife As Byte
        AddAtkFisico As Long
        AddAtkMagico As Long
        AddDefesa As Long
        ChangeSprite As Byte
        ChangeAnim As Byte
        BFAnim As Long
        BFSprite As Long

    No modDirectDraw7, na sub BltNpc, em baixo de:

    Código:
    Dim attackspeed As Long

    Adicione: 

    Código:
    Dim LifePercent As Currency

    Na mesma sub procure por:
    Código:
        For i = 1 To MAX_MAP_NPCS
        npcnum = MapNpc(i).num
        If npcnum > 0 Then
            Sprite = Npc(MapNpc(MapNpcNum).num).Sprite
        End If
        Next

    Troque para:
    Código:
    For i = 1 To MAX_MAP_NPCS
        npcnum = MapNpc(i).num
        If npcnum > 0 Then
            If Npc(MapNpcNum).ChangeSprite = 1 Then
                If MapNpc(MapNpcNum).Vital(Vitals.HP) <= (Npc(MapNpcNum).HP * LifePercent) Then
                    Sprite = Npc(MapNpcNum).BFSprite
                Else
                    Sprite = Npc(MapNpc(MapNpcNum).num).Sprite
                End If
                Else
                Sprite = Npc(MapNpc(MapNpcNum).num).Sprite
            End If
        End If
        Next

    Client-Side Finalizado.

    Server-Side


    No modType, na Private Type NpcRec, em baixo de:

    Código:
    Level As Long


    Adicione: 
    Código:
    BossFight As Byte
        ChangeFormLife As Byte
        AddAtkFisico As Long
        AddAtkMagico As Long
        AddDefesa As Long
        ChangeSprite As Byte
        ChangeAnim As Byte
        BFAnim As Long
        BFSprite As Long

    No modCombat, na Sub PlayerAttackNpc, em baixo de:

    Código:
    Dim Buffer As clsBuffer

    Adicione: 

    Código:
    Dim LifePercent As Currency, DefensePercentA As Currency, DefensePercentB As Currency


    Na mesma sub, em baixo de:
    Código:
    If GetPlayerEquipment(attacker, Weapon) > 0 Then
            n = GetPlayerEquipment(attacker, Weapon)
        End If



    Adicione: 
    Código:
    'Boss Fight
        LifePercent = Npc(npcNum).ChangeFormLife / 100
        DefensePercentA = Npc(npcNum).AddDefesa / 100
        DefensePercentB = DefensePercentA
        If Npc(npcNum).BossFight = 1 Then
            If MapNpc(npcNum).Npc(MapNpcNum).Vital(Vitals.HP) <= (GetNpcMaxVital(npcNum, Vitals.HP) * LifePercent) Then
                Damage = Damage * DefensePercentB
            End If
        End If

    Ainda no modCombat, na Sub TryNpcAttackPlayer, em baixo de:
    Código:
    ' randomise for up to 10% lower than max hit
            'Damage = RAND(1, Damage)

    Adicione:
    Código:
    'Boss Fight
            LifePercent = Npc(npcNum).ChangeFormLife / 100
            AttackPercentA = Npc(npcNum).AddAtkFisico / 100
            AttackPercentB = 1 + AttackPercentA
            If Npc(npcNum).BossFight = 1 Then
                If MapNpc(mapnum).Npc(MapNpcNum).Vital(Vitals.HP) <= (GetNpcMaxVital(npcNum, Vitals.HP) * LifePercent) Then
                    Damage = Damage * AttackPercentB
                End If
            End If

    No final do modGameLogic adicione:
    Código:
    Public Sub ChangeAnim() ', ByVal npcnum As Long, ByVal mapnpcnum As Long)
    Dim LifePercent As Currency
    Dim mapnum As Long, npcNum As Long, MapNpcNum As Long, i As Long
    For MapNpcNum = 1 To MAX_MAP_NPCS

    For i = 1 To Player_HighIndex
        If IsPlaying(i) Then
        ' Try to attack a npc
            mapnum = GetPlayerMap(i)
            npcNum = MapNpc(mapnum).Npc(MapNpcNum).Num
            
            If npcNum <= 0 Or npcNum >= MAX_NPCS Then Exit Sub
        
            LifePercent = Npc(npcNum).ChangeFormLife / 100

            If Npc(npcNum).BossFight = 1 Then
                If MapNpc(mapnum).Npc(MapNpcNum).Vital(Vitals.HP) <= (GetNpcMaxVital(npcNum, Vitals.HP) * LifePercent) Then
                    If Not MapNpc(mapnum).Npc(MapNpcNum).Changed = 1 Then
                        Call SendAnimation(GetPlayerMap(i), Npc(npcNum).BFAnim, MapNpc(npcNum).Npc(MapNpcNum).x, MapNpc(npcNum).Npc(MapNpcNum).y)
                        MapNpc(mapnum).Npc(MapNpcNum).Changed = 1
                    End If
                Else
                    MapNpc(mapnum).Npc(MapNpcNum).Changed = 0
                End If
            End If
        End If
    Next
    Next

    End Sub

    No modServerLoop, acima de:

    Código:
    frmServer.lblCPS.Caption = "CPS: " & Format$(GameCPS, "#,###,###,###")

    Adicione:

    Código:
    Call ChangeAnim

    Delete todos os npcs, compile e teste.
    Creditos: Eu(GalaxyHells)


    Última edição por GalaxyHells em Ter Fev 19, 2019 9:27 pm, editado 1 vez(es)


    _________________
    [Hells] Boss Fight (EO) 90yel0
    Pain Correndo
    Pain Correndo
    Banido
    Banido


    Mensagens : 48
    Créditos : 3

    Ficha do personagem
    Nível: 1
    Experiência:
    [Hells] Boss Fight (EO) Left_bar_bleue0/0[Hells] Boss Fight (EO) Empty_bar_bleue  (0/0)
    Vida:
    [Hells] Boss Fight (EO) Left_bar_bleue30/30[Hells] Boss Fight (EO) Empty_bar_bleue  (30/30)

    [Hells] Boss Fight (EO) Empty Re: [Hells] Boss Fight (EO)

    Mensagem por Pain Correndo Seg Fev 18, 2019 2:58 pm

    Muito Daora
    Profane ~
    Profane ~
    Colaborador
    Colaborador


    Mensagens : 818
    Créditos : 130

    [Hells] Boss Fight (EO) Empty Re: [Hells] Boss Fight (EO)

    Mensagem por Profane ~ Ter Fev 19, 2019 12:33 am

    Organiza isso seu cara esculhambado

    Se conseguir eu paro pra ler e penso em ajudar na incrementação.

    Att


    _________________
    "Mistress of shattered hopes and forever broken dreams"
    Kenshiro
    Kenshiro
    Lenda
    Lenda


    Mensagens : 178
    Créditos : 22

    Ficha do personagem
    Nível: 1
    Experiência:
    [Hells] Boss Fight (EO) Left_bar_bleue2/50[Hells] Boss Fight (EO) Empty_bar_bleue  (2/50)
    Vida:
    [Hells] Boss Fight (EO) Left_bar_bleue30/30[Hells] Boss Fight (EO) Empty_bar_bleue  (30/30)

    [Hells] Boss Fight (EO) Empty Re: [Hells] Boss Fight (EO)

    Mensagem por Kenshiro Ter Fev 19, 2019 7:44 pm

    @GalaxyHells Você tem 24h para organizar o Tópico ou será movido para a lixeira.
    GalaxyHells
    GalaxyHells
    Ocasional
    Ocasional


    Mensagens : 196
    Créditos : 22

    Ficha do personagem
    Nível: 1
    Experiência:
    [Hells] Boss Fight (EO) Left_bar_bleue0/0[Hells] Boss Fight (EO) Empty_bar_bleue  (0/0)
    Vida:
    [Hells] Boss Fight (EO) Left_bar_bleue30/30[Hells] Boss Fight (EO) Empty_bar_bleue  (30/30)

    [Hells] Boss Fight (EO) Empty Re: [Hells] Boss Fight (EO)

    Mensagem por GalaxyHells Ter Fev 19, 2019 9:28 pm

    Kenshiro escreveu:@GalaxyHells Você tem 24h para organizar o Tópico ou será movido para a lixeira.
    Organizado.


    _________________
    [Hells] Boss Fight (EO) 90yel0
    Kenshiro
    Kenshiro
    Lenda
    Lenda


    Mensagens : 178
    Créditos : 22

    Ficha do personagem
    Nível: 1
    Experiência:
    [Hells] Boss Fight (EO) Left_bar_bleue2/50[Hells] Boss Fight (EO) Empty_bar_bleue  (2/50)
    Vida:
    [Hells] Boss Fight (EO) Left_bar_bleue30/30[Hells] Boss Fight (EO) Empty_bar_bleue  (30/30)

    [Hells] Boss Fight (EO) Empty Re: [Hells] Boss Fight (EO)

    Mensagem por Kenshiro Qua Fev 20, 2019 11:02 am

    GalaxyHells escreveu:
    Kenshiro escreveu:@GalaxyHells Você tem 24h para organizar o Tópico ou será movido para a lixeira.
    Organizado.

    Seu Tópico foi aprovado! 


    Obrigado por colaborar com a comunidade.

    Conteúdo patrocinado


    [Hells] Boss Fight (EO) Empty Re: [Hells] Boss Fight (EO)

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Seg maio 13, 2024 4:44 pm