hmm I am not good whit that packet tings if you found out how to fix pm me I will keep looking…what version you trayed?can you pls look v1 if it is there it is not my fault :S?i look in attack sub and chek attack all look ok...... idk if this going to work but try raplace all Public Sub BltPlayer(ByVal Index As Long) whit this``` Public Sub BltPlayer(ByVal Index As Long) Dim i As Long, x As Long, y As Long Dim Sprite As Long, spriteleft As Long Dim rec As DxVBLib.RECT Dim attackspeed As Long Dim TempOnGround As Boolean ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler Sprite = GetPlayerSprite(Index) If Sprite < 1 Or Sprite > NumCharacters Then Exit Sub CharacterTimer(Sprite) = GetTickCount + SurfaceTimerMax Call InitDDSurf("characters\" & Sprite, DDSD_Character(Sprite), DDS_Character(Sprite)) If (FRAMES_STANDING >= FRAMES_WALKING Or FRAMES_STANDING >= FRAMES_RUNNING Or FRAMES_STANDING >= FRAMES_ATTACKING Or FRAMES_STANDING >= FRAMES_JUMPING Or FRAMES_STANDING >= FRAMES_FALLING) Then HighestFrame = FRAMES_STANDING ElseIf (FRAMES_WALKING >= FRAMES_STANDING Or FRAMES_WALKING >= FRAMES_RUNNING Or FRAMES_WALKING >= FRAMES_ATTACKING Or FRAMES_WALKING >= FRAMES_JUMPING Or FRAMES_WALKING >= FRAMES_FALLING) Then HighestFrame = FRAMES_WALKING ElseIf (FRAMES_RUNNING >= FRAMES_STANDING Or FRAMES_RUNNING >= FRAMES_WALKING Or FRAMES_RUNNING >= FRAMES_ATTACKING Or FRAMES_RUNNING >= FRAMES_JUMPING Or FRAMES_RUNNING >= FRAMES_FALLING) Then HighestFrame = FRAMES_RUNNING ElseIf (FRAMES_ATTACKING >= FRAMES_STANDING Or FRAMES_ATTACKING >= FRAMES_WALKING Or FRAMES_ATTACKING >= FRAMES_RUNNING Or FRAMES_ATTACKING >= FRAMES_JUMPING Or FRAMES_ATTACKING >= FRAMES_FALLING) Then HighestFrame = FRAMES_ATTACKING ElseIf (FRAMES_JUMPING >= FRAMES_STANDING Or FRAMES_JUMPING >= FRAMES_WALKING Or FRAMES_JUMPING >= FRAMES_RUNNING Or FRAMES_JUMPING >= FRAMES_ATTACKING Or FRAMES_JUMPING >= FRAMES_FALLING) Then HighestFrame = FRAMES_JUMPING ElseIf (FRAMES_FALLING >= FRAMES_STANDING Or FRAMES_FALLING >= FRAMES_WALKING Or FRAMES_FALLING >= FRAMES_RUNNING Or FRAMES_FALLING >= FRAMES_ATTACKING Or FRAMES_FALLING >= FRAMES_JUMPING) Then HighestFrame = FRAMES_FALLING End If ' if we're in water, slow us down If Map.tile(GetPlayerX(Index), GetPlayerY(Index)).Type TILE_TYPE_WATER Then WaterVelocity = 1 Else WaterVelocity = 0.5 End If ' speed from weapon If GetPlayerEquipment(Index, Weapon) > 0 Then attackspeed = Item(GetPlayerEquipment(Index, Weapon)).Speed Else attackspeed = 1500 End If If GetPlayerY(Index) < Map.MaxY Then TempOnGround = CheckDirection(DIR_DOWN, Index) Else TempOnGround = Not Map.Down > 0 End If ' Check for attacking animation If Player(Index).AttackTimer + (attackspeed / 3) > GetTickCount Then If Player(Index).Attacking = 1 Then If Player(Index).state 3 Then Player(Index).Anim = 0 Player(Index).state = 3 End If Else ' If not attacking, jump/fall normally If Not TempOnGround Then Select Case GetPlayerInertia(Index) Case DIR_UP If Player(Index).state 4 Then Player(Index).Anim = 0 Player(Index).state = 4 Case DIR_DOWN If Player(Index).state 5 Then Player(Index).Anim = 0 Player(Index).state = 5 End Select End If End If With Player(Index) If .AttackTimer + (attackspeed / WaterVelocity) < GetTickCount Then .Attacking = 0 .AttackTimer = 0 End If End With ' Set the left Select Case GetPlayerDir(Index) Case DIR_LEFT spriteleft = 1 Case DIR_RIGHT spriteleft = 0 End Select If HighestFrame > 0 Then Frames_Width = (DDSD_Character(Sprite).lWidth / 2) / HighestFrame With rec .top = Player(Index).state * (DDSD_Character(Sprite).lHeight / 6) ' 6 animation states .Bottom = .top + (DDSD_Character(Sprite).lHeight / 6) .Left = (spriteleft * (DDSD_Character(Sprite).lWidth / 2)) + (Player(Index).Anim * Frames_Width) .Right = .Left + Frames_Width End With ' Calculate the X x = GetPlayerX(Index) * PIC_X + Player(Index).XOffset - ((Frames_Width - 32) / 2) ' Is the player's height more than 32..? If (DDSD_Character(Sprite).lHeight) > 32 Then ' Create a 32 pixel offset for larger sprites y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - ((DDSD_Character(Sprite).lHeight / 6) - 32) Else ' Proceed as normal y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset End If ' render the actual sprite Call BltSprite(Sprite, x, y, rec) Select Case Player(Index).state Case 0 ' standing If Player(Index).AnimTimer + (FRAMES_STANDING_LENGTH / WaterVelocity) < GetTickCount Then If Player(Index).Anim < (FRAMES_STANDING - 1) Then Player(Index).Anim = Player(Index).Anim + 1 Else Player(Index).Anim = 0 End If Player(Index).AnimTimer = GetTickCount End If Case 1 ' walking If Player(Index).AnimTimer + (FRAMES_WALKING_LENGTH / WaterVelocity) < GetTickCount Then If Player(Index).Anim < (FRAMES_WALKING - 1) Then Player(Index).Anim = Player(Index).Anim + 1 Else Player(Index).Anim = 0 End If Player(Index).AnimTimer = GetTickCount End If Case 2 ' running If Player(Index).AnimTimer + (FRAMES_RUNNING_LENGTH / WaterVelocity) < GetTickCount Then If Player(Index).Anim < (FRAMES_RUNNING - 1) Then Player(Index).Anim = Player(Index).Anim + 1 Else Player(Index).Anim = 0 End If Player(Index).AnimTimer = GetTickCount End If Case 3 ' attacking If Player(Index).AttackTimer + ((attackspeed / FRAMES_ATTACKING) / WaterVelocity) < GetTickCount Then If Player(Index).Anim < (FRAMES_ATTACKING - 1) Then Player(Index).Anim = Player(Index).Anim + 1 Else Player(Index).Attacking = 0 Player(Index).AttackTimer = 0 End If End If Case 4 ' jumping If Player(Index).AnimTimer + (FRAMES_JUMPING_LENGTH / WaterVelocity) < GetTickCount Then If Player(Index).Anim < (FRAMES_JUMPING - 1) Then Player(Index).Anim = Player(Index).Anim + 1 Else Player(Index).Anim = 0 End If Player(Index).AnimTimer = GetTickCount End If Case 5 ' falling If Player(Index).AnimTimer + (FRAMES_FALLING_LENGTH / WaterVelocity) < GetTickCount Then If Player(Index).Anim < (FRAMES_FALLING - 1) Then Player(Index).Anim = Player(Index).Anim + 1 Else Player(Index).Anim = 0 End If Player(Index).AnimTimer = GetTickCount End If End Select ' check for paperdolling For i = 1 To UBound(PaperdollOrder) If GetPlayerEquipment(Index, PaperdollOrder(i)) > 0 Then If Item(GetPlayerEquipment(Index, PaperdollOrder(i))).Paperdoll > 0 Then Call BltPaperdoll(x, y, Item(GetPlayerEquipment(Index, PaperdollOrder(i))).Paperdoll, Player(Index).state, Player(Index).Anim, spriteleft) End If End If Next ' Error handler Exit Sub errorhandler: HandleError "BltPlayer", "modDirectDraw7", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub ```anyway how you check that O.o?