[EO] - Silenciar adversário 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.

[EO] - Silenciar adversário

5 participantes

Ir para baixo

[EO] - Silenciar adversário Empty [EO] - Silenciar adversário

Mensagem por newbie123 Seg Ago 15, 2016 7:22 pm

Temos aqui um sistema bem simples, com o objetivo de que ao player ser atingido por tal skill, o mesmo fica silenciado, por seja não poderia usar nenhum poder por determinado tempo.(O poder não silencia NPC, só fazer editar de acordo com o sistema de NPC soltar spell, para que funcione também contra NPC.

Abra o client.vbp e na frmEditor_spell crie uma scrollbar, e uma label com as seguintes propriedades:


ScrollBar
Name: scrlSilence

Label
Name: lblSilence
Caption: Silence: Nenhum


Agora de 2 cliques na scrlSilence e adicione:
Código:
' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler

    If scrlSilence.Value > 0 Then
        lblSilence.Caption = "Silence: " & scrlSilence.Value & "s"
    Else
        lblSilence.Caption = "Silence: Nenhum"
    End If
    Spell(EditorIndex).Silence = scrlSilence.Value
    
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "scrlSilence_Change", "frmEditor_Spell", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub

Aperte ctrl+F e agora pesquise na modEnumerations procure por:

Código:
SPartyVitals


Abaixo coloque:

Código:
SSilence

Agora na modGameEditors encontre:

Código:
.scrlStun.Value = Spell(EditorIndex).StunDuration

Adicione abaixo:

Código:
.scrlSilence.Value = Spell(EditorIndex).Silence

Agora na modGameLogic dentro da sub castspell procure:
Código:
If spellslot < 1 Or spellslot > MAX_PLAYER_SPELLS Then
        Exit Sub
    End If

E coloque embaixo:

Código:
If Silence > 0 Then Exit Sub

na Modglobals procure por:

Código:
Public StunDuration As Long

Embaixo coloque:

Código:
Public Silence As Long

na modHandledata procure:

Código:
HandleDataSub(SPartyVitals) = GetAddress(AddressOf HandlePartyVitals)

E adicione embaixo:

Código:
HandleDataSub(SSilence) = GetAddress(AddressOf HandleSilence)

Ainda na modHandledata procure por:
Código:
Private Sub HandleStunned(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer

    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler
    
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
    
    StunDuration = Buffer.ReadLong
    
    Set Buffer = Nothing
    
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "HandleStunned", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

E abaixo adicione:
Código:
Private Sub HandleSilence(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer

    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler
    
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
    
    Silence = Buffer.ReadLong
    
    Set Buffer = Nothing
    
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "HandleSilence", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Na modType, na private type spellrec procure:

Código:
StunDuration As Long

E embaixo coloque:

Código:
Silence As Long


Acabamos no cliente, agora vamos para o Server.vbp


No modCombat procure:
Código:
If spellnum > 0 Then
            If Spell(spellnum).StunDuration > 0 Then StunPlayer victim, spellnum
            ' DoT
            If Spell(spellnum).Duration > 0 Then
                AddDoT_Player victim, spellnum, attacker
            End If
            End If
        End If



E SUBSTITUA por:

Código:
If spellnum > 0 Then
            If Spell(spellnum).StunDuration > 0 Then StunPlayer victim, spellnum
            If Spell(spellnum).Silence > 0 Then SilencePlayer victim, spellnum
            ' DoT
            If Spell(spellnum).Duration > 0 Then
                AddDoT_Player victim, spellnum, attacker
            End If
            End If
        End If

Ainda na modCombat procure por:
Código:
Public Sub StunPlayer(ByVal index As Long, ByVal spellnum As Long)
    ' check if it's a stunning spell
    If Spell(spellnum).StunDuration > 0 Then
        ' set the values on index
        TempPlayer(index).StunDuration = Spell(spellnum).StunDuration
        TempPlayer(index).StunTimer = GetTickCount
        ' send it to the index
        SendStunned index
        ' tell him he's stunned
        PlayerMsg index, "You have been stunned.", BrightRed
    End If
End Sub

E coloque embaixo:
Código:
Public Sub SilencePlayer(ByVal index As Long, ByVal spellnum As Long)

    If Spell(spellnum).Silence > 0 Then
        
        TempPlayer(index).Silence = Spell(spellnum).Silence
        TempPlayer(index).SilenceTimer = GetTickCount
        
        SendSilence index
        
        PlayerMsg index, "Você foi silenciado.", BrightRed
    End If
End Sub

Agora na modEnumerations procure por:

Código:
SPartyVitals

E adicione abaixo:

Código:
SSilence

no modServerLoop procure:
Código:
If TempPlayer(i).StunDuration > 0 Then
                        If GetTickCount > TempPlayer(i).StunTimer + (TempPlayer(i).StunDuration * 1000) Then
                            TempPlayer(i).StunDuration = 0
                            TempPlayer(i).StunTimer = 0
                            SendStunned i
                        End If
                    End If

Embaixo coloque:
Código:
If TempPlayer(i).Silence > 0 Then
                        If GetTickCount > TempPlayer(i).SilenceTimer + (TempPlayer(i).Silence * 1000) Then
                            TempPlayer(i).Silence = 0
                            TempPlayer(i).SilenceTimer = 0
                            SendSilence i
                        End If
                    End If

no modServerTCP procure:
Código:
Sub SendStunned(ByVal index As Long)
    Dim Buffer As clsBuffer
    
    Set Buffer = New clsBuffer
    Buffer.WriteLong SStunned
    Buffer.WriteLong TempPlayer(index).StunDuration
    
    SendDataTo index, Buffer.ToArray()
    
    Set Buffer = Nothing
End Sub

E adicione embaixo:
Código:
Sub SendSilence(ByVal index As Long)
    Dim Buffer As clsBuffer
    
    Set Buffer = New clsBuffer
    Buffer.WriteLong SSilence
    Buffer.WriteLong TempPlayer(index).Silence
    
    SendDataTo index, Buffer.ToArray()
    
    Set Buffer = Nothing
End Sub

Agora na modTypes dentro da Public Type TempPlayerRec, procure por:

Código:
StunDuration As Long

E embaixo adicione:
Código:
SilenceTimer As Long
    Silence As Long

Pronto, agora o sistema esta completo, qualquer duvida ou erro poste abaixo...

Creditos ~ Newbie123
newbie123
newbie123
Semi-Experiente
Semi-Experiente

Mensagens : 128
Créditos : 35

Ir para o topo Ir para baixo

[EO] - Silenciar adversário Empty Re: [EO] - Silenciar adversário

Mensagem por Hashirama Ter Ago 16, 2016 5:41 pm

Não testei ainda, mas vou dar 1+crédito por ainda ajudar com sistemas pro EO
=D

_________________
Apoia nosso projeto? use nossa assinatura
Hashirama
Hashirama
Membro de Honra
Membro de Honra

Mensagens : 413
Créditos : 133

Ir para o topo Ir para baixo

[EO] - Silenciar adversário Empty Re: [EO] - Silenciar adversário

Mensagem por Profane ~ Qua Ago 17, 2016 5:06 am

Excelente Movimentação Newbie123.

Interessante e poderá ajudar a muitos : 3

_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[EO] - Silenciar adversário Empty Re: [EO] - Silenciar adversário

Mensagem por Kies Qua Ago 17, 2016 2:47 pm

Nossa man adorei o siatema, não testei ainda pois to sem PC mais assim que eu pegar ele de volta eu testo, esse sistema é muito bom no pvp
Kies
Kies
Diva
Diva

Mensagens : 1155
Créditos : 124

Ficha do personagem
Nível: 1
Experiência:
[EO] - Silenciar adversário Left_bar_bleue0/0[EO] - Silenciar adversário Empty_bar_bleue  (0/0)
Vida:
[EO] - Silenciar adversário Left_bar_bleue30/30[EO] - Silenciar adversário Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[EO] - Silenciar adversário Empty Re: [EO] - Silenciar adversário

Mensagem por Spooky Sáb Ago 20, 2016 11:58 am

Opa, vlw pela contribuição, Newbie, é um sistema bastante interessante e dá pra fazer diversas modificações... +1 cred

_________________
Sign
[EO] - Silenciar adversário Hticjn

Sign¹:

Sign²:
Spooky
Spooky
Membro Ativo
Membro Ativo

Mensagens : 267
Créditos : 24

Ir para o topo Ir para baixo

[EO] - Silenciar adversário Empty Re: [EO] - Silenciar adversário

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


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