SpikeL Comunidad
Hola, bienvenido a SpikeL Foro.

Si eres nuevo, deves registrarte.

Si ya tienes una cuenta, deves ingresar.

¡Muchas gracias!

PD: Si te has registrado pero no puedes logear tienes que activar tu cuenta desde tu e-mail.


Unirse al foro, es rápido y fácil

SpikeL Comunidad
Hola, bienvenido a SpikeL Foro.

Si eres nuevo, deves registrarte.

Si ya tienes una cuenta, deves ingresar.

¡Muchas gracias!

PD: Si te has registrado pero no puedes logear tienes que activar tu cuenta desde tu e-mail.
SpikeL Comunidad
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Flechas qe te persiguen

2 participantes

Ir abajo

Flechas qe te persiguen Empty Flechas qe te persiguen

Mensaje por santi55 Jue Dic 23, 2010 12:35 pm

Cliente:

Agregan estos metodos:


Código:
Public Function Engine_GetAngle(ByVal CenterX As Integer, ByVal CenterY As Integer, ByVal TargetX As Integer, ByVal TargetY As Integer) As Single
'************************************************************
'Gets the angle between two points in a 2d plane
'More info: http://www.vbgore.com/GameClient.TileEn ... e_GetAngle
'************************************************************
Dim SideA As Single
Dim SideC As Single
 
    On Error GoTo ErrOut
 
    'Check for horizontal lines (90 or 270 degrees)
    If CenterY = TargetY Then
 
        'Check for going right (90 degrees)
        If CenterX < TargetX Then
            Engine_GetAngle = 90
 
            'Check for going left (270 degrees)
        Else
            Engine_GetAngle = 270
        End If
 
        'Exit the function
        Exit Function
 
    End If
 
    'Check for horizontal lines (360 or 180 degrees)
    If CenterX = TargetX Then
 
        'Check for going up (360 degrees)
        If CenterY > TargetY Then
            Engine_GetAngle = 360
 
            'Check for going down (180 degrees)
        Else
            Engine_GetAngle = 180
        End If
 
        'Exit the function
        Exit Function
 
    End If
 
    'Calculate Side C
    SideC = Sqr(Abs(TargetX - CenterX) ^ 2 + Abs(TargetY - CenterY) ^ 2)
 
    'Side B = CenterY
 
    'Calculate Side A
    SideA = Sqr(Abs(TargetX - CenterX) ^ 2 + TargetY ^ 2)
 
    'Calculate the angle
    Engine_GetAngle = (SideA ^ 2 - CenterY ^ 2 - SideC ^ 2) / (CenterY * SideC * -2)
    Engine_GetAngle = (Atn(-Engine_GetAngle / Sqr(-Engine_GetAngle * Engine_GetAngle + 1)) + 1.5708) * 57.29583
 
    'If the angle is >180, subtract from 360
    If TargetX < CenterX Then Engine_GetAngle = 360 - Engine_GetAngle
 
    'Exit function
 
Exit Function
 
    'Check for error
ErrOut:
 
    'Return a 0 saying there was an error
    Engine_GetAngle = 0
 
Exit Function
 
End Function
 
 
 
