| | #1 (permalink) | |
| Miembro Especíal Ingreso: octubre-2008 Ubicación: Descargas
Mensajes: 81
Agradecimientos realizados: 13
Le han agradecido 8 veces en 7 Posts
Reportes: 1
Reportado 0 Veces en 0 Posts
Poder: 12 ![]() | Bueno aquí les traigo como usar esta libreria. La libreria se descarga de aca: [Solo Miembros registrados ven los enlaces. ] viene con ejemplo sobre como usarla incluido. Version 11.5 CODIGO EN EL CLIENTE En el mod Tileengine añadimos: Código: Public Declare Function vbDABLalphablend16 Lib "vbDABL" (ByVal iMode As Integer, ByVal bColorKey As Integer, _
ByRef sPtr As Any, ByRef dPtr As Any, ByVal iAlphaVal As Integer, ByVal iWidth As Integer, ByVal iHeight As Integer, _
ByVal isPitch As Integer, ByVal idPitch As Integer, ByVal iColorKey As Integer) As Integer
Public Declare Function vbDABLcolorblend16555 Lib "vbDABL" (ByRef sPtr As Any, ByRef dPtr As Any, ByVal alpha_val%, _
ByVal Width%, ByVal Height%, ByVal sPitch%, ByVal dPitch%, ByVal rVal%, ByVal gVal%, ByVal bVal%) As Long
Public Declare Function vbDABLcolorblend16565 Lib "vbDABL" (ByRef sPtr As Any, ByRef dPtr As Any, ByVal alpha_val%, _
ByVal Width%, ByVal Height%, ByVal sPitch%, ByVal dPitch%, ByVal rVal%, ByVal gVal%, ByVal bVal%) As Long
Public Declare Function vbDABLcolorblend16555ck Lib "vbDABL" (ByRef sPtr As Any, ByRef dPtr As Any, ByVal alpha_val%, _
ByVal Width%, ByVal Height%, ByVal sPitch%, ByVal dPitch%, ByVal rVal%, ByVal gVal%, ByVal bVal%) As Long
Public Declare Function vbDABLcolorblend16565ck Lib "vbDABL" (ByRef sPtr As Any, ByRef dPtr As Any, ByVal alpha_val%, _
ByVal Width%, ByVal Height%, ByVal sPitch%, ByVal dPitch%, ByVal rVal%, ByVal gVal%, ByVal bVal%) As Long
Código: Sub DDrawTransGrhtoSurface(Surface As Di Código: Sub SurfaceConAB(Surface As DirectDrawSurface7, Grh As Grh, ByVal X As Integer, ByVal Y As Integer, center As Byte, Animate As Byte, Optional ByVal KillAnim As Integer = 0)
Dim iGrhIndex As Integer
Dim SourceRect As RECT
Dim QuitarAnimacion As Boolean
If Animate Then
If Grh.Started = 1 Then
If Grh.SpeedCounter > 0 Then
Grh.SpeedCounter = Grh.SpeedCounter - 1
If Grh.SpeedCounter = 0 Then
Grh.SpeedCounter = GrhData(Grh.GrhIndex).Speed
Grh.FrameCounter = Grh.FrameCounter + 1
If Grh.FrameCounter > GrhData(Grh.GrhIndex).NumFrames Then
Grh.FrameCounter = 1
If KillAnim Then
If charlist(KillAnim).FxLoopTimes <> LoopAdEternum Then
If charlist(KillAnim).FxLoopTimes > 0 Then charlist(KillAnim).FxLoopTimes = charlist(KillAnim).FxLoopTimes - 1
If charlist(KillAnim).FxLoopTimes < 1 Then 'Matamos la anim del fx ;))
charlist(KillAnim).Fx = 0
Exit Sub
End If
End If
End If
End If
End If
End If
End If
End If
If Grh.GrhIndex = 0 Then Exit Sub
iGrhIndex = GrhData(Grh.GrhIndex).Frames(Grh.FrameCounter)
If center Then
If GrhData(iGrhIndex).TileWidth <> 1 Then
X = X - Int(GrhData(iGrhIndex).TileWidth * 16) + 16 'hard coded for speed
End If
If GrhData(iGrhIndex).TileHeight <> 1 Then
Y = Y - Int(GrhData(iGrhIndex).TileHeight * 32) + 32 'hard coded for speed
End If
End If
With SourceRect
.Left = GrhData(iGrhIndex).sX + IIf(X < 0, Abs(X), 0)
.Top = GrhData(iGrhIndex).sY + IIf(Y < 0, Abs(Y), 0)
.Right = .Left + GrhData(iGrhIndex).pixelWidth
.Bottom = .Top + GrhData(iGrhIndex).pixelHeight
End With
Dim Src As DirectDrawSurface7
Dim rDest As RECT
Dim dArray() As Byte, sArray() As Byte
Dim ddsdSrc As DDSURFACEDESC2, ddsdDest As DDSURFACEDESC2
Dim Modo As Long
Set Src = SurfaceDB.Surface(GrhData(iGrhIndex).FileNum)
Src.GetSurfaceDesc ddsdSrc
Surface.GetSurfaceDesc ddsdDest
With rDest
.Left = X
.Top = Y
.Right = X + GrhData(iGrhIndex).pixelWidth
.Bottom = Y + GrhData(iGrhIndex).pixelHeight
If .Right > ddsdDest.lWidth Then
.Right = ddsdDest.lWidth
End If
If .Bottom > ddsdDest.lHeight Then
.Bottom = ddsdDest.lHeight
End If
End With
Dim SrcLock As Boolean, DstLock As Boolean
SrcLock = False: DstLock = False
On Local Error GoTo HayErrorAlpha
Src.Lock SourceRect, ddsdSrc, DDLOCK_NOSYSLOCK Or DDLOCK_WAIT, 0
Surface.Lock rDest, ddsdDest, DDLOCK_NOSYSLOCK Or DDLOCK_WAIT, 0
Surface.GetLockedArray dArray()
Src.GetLockedArray sArray()
If ddsdDest.ddpfPixelFormat.lGBitMask = &H3E0 Then
Modo = 555
ElseIf ddsdDest.ddpfPixelFormat.lGBitMask = &H7E0 Then
Modo = 565
Else
MsgBox "Modo de vídeo no esta en 555 o 565 o algo falló."
End
End If
vbDABLalphablend16 Modo, 1, sArray(SourceRect.Left * 2, SourceRect.Top), dArray(X + X, Y), 160, rDest.Right - rDest.Left, rDest.Bottom - rDest.Top, ddsdSrc.lPitch, ddsdDest.lPitch, 0
Surface.Unlock rDest
Src.Unlock SourceRect
Exit Sub
HayErrorAlpha:
If SrcLock Then Src.Unlock SourceRect
If DstLock Then Surface.Unlock rDest
End Sub
Cita:
Código: Call SurfaceConAB en lugar de poner: Código: vbDABLalphablend16 Modo, 1, sArray(SourceRect.Left * 2, SourceRect.Top), dArray(X + X, Y), 160, rDest.Right - rDest.Left, rDest.Bottom - rDest.Top, ddsdSrc.lPitch, ddsdDest.lPitch, 0 Explicacion: 160 es el grado de alpha que aplicamos Pondriamos: Código: Call vbDABLcolorblend16565ck(ByVal VarPtr(sArray(SourceRect.Left * 2, SourceRect.Top)), ByVal VarPtr(dArray(X + X, Y)), 120, rDest.Right - rDest.Left, rDest.Bottom - rDest.Top, ddsdSrc.lPitch, ddsdDest.lPitch, 255, 255, 255) Atte: Juan | |
| | |
| Sponsored Links |
![]() |
| Marcadores |
| Herramientas | |
| Desplegado | |
|
|
Te recomendamos visitar estos sitios
|