Lucas Roberto Administrador
Mensagens : 711
| Assunto: Animação no Ataque (Por Item) Sáb 05 Nov 2011, 18: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 : [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]Certo, Vamos começar... Cliente~SideVa 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~SideProcure 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 | |
|