Public Sub Crear_Flecha(ByVal AI As Integer, ByVal CI As Integer, ByVal grh As Integer, ByVal R As Byte, fallo As Byte)
       
    Dim i As Integer
   
    For i = 1 To MaxFlecha
          If Flechas_list(i).EnUso = 0 Then Exit For
    Next
   
    If i = 0 Then i = 1
   
   
   
    Dim addfalloX As Byte
    Dim addFalloY As Integer
   
    If fallo <> 0 Then
   
    addfalloX = RandomNumber(-25, 25)
    addFalloY = RandomNumber(5, 25)
   
    Else
   
    addFalloY = -35
    'addfalloX = 16
 
    End If
 
    Flechas_list(i).xb = CharList(CI).POS.X * 32 + CharList(CI).MoveOffset.X + addfalloX
    Flechas_list(i).yb = CharList(CI).POS.Y * 32 + CharList(CI).MoveOffset.Y + addFalloY
    Flechas_list(i).Rotacion = R
    Flechas_list(i).X = CharList(AI).POS.X * 32 + CharList(AI).MoveOffset.X
    Flechas_list(i).Y = CharList(AI).POS.Y * 32 + CharList(AI).MoveOffset.Y '+ addFalloY
    Flechas_list(i).EnUso = 1
    InitGrh Flechas_list(i).grh, grh
   
    'Flechas_list(i).Angle = Engine_GetAngle(Flechas_list(i).xb, Flechas_list(i).Y, Flechas_list(i).xb, Flechas_list(i).yb)
   
End Sub



Buscan:



Código:
 Case "!!"
            If PuedoQuitarFoco Then
                Rdata = Right$(Rdata, Len(Rdata) - 2)
                frmMensaje.msg.Caption = Rdata
                frmMensaje.Show
            End If
            Exit Sub



Y arriba ponen:



Código:
Case "FC" 'flecha a char
        Rdata = Right$(Rdata, Len(Rdata) - 2)
        Crear_Flecha Val(ReadField(1, Rdata, 44)), Val(ReadField(2, Rdata, 44)), Val(ReadField(3, Rdata, 44)), 0, Val(ReadField(4, Rdata, 44))
        Exit Sub


en el sub renderscreen, Abajo de:



Código:
For Y = screenminY To screenmaxY
        For X = screenminX To screenmaxX
            'Layer 1 **********************************
           
                If X <= 100 And Y <= 100 Then
                Call DDrawTransGrhtoSurface(MapData(X, Y).Graphic(1), _
                        (ScreenX - 1) * 32 + PixelOffsetX, _
                        (ScreenY - 1) * 32 + PixelOffsetY, _
                        1, 1, , X, Y)
                If MapData(X, Y).Graphic(2).grhindex <> 0 Then
                Call DDrawTransGrhtoSurface(MapData(X, Y).Graphic(2), (ScreenX - 1) * 32 + PixelOffsetX, (ScreenY - 1) * 32 + PixelOffsetY, 1, 2, , X, Y)
                End If
               
                End If
               
            '******************************************
            ScreenX = ScreenX + 1
        Next X
 
        'Reset ScreenX to original value and increment ScreenY
        ScreenX = ScreenX - X + screenminX
        ScreenY = ScreenY + 1
    Next Y


ponen:



Código:
Dim j As Integer
    Dim Angle As Single
    Dim xb As Integer
    Dim yb As Integer
   
        For j = 0 To MaxFlecha
            If Flechas_list(j).EnUso = 1 Then
               
                'Update the position
                Angle = DegreeToRadian * Engine_GetAngle(Flechas_list(j).X, Flechas_list(j).Y, Flechas_list(j).xb, Flechas_list(j).yb)
                Flechas_list(j).X = (Flechas_list(j).X + (Sin(Angle) * timerElapsedTime * 0.63))
                Flechas_list(j).Y = (Flechas_list(j).Y - (Cos(Angle) * timerElapsedTime * 0.63))
               
                'Update the rotation
                If Flechas_list(j).Rotacion > 0 Then
                    Flechas_list(j).Angle = Flechas_list(j).Angle + (Flechas_list(j).Rotacion * timerElapsedTime * 0.1)
                    Do While Flechas_list(j).Angle > 360
                        Flechas_list(j).Angle = Flechas_list(j).Angle - 360
                    Loop
                End If
 
                'Draw if within range
                xb = ((-minX - 1) * 32) + Flechas_list(j).X + PixelOffsetX - 250 '((10 - 32) * 32)
                yb = ((-minY - 1) * 32) + Flechas_list(j).Y + PixelOffsetY - 250 '((10 - 32) * 32)
                If yb >= -32 Then
                    If yb <= (ScreenHeight + 32) Then
                        If xb >= -32 Then
                            If xb <= (ScreenWidth + 32) Then
                                    If (Flechas_list(j).X > Flechas_list(j).xb) And (Flechas_list(j).Y > Flechas_list(j).yb) Then
                                    DDrawTransGrhtoSurface Flechas_list(j).grh, xb, yb, 0, 1, , X, Y, , , , , 23.5
                                    ElseIf (Flechas_list(j).X > Flechas_list(j).xb) And (Flechas_list(j).Y < Flechas_list(j).yb) Then
                                        DDrawTransGrhtoSurface Flechas_list(j).grh, xb, yb, 0, 1, , X, Y, , , , , 110
                                    ElseIf (Flechas_list(j).X < Flechas_list(j).xb) And (Flechas_list(j).Y < Flechas_list(j).yb) Then
                                        DDrawTransGrhtoSurface Flechas_list(j).grh, xb, yb, 0, 1, , X, Y, , , , , 1.3
                                    ElseIf (Flechas_list(j).X = Flechas_list(j).xb) And (Flechas_list(j).Y < Flechas_list(j).yb) Then
                                        DDrawTransGrhtoSurface Flechas_list(j).grh, xb, yb, 0, 1, , X, Y, , , , , 1.92
                                    ElseIf (Flechas_list(j).X = Flechas_list(j).xb) And (Flechas_list(j).Y > Flechas_list(j).yb) Then
                                        DDrawTransGrhtoSurface Flechas_list(j).grh, xb, yb, 0, 1, , X, Y, , , , , 200
                                    Else
                                  '  DDrawTransGrhtoSurface Flechas_list(j).grh, xb, yb, 0, 1, , X, Y, , , , , Flechas_list(j).Angle '* 0.1
                                    DDrawTransGrhtoSurface Flechas_list(j).grh, xb, yb, 0, 1, , X, Y, , , , , 0
                                End If
                           
                            End If
                        End If
                    End If
                End If
               
            End If
        Next j
       
            For j = 0 To MaxFlecha
            If Flechas_list(j).grh.grhindex Then
                If Abs(Flechas_list(j).X - Flechas_list(j).xb) <= 20 Then
                    If Abs(Flechas_list(j).Y - Flechas_list(j).yb) <= 20 Then
                        Flechas_list(j).EnUso = 0
                    End If
                End If
            End If
        Next j



Ahora declaran:



Código:
Type Flecha
    X As Single
    Y As Single
    xb As Single
    yb As Single
    Angle As Single
    grh As grh
    Rotacion As Byte
    EnUso As Byte
End Type
 
Public Const MaxFlecha As Byte = 15
Public Flechas_list(MaxFlecha) As Flecha



Listo, Psamos al Server:

en el sub usuarioatacanpc buscan:



Código:
If Npclist(NpcIndex).flags.Snd2 Then
        Call SendData(ToPCArea, Userindex, UserList(Userindex).POS.Map, "" & UserList(Userindex).Char.CharIndex & "," & Npclist(NpcIndex).flags.Snd2)
    Else
        Call SendData(ToPCArea, Userindex, UserList(Userindex).POS.Map, "?" & UserList(Userindex).Char.CharIndex)
    End If


y abajo ponen:




Código:
If UserList(Userindex).Invent.MunicionEqpObjIndex And ObjData(UserList(Userindex).Invent.WeaponEqpObjIndex).proyectil = 1 Then
    SendData ToNPCArea, NpcIndex, 0, "FC" & UserList(Userindex).Char.CharIndex & "," & Npclist(NpcIndex).Char.CharIndex & "," & ObjData(UserList(Userindex).Invent.MunicionEqpObjIndex).GrhIndex
    End If


ahora, mas abajo donde dice:



Código:
Call SendData(ToIndex, Userindex, 0, "U1")



pobemos:



Código:
If UserList(Userindex).Invent.MunicionEqpObjIndex And ObjData(UserList(Userindex).Invent.WeaponEqpObjIndex).proyectil = 1 Then
    SendData ToNPCArea, NpcIndex, 0, "FC" & UserList(Userindex).Char.CharIndex & "," & Npclist(NpcIndex).Char.CharIndex & "," & ObjData(UserList(Userindex).Invent.MunicionEqpObjIndex).GrhIndex & "," & 1
End If


Ahora en el sub UsuarioAtacaUsuario

Buscan:



Código:
Call SendData(ToPCArea, AtacanteIndex, UserList(AtacanteIndex).POS.Map, "-" & UserList(AtacanteIndex).Char.CharIndex)
    Call SendData(ToIndex, AtacanteIndex, 0, "U1")
    Call SendData(ToIndex, VictimaIndex, 0, "U3" & UserList(AtacanteIndex).Name)



y abajo ponen:



Código:
 If ObjData(UserList(AtacanteIndex).Invent.WeaponEqpObjIndex).proyectil Then
        SendData ToPCArea, VictimaIndex, 0, "FC" & UserList(AtacanteIndex).Char.CharIndex & "," & UserList(VictimaIndex).Char.CharIndex & "," & ObjData(UserList(AtacanteIndex).Invent.MunicionEqpObjIndex).GrhIndex & "," & 1
    End If


Ahora en el sub userdañouser buscan:



Código:
If UserList(AtacanteIndex).flags.Hambre = 0 And UserList(AtacanteIndex).flags.Sed = 0 Then
    If UserList(AtacanteIndex).Invent.WeaponEqpObjIndex Then
        If ObjData(UserList(AtacanteIndex).Invent.WeaponEqpObjIndex).proyectil Then
            Call SubirSkill(AtacanteIndex, Proyectiles)


y abajo ponen:



Código:
SendData ToPCArea, VictimaIndex, 0, "FC" & UserList(AtacanteIndex).Char.CharIndex & "," & UserList(VictimaIndex).Char.CharIndex & "," & ObjData(UserList(AtacanteIndex).Invent.MunicionEqpObjIndex).GrhIndex




Saludos
santi55
santi55
Nivel 12
Nivel 12

Medallas
Flechas qe te persiguen Prensa1

Advertencias Advertencias : 1
Mensajes Mensajes : 156
Puntos Puntos : 49387
Reputación Reputación : 1
Fecha de inscripción Fecha de inscripción : 19/12/2010
País País : Argentina


Volver arriba Ir abajo

Flechas qe te persiguen Empty Re: Flechas qe te persiguen

Mensaje por Francohhh Jue Dic 23, 2010 12:37 pm

Muy buen aporte, supongo que será DX8.

Está muy bueno porque le da realismo a las flechas.
Francohhh
Francohhh
Administrador
Administrador

Administrador
Medallas
Flechas qe te persiguen Prensa1Flechas qe te persiguen Fundador1Flechas qe te persiguen Participativo1Flechas qe te persiguen Donar1
Flechas qe te persiguen Staff1x Flechas qe te persiguen Moderador1 Flechas qe te persiguen Ao1 Flechas qe te persiguen Desarrollo
Flechas qe te persiguen Radio10 Flechas qe te persiguen Radio110 Flechas qe te persiguen Colabo10 Flechas qe te persiguen Progra10
Flechas qe te persiguen Cs110Flechas qe te persiguen Postea10 Flechas qe te persiguen Senor_10 Flechas qe te persiguen Dueno_10
Flechas qe te persiguen Futbol10

Mensajes Mensajes : 880
Puntos Puntos : 53096
Reputación Reputación : 41
Sexo Sexo : Masculino

Fecha de inscripción Fecha de inscripción : 23/03/2010
Edad Edad : 27
Localización Localización : Mar del Plata

http://www.spikel.org

Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.