Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Explicit
- '*************************
- 'AUTOR: G TOYZ - TOYZ - LUCIANO
- 'FECHA: 12/01
- 'RESPETAR CRÉDITOS EN CASO DE USAR EL SISTEMA Y EN UNA PUBLICIDAD _
- 'MENCIONAR LAS IMPLEMENTACIONES DEL SERVIDOR, SI ESTA SE INCLUYE, DEJE CRÉDITOS. GRACIAS.
- '-------------------
- '*************************
- Private Enum eTipoMisioneros
- Negro = 1 ' Ilegal
- Blanco ' Legal
- End Enum
- Private Enum eFacciones
- Armada = 1
- Legion
- Ciudadano
- criminal
- End Enum
- Private Enum eBuffs
- HappyHour_EXP = 1 'Mayor experiencia. (INFLUYE EN LAS MISIONES HASTA PUEDE DUPLICARSE LA ACTUAL HAPPYHOUR EN CASO DE QUE SEA EL MISMO PREMIO EN OTRA MISIÓN)
- HappyHour_ORO 'Lo mismo que el de arriba pero con las palabras ORO
- Descuento 'Descuento en el vendedor del misionero.
- MenosTiempo 'Menos tiempo en los counters: Inmovilizar, envenenamiento
- MasTiempo 'Mas tiempo en los counters: Fuerza, celeridad, invisibilidad, hambre, sed, energía
- End Enum
- Private Type tRecompensa
- Oro As Long 'Oro de la recompensa
- Objeto() As Obj 'Objetos de la recompensa
- Buffs() As eBuffs 'Buffs que se le pueden dar al usuario
- End Type
- Private Type tMatarUsuario
- Nombre As String '<------ ID del usuario a matar
- Pos As Integer ' <--- Mapa donde se encuentra (Se actualiza cada vez que se va del mapa) :)
- Faccion As eFacciones
- Nivel As Byte
- razon As String
- End Type
- Private Type tMatarNPCObjeto
- Objeto As Obj 'El objeto
- LoTiene As Boolean '¿Lo consiguió?
- End Type
- Private Type tNPC
- ID As Integer 'ID del NPC
- Pos As Integer 'Solo el mapa
- End Type
- Private Type tMatarNPC
- Cantidad As Byte '<--- Cantidad de NPC's que tiene que matar para conseguir los objetos
- Objeto() As tMatarNPCObjeto
- NpcData As tNPC
- End Type
- Private Type tMensajero
- Mensaje As String 'El mensaje
- ID As Integer 'ID del NPC
- Nombre As String 'Por si es un usuario
- Pos As Integer '<---- Mapa en donde se encuentra el Usuario o NPC.
- End Type
- Private Type tComprarObjeto
- Objeto() As Obj '<--- Objetos a comprar
- Oro As Long '<--- El oro que te da el misionero, es justo.
- ID As Byte '<--- El ID del misionero.
- End Type
- Private Type tObjetivo
- MatarUsuario As tMatarUsuario '<--- Misión de matar a un usuario
- MatarNPC As tMatarNPC '<---- Misión de matar a un NPC
- Mensajero As tMensajero '<----- Misión de enviar un mensaje
- ComprarObjeto As tComprarObjeto '<---- Misión de comprar X objeto
- End Type
- Private Type tRequisitos
- Nivel As Byte '<--- Nivel requerido
- Oro As Long '<--------- Oro requerido
- Reputacion As Integer '<---- Reputación requerida
- Faccion As eFacciones '<----- Facción requerida
- End Type
- Private Type tMision
- Recompensa As tRecompensa 'La recompensa.
- Objetivo As tObjetivo 'Objetivo
- Costo As Long 'En caso de que la arme un usuario (EN ORO)
- Tiempo As Integer 'Tiempo que tiene para hacer la misión.
- Descripcion As String '<---- Descripción de la misión (SI SE QUIERE PUEDEN: usar un index para optimizar y setear strs en el cliente)
- Requisito As tRequisitos '<---- Los requisitos de la misión
- End Type
- Private Type tReservacion
- Objeto() As Obj 'Todos los objetos en reserva
- Oro As Long 'El oro total
- Misionero As Byte 'Misionero al que se lo reservó
- End Type
- Private Type tVenta '<- Venta del objeto
- Objeto As Obj '<- Objeto para vender
- Oro As Long '<- Cantidad de oro
- End Type
- Private Type tVendedor
- ID As Integer '<-- ID del vendedor
- Pos As WorldPos '<-- Su posición
- Reservacion() As tReservacion '<--- ¿Tiene reservaciones?
- Objeto() As tVenta '<--- Objetos a la venta
- End Type
- Private Type tDatosHombre
- Nombre As String '<---- ID de usuario
- Reputacion As Integer '<---- Reputación
- EnMision As Boolean '<---- ¿Está en misión?
- End Type
- Private Type tHombre '<----- Los mejores hombres en:
- MatadorDeNPC As tDatosHombre '<--- matadores de NPC's
- Mensajero As tDatosHombre '<---- Mensajeros
- MatadorUsuarios As tDatosHombre '<--- Matadores de usuarios
- CompradorObjetos As tDatosHombre '<---- Compradores de objetos
- End Type
- Private Type tDatosObjeto
- Objeto As Obj '<-- El objeto
- LoHizo As Boolean '<-- Lo hizo?
- End Type
- Private Type tArmarObjeto
- Objeto() As tDatosObjeto '<--- Objetos
- Tiempo As Integer '<---- Tiempo que lleva hacer todos.
- End Type
- Private Type tNPCArmadores
- ID As Integer '<---- ID del NPC
- ArmarObjeto As tArmarObjeto '<--- Objeto que tienen que armar
- End Type
- Private Type tCantidadMisionesDatos
- CantidadDeObjetosRecompensa As Byte '<---- Cantidad de objetos recompensados en la misión
- CantidadDeBuffsRecompensa As Byte '<----- Cantidad de buffs recompensados en la misión
- CantidadDeObjetosAComprar As Byte '<----- Cantidad de objetos a comprar en la misión
- CantidadDeObjetosAConseguirEnNPCs As Byte '<----- Cantidad de objetos que tenés que conseguir matando NPC's
- End Type
- Private Type tCantidades
- CantidadHombre As Byte '<----- Cantidad de hombres
- CantidadMisiones As Byte '<------ Cantidad de misiones
- CantidadObjetos As Byte '<----- Cantidad de objetos
- CantidadMisionesDatos() As tCantidadMisionesDatos '<----- Cantidad de objetos o buffs que tiene la recompensa de X misión
- End Type
- Private Type tMisionero
- Hombre() As tHombre '<---- Hombres que hicieron misiones (MACHISMO)
- Mision() As tMision '<--- Misiones
- Objeto() As Obj 'Objetos que puede llegar hacer el misionero con sus ayudantes
- Vendedor As tVendedor '<---- Vendedor
- Sastre As tNPCArmadores '<--- El sastre
- Herrero As tNPCArmadores '<--- El herrero
- Tipo As eTipoMisioneros '<---- Qué tipo de misionero es?
- Pos As WorldPos ' <---- Su posición
- Cantidades As tCantidades '<----- Para los arrays :P
- Oro As Long '<---- Oro que tiene
- ID As Integer '<---- Su id
- End Type
- Private CantidadMisioneros As Byte '<--- Cantidad total de misioneros
- Private Leer As New clsIniReader '<---- Para leer el .dat
- Private Misionero() As tMisionero '<---- Todos los misioneros
- Public Sub Cargar_Cantidades()
- On Error GoTo error
- 100 Dim LoopC As Long
- 110 Dim LoopI As Long
- 120 Call Leer.Initialize(DatPath & "\Misioneros.dat")
- 130 CantidadMisioneros = CByte(Leer.GetValue("INIT", "Misioneros"))
- 140 ReDim Misionero(1 To CantidadMisioneros) As tMisionero
- 150 For LoopC = 1 To CantidadMisioneros
- 160 With Misionero(LoopC).Cantidades
- 170 .CantidadHombre = CByte(Leer.GetValue("Misionero" & LoopC, "Cantidad de hombres"))
- 180 .CantidadMisiones = CByte(Leer.GetValue("Misionero" & LoopC, "Cantidad de misiones"))
- 190 .CantidadObjetos = CByte(Leer.GetValue("Misionero" & LoopC, "Cantidad de objetos"))
- 'Redims:
- 200 With Misionero(LoopC)
- 210 ReDim .Hombre(1 To .Cantidades.CantidadHombre) As tHombre
- 220 ReDim .Mision(1 To .Cantidades.CantidadMisiones) As tMision
- 230 ReDim .Objeto(1 To .Cantidades.CantidadObjetos) As Obj
- 240 ReDim .CantidadRecompensaMisiones(1 To .CantidadMisiones) As tCantidadRecompensas
- 250 For LoopI = 1 To .CantidadMisiones
- 260 Misionero(LoopC).Cantidades.CantidadMisionesDatos(LoopI).CantidadDeBuffsRecompensa = CByte(Leer.GetValue("Misionero" & LoopC, "Cantidad de objetos como recompensa de la mision " & LoopI)) '<--- Otra vez leemos :P
- 270 Misionero(LoopC).Cantidades.CantidadMisionesDatos(LoopI).CantidadDeObjetosRecompensa = CByte(Leer.GetValue("Misionero" & LoopC, "Cantidad de objetos como recompensa de la mision " & LoopI)) '<--- Otra vez leemos :P
- 280 Misionero(LoopC).Cantidades.CantidadMisionesDatos(LoopI).CantidadDeObjetosAConseguirEnNPCs = CByte(Leer.GetValue("Misionero" & LoopC, "Cantidad de objetos que tiene que recolectar matando un NPC de la misión " & LoopI))
- 290 Misionero(LoopC).Cantidades.CantidadMisionesDatos(LoopI).CantidadDeObjetosAComprar = CByte(Leer.GetValue("Misionero" & LoopC, "Cantidad de objetos que tiene que ir a comprar a otro misionero de la misión " & LoopI))
- 300 ReDim .Mision(LoopI).Recompensa.Objeto(1 To .Cantidades.CantidadRecompensaMisiones(LoopI).CantidadDeObjetos) As Obj
- 310 ReDim .Mision(LoopI).Recompensa.Buffs(1 To .Cantidades.CantidadRecompensaMisiones(LoopI).CantidadDeBuffs) As eBuffs
- 320 ReDim .Mision(LoopI).Objetivo.ComprarObjeto(1 To .Cantidades.CantidadMisionesDatos(LoopI).CantidadDeObjetosAComprar) As tComprarObjeto
- 330 ReDim .Mision(LoopI).Objetivo.MatarNPC.Objeto(1 To .Cantidades.CantidadMisionesDatos(LoopI).CantidadDeObjetosAConseguirEnNPCs) As tMatarNPCObjeto
- 320 Next LoopI
- 330 End With
- 340 End With
- 350 Next LoopC
- Exit Sub
- error:
- Call LogError("Error en Cargar_Cantidades, línea: " & Erl & ", error: " & Err.description)
- End Sub
- Public Sub Cargar_ID_Misioneros(ByVal ID As Integer)
- On Error GoTo error
- 10 If MisionerosContados >= CantidadDeMisioneros Then Exit Sub
- 20 MisionerosContados = MisionerosContados + 1
- 30 Misionero(MisionerosContados).ID = ID
- Exit Sub
- error:
- Call LogError("Error en Cargar_ID_Misioneros, línea: " & Erl & ", error: " & Err.description)
- End Sub
- Public Sub Cargar_Misioneros()
- On Error GoTo error
- 90 Dim LoopZ As Long
- 100 Dim LoopC As Long
- 110 Dim loopX As Long
- 120 Dim strReadfield As String
- 130 Dim Ascii As Integer
- 140 Ascii = Asc("-")
- 150 Call Leer.Initialize(DatPath & "\Misioneros.dat")
- 160 For LoopC = 1 To CantidadDeMisioneros
- 170 With Misionero(LoopC)
- 180 strReadfield = Leer.GetValue("Misionero" & LoopC, "Posicion")
- 190 .Pos.Map = CInt(ReadField(1, strReadfield, Ascii))
- 200 .Pos.X = CByte(ReadField(2, strReadfield, Ascii))
- 210 .Pos.Y = CByte(ReadField(3, strReadfield, Ascii))
- 220 .Oro = CLng(Leer.GetValue("Misionero" & LoopC, "Oro"))
- 230 For loopX = 1 To Contadores.CantidadHombres
- 240 With .Hombre(loopX).CompradorObjetos
- 250 .Nombre = Leer.GetValue("Misionero" & LoopC, "Hombre comprador de objetos nombre [" & loopX & "]")
- 260 .Reputacion = CInt(Leer.GetValue("Misionero" & LoopC, "Hombre comprador de objetos reputacion [" & loopX & "]"))
- 270 .EnMision = CBool(Leer.GetValue("Misionero" & LoopC, "Hombre comprador de objetos está en mision [" & loopX & "]"))
- 280 End With
- 290 With .Hombre(loopX).MatadorDeNPC
- 300 .Nombre = Leer.GetValue("Misionero" & LoopC, "Hombre matador de NPC's nombre [" & loopX & "]")
- 310 .Reputacion = CInt(Leer.GetValue("Misionero" & LoopC, "Hombre matador de NPC's reputacion [" & loopX & "]"))
- 320 .EnMision = CBool(Leer.GetValue("Misionero" & LoopC, "Hombre matador de NPC's está en misión [" & loopX & "]"))
- 330 End With
- 340 With .Hombre(loopX).MatadorUsuarios
- 350 .Nombre = Leer.GetValue("Misionero" & LoopC, "Hombre matador usuarios nombre [" & loopX & "]")
- 360 .Reputacion = CInt(Leer.GetValue("Misionero" & LoopC, "Hombre matador de usuarios reputacion [" & loopX & "]"))
- 370 .EnMision = CBool(Leer.GetValue("Misionero" & LoopC, "Hombre matador usuarios está en misión [" & loopX & "]"))
- 380 End With
- 390 With .Hombre(loopX).Mensajero
- 400 .Nombre = Leer.GetValue("Misionero" & LoopC, "Hombre mensajero nombre [" & loopX & "]")
- 410 .Reputacion = CInt(Leer.GetValue("Misionero" & LoopC, "Hombre mensajero reputacion [" & loopX & "]"))
- 420 .EnMision = CBool(Leer.GetValue("Misionero" & LoopC, "Hombre mensajero en misión [" & loopX & "]"))
- 430 End With
- 440 Next loopX
- 450 For loopX = 1 To .Cantidades.CantidadObjetos
- 460 strReadfield = Leer.GetValue("Misionero" & LoopC, "Objetos que puede llegar a construir el misionero [" & loopX & "]")
- 470 .Objeto(loopX).ObjIndex = CInt(ReadField(1, strReadfield, Ascii))
- 480 .Objeto(loopX).Amount = CInt(ReadField(2, strReadfield, Ascii))
- 490 Next loopX
- 500 For loopX = 1 To .Cantidades.CantidadMisiones
- 510 .Mision(loopX).Costo = CLng(Leer.GetValue("Misionero" & LoopC, "Costo de la misión [" & loopX & "]"))
- 520 .Mision(loopX).Descripcion = Leer.GetValue("Misionero" & LoopC, "Descripcion de la misión [" & loopX & "]")
- 530 .Mision(loopX).Tiempo = CInt(Leer.GetValue("Misionero" & LoopC, "Tiempo que lleva hacer la misión [" & loopX & "]"))
- 540 For LoopZ = 1 To .Cantidades.CantidadMisionesDatos.CantidadDeObjetosAComprar
- 550 strReadfield = Leer.GetValue("Misionero" & LoopC, "Objeto [" & LoopZ & "] a comprar en la misión [" & loopX & "]")
- 560 .Mision(loopX).Objetivo.ComprarObjeto.Objeto(LoopZ).Amount = CInt(ReadField(2, strReadfield, Ascii))
- 570 .Mision(loopX).Objetivo.ComprarObjeto.Objeto(LoopZ).ObjIndex = CInt(ReadField(1, strReadfield, Ascii))
- 580 Next LoopZ
- 590 For LoopZ = 1 To .Cantidades.CantidadMisionesDatos.CantidadDeObjetosAConseguirEnNPCs
- 600 strReadfield = Leer.GetValue("Misionero" & LoopC, "Objeto [" & LoopZ & "] a conseguir matando un NPC en la misión [" & loopX & "]")
- 610 .Mision(loopX).Objetivo.MatarNPC.Objeto(LoopZ).Objeto.ObjIndex = CInt(ReadField(1, strReadfield, Ascii))
- 620 .Mision(loopX).Objetivo.MatarNPC.Objeto(LoopZ).Objeto.Amount = CInt(ReadField(2, strReadfield, Ascii))
- 630 .Mision(loopX).Objetivo.MatarNPC.Objeto(LoopZ).LoTiene = CBool(Leer.GetValue("Misionero" & LoopC, "¿Tiene el objeto [" & LoopZ & "]? Misión: [" & loopX & "]"))
- 640 Next LoopZ
- 650 .Mision(loopX).Objetivo.MatarUsuario.Faccion = CByte(Leer.GetValue("Misionero" & LoopC, "Faccion del usuario a matar en la misión [" & loopX & "]"))
- 660 .Mision(loopX).Objetivo.MatarUsuario.Nivel = CByte(Leer.GetValue("Misionero" & LoopC, "Nivel del usuario a matar en la misión [" & loopX & "]"))
- 670 .Mision(loopX).Objetivo.MatarUsuario.Nombre = Leer.GetValue("Misionero" & LoopC, "Nombre del usuario a matar en la misión [" & loopX & "]")
- 680 .Mision(loopX).Objetivo.MatarUsuario.razon = CByte(Leer.GetValue("Misionero" & LoopC, "Razón del usuario a matar en la misión [" & loopX & "]"))
- 690 .Mision(loopX).Objetivo.MatarUsuario.Pos = CInt(Leer.GetValue("Misionero" & LoopC, "Mapa del usuario a matar en la misión [" & loopX & "]"))
- 123 Next loopX
- 123 End With
- 123 Next LoopC
- Exit Sub
- error:
- Call LogError("Error en Cargar_Misioneros, línea: " & Erl & ", error: " & Err.description)
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement