Lucas Roberto Administrador


Mensagens : 709
 | Assunto: Animação no Ataque (Por Item) 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~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 _______________________________________________________________________________________________________ |
|
giovani18 Praticante


Mensagens : 74
 | Assunto: Re: Animação no Ataque (Por Item) 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 ???? |
|