Universo Games
Ola , Convidado



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

Suporte e Desenvolvimento só no Universo Games

Ola Convidado, Seja Bem vindo a equipe lhe deseja boa sorte no seu projeto!

Você não está conectado. Conecte-se ou registre-se

Animação no Ataque (Por Item)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1Tutorial Animação no Ataque (Por Item) em Sab 05 Nov 2011, 17:15

Luucas Robeerto


Fundador
Fundador
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.]
Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
http://universogamesmmo.forumeiros.com

2Tutorial Re: Animação no Ataque (Por Item) em Ter 17 Abr 2012, 19:25

giovani18


Membro
Membro
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 ????

http://masterdbz.xpg.com.br

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

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