[Hells] Boss Fight (EO) Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

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

[Hells] Boss Fight (EO)

4 participantes

Ir para baixo

[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
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)

Ir para o topo Ir para baixo

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

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

Muito Daora
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)

Ir para o topo Ir para baixo

[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"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[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.
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)

Ir para o topo Ir para baixo

[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
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)

Ir para o topo Ir para baixo

[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.
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)

Ir para o topo Ir para baixo

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

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos