Si la flecha no targetea el NPC tira la flecha al suelo.

Ir abajo

Si la flecha no targetea el NPC tira la flecha al suelo.

Mensaje por Toyz el 14/3/2016, 9:07 am

Cuando tiramos flechas y no targeteamos el npc, tira las flechas al suelo. (Antes las hacía desaparecer)

Reemplazan todo el:

Código:

Case eSkill.Proyectiles

Por este:

Código:

Case eSkill.Proyectiles
      
                'Check attack interval
                If Not IntervaloPermiteAtacar(UserIndex, False) Then Exit Sub
                'Check Magic interval
                If Not IntervaloPermiteLanzarSpell(UserIndex, False) Then Exit Sub
                'Check bow's interval
                If Not IntervaloPermiteUsarArcos(UserIndex) Then Exit Sub
          
                Dim Atacked As Boolean
                Atacked = True
          
                'Make sure the item is valid and there is ammo equipped.
                With .Invent
                    ' Tiene arma equipada?
                    If .WeaponEqpObjIndex = 0 Then
                        DummyInt = 1
                    ' En un slot válido?
                    ElseIf .WeaponEqpSlot < 1 Or .WeaponEqpSlot > UserList(UserIndex).CurrentInventorySlots Then
                        DummyInt = 1
                    ' Usa munición? (Si no la usa, puede ser un arma arrojadiza)
                    ElseIf ObjData(.WeaponEqpObjIndex).Municion = 1 Then
                        ' La municion esta equipada en un slot valido?
                        If .MunicionEqpSlot < 1 Or .MunicionEqpSlot > UserList(UserIndex).CurrentInventorySlots Then
                            DummyInt = 1
                        ' Tiene munición?
                        ElseIf .MunicionEqpObjIndex = 0 Then
                            DummyInt = 1
                        ' Son flechas?
                        ElseIf ObjData(.MunicionEqpObjIndex).OBJType <> eOBJType.otFlechas Then
                            DummyInt = 1
                        ' Tiene suficientes?
                        ElseIf .Object(.MunicionEqpSlot).Amount < 1 Then
                            DummyInt = 1
                        End If
                    ' Es un arma de proyectiles?
                    ElseIf ObjData(.WeaponEqpObjIndex).proyectil <> 1 Then
                        DummyInt = 2
                    End If
              
                    If DummyInt <> 0 Then
                        If DummyInt = 1 Then
                            Call WriteConsoleMsg(UserIndex, "No tienes municiones.", FontTypeNames.FONTTYPE_INFO)
                      
                            Call Desequipar(UserIndex, .WeaponEqpSlot)
                        End If
                  
                        Call Desequipar(UserIndex, .MunicionEqpSlot)
                        Exit Sub
                    End If
                End With
          
                'Quitamos stamina
                If .Stats.MinSta >= 10 Then
                    Call QuitarSta(UserIndex, RandomNumber(1, 10))
                Else
                    If .Genero = eGenero.Hombre Then
                        Call WriteConsoleMsg(UserIndex, "Estás muy cansado para luchar.", FontTypeNames.FONTTYPE_INFO)
                    Else
                        Call WriteConsoleMsg(UserIndex, "Estás muy cansada para luchar.", FontTypeNames.FONTTYPE_INFO)
                    End If
                    Exit Sub
                End If
          
                Call LookatTile(UserIndex, .Pos.map, X, Y)
          
                tU = .flags.TargetUser
                tN = .flags.TargetNPC
          
                'Validate target
                If tU > 0 Then
                    'Only allow to atack if the other one can retaliate (can see us)
                    If Abs(UserList(tU).Pos.Y - .Pos.Y) > RANGO_VISION_Y Then
                        Call WriteConsoleMsg(UserIndex, "Estás demasiado lejos para atacar.", FontTypeNames.FONTTYPE_WARNING)
                        Exit Sub
                    End If
              
                    'Prevent from hitting self
                    If tU = UserIndex Then
                        Call WriteConsoleMsg(UserIndex, "¡No puedes atacarte a vos mismo!", FontTypeNames.FONTTYPE_INFO)
                        Exit Sub
                    End If
              
                    'Attack!
                    Atacked = UsuarioAtacaUsuario(UserIndex, tU)
              
                ElseIf tN > 0 Then
                    'Only allow to atack if the other one can retaliate (can see us)
                    If Abs(Npclist(tN).Pos.Y - .Pos.Y) > RANGO_VISION_Y And Abs(Npclist(tN).Pos.X - .Pos.X) > RANGO_VISION_X Then
                        Call WriteConsoleMsg(UserIndex, "Estás demasiado lejos para atacar.", FontTypeNames.FONTTYPE_WARNING)
                        Exit Sub
                    End If
              
                    'Is it attackable???
                    If Npclist(tN).Attackable <> 0 Then
                  
                        'Attack!
                        Atacked = UsuarioAtacaNpc(UserIndex, tN)
                    End If
                End If
          
                ' Solo pierde la munición si pudo atacar al target, o tiro al aire
                If Atacked Then
                    With .Invent
                        ' Tiene equipado arco y flecha?
                        If ObjData(.WeaponEqpObjIndex).Municion = 1 Then
                  
                            '/////////////FLECHAS EN EL PISO SI NO TARGETEAN UN NPC//////////////
                                  
                            If Not UserList(UserIndex).flags.TargetNPC <> 0 Then
                      
                              DummyInt = .MunicionEqpSlot
                          
                                With UserList(UserIndex)
                      
                                    Select Case .Invent.MunicionEqpObjIndex
                              
                                        Case FLECHA_0
                          
                                            MiObj.Amount = 1
                                            MiObj.ObjIndex = 480
                              
                                            Call TirarItemAlPiso(.Pos, MiObj)
                                      
                                            Call QuitarUserInvItem(UserIndex, DummyInt, 1)
                                      
                                          ' Call WriteConsoleMsg(UserIndex, "Caso 1", FontTypeNames.FONTTYPE_CENTINELA)
                              
                                        Case FLECHA_1
                          
                                            MiObj.Amount = 1
                                            MiObj.ObjIndex = 551
                              
                                            Call TirarItemAlPiso(.Pos, MiObj)
                                      
                                            Call QuitarUserInvItem(UserIndex, DummyInt, 1)
                                      
                                          ' Call WriteConsoleMsg(UserIndex, "Caso 2", FontTypeNames.FONTTYPE_CENTINELA)
                                      
                                        Case FLECHA_2
                                  
                                            MiObj.Amount = 1
                                            MiObj.ObjIndex = 552
                                      
                                            Call TirarItemAlPiso(.Pos, MiObj)
                                      
                                            Call QuitarUserInvItem(UserIndex, DummyInt, 1)
                                      
                                          ' Call WriteConsoleMsg(UserIndex, "Caso 3", FontTypeNames.FONTTYPE_CENTINELA)
                                      
                                        Case FLECHA_3
                                  
                                            MiObj.Amount = 1
                                            MiObj.ObjIndex = 553
                                      
                                            Call TirarItemAlPiso(.Pos, MiObj)
                                      
                                            Call QuitarUserInvItem(UserIndex, DummyInt, 1)
                                      
                                          ' Call WriteConsoleMsg(UserIndex, "Caso 4", FontTypeNames.FONTTYPE_CENTINELA)
                                      
                                    End Select
                          
                                End With
                          
                            Else
                          
                            Call QuitarUserInvItem(UserIndex, DummyInt, 1)
                      
                                  If .Object(DummyInt).Amount > 0 Then
                                     'QuitarUserInvItem unequips the ammo, so we equip it again
                                     .MunicionEqpSlot = DummyInt
                                     .MunicionEqpObjIndex = .Object(DummyInt).ObjIndex
                                     .Object(DummyInt).Equipped = 1
                                 Else
                                     .MunicionEqpSlot = 0
                                     .MunicionEqpObjIndex = 0
                                 End If

                            End If ' Es este, por si lo buscabas.

                            '/////////////FLECHAS EN EL PISO SI NO TARGETEAN UN NPC//////////////
                      
                            '************************************************

                        ' Tiene equipado un arma arrojadiza
                        Else
                            DummyInt = .WeaponEqpSlot
                      
                            'Take 1 knife away
                            Call QuitarUserInvItem(UserIndex, DummyInt, 1)
                      
                            If .Object(DummyInt).Amount > 0 Then
                                'QuitarUserInvItem unequips the weapon, so we equip it again
                                .WeaponEqpSlot = DummyInt
                                .WeaponEqpObjIndex = .Object(DummyInt).ObjIndex
                                .Object(DummyInt).Equipped = 1
                            Else
                                .WeaponEqpSlot = 0
                                .WeaponEqpObjIndex = 0
                            End If
                      
                        End If
              
                        Call UpdateUserInv(False, UserIndex, DummyInt)
                  
                    End With
               End If

Van al modulo declaraciones y declaran:

Código:

Public Const FLECHA_0 As Integer = 480   'Flecha común.
Public Const FLECHA_1 As Integer = 551   'Flecha +1.
Public Const FLECHA_2 As Integer = 552   'Flecha +2.
Public Const FLECHA_3 As Integer = 553   'Flecha +3.
avatar
Toyz
Administrador
Administrador

¿BANEADO? : No.
Premios :
[1er puesto] Usuario del año 2016
Cantidad de envíos : 5046
Edad : 17
Localización : Global.
Fecha de inscripción : 28/09/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: Si la flecha no targetea el NPC tira la flecha al suelo.

Mensaje por BAHTANG el 15/3/2016, 12:32 am

Buen aporte, sirve en 13.0 dx7?
avatar
BAHTANG
Nivel 6
Nivel 6

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 331
Edad : 19
Localización : Ullathorpe
Fecha de inscripción : 20/03/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: Si la flecha no targetea el NPC tira la flecha al suelo.

Mensaje por Toyz el 15/3/2016, 1:54 am

Sí.


_______________

Como saben yo aporto bastante en Servers-Argentum y les quiero decir que todos tienen derecho de usar y de aportar en otra comunidad mis aportes pero sólo con un requisito y es tan simple que dejar los créditos. Gracias.
Si conocen otra comunidad y en esa misma mis aportes no están aportados, si tenés tiempo y ganas, aportalo! A mucha gente le puede servir. No te olvides del requisito Razz

MIS MEJORES APORTES:

Compra/venta de personajes:
https://goo.gl/A44Av0

Juegos del Hambre:
https://goo.gl/u6aNUG

Deathmatch automático:
https://goo.gl/GQF4fK

Sistema de retos vía MMR con búsqueda, emparejamiento, etc:
https://goo.gl/40uP0f

Sistemas de eventos automáticos de 1vs1 hasta 10vs10:
https://goo.gl/XYKygc

1VS1 - AIM - MELEE - Gana Sigue (Se liberan cupos)
https://goo.gl/qq83wx

Retos 3vs3 - [Items, 2 rounds, múltiples arenas, oro]
https://goo.gl/x8SMnV

Eliminar sistema de Skill (COMPLETO)
https://goo.gl/mKxHzC
avatar
Toyz
Administrador
Administrador

¿BANEADO? : No.
Premios :
[1er puesto] Usuario del año 2016
Cantidad de envíos : 5046
Edad : 17
Localización : Global.
Fecha de inscripción : 28/09/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: Si la flecha no targetea el NPC tira la flecha al suelo.

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


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