NPC's cierran puertas de sus locales.

Ir abajo

NPC's cierran puertas de sus locales.

Mensaje por Toyz el 18/12/2016, 3:50 am

Video:


Módulo:
Código:
Option Explicit

'AUTOR: Toyz - Luciano
'FECHA: 18/12

Private Puertas As Integer

Private Type tCerrarPuerta
    Posicion_NPC As WorldPos
    Posicion_Puerta As WorldPos
    Mapa As Integer
    Cerrada As Boolean
    Index As Integer
    Rango_NPC As Position
    Index_Online As Integer
    Heading As eHeading
    Head As Integer
    Body As Integer
End Type

Private CerrarPuerta() As tCerrarPuerta

Public Sub Cargar_IAPuertas()
    
    Dim Leer As clsIniReader, LoopC As Long
    Set Leer = New clsIniReader
    Call Leer.Initialize(App.Path & "\Dat\CerrarPuertas.dat")
    
    
    Puertas = CInt(Leer.GetValue("INIT", "Puertas"))
    ReDim CerrarPuerta(1 To Puertas) As tCerrarPuerta
    
    For LoopC = 1 To Puertas
        With CerrarPuerta(LoopC)
            .Index = CInt(Leer.GetValue("CerrarPuerta" & LoopC, "NPC_Index"))
            .Mapa = CInt(Leer.GetValue("CerrarPuerta" & LoopC, "Mapa"))
            .Posicion_NPC.X = CByte(ReadField(1, (Leer.GetValue("CerrarPuerta" & LoopC, "NPC_X")), 45))
            .Posicion_NPC.Y = CByte(ReadField(2, (Leer.GetValue("CerrarPuerta" & LoopC, "NPC_Y")), 45))
            .Posicion_NPC.Map = .Mapa
            
            .Rango_NPC.X = CByte(ReadField(1, (Leer.GetValue("CerrarPuerta" & LoopC, "RANGO_X")), 45))
            .Rango_NPC.Y = CByte(ReadField(2, (Leer.GetValue("CerrarPuerta" & LoopC, "RANGO_Y")), 45))
            
            .Posicion_Puerta.X = CByte(ReadField(1, (Leer.GetValue("CerrarPuerta" & LoopC, "PUERTA_X")), 45))
            .Posicion_Puerta.Y = CByte(ReadField(2, (Leer.GetValue("CerrarPuerta" & LoopC, "PUERTA_Y")), 45))
            .Posicion_Puerta.Map = .Mapa
        End With
    Next LoopC
    
End Sub

Public Sub PuedeCerrar()

    Dim X As Byte, Y As Byte, LoopC As Long, LoopX As Long, LoopI As Long, HayUsuario As Boolean
    
    For LoopI = 1 To Puertas
        HayUsuario = False
        With CerrarPuerta(LoopI)
            If ObjData(MapData(.Mapa, .Posicion_Puerta.X, .Posicion_Puerta.Y).ObjInfo.ObjIndex).Cerrada = False Then
                For LoopC = .Posicion_NPC.X - .Rango_NPC.X To .Posicion_NPC.X + .Rango_NPC.X
                    For LoopX = .Posicion_NPC.Y - .Rango_NPC.Y To .Posicion_NPC.Y + .Rango_NPC.Y
                        If MapData(.Mapa, LoopC, LoopX).UserIndex > 0 Then
                            HayUsuario = True
                            Exit For
                        End If
                    Next LoopX
                    If HayUsuario = True Then Exit For
                Next LoopC
                If HayUsuario = False Then
                    .Index_Online = MapData(.Mapa, .Posicion_NPC.X, .Posicion_NPC.Y).NpcIndex
                    Npclist(.Index_Online).flags.CierraPuerta = LoopI
                    .Heading = Npclist(.Index_Online).Char.Heading
                    .Head = Npclist(.Index_Online).Char.Head
                    .Body = Npclist(.Index_Online).Char.Body
                    SendData SendTarget.ToNPCArea, .Index_Online, PrepareMessageChatOverHead("¿Por qué no cierran las puertas?", Npclist(.Index_Online).Char.CharIndex, vbWhite)
                    Npclist(.Index_Online).Movement = CierraPuerta
                End If
            End If
        End With
    Next LoopI
    
End Sub

Public Sub IA_CerrarPuerta(ByVal ID As Integer)

    Dim LoopC As Long
    Dim tHeading As Byte
    
    With Npclist(ID)
        '@@ Chequear de vuelta si la puerta está o no cerrada

        If .Pos.Y = (CerrarPuerta(.flags.CierraPuerta).Posicion_Puerta.Y - 1) Then
            Call Cerrar_Puerta(.flags.CierraPuerta)
            .Movement = VuelvePosicion
            Exit Sub
        End If
        tHeading = FindDirection(.Pos, CerrarPuerta(.flags.CierraPuerta).Posicion_Puerta)
        Call MoveNPCChar(ID, tHeading)
    End With
    
End Sub

Public Sub IA_Volver(ByVal ID As Integer)

    Dim tHeading As Byte
    
    With Npclist(ID)
        If .Pos.Y = CerrarPuerta(.flags.CierraPuerta).Posicion_NPC.Y Then
            .Char.Heading = CerrarPuerta(.flags.CierraPuerta).Heading
            .Char.Head = CerrarPuerta(.flags.CierraPuerta).Head
            .Char.Body = CerrarPuerta(.flags.CierraPuerta).Body
            .Movement = ESTATICO
            ChangeNPCChar ID, .Char.Body, .Char.Head, .Char.Heading
            Exit Sub
        End If
        tHeading = FindDirection(.Pos, CerrarPuerta(.flags.CierraPuerta).Posicion_NPC)
        Call MoveNPCChar(ID, tHeading)
    End With
    
End Sub

Private Sub Cerrar_Puerta(ByVal Cerrar As Byte)

    Dim Map As Integer, X As Byte, Y As Byte
    
    With CerrarPuerta(Cerrar)
        Map = .Mapa
        X = .Posicion_Puerta.X
        Y = .Posicion_Puerta.Y
        MapData(Map, X, Y).ObjInfo.ObjIndex = ObjData(MapData(Map, X, Y).ObjInfo.ObjIndex).IndexCerrada

        Call modSendData.SendToAreaByPos(Map, X, Y, PrepareMessageObjectCreate(ObjData(MapData(Map, X, Y).ObjInfo.ObjIndex).GrhIndex, X, Y))

        MapData(Map, X, Y).Blocked = 1
        MapData(Map, X - 1, Y).Blocked = 1

        Call Bloquear(True, Map, X - 1, Y, 1)
        Call Bloquear(True, Map, X, Y, 1)

        Call SendData(SendTarget.ToPCArea, 0, PrepareMessagePlayWave(SND_PUERTA, X, Y))

    End With
    
End Sub




_______________

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 : 5045
Edad : 17
Localización : Global.
Fecha de inscripción : 28/09/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por Metrosersuah el 18/12/2016, 5:14 am

JAJAJAJAJAJAJA, me encató, +10.
avatar
Metrosersuah
Nivel 5
Nivel 5

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 234
Localización : 4 Paredes
Fecha de inscripción : 13/02/2016

Ver perfil de usuario http://www.argentumonline.com.ar

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por JuR.- el 18/12/2016, 5:30 am

Mortal, creo que no vi algo así en ningún servidor.
avatar
JuR.-
Nivel 6
Nivel 6

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 278
Localización : Entre 4 paredes. Man
Fecha de inscripción : 23/05/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por Sespe el 18/12/2016, 10:20 pm

Si mal no me acuerdo esto lo tenia Ao Mania o un servidor de esos viejos, esta buenisimo porque le da mas vida a los mapas Smile

Sespe
Nivel 1
Nivel 1

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 6
Edad : 23
Localización : Honolulu
Fecha de inscripción : 21/09/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por Happy el 18/12/2016, 10:49 pm

Este aporte también es bueno.

Es un detalle, pero ayuda a darle rol al juego en cierta forma.

Últimamente veo muchos aportes interesantes y de diferentes personas, es bueno esto.





Shini I escribió:Capaz le vino y dijo fue happy es SMOD.


Reglamento general: http://www.servers-argentum.org/h2-reglamento
Reglamento de servers AO: http://goo.gl/3NbAM9

Invitado, mi msn es happy-ungran@hotmail.com y mi skype es Happy-Ungran
Invitado, ¿Querés ser mi amigo? haz click Aquí!.
Happy - Un gran - Noti - Erves - Clock
avatar
Happy
Administrador
Administrador

¿BANEADO? : No.
Premios : 1
[1º Puesto] Diseño mascota del foro




Cantidad de envíos : 10545
Localización : Offtopic
Fecha de inscripción : 24/05/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por FACEBOOK el 19/12/2016, 12:38 am

Excelente aporteee !!! Te felicito
avatar
FACEBOOK
Nivel 9
Nivel 9

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 991
Edad : 23
Localización : Mar del plata
Fecha de inscripción : 06/03/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por Toyz el 19/12/2016, 1:10 am

Gracias a todos! hoy o mañana de un módulo mejorado!


_______________

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 : 5045
Edad : 17
Localización : Global.
Fecha de inscripción : 28/09/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por Gyrax el 25/12/2016, 9:39 pm

Pregunta! Se crea un modulo y se mete todo el code ahi? Gracias!

Gyrax
Nivel 1
Nivel 1

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 4
Localización : Santa rita
Fecha de inscripción : 12/05/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por Nikiithoo97 el 14/7/2017, 11:36 am

Como lo aplico al servidor? ._. me encanto!
avatar
Nikiithoo97
Nivel 6
Nivel 6

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 329
Edad : 21
Localización : 4 Muros.
Fecha de inscripción : 16/10/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por KeoH el 11/9/2017, 3:44 pm

Código:
Public Sub Cargar_IAPuertas()
   
    Dim [color=#ff0033]Leer As clsIniReader[/color], LoopC As Long

me dio error al compilar en esta parte.

KeoH
Nivel 2
Nivel 2

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 25
Localización : cadiz
Fecha de inscripción : 22/12/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: NPC's cierran puertas de sus locales.

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


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