Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Explicit
- Private Const MAPA_EMERGENCIA As Integer = 1
- Public Type tDatos
- ID As Integer
- Cantidad As Byte
- End Type
- Private Type tObjetivos
- NPC() As tDatos
- OBJ() As tDatos
- End Type
- Private Type tRecompensas
- Oro As Long
- Exp As Long
- OBJ() As tDatos
- End Type
- Private Type tMisiones
- Recompensa As tRecompensas
- Objetivo As tObjetivos
- End Type
- Public Type tUsuarioMision
- Objetivo As tObjetivos
- Terminada As Boolean
- End Type
- Private Misiones() As tMisiones
- Public Sub CargarMisiones()
- 'MAB va a joder por esto...
- Dim Leer As New clsIniReader
- Leer.Initialize (App.Path & "\Dat\Misiones.dat")
- Dim cantidadMisiones As Byte
- cantidadMisiones = CByte(Leer.GetValue("INIT", "Misiones"))
- ReDim Misiones(1 To cantidadMisiones) As tMisiones
- 'Recompensas y objetivos:
- Dim i As Long, y As Long
- Dim cantidadObjetos As Byte, cantidadNPCs As Byte
- For i = 1 To cantidadMisiones
- With Misiones(i).Recompensa
- .Oro = CLng(Leer.GetValue("MISION" & i, "Oro"))
- .Exp = CLng(Leer.GetValue("MISION" & i, "Exp"))
- cantidadObjetos = CByte(Leer.GetValue("MISION" & i, "cantidadObjetosRecompensa"))
- ReDim .OBJ(1 To cantidadObjetos) As tDatos
- For y = 1 To cantidadObjetos
- .OBJ(y).ID = CInt(ReadField(1, Leer.GetValue("MISION" & i, "ObjetoRecompensa" & y), Asc("-")))
- .OBJ(y).Cantidad = CInt(ReadField(2, Leer.GetValue("MISION" & i, "ObjetoRecompensa" & y), Asc("-")))
- Next y
- End With
- With Misiones(i).Objetivo
- cantidadObjetos = CByte(Leer.GetValue("MISION" & i, "cantidadObjetosObjetivo"))
- cantidadNPCs = CByte(Leer.GetValue("MISION" & i, "cantidadNPCsObjetivo"))
- ReDim .OBJ(1 To cantidadObjetos) As tDatos
- ReDim .NPC(1 To cantidadNPCs) As tDatos
- For y = 1 To cantidadObjetos
- .OBJ(y).ID = CInt(ReadField(1, Leer.GetValue("MISION" & i, "ObjetoObjetivo" & y), Asc("-")))
- .OBJ(y).Cantidad = CInt(ReadField(2, Leer.GetValue("MISION" & i, "ObjetoObjetivo" & y), Asc("-")))
- Next y
- For y = 1 To cantidadNPCs
- .NPC(y).ID = CInt(ReadField(1, Leer.GetValue("MISION" & i, "npcIndex" & y), Asc("-")))
- .NPC(y).Cantidad = CInt(ReadField(2, Leer.GetValue("MISION" & i, "cantidadNPCs" & y), Asc("-")))
- Next y
- End With
- Next i
- End Sub
- Public Sub ContarObjeto(ByVal userIndex As Integer, ByRef OBJ As tDatos, ByVal Mision As Byte)
- Dim i As Long
- With Misiones(Mision).Objetivo
- For i = 1 To UBound(.OBJ())
- If .OBJ(i).ID = OBJ.ID Then
- If UserList(userIndex).Mision.Objetivo.OBJ(i).Cantidad > 0 Then
- UserList(userIndex).Mision.Objetivo.OBJ(i).Cantidad = UserList(userIndex).Mision.Objetivo.OBJ(i).Cantidad - 1
- Exit For
- End If
- End If
- Next i
- End With
- UserList(userIndex).Mision.Terminada = TerminoMision(Mision, userIndex)
- End Sub
- Public Sub ContarNPC(ByVal userIndex As Integer, ByRef NPC As tDatos, ByVal Mision As Byte)
- Dim i As Long
- With Misiones(Mision).Objetivo
- For i = 1 To UBound(.NPC())
- If .NPC(i).ID = NPC.ID Then
- If UserList(userIndex).Mision.Objetivo.NPC(i).Cantidad > 0 Then
- UserList(userIndex).Mision.Objetivo.NPC(i).Cantidad = UserList(userIndex).Mision.Objetivo.NPC(i).Cantidad - 1
- Exit For
- End If
- End If
- Next i
- End With
- UserList(userIndex).Mision.Terminada = TerminoMision(Mision, userIndex)
- End Sub
- Private Function TerminoMision(ByVal Mision As Byte, ByVal userIndex As Integer) As Boolean
- Dim i As Long
- With Misiones(Mision).Objetivo
- For i = 1 To UBound(.NPC())
- If .NPC(i).Cantidad > 0 Then Exit Function
- Next i
- For i = 1 To UBound(.OBJ())
- If .OBJ(i).Cantidad > 0 Then Exit Function
- Next i
- End With
- TerminoMision = True
- End Function
- Public Sub MisionTerminada(ByVal Mision As Byte, ByVal userIndex As Integer)
- Dim i As Long
- With UserList(userIndex)
- Erase .Mision.Objetivo.NPC()
- Erase .Mision.Objetivo.OBJ()
- .Stats.Exp = .Stats.Exp + Misiones(Mision).Recompensa.Exp
- .Stats.GLD = .Stats.GLD + Misiones(Mision).Recompensa.Oro
- End With
- With Misiones(Mision).Recompensa
- For i = 1 To UBound(.OBJ())
- If MeterItemEnInventario(userIndex, .OBJ(i)) = False Then _
- Call TirarItemAlPiso(UserList(userIndex).Pos, .OBJ(i))
- Next i
- End With
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement