Advertisement
Luciano_fuentes

Quest

Aug 11th, 2017
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Option Explicit
  2.  
  3. Private Const MAPA_EMERGENCIA As Integer = 1
  4.  
  5. Public Type tDatos
  6.     ID As Integer
  7.     Cantidad As Byte
  8. End Type
  9.  
  10. Private Type tObjetivos
  11.     NPC() As tDatos
  12.     OBJ() As tDatos
  13. End Type
  14.  
  15. Private Type tRecompensas
  16.     Oro As Long
  17.     Exp As Long
  18.     OBJ() As tDatos
  19. End Type
  20.  
  21. Private Type tMisiones
  22.     Recompensa As tRecompensas
  23.     Objetivo As tObjetivos
  24. End Type
  25.  
  26. Public Type tUsuarioMision
  27.     Objetivo As tObjetivos
  28.     Terminada As Boolean
  29. End Type
  30.  
  31. Private Misiones() As tMisiones
  32.  
  33. Public Sub CargarMisiones()
  34.    
  35.     'MAB va a joder por esto...
  36.    Dim Leer As New clsIniReader
  37.     Leer.Initialize (App.Path & "\Dat\Misiones.dat")
  38.    
  39.     Dim cantidadMisiones As Byte
  40.     cantidadMisiones = CByte(Leer.GetValue("INIT", "Misiones"))
  41.    
  42.     ReDim Misiones(1 To cantidadMisiones) As tMisiones
  43.  
  44.     'Recompensas y objetivos:
  45.    Dim i As Long, y As Long
  46.     Dim cantidadObjetos As Byte, cantidadNPCs As Byte
  47.    
  48.     For i = 1 To cantidadMisiones
  49.         With Misiones(i).Recompensa
  50.             .Oro = CLng(Leer.GetValue("MISION" & i, "Oro"))
  51.             .Exp = CLng(Leer.GetValue("MISION" & i, "Exp"))
  52.             cantidadObjetos = CByte(Leer.GetValue("MISION" & i, "cantidadObjetosRecompensa"))
  53.             ReDim .OBJ(1 To cantidadObjetos) As tDatos
  54.             For y = 1 To cantidadObjetos
  55.                 .OBJ(y).ID = CInt(ReadField(1, Leer.GetValue("MISION" & i, "ObjetoRecompensa" & y), Asc("-")))
  56.                 .OBJ(y).Cantidad = CInt(ReadField(2, Leer.GetValue("MISION" & i, "ObjetoRecompensa" & y), Asc("-")))
  57.             Next y
  58.         End With
  59.         With Misiones(i).Objetivo
  60.             cantidadObjetos = CByte(Leer.GetValue("MISION" & i, "cantidadObjetosObjetivo"))
  61.             cantidadNPCs = CByte(Leer.GetValue("MISION" & i, "cantidadNPCsObjetivo"))
  62.             ReDim .OBJ(1 To cantidadObjetos) As tDatos
  63.             ReDim .NPC(1 To cantidadNPCs) As tDatos
  64.            
  65.             For y = 1 To cantidadObjetos
  66.                 .OBJ(y).ID = CInt(ReadField(1, Leer.GetValue("MISION" & i, "ObjetoObjetivo" & y), Asc("-")))
  67.                 .OBJ(y).Cantidad = CInt(ReadField(2, Leer.GetValue("MISION" & i, "ObjetoObjetivo" & y), Asc("-")))
  68.             Next y
  69.            
  70.             For y = 1 To cantidadNPCs
  71.                 .NPC(y).ID = CInt(ReadField(1, Leer.GetValue("MISION" & i, "npcIndex" & y), Asc("-")))
  72.                 .NPC(y).Cantidad = CInt(ReadField(2, Leer.GetValue("MISION" & i, "cantidadNPCs" & y), Asc("-")))
  73.             Next y
  74.         End With
  75.     Next i
  76.    
  77. End Sub
  78.  
  79. Public Sub ContarObjeto(ByVal userIndex As Integer, ByRef OBJ As tDatos, ByVal Mision As Byte)
  80.    
  81.     Dim i As Long
  82.    
  83.     With Misiones(Mision).Objetivo
  84.         For i = 1 To UBound(.OBJ())
  85.             If .OBJ(i).ID = OBJ.ID Then
  86.                 If UserList(userIndex).Mision.Objetivo.OBJ(i).Cantidad > 0 Then
  87.                     UserList(userIndex).Mision.Objetivo.OBJ(i).Cantidad = UserList(userIndex).Mision.Objetivo.OBJ(i).Cantidad - 1
  88.                     Exit For
  89.                 End If
  90.             End If
  91.         Next i
  92.     End With
  93.    
  94.     UserList(userIndex).Mision.Terminada = TerminoMision(Mision, userIndex)
  95.    
  96. End Sub
  97.  
  98. Public Sub ContarNPC(ByVal userIndex As Integer, ByRef NPC As tDatos, ByVal Mision As Byte)
  99.    
  100.     Dim i As Long
  101.    
  102.     With Misiones(Mision).Objetivo
  103.         For i = 1 To UBound(.NPC())
  104.             If .NPC(i).ID = NPC.ID Then
  105.                 If UserList(userIndex).Mision.Objetivo.NPC(i).Cantidad > 0 Then
  106.                     UserList(userIndex).Mision.Objetivo.NPC(i).Cantidad = UserList(userIndex).Mision.Objetivo.NPC(i).Cantidad - 1
  107.                     Exit For
  108.                 End If
  109.             End If
  110.         Next i
  111.     End With
  112.    
  113.     UserList(userIndex).Mision.Terminada = TerminoMision(Mision, userIndex)
  114.    
  115. End Sub
  116.  
  117. Private Function TerminoMision(ByVal Mision As Byte, ByVal userIndex As Integer) As Boolean
  118.  
  119.     Dim i As Long
  120.    
  121.     With Misiones(Mision).Objetivo
  122.         For i = 1 To UBound(.NPC())
  123.             If .NPC(i).Cantidad > 0 Then Exit Function
  124.         Next i
  125.        
  126.         For i = 1 To UBound(.OBJ())
  127.             If .OBJ(i).Cantidad > 0 Then Exit Function
  128.         Next i
  129.     End With
  130.    
  131.     TerminoMision = True
  132. End Function
  133.  
  134. Public Sub MisionTerminada(ByVal Mision As Byte, ByVal userIndex As Integer)
  135.    
  136.     Dim i As Long
  137.     With UserList(userIndex)
  138.    
  139.         Erase .Mision.Objetivo.NPC()
  140.         Erase .Mision.Objetivo.OBJ()
  141.          
  142.         .Stats.Exp = .Stats.Exp + Misiones(Mision).Recompensa.Exp
  143.         .Stats.GLD = .Stats.GLD + Misiones(Mision).Recompensa.Oro
  144.     End With
  145.    
  146.     With Misiones(Mision).Recompensa
  147.         For i = 1 To UBound(.OBJ())
  148.             If MeterItemEnInventario(userIndex, .OBJ(i)) = False Then _
  149.                 Call TirarItemAlPiso(UserList(userIndex).Pos, .OBJ(i))
  150.         Next i
  151.     End With
  152. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement