Ayuda! Flechas Inmovilizadoras

Gonza_94

El Gonza
Hola a todos!! Estoy aprendiendo a programar con tutoriales, leyendo y de todo un poco como muchos lo abran echo y bueno me mande a hacer alguna cosa solo que salio bien, pero ahora me encuentro en un problemita...
Estoy haciendo flechas qe inmovilizen sin copypaste y bueno... No funcan

Utilice el sub del guante de hurto para armar la base que quedo asi:

Código:
Public Sub DoFlechaInmo(ByVal UserIndex As Integer, ByVal VictimaIndex As Integer)
'***************************************************
'Autor: Gonzalo (Zalok)
'Last Modif: 08/10/2019
'Implements the special Skill of the Hunt
'***************************************************
If UserList(VictimaIndex).flags.Paralizado = 1 Then Exit Sub
If UserList(UserIndex).clase <> eClass.Thief Then Exit Sub


If UserList(UserIndex).Invent.MunicionEqpObjIndex <> FLECHA_INMO Then Exit Sub

Dim res As Integer
res = RandomNumber(0, 2)
If res < (UserList(UserIndex).Stats.UserSkills(eSkill.Wrestling) / 4) Then
    UserList(VictimaIndex).flags.Paralizado = 1
    UserList(VictimaIndex).Counters.Paralisis = IntervaloParalizado / 2
    Call WriteParalizeOK(VictimaIndex)
    Call WriteConsoleMsg(UserIndex, "Tu Flecha ha Paralizado a tu oponente", FontTypeNames.FONTTYPE_GUILD)
    Call WriteConsoleMsg(VictimaIndex, "La Flecha de tu oponente te ha Inmovilizado", FontTypeNames.FONTTYPE_GUILD)
End If
    

End Sub
Tambien declare FLECHA_INMO abajo de GUANTE_HURTO.

Nose que mas tengo que declarar o hacer, en si no tira error y el juego funciona pero.. no funca
 

Zeiber

Playmaker.-
Hola Gonza, empecemos por lo más simple:

¿Es Thief?
Código:
If UserList(UserIndex).clase <> eClass.Thief Then Exit Sub
¿Tiene skills asignados?
Código:
If res < (UserList(UserIndex).Stats.UserSkills(eSkill.Wrestling) / 4) Then
Saludos.
 

Gonza_94

El Gonza
Hola Gonza, empecemos por lo más simple:

¿Es Thief?
Código:
If UserList(UserIndex).clase <> eClass.Thief Then Exit Sub
¿Tiene skills asignados?
Código:
If res < (UserList(UserIndex).Stats.UserSkills(eSkill.Wrestling) / 4) Then
Saludos.
En la cebada que tengo no me di cuenta.
Modifique a:
Código:
If UserList(UserIndex).clase <> eClass.Hunter Then Exit Sub
y lo de los skills como funcionaria? o sea trato de asociar pero no entiendo el (/4) por eso lo deje asi
 

Zeiber

Playmaker.-
Código:
 If res < (UserList(UserIndex).Stats.UserSkills(eSkill.Wrestling) / 4) Then
Esta linea verifica que si la variable res es menor a la asignación de skills a Wrestling dividido por 4 va a entrar al If y va a paralizar al enemigo.
 

Gonza_94

El Gonza
Código:
 If res < (UserList(UserIndex).Stats.UserSkills(eSkill.Wrestling) / 4) Then
Esta linea verifica que si la variable res es menor a la asignación de skills a Wrestling dividido por 4 va a entrar al If y va a paralizar al enemigo.
Es decir qe tengo otro error, eso iria asi:
res = RandomNumber(0, 100)
 

Zeiber

Playmaker.-
Código:
 res = RandomNumber(0, 100)
Esta linea devuelve un numero al azar entre 0 y 100, y se lo asigna a la variable res.
 

Gonza_94

El Gonza
Código:
 res = RandomNumber(0, 100)
Esta linea devuelve un numero al azar entre 0 y 100, y se lo asigna a la variable res.
Claro, yo lo base en el Guante de hurto, supongo que ese res qe representa al RandomNumer es la provabilidad de paralizar o no.
Ahora esta asi:
Código:
Public Sub DoFlechaInmo(ByVal UserIndex As Integer, ByVal VictimaIndex As Integer)
'***************************************************
'Autor: Gonzalo (Zalok)
'Last Modif: 08/10/2019
'Implements the special Skill of the Hunt
'***************************************************
If UserList(VictimaIndex).flags.Paralizado = 1 Then Exit Sub
If UserList(UserIndex).clase <> eClass.Hunter Then Exit Sub

If UserList(UserIndex).Invent.MunicionEqpObjIndex <> FLECHA_INMO Then Exit Sub

Dim res As Integer
res = RandomNumber(0, 50)
If res < (UserList(UserIndex).Stats.UserSkills(eSkill.Wrestling) / 4) Then
    UserList(VictimaIndex).flags.Paralizado = 1
    UserList(VictimaIndex).Counters.Paralisis = IntervaloParalizado / 2
    Call WriteParalizeOK(VictimaIndex)
    Call WriteConsoleMsg(UserIndex, "Tu Flecha ha Paralizado a tu oponente", FontTypeNames.FONTTYPE_GUILD)
    Call WriteConsoleMsg(VictimaIndex, "La Flecha de tu oponente te ha Inmovilizado", FontTypeNames.FONTTYPE_GUILD)
End If
    

End Sub
Esta bien?
 

Zeiber

Playmaker.-
El tema es que eSkill.Wrestling es el skill para pegar sin armas creo, no sé si lo queres hacer asi o con skills en combate a distancia.
 

abeljn

Newbie Lvl 3
Acordate de datear el objeto para que el programa lo reconozca. Además de llamar al sub donde corresponda.
Si querés que otras clases puedan paralizar, además del ladrón, borrá
If UserList(UserIndex).clase <> eClass.thief Then Exit Sub

En lo personal yo haría todo desde el mismo dogolpeinmo
 

Gonza_94

El Gonza
El tema es que eSkill.Wrestling es el skill para pegar sin armas creo, no sé si lo queres hacer asi o con skills en combate a distancia.
Ahhhh.... ahora modifico eso y te cuento
Post automatically merged:

Acordate de datear el objeto para que el programa lo reconozca. Además de llamar al sub donde corresponda.
Si querés que otras clases puedan paralizar, además del ladrón, borrá
If UserList(UserIndex).clase <> eClass.thief Then Exit Sub

En lo personal yo haría todo desde el mismo dogolpeinmo
Es solo para el caza, el eClas.thief se cambio a Hunter, pero seguia sin funcionarme.. Ahora voy a arreglar lo del skill porque lo tenia con wrestling y seria con combate a distancia
Post automatically merged:

Ahora quedo asi...

Código:
Public Sub DoFlechaInmo(ByVal UserIndex As Integer, ByVal VictimaIndex As Integer)
'***************************************************
'Autor: Gonzalo (Zalok)
'Last Modif: 08/10/2019
'Implements the special Skill of the Hunt
'***************************************************
If UserList(VictimaIndex).flags.Paralizado = 1 Then Exit Sub
If UserList(UserIndex).clase <> eClass.Hunter Then Exit Sub

If UserList(UserIndex).Invent.MunicionEqpObjIndex <> FLECHA_INMO Then Exit Sub

Dim res As Integer
res = RandomNumber(0, 5)
If res < (UserList(UserIndex).Stats.UserSkills(eSkill.Proyectiles) / 4) Then
    UserList(VictimaIndex).flags.Paralizado = 1
    UserList(VictimaIndex).Counters.Paralisis = IntervaloParalizado / 2
    Call WriteParalizeOK(VictimaIndex)
    Call WriteConsoleMsg(UserIndex, "Tu Flecha ha Paralizado a tu oponente", FontTypeNames.FONTTYPE_GUILD)
    Call WriteConsoleMsg(VictimaIndex, "La Flecha de tu oponente te ha Inmovilizado", FontTypeNames.FONTTYPE_GUILD)
End If
    

End Sub
De lo que tengo dudas es que creo que me faltaria aclarar que esto es funcional para npcs y nose como hacerlo supongo que con un If pero nose cual es el llamado correspondiente a npcs
 
Última edición:

CepitaDelValle

Newbie Lvl 1
Debajo de
Código:
If UserImpactoNpc(userindex, NpcIndex) Then
pon
Código:
Call UserParalizaConFlecha(userindex, NpcIndex)

pon esto donde quieras

Código:
Public Sub UserParalizaConFlecha(ByVal userindex, ByVal NpcIndex As Integer)
        If UserList(userindex).clase = eClass.Hunter Then
            If UserList(userindex).Invent.MunicionEqpObjIndex = FLECHA_INMO Then
                Dim res As Long
                res = RandomNumber(0, 5)
                If res < (UserList(userindex).Stats.UserSkills(eSkill.Proyectiles) / 4) Then
                    Npclist(NpcIndex).flags.Paralizado = 1
                    Npclist(NpcIndex).flags.Inmovilizado = 0
                    Npclist(NpcIndex).Contadores.Paralisis = IntervaloParalizado
Call WriteConsoleMsg(UserIndex, "Tu Flecha ha Paralizado a tu oponente", FontTypeNames.FONTTYPE_GUILD)
                End If
            End If
        End If
End Sub
Fijate si te funciona
 

Gonza_94

El Gonza
Debajo de
Código:
If UserImpactoNpc(userindex, NpcIndex) Then
pon
Código:
Call UserParalizaConFlecha(userindex, NpcIndex)

pon esto donde quieras

Código:
Public Sub UserParalizaConFlecha(ByVal userindex, ByVal NpcIndex As Integer)
        If UserList(userindex).clase = eClass.Hunter Then
            If UserList(userindex).Invent.MunicionEqpObjIndex = FLECHA_INMO Then
                Dim res As Long
                res = RandomNumber(0, 5)
                If res < (UserList(userindex).Stats.UserSkills(eSkill.Proyectiles) / 4) Then
                    Npclist(NpcIndex).flags.Paralizado = 1
                    Npclist(NpcIndex).flags.Inmovilizado = 0
                    Npclist(NpcIndex).Contadores.Paralisis = IntervaloParalizado
Call WriteConsoleMsg(UserIndex, "Tu Flecha ha Paralizado a tu oponente", FontTypeNames.FONTTYPE_GUILD)
                End If
            End If
        End If
End Sub
Fijate si te funciona
Te re agradezco la ayuda... pero me encantaria qe me expliques el porque de cada cosa si podes! Gracias
 

CepitaDelValle

Newbie Lvl 1
no hay mucho q explicar kpo solo q le aplica la chance de la para cada ves q aciertes un golpe
fijate de bajo de la linea

UserImpactoNpc

lo demas es mas de lo mismo q pusiste arriba solo q cambie el enemigo x un npc
 

Gonza_94

El Gonza
No aparece el item en el inventario y antes si...
Post automatically merged:

igualmente ahora si funciona
 

Gonza_94

El Gonza
que funciona el sistema. pero ahora no se ve el item en el inventario y antes si... quiza sea una cuestion grafica
 
Arriba