Advertisement
Luciano_fuentes

Venta de personajes

Dec 14th, 2016
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Option Explicit
  2.  
  3. Private Const Max_Ventas As Byte = 50 'Cantidad máxima de usuarios a la venta
  4.  
  5. Private Type tVentas
  6.     Precio As Long
  7.     Dato As tDatos
  8. End Type
  9.  
  10. Public Ventas(1 To Max_Ventas) As tVentas
  11.  
  12. Public Sub Carga_Ventas()
  13.    
  14.     Dim LoopC As Long
  15.     Dim LoopX As Long
  16.     Dim LoopZ As Long
  17.     Dim LoopI As Long
  18.     Dim LoopA As Long
  19.     Dim LoopO As Long
  20.    
  21.     Dim Leer As clsIniReader
  22.    
  23.     Set Leer = New clsIniReader
  24.     Call Leer.Initialize(App.Path & "\Dat\Ventas.dat")
  25.    
  26.     For LoopC = 1 To Max_Ventas
  27.         With Ventas(LoopC)
  28.             With Ventas(LoopC).Dato
  29.                 .Candado = CByte(Leer.GetValue("VENTA#" & LoopC, "Candado"))
  30.                 .Clase = CByte(Leer.GetValue("VENTA#" & LoopC, "Clase"))
  31.                 .Mana = CInt(Leer.GetValue("VENTA#" & LoopC, "Mana"))
  32.                 .Vida = CInt(Leer.GetValue("VENTA#" & LoopC, "Vida"))
  33.                 .Nivel = CByte(Leer.GetValue("VENTA#" & LoopC, "Nivel"))
  34.                 .Raza = CByte(Leer.GetValue("VENTA#" & LoopC, "Raza"))
  35.                 .Nombre = Leer.GetValue("VENTA#" & LoopC, "Nombre")
  36.                 .Porcentaje = CDbl(Leer.GetValue("VENTA#" & LoopC, "Porcentaje"))
  37.                 .Privado = Leer.GetValue("VENTA#" & LoopC, "Privado")
  38.                 .Oro = CLng(Leer.GetValue("VENTA#" & LoopC, "Oro_Inventario"))
  39.                
  40.                 For LoopX = 1 To MAXUSERHECHIZOS
  41.                     .Hechizos(LoopX) = CInt(Leer.GetValue("VENTA#" & LoopC, "Hechizo#" & LoopX))
  42.                 Next LoopX
  43.                
  44.                 For LoopZ = 1 To MAX_NORMAL_INVENTORY_SLOTS
  45.                     .Objetos(LoopZ).ObjIndex = CInt(ReadField(1, (Leer.GetValue("VENTA#" & LoopC, "OBJETO_INVENTARIO#" & LoopZ)), 45))
  46.                     .Objetos(LoopZ).Amount = CInt(ReadField(2, (Leer.GetValue("VENTA#" & LoopC, "OBJETO_INVENTARIO#" & LoopZ)), 45))
  47.                 Next LoopZ
  48.                
  49.                 For LoopI = 1 To NUMSKILLS
  50.                     .Skills(LoopI) = CByte(Leer.GetValue("VENTA#" & LoopC, "Skill#" & LoopI))
  51.                 Next LoopI
  52.                
  53.                 For LoopA = 1 To MAX_BANCOINVENTORY_SLOTS
  54.                     .Boveda.Objetos(LoopA).ObjIndex = CInt(ReadField(1, (Leer.GetValue("VENTA#" & LoopC, "OBJETO_BOVEDA#" & LoopZ)), 45))
  55.                     .Boveda.Objetos(LoopA).Amount = CInt(ReadField(2, (Leer.GetValue("VENTA#" & LoopC, "OBJETO_BOVEDA#" & LoopZ)), 45))
  56.                 Next LoopA
  57.                
  58.                 For LoopO = 1 To NUMATRIBUTOS
  59.                     .Atributos(LoopO) = CByte(Leer.GetValue("VENTA#" & LoopC, "Atributo#" & LoopO))
  60.                 Next LoopO
  61.             End With
  62.             .Dato.Boveda.Oro = CLng(Leer.GetValue("VENTA#" & LoopC, "Oro_Boveda"))
  63.             .Precio = CLng(Leer.GetValue("VENTA#" & LoopC, "Precio"))
  64.         End With
  65.     Next LoopC
  66. End Sub
  67.  
  68. Private Function Dame_ID_Venta() As Byte
  69.     Dim LoopC As Long
  70.     For LoopC = 1 To Max_Ventas
  71.         With Ventas(LoopC)
  72.             If .Precio = 0 Then
  73.                 Dame_ID_Venta = LoopC
  74.                 Exit Function
  75.             End If
  76.         End With
  77.     Next LoopC
  78. End Function
  79.  
  80. Public Sub Publicar_Personaje(ByVal ID As Integer, ByVal Precio As Long, ByVal Privado As String, ByVal Candado As Byte)
  81.    
  82.     Dim Archivo As String
  83.     Dim EnVenta As Byte
  84.     Archivo = CharPath & UCase$(UserList(ID).name) & ".chr"
  85.     EnVenta = Dame_ID_Venta
  86.    
  87.     With Ventas(EnVenta)
  88.         .Precio = Precio
  89.         .Dato.Candado = Candado
  90.         .Dato.Privado = Privado
  91.     End With
  92.    
  93.     Call Setear_Venta(EnVenta, ID)
  94.     Call Guardar_Venta(EnVenta)
  95.    
  96.     UserList(ID).flags.EnVenta = EnVenta
  97.     Call WriteVar(Archivo, "FLAGS", "EnVenta", CStr(UserList(ID).flags.EnVenta))
  98.    
  99.     If Ventas(EnVenta).Dato.Candado > 0 Then
  100.         UserList(ID).flags.EnCandado = 1
  101.         Call CloseSocket(ID)
  102.     End If
  103. End Sub
  104.  
  105. Public Sub Quitar_Persona(ByVal ID As Integer)
  106.  
  107.     Dim Archivo As String
  108.     Archivo = CharPath & UCase$(UserList(ID).name) & ".chr"
  109.    
  110.     With Ventas(UserList(ID).flags.EnVenta)
  111.         Erase .Dato.Atributos()
  112.         Erase .Dato.Boveda.Objetos()
  113.         Erase .Dato.Hechizos()
  114.         Erase .Dato.Objetos()
  115.         Erase .Dato.Skills()
  116.         .Precio = 0
  117.         .Dato.Candado = 0
  118.         .Dato.Clase = 0
  119.         .Dato.Mana = 0
  120.         .Dato.Nivel = 0
  121.         .Dato.Nombre = vbNullString
  122.         .Dato.Oro = 0
  123.         .Dato.Porcentaje = 0
  124.         .Dato.Privado = 0
  125.         .Dato.Raza = 0
  126.         .Dato.Vida = 0
  127.         .Dato.Boveda.Oro = 0
  128.         Guardar_Venta (UserList(ID).flags.EnVenta)
  129.         UserList(ID).flags.EnVenta = 0
  130.         UserList(ID).flags.EnCandado = 0
  131.     End With
  132.    
  133. End Sub
  134.  
  135. Public Sub Guardar_Venta(ByVal ID_Venta As Byte)
  136.  
  137.     Dim LoopC As Long
  138.     Dim LoopX As Long
  139.     Dim LoopZ As Long
  140.     Dim LoopI As Long
  141.     Dim LoopA As Long
  142.     Dim Archivo As String
  143.     Archivo = App.Path & "\Dat\JuegosDelHambre.dat"
  144.  
  145.     With Ventas(ID_Venta).Dato
  146.  
  147.         For LoopC = 1 To MAXUSERHECHIZOS
  148.             Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Hechizo#" & LoopC, CStr(.Hechizos(LoopC)))
  149.         Next LoopC
  150.  
  151.         For LoopX = 1 To MAX_NORMAL_INVENTORY_SLOTS
  152.             Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Objeto#" & LoopX, CStr(.Objetos(LoopX).ObjIndex) & "-" & CStr(.Objetos(LoopX).Amount))
  153.         Next LoopX
  154.  
  155.         For LoopZ = 1 To NUMSKILLS
  156.             Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Skill#" & LoopZ, CStr(.Skills(LoopZ)))
  157.         Next LoopZ
  158.  
  159.         For LoopI = 1 To NUMATRIBUTOS
  160.             Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Skill#" & LoopI, CStr(.Atributos(LoopI)))
  161.         Next LoopI
  162.  
  163.         For LoopA = 1 To MAX_BANCOINVENTORY_SLOTS
  164.             Call WriteVar(Archivo, "VENTA#" & ID_Venta, "OBJETO_BOVEDA#" & LoopI, CStr(.Boveda.Objetos(LoopA).ObjIndex) & "-" & CStr(.Boveda.Objetos(LoopA).Amount))
  165.         Next LoopA
  166.  
  167.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Precio", CStr(Ventas(ID_Venta).Precio))
  168.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Vida", CStr(.Vida))
  169.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Mana", CStr(.Mana))
  170.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Clase", CStr(.Clase))
  171.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Nivel", CStr(.Nivel))
  172.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Nombre", CStr(.Nombre))
  173.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Oro_Inventario", CStr(.Oro))
  174.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Oro_Boveda", CStr(.Boveda.Oro))
  175.         Call WriteVar(Archivo, "VENTA#" & ID_Venta, "Porcentaje", CStr(.Porcentaje))
  176.  
  177.     End With
  178. End Sub
  179.  
  180. Public Sub Setear_Venta(ByVal ID_Venta, ByVal ID As Integer)
  181.  
  182.     Dim LoopC As Long
  183.     Dim LoopX As Long
  184.     Dim LoopZ As Long
  185.     Dim LoopI As Long
  186.     Dim LoopA As Long
  187.  
  188.     With Ventas(ID_Venta).Dato
  189.         .Vida = UserList(ID).Stats.MaxHp
  190.         .Mana = UserList(ID).Stats.MaxMAN
  191.         .Clase = UserList(ID).Clase
  192.         .Nivel = UserList(ID).Stats.ELV
  193.         .Nombre = UserList(ID).name
  194.         .Oro = UserList(ID).Stats.GLD
  195.         .Porcentaje = FormatNumber(Porcentaje(UserList(ID).Stats.ELU, UserList(ID).Stats.Exp), 2)
  196.         .Boveda.Oro = UserList(ID).Stats.Banco
  197.  
  198.         For LoopC = 1 To MAXUSERHECHIZOS
  199.             .Hechizos(LoopC) = UserList(ID).Stats.UserHechizos(LoopC)
  200.         Next LoopC
  201.  
  202.         For LoopX = 1 To MAX_NORMAL_INVENTORY_SLOTS
  203.             .Objetos(LoopX).ObjIndex = UserList(ID).Invent.Object(LoopX).ObjIndex
  204.             .Objetos(LoopX).Amount = UserList(ID).Invent.Object(LoopX).Amount
  205.         Next LoopX
  206.  
  207.         For LoopZ = 1 To NUMSKILLS
  208.             .Skills(LoopZ) = UserList(ID).Stats.UserSkills(LoopZ)
  209.         Next LoopZ
  210.  
  211.         For LoopI = 1 To NUMATRIBUTOS
  212.             .Atributos(LoopI) = UserList(ID).Stats.UserAtributos(LoopI)
  213.         Next LoopI
  214.  
  215.         For LoopA = 1 To MAX_BANCOINVENTORY_SLOTS
  216.             .Boveda.Objetos(LoopA) = UserList(ID).BancoInvent.Object(LoopA)
  217.         Next LoopA
  218.     End With
  219. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement