Universo Games
Ola , Convidado



Você ainda não e cadastrado então cadastre-se e veja todas as atualizações no mundo rpg!!!

Animação no Ataque (Por Item)

Ir em baixo

Tutorial Animação no Ataque (Por Item)

Mensagem por Lucas Roberto em Sab 05 Nov 2011, 17:15

Nome: Animação no Ataque (Por Item)
Nivel de Dificuldade : 3/5
Utiliza: VisualBasic 6.0



Seguinte galera, estou disponibilizando aqui para vocês.

Imagem de como funciona :

[Você precisa estar registrado e conectado para ver esta imagem.]

Certo, Vamos começar...

Cliente~Side

Va no frmItemEditor e crie uma HScrollBar com o seguinte nome :

Código:
scrlAnim

E também crie uma Label com o seguinte nome :

Código:
lblAnim

na lblAnim, coloque o seguinte Caption :

Código:
Animação = 0

Dê dois cliques na scrlAnim e coloque este código :

Código:
lblAnim.Caption = "Animação = " & scrlAnim.Value

Agora, Procure no ModGameLogic por :

Código:
frmItemEditor.scrlAttackSpeed.value = Item(EditorIndex).AttackSpeed

E abaixo adicione :

Código:
frmItemEditor.scrlAnim.value = Item(EditorIndex).Animazione

Procure no ModGameLogic por :

Código:
Item(EditorIndex).AttackSpeed = frmItemEditor.scrlAttackSpeed.value

Abaixo adicione :

Código:
Item(EditorIndex).Animazione = frmItemEditor.scrlAnim.value

Procure no ModTypes por :

Código:
AttackSpeed As Long

E abaixo adicione :

Código:
Animazione As Long

Procure no ModTypes por :

Código:
Item(Index).AttackSpeed = 1000

Abaixo adicione :

Código:
Item(Index).Animazione = 0

Procure no ModClientTCP por :

Código:
Item(n).AttackSpeed = Val(Parse(23))

Abaixo adicione :

Código:
Item(n).Animazione = Val(Parse(24))

Procure novamente no ModClientTCP por :

Código:
Item(n).AttackSpeed = Val(Parse(23))

E adicione :

Código:
Item(n).Animazione = Val(Parse(24))

Lembrando que eu não repeti este código acima a toa, realmente existem 2 ;D

Agora procure no ModClientTCP pela Sub :

Código:
Sub SendSaveItem(ByVal ItemNum As Long)

E substitua ela toda por :

Código:
Sub SendSaveItem(ByVal ItemNum As Long)
Dim Packet As String

    Packet = "SAVEITEM" & SEP_CHAR & ItemNum & SEP_CHAR & Trim(Item(ItemNum).Name) & SEP_CHAR & Item(ItemNum).Pic & SEP_CHAR & Item(ItemNum).Type & SEP_CHAR & Item(ItemNum).Data1 & SEP_CHAR & Item(ItemNum).Data2 & SEP_CHAR & Item(ItemNum).Data3 & SEP_CHAR & Item(ItemNum).StrReq & SEP_CHAR & Item(ItemNum).DefReq & SEP_CHAR & Item(ItemNum).SpeedReq & SEP_CHAR & Item(ItemNum).MagicReq & SEP_CHAR & Item(ItemNum).ClassReq & SEP_CHAR & Item(ItemNum).AccessReq & SEP_CHAR
    Packet = Packet & Item(ItemNum).AddHP & SEP_CHAR & Item(ItemNum).AddMP & SEP_CHAR & Item(ItemNum).AddSP & SEP_CHAR & Item(ItemNum).AddStr & SEP_CHAR & Item(ItemNum).AddDef & SEP_CHAR & Item(ItemNum).AddMagi & SEP_CHAR & Item(ItemNum).AddSpeed & SEP_CHAR & Item(ItemNum).AddEXP & SEP_CHAR & Item(ItemNum).desc & SEP_CHAR & Item(ItemNum).AttackSpeed & SEP_CHAR & Item(ItemNum).Animazione
    Packet = Packet & END_CHAR
    Call SendData(Packet)
End Sub




Server~Side

Procure no ModTypes por :

Código:
AttackSpeed As Long

Abaixo Adicione :

Código:
Animazione As Long

Procure no ModTypes por :

Código:
Item(Index).AttackSpeed = 0

Abaixo adicione :

Código:
Item(Index).Animazione = 0

Procure no ModServerTCP por :

Código:
Case "attack"

E substitua ela toda por :

Código:
' ::::::::::::::::::::::::::
            ' ::  Packet de Ataque  ::
            ' ::::::::::::::::::::::::::
        Case "attack"
        Dim animazione As Long
            If GetPlayerWeaponSlot(Index) > 0 Then
                If Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).Data3 > 0 Then
                    Call SendDataToMap(GetPlayerMap(Index), "checkarrows" & SEP_CHAR & Index & SEP_CHAR & Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).Data3 & SEP_CHAR & GetPlayerDir(Index) & END_CHAR)
                    Exit Sub
                End If
            End If

            ' Atacando um jogador...
            For i = 1 To MAX_PLAYERS

                ' Não podemos nos atacar
                If i <> Index Then

                    ' Podemos atacar um jogador?
                    If CanAttackPlayer(Index, i) Then
                        If Not CanPlayerBlockHit(i) Then

                            ' Pegando informação do dano...
                            If Not CanPlayerCriticalHit(Index) Then
                                Damage = GetPlayerDamage(Index) - GetPlayerProtection(i) + (Rnd * 5) - 2
                                Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Ataque" & Int(Rnd * 2) + 1 & END_CHAR)
                            Else
                                N = GetPlayerDamage(Index)
                                Damage = N + Int(Rnd * Int(N / 2)) + 1 - GetPlayerProtection(i) + (Rnd * 5) - 2
                                Call BattleMsg(Index, "Você sente uma enorme quantidade de energia em seu corpo!", BrightCyan, 0)
                                Call BattleMsg(i, GetPlayerName(Index) & " move-se com uma enorme destreza!", BrightCyan, 1)

                                'Call PlayerMsg(index, "Você sente uma enorme quantidade de energia em seu corpo!", BrightCyan)
                                'Call PlayerMsg(I, GetPlayerName(index) & " move-se com uma enorme destreza!", BrightCyan)
                                Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Ataque3" & END_CHAR)
                            End If

                            If Damage > 0 Then
                                Call AttackPlayer(Index, i, Damage)
                                If GetPlayerWeaponSlot(Index) > 0 Then
                                    animazione = Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).animazione
                                    If animazione > o Then
                                        Call SendDataToMap(GetPlayerMap(Index), "spellanim" & SEP_CHAR & animazione & SEP_CHAR & Spell(animazione).SpellAnim & SEP_CHAR & Spell(animazione).SpellTime & SEP_CHAR & Spell(animazione).SpellDone & SEP_CHAR & Index & SEP_CHAR & TARGET_TYPE_PLAYER & SEP_CHAR & i & SEP_CHAR & END_CHAR)
                                    End If
                                End If
                            Else
                                Call PlayerMsg(Index, "Seu ataque não fez nada.", BrightRed)
                                Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Errou" & END_CHAR)
                            End If

                        Else
                            Call BattleMsg(Index, GetPlayerName(i) & " bloqueou seu ataque!", BrightCyan, 0)
                            Call BattleMsg(i, "Você bloqueou o ataque de " & GetPlayerName(Index) & "!", BrightCyan, 1)

                            'Call PlayerMsg(index, GetPlayerName(I) & "'s " & Trim$(Item(GetPlayerInvItemNum(I, GetPlayerShieldSlot(I))).Name) & " bloqueou seu ataque!", BrightCyan)
                            'Call PlayerMsg(I, "Your " & Trim$(Item(GetPlayerInvItemNum(I, GetPlayerShieldSlot(I))).Name) & " bloqueou o ataque de " & GetPlayerName(index) & "!", BrightCyan)
                            Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Errou" & END_CHAR)
                        End If

                        Exit Sub
                    End If
                End If

            Next

            ' Atacando NPC
            For i = 1 To MAX_MAP_NPCS

                ' Podemos atacar?
                If CanAttackNpc(Index, i) Then

                    ' Pegando o dano...
                    If Not CanPlayerCriticalHit(Index) Then
                        Damage = GetPlayerDamage(Index) - Int(Npc(MapNpc(GetPlayerMap(Index), i).num).DEF / 2) + (Rnd * 5) - 2
                        Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Ataque" & Int(Rnd * 2) + 1 & END_CHAR)
                    Else
                        N = GetPlayerDamage(Index)
                        Damage = N + Int(Rnd * Int(N / 2)) + 1 - Int(Npc(MapNpc(GetPlayerMap(Index), i).num).DEF / 2) + (Rnd * 5) - 2
                        Call BattleMsg(Index, "Você sente uma enorme quantidade de energia em seu corpo!", BrightCyan, 0)

                        'Call PlayerMsg(index, "Você sente uma grande quantidade de energia em seu corpo!", BrightCyan)
                        Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Ataque3" & END_CHAR)
                    End If

                    If Damage > 0 Then
                        Call AttackNpc(Index, i, Damage)
                        Call SendDataTo(Index, "BLITPLAYERDMG" & SEP_CHAR & Damage & SEP_CHAR & i & END_CHAR)
                        If GetPlayerWeaponSlot(Index) > 0 Then
                            animazione = Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).animazione
                            If animazione > 0 Then
                                Call SendDataToMap(GetPlayerMap(Index), "spellanim" & SEP_CHAR & animazione & SEP_CHAR & Spell(animazione).SpellAnim & SEP_CHAR & Spell(animazione).SpellTime & SEP_CHAR & Spell(animazione).SpellDone & SEP_CHAR & Index & SEP_CHAR & TARGET_TYPE_NPC & SEP_CHAR & i & SEP_CHAR & END_CHAR)
                            End If
                        End If
                    Else
                        Call BattleMsg(Index, "Seu ataque não fez nada.", BrightRed, 0)
                        Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Errou" & END_CHAR)
                    End If

                    Exit Sub
                End If

            Next

            Exit Sub


Procure no ModServerTCP por :

Código:
Item(N).AttackSpeed = Val(Parse(23))

Abaixo adicione :

Código:
Item(N).animazione = Val(Parse(24))

Procure no ModServerTCP por :

Código:
Case "arrowhit"

E substitua ela toda por :

Código:
Case "arrowhit"
        Dim Anim As Long
            N = Val(Parse(1))
            z = Val(Parse(2))
            x = Val(Parse(3))
            y = Val(Parse(4))

            If N = TARGET_TYPE_PLAYER Then

                ' Make sure we dont try to attack ourselves
                If z <> Index Then

                    ' Can we attack the player?
                    If CanAttackPlayerWithArrow(Index, z) Then
                        If Not CanPlayerBlockHit(z) Then

                            ' Get the damage we can do
                            If Not CanPlayerCriticalHit(Index) Then
                                Damage = GetPlayerDamage(Index) - GetPlayerProtection(z) + (Rnd * 5) - 2
                                Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Ataque" & Int(Rnd * 2) + 1 & END_CHAR)
                            Else
                                N = GetPlayerDamage(Index)
                                Damage = N + Int(Rnd * Int(N / 2)) + 1 - GetPlayerProtection(z) + (Rnd * 5) - 2
                                Call BattleMsg(Index, "Você sente uma enorme quantidade de energia em seu arco!", BrightCyan, 0)
                                Call BattleMsg(z, GetPlayerName(Index) & " atira com incrível precisão!", BrightCyan, 1)

                                'Call PlayerMsg(index, "You feel a surge of energy upon shooting!", BrightCyan)
                                'Call PlayerMsg(z, GetPlayerName(index) & " shoots with amazing accuracy!", BrightCyan)
                                Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Ataque3" & END_CHAR)
                            End If

                            If Damage > 0 Then
                                Call AttackPlayer(Index, z, Damage)
                                If GetPlayerWeaponSlot(Index) > 0 Then
                                    Anim = Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).animazione
                                    If Anim > 0 Then
                                        Call SendDataToMap(GetPlayerMap(Index), "spellanim" & SEP_CHAR & Anim & SEP_CHAR & Spell(Anim).SpellAnim & SEP_CHAR & Spell(Anim).SpellTime & SEP_CHAR & Spell(Anim).SpellDone & SEP_CHAR & Index & SEP_CHAR & TARGET_TYPE_PLAYER & SEP_CHAR & z & SEP_CHAR & END_CHAR)
                                    End If
                                End If
                            Else
                                Call BattleMsg(Index, "Sua ataque não fez nada.", BrightRed, 0)
                                Call BattleMsg(z, "Ataque de " & GetPlayerName(z) & " não fez nada.", BrightRed, 1)
                                Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Errou" & END_CHAR)
                            End If

                        Else
                            Call BattleMsg(Index, GetPlayerName(z) & " blocked your hit!", BrightCyan, 0)
                            Call BattleMsg(z, "You blocked " & GetPlayerName(Index) & "'s hit!", BrightCyan, 1)

                            'Call PlayerMsg(index, GetPlayerName(z) & "'s " & Trim$(Item(GetPlayerInvItemNum(z, GetPlayerShieldSlot(z))).Name) & " has blocked your hit!", BrightCyan)
                            'Call PlayerMsg(z, "Your " & Trim$(Item(GetPlayerInvItemNum(z, GetPlayerShieldSlot(z))).Name) & " has blocked " & GetPlayerName(index) & "'s hit!", BrightCyan)
                            Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Errou" & END_CHAR)
                        End If

                        Exit Sub
                    End If
                End If

            ElseIf N = TARGET_TYPE_NPC Then

                ' Can we attack the npc?
                If CanAttackNpcWithArrow(Index, z) Then

                    ' Get the damage we can do
                    If Not CanPlayerCriticalHit(Index) Then
                        Damage = GetPlayerDamage(Index) - Int(Npc(MapNpc(GetPlayerMap(Index), z).num).DEF / 2) + (Rnd * 5) - 2
                        Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Ataque" & Int(Rnd * 2) + 1 & END_CHAR)
                    Else
                        N = GetPlayerDamage(Index)
                        Damage = N + Int(Rnd * Int(N / 2)) + 1 - Int(Npc(MapNpc(GetPlayerMap(Index), z).num).DEF / 2) + (Rnd * 5) - 2
                        Call BattleMsg(Index, "Você sente uma enorme quantidade de energia em seu corpo!", BrightCyan, 0)

                        'Call PlayerMsg(index, "You feel a surge of energy upon swinging!", BrightCyan)
                        Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Ataque3" & END_CHAR)
                    End If

                    If Damage > 0 Then
                        Call AttackNpc(Index, z, Damage)
                        Call SendDataTo(Index, "BLITPLAYERDMG" & SEP_CHAR & Damage & SEP_CHAR & z & END_CHAR)
                        If GetPlayerWeaponSlot(Index) > 0 Then
                            Anim = Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).animazione
                            If Anim > 0 Then
                                Call SendDataToMap(GetPlayerMap(Index), "spellanim" & SEP_CHAR & Anim & SEP_CHAR & Spell(Anim).SpellAnim & SEP_CHAR & Spell(Anim).SpellTime & SEP_CHAR & Spell(Anim).SpellDone & SEP_CHAR & Index & SEP_CHAR & TARGET_TYPE_NPC & SEP_CHAR & z & SEP_CHAR & END_CHAR)
                            End If
                        End If
                    Else
                        Call BattleMsg(Index, "Seu ataque não fez nada.", BrightRed, 0)
                        Call SendDataToMap(GetPlayerMap(Index), "sound" & SEP_CHAR & "Errou" & END_CHAR)
                    End If

                    Exit Sub
                End If
            End If

            Exit Sub
    End Select


Agora, Procure no ModServerTCP por :

Código:
Sub SendEditItemTo(ByVal Index As Long, ByVal ItemNum As Long)

E substitua a Sub toda por :

Código:
Sub SendEditItemTo(ByVal Index As Long, ByVal ItemNum As Long)
    Dim Packet As String

    Packet = "EDITITEM" & SEP_CHAR & ItemNum & SEP_CHAR & Trim$(Item(ItemNum).Name) & SEP_CHAR & Item(ItemNum).Pic & SEP_CHAR & Item(ItemNum).Type & SEP_CHAR & Item(ItemNum).Data1 & SEP_CHAR & Item(ItemNum).Data2 & SEP_CHAR & Item(ItemNum).Data3 & SEP_CHAR & Item(ItemNum).StrReq & SEP_CHAR & Item(ItemNum).DefReq & SEP_CHAR & Item(ItemNum).SpeedReq & SEP_CHAR & Item(ItemNum).MagicReq & SEP_CHAR & Item(ItemNum).ClassReq & SEP_CHAR & Item(ItemNum).AccessReq & SEP_CHAR
    Packet = Packet & Item(ItemNum).AddHP & SEP_CHAR & Item(ItemNum).AddMP & SEP_CHAR & Item(ItemNum).AddSP & SEP_CHAR & Item(ItemNum).AddStr & SEP_CHAR & Item(ItemNum).AddDef & SEP_CHAR & Item(ItemNum).AddMagi & SEP_CHAR & Item(ItemNum).AddSpeed & SEP_CHAR & Item(ItemNum).AddEXP & SEP_CHAR & Item(ItemNum).Desc & SEP_CHAR & Item(ItemNum).AttackSpeed & SEP_CHAR & Item(ItemNum).animazione
    Packet = Packet & END_CHAR
    Call SendDataTo(Index, Packet)
End Sub

Agora Procure no ModServerTCP por :

Código:
Sub SendUpdateItemTo(ByVal Index As Long, ByVal ItemNum As Long)

E substitua a Sub toda por :

Código:
Sub SendUpdateItemTo(ByVal Index As Long, ByVal ItemNum As Long)
    Dim Packet As String

    'Packet = "UPDATEITEM" & SEP_CHAR & ItemNum & SEP_CHAR & Trim$(Item(ItemNum).Name) & SEP_CHAR & Item(ItemNum).Pic & SEP_CHAR & Item(ItemNum).Type & SEP_CHAR & Item(ItemNum).Desc & END_CHAR
    Packet = "UPDATEITEM" & SEP_CHAR & ItemNum & SEP_CHAR & Trim$(Item(ItemNum).Name) & SEP_CHAR & Item(ItemNum).Pic & SEP_CHAR & Item(ItemNum).Type & SEP_CHAR & Item(ItemNum).Data1 & SEP_CHAR & Item(ItemNum).Data2 & SEP_CHAR & Item(ItemNum).Data3 & SEP_CHAR & Item(ItemNum).StrReq & SEP_CHAR & Item(ItemNum).DefReq & SEP_CHAR & Item(ItemNum).SpeedReq & SEP_CHAR & Item(ItemNum).MagicReq & SEP_CHAR & Item(ItemNum).ClassReq & SEP_CHAR & Item(ItemNum).AccessReq & SEP_CHAR
    Packet = Packet & Item(ItemNum).AddHP & SEP_CHAR & Item(ItemNum).AddMP & SEP_CHAR & Item(ItemNum).AddSP & SEP_CHAR & Item(ItemNum).AddStr & SEP_CHAR & Item(ItemNum).AddDef & SEP_CHAR & Item(ItemNum).AddMagi & SEP_CHAR & Item(ItemNum).AddSpeed & SEP_CHAR & Item(ItemNum).AddEXP & SEP_CHAR & Item(ItemNum).Desc & SEP_CHAR & Item(ItemNum).AttackSpeed & SEP_CHAR & Item(ItemNum).animazione
    Packet = Packet & END_CHAR
    Call SendDataTo(Index, Packet)
End Sub

E para finalizar, Procure no ModServerTCP por :

Código:
Sub SendUpdateItemToAll(ByVal ItemNum As Long)

E substitua a Sub toda por :

Código:
Sub SendUpdateItemToAll(ByVal ItemNum As Long)
    Dim Packet As String

    'Packet = "UPDATEITEM" & SEP_CHAR & ItemNum & SEP_CHAR & Trim$(Item(ItemNum).Name) & SEP_CHAR & Item(ItemNum).Pic & SEP_CHAR & Item(ItemNum).Type & SEP_CHAR & Item(ItemNum).Desc & END_CHAR
    Packet = "UPDATEITEM" & SEP_CHAR & ItemNum & SEP_CHAR & Trim$(Item(ItemNum).Name) & SEP_CHAR & Item(ItemNum).Pic & SEP_CHAR & Item(ItemNum).Type & SEP_CHAR & Item(ItemNum).Data1 & SEP_CHAR & Item(ItemNum).Data2 & SEP_CHAR & Item(ItemNum).Data3 & SEP_CHAR & Item(ItemNum).StrReq & SEP_CHAR & Item(ItemNum).DefReq & SEP_CHAR & Item(ItemNum).SpeedReq & SEP_CHAR & Item(ItemNum).MagicReq & SEP_CHAR & Item(ItemNum).ClassReq & SEP_CHAR & Item(ItemNum).AccessReq & SEP_CHAR
    Packet = Packet & Item(ItemNum).AddHP & SEP_CHAR & Item(ItemNum).AddMP & SEP_CHAR & Item(ItemNum).AddSP & SEP_CHAR & Item(ItemNum).AddStr & SEP_CHAR & Item(ItemNum).AddDef & SEP_CHAR & Item(ItemNum).AddMagi & SEP_CHAR & Item(ItemNum).AddSpeed & SEP_CHAR & Item(ItemNum).AddEXP & SEP_CHAR & Item(ItemNum).Desc & SEP_CHAR & Item(ItemNum).AttackSpeed & SEP_CHAR & Item(ItemNum).animazione
    Packet = Packet & END_CHAR
    Call SendDataToAll(Packet)
End Sub


Pronto, Terminamos...

Como funciona : Na frmItemEditor você selecionara a Animação que você deseja. Lembrando que o Número da Animação, é o numero da Spell.

Exemplo : Você selecionou Animação = 5 no frmItemEditor. Então você irá no Editor de Magias, Na Spell numero 5 e selecionar la a Animação que você Deseja. ;D

Bom proveito!

Créditos : Guardian
Créditos: Thales12 por me dar a ídeia e me insentivar

_______________________________________________________________________________________________________


[Você precisa estar registrado e conectado para ver esta imagem.]
avatar
Lucas Roberto

Mensagens : 706

http://universogamesmmo.forumeiros.com

Voltar ao Topo Ir em baixo

Tutorial Re: Animação no Ataque (Por Item)

Mensagem por giovani18 em Ter 17 Abr 2012, 19:25

ai blz o tuto pega legal mais tem um poblema com o meu pq o parse 24 ja tem nele tentei por 25 foi mais guando eu vo edita aquele iten de novo da erro la e se eu mudo da erro no de não dropa itens pode ajuda nisso ????
avatar
giovani18

Mensagens : 74

http://masterdbz.xpg.com.br

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum