Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Sub SaveUser(ByVal UserIndex As Integer, ByVal UserFile As String)
  2. '*************************************************
  3. 'Author: Unknown
  4. 'Last modified: 12/01/2010 (ZaMa)
  5. 'Saves the Users records
  6. '23/01/2007 Pablo (ToxicWaste) - Agrego NivelIngreso, FechaIngreso, MatadosIngreso y NextRecompensa.
  7. '12/01/2010: ZaMa - Los druidas pierden la inmunidad de ser atacados cuando pierden el efecto del mimetismo.
  8. '*************************************************
  9.  
  10. On Error GoTo Errhandler
  11.  
  12. Dim OldUserHead As Long
  13.  
  14. Dim Manager As clsIniManager
  15. Dim Existe As Boolean
  16.  
  17. With UserList(UserIndex)
  18.  
  19.     'ESTO TIENE QUE EVITAR ESE BUGAZO QUE NO SE POR QUE GRABA USUARIOS NULOS
  20.    'clase=0 es el error, porq el enum empieza de 1!!
  21.    If .Clase = 0 Or .Stats.ELV = 0 Then
  22.         Call LogCriticEvent("Estoy intentando guardar un usuario nulo de nombre: " & .Name)
  23.         Exit Sub
  24.     End If
  25.    
  26.     Set Manager = New clsIniManager
  27.    
  28.     If FileExist(UserFile) Then
  29.         Call Manager.Initialize(UserFile)
  30.            
  31.         If FileExist(UserFile & ".bk") Then Call Kill(UserFile & ".bk")
  32.        
  33.         Name UserFile As UserFile & ".bk"
  34.            
  35.         Existe = True
  36.     End If
  37.    
  38.     If .flags.Mimetizado = 1 Then
  39.         .Char.body = .CharMimetizado.body
  40.         .Char.Head = .CharMimetizado.Head
  41.         .Char.CascoAnim = .CharMimetizado.CascoAnim
  42.         .Char.ShieldAnim = .CharMimetizado.ShieldAnim
  43.         .Char.WeaponAnim = .CharMimetizado.WeaponAnim
  44.         .Counters.Mimetismo = 0
  45.         .flags.Mimetizado = 0
  46.         ' Se fue el efecto del mimetismo, puede ser atacado por npcs
  47.        .flags.Ignorado = False
  48.     End If
  49.    
  50.     If FileExist(UserFile, vbNormal) Then
  51.         If .flags.Muerto = 1 Then
  52.             OldUserHead = .Char.Head
  53.             .Char.Head = Manager.GetValue("INIT", "Head")
  54.         End If
  55.     '       Kill UserFile
  56.    End If
  57.    
  58.     Dim LoopC As Integer
  59.    
  60.     Call Manager.ChangeValue("FLAGS", "Muerto", CStr(.flags.Muerto))
  61.     Call Manager.ChangeValue("FLAGS", "Escondido", CStr(.flags.Escondido))
  62.     Call Manager.ChangeValue("FLAGS", "Hambre", CStr(.flags.Hambre))
  63.     Call Manager.ChangeValue("FLAGS", "Sed", CStr(.flags.Sed))
  64.     Call Manager.ChangeValue("FLAGS", "Desnudo", CStr(.flags.Desnudo))
  65.     Call Manager.ChangeValue("FLAGS", "Ban", CStr(.flags.Ban))
  66.     Call Manager.ChangeValue("FLAGS", "Navegando", CStr(.flags.Navegando))
  67.     Call Manager.ChangeValue("FLAGS", "Envenenado", CStr(.flags.Envenenado))
  68.     Call Manager.ChangeValue("FLAGS", "Paralizado", CStr(.flags.Paralizado))
  69.     Call Manager.ChangeValue("FLAGS", "IsLeader", CStr(.flags.IsLeader))
  70.    
  71.     'Matrix
  72.    Call Manager.ChangeValue("FLAGS", "LastMap", CStr(.flags.lastMap))
  73.    
  74.     'Eventos
  75.    Call Manager.ChangeValue("EVENTOS", "Quests", CStr(.Events.Quests))
  76.     Call Manager.ChangeValue("EVENTOS", "Torneos", CStr(.Events.Torneos))
  77.    
  78.     Call Manager.ChangeValue("CONSEJO", "PERTENECE", IIf(.flags.Privilegios And PlayerType.RoyalCouncil, "1", "0"))
  79.     Call Manager.ChangeValue("CONSEJO", "PERTENECECAOS", IIf(.flags.Privilegios And PlayerType.ChaosCouncil, "1", "0"))
  80.    
  81.     Call Manager.ChangeValue("COUNTERS", "Pena", CStr(.Counters.Pena))
  82.     Call Manager.ChangeValue("COUNTERS", "SkillsAsignados", CStr(.Counters.AsignedSkills))
  83.    
  84.     Call Manager.ChangeValue("FACCIONES", "Bando", val(.Faccion.Bando))
  85.     Call Manager.ChangeValue("FACCIONES", "BandoOriginal", val(.Faccion.BandoOriginal))
  86.     Call Manager.ChangeValue("FACCIONES", "Matados0", val(.Faccion.Matados(0)))
  87.     Call Manager.ChangeValue("FACCIONES", "Matados1", val(.Faccion.Matados(1)))
  88.     Call Manager.ChangeValue("FACCIONES", "Matados2", val(.Faccion.Matados(2)))
  89.    
  90.     Call Manager.ChangeValue("FACCIONES", "Jerarquia", val(.Faccion.Jerarquia))
  91.     Call Manager.ChangeValue("FACCIONES", "Ataco1", (.Faccion.Ataco(1) = 1))
  92.     Call Manager.ChangeValue("FACCIONES", "Ataco2", (.Faccion.Ataco(2) = 1))
  93.    
  94.     'Call WriteVar(UserFile, "FACCIONES", "Quests", val(.Faccion.Quests))
  95.    Call Manager.ChangeValue("FACCIONES", "Torneos", val(.Faccion.Torneos))
  96.    
  97.     '¿Fueron modificados los atributos del usuario?
  98.    If Not .flags.TomoPocion Then
  99.         For LoopC = 1 To UBound(.Stats.UserAtributos)
  100.             Call Manager.ChangeValue("ATRIBUTOS", "AT" & LoopC, CStr(.Stats.UserAtributos(LoopC)))
  101.         Next LoopC
  102.     Else
  103.         For LoopC = 1 To UBound(.Stats.UserAtributos)
  104.             '.Stats.UserAtributos(LoopC) = .Stats.UserAtributosBackUP(LoopC)
  105.            Call Manager.ChangeValue("ATRIBUTOS", "AT" & LoopC, CStr(.Stats.UserAtributosBackUP(LoopC)))
  106.         Next LoopC
  107.     End If
  108.    
  109.     For LoopC = 1 To UBound(.Stats.UserSkills)
  110.         Call Manager.ChangeValue("SKILLS", "SK" & LoopC, CStr(.Stats.UserSkills(LoopC)))
  111.     Next LoopC
  112.    
  113.     Call Manager.ChangeValue("CONTACTO", "Email", .email)
  114.    
  115.     Call Manager.ChangeValue("INIT", "Genero", .Genero)
  116.     Call Manager.ChangeValue("INIT", "Raza", .raza)
  117.     Call Manager.ChangeValue("INIT", "Hogar", .Hogar)
  118.     Call Manager.ChangeValue("INIT", "Clase", .Clase)
  119.     Call Manager.ChangeValue("INIT", "Desc", .desc)
  120.    
  121.     Call Manager.ChangeValue("INIT", "Heading", CStr(.Char.heading))
  122.    
  123.     Call Manager.ChangeValue("INIT", "Head", CStr(.OrigChar.Head))
  124.    
  125.     If .flags.Muerto = 0 Then
  126.         Call Manager.ChangeValue("INIT", "Body", CStr(.Char.body))
  127.     End If
  128.    
  129.     Call Manager.ChangeValue("INIT", "Arma", CStr(.Char.WeaponAnim))
  130.     Call Manager.ChangeValue("INIT", "Escudo", CStr(.Char.ShieldAnim))
  131.     Call Manager.ChangeValue("INIT", "Casco", CStr(.Char.CascoAnim))
  132.    
  133.     #If ConUpTime Then
  134.         Dim TempDate As Date
  135.         TempDate = Now - .LogOnTime
  136.         .LogOnTime = Now
  137.         .UpTime = .UpTime + (Abs(Day(TempDate) - 30) * 24 * 3600) + Hour(TempDate) * 3600 + Minute(TempDate) * 60 + Second(TempDate)
  138.         .UpTime = .UpTime
  139.         Call Manager.ChangeValue("INIT", "UpTime", .UpTime)
  140.     #End If
  141.    
  142.     'First time around?
  143.    If Manager.GetValue("INIT", "LastIP1") = vbNullString Then
  144.         Call Manager.ChangeValue("INIT", "LastIP1", .ip & " - " & Date & ":" & time)
  145.     'Is it a different ip from last time?
  146.    ElseIf .ip <> Left$(Manager.GetValue("INIT", "LastIP1"), InStr(1, Manager.GetValue("INIT", "LastIP1"), " ") - 1) Then
  147.         Dim i As Integer
  148.         For i = 5 To 2 Step -1
  149.             Call Manager.ChangeValue("INIT", "LastIP" & i, Manager.GetValue("INIT", "LastIP" & CStr(i - 1)))
  150.         Next i
  151.         Call Manager.ChangeValue("INIT", "LastIP1", .ip & " - " & Date & ":" & time)
  152.     'Same ip, just update the date
  153.    Else
  154.         Call Manager.ChangeValue("INIT", "LastIP1", .ip & " - " & Date & ":" & time)
  155.     End If
  156.    
  157.     Call Manager.ChangeValue("INIT", "Position", .Pos.map & "-" & .Pos.X & "-" & .Pos.Y)
  158.    
  159.     Call Manager.ChangeValue("STATS", "GLD", CStr(.Stats.GLD))
  160.     Call Manager.ChangeValue("STATS", "BANCO", CStr(.Stats.Banco))
  161.    
  162.     Call Manager.ChangeValue("STATS", "MaxHP", CStr(.Stats.MaxHp))
  163.     Call Manager.ChangeValue("STATS", "MinHP", CStr(.Stats.MinHp))
  164.    
  165.     Call Manager.ChangeValue("STATS", "MaxSTA", CStr(.Stats.MaxSta))
  166.     Call Manager.ChangeValue("STATS", "MinSTA", CStr(.Stats.MinSta))
  167.    
  168.     Call Manager.ChangeValue("STATS", "MaxMAN", CStr(.Stats.MaxMAN))
  169.     Call Manager.ChangeValue("STATS", "MinMAN", CStr(.Stats.MinMAN))
  170.    
  171.     Call Manager.ChangeValue("STATS", "MaxHIT", CStr(.Stats.MaxHIT))
  172.     Call Manager.ChangeValue("STATS", "MinHIT", CStr(.Stats.MinHIT))
  173.    
  174.     Call Manager.ChangeValue("STATS", "MaxAGU", CStr(.Stats.MaxAGU))
  175.     Call Manager.ChangeValue("STATS", "MinAGU", CStr(.Stats.MinAGU))
  176.    
  177.     Call Manager.ChangeValue("STATS", "MaxHAM", CStr(.Stats.MaxHam))
  178.     Call Manager.ChangeValue("STATS", "MinHAM", CStr(.Stats.MinHam))
  179.    
  180.     Call Manager.ChangeValue("STATS", "SkillPtsLibres", CStr(.Stats.SkillPts))
  181.      
  182.     Call Manager.ChangeValue("STATS", "EXP", CStr(.Stats.Exp))
  183.     Call Manager.ChangeValue("STATS", "ELV", CStr(.Stats.ELV))
  184.    
  185.     Call Manager.ChangeValue("STATS", "ELU", CStr(.Stats.ELU))
  186.     Call Manager.ChangeValue("MUERTES", "UserMuertes", CStr(.Stats.UsuariosMatados))
  187.     'Call WriteVar(UserFile, "MUERTES", "CrimMuertes", Cstr$(.Stats.CriminalesMatados))
  188.    Call Manager.ChangeValue("MUERTES", "NpcsMuertes", CStr(.Stats.NPCsMuertos))
  189.      
  190.     '[KEVIN]----------------------------------------------------------------------------
  191.    '*******************************************************************************************
  192.    Call Manager.ChangeValue("BancoInventory", "CantidadItems", val(.BancoInvent.NroItems))
  193.     Dim loopd As Integer
  194.     For loopd = 1 To MAX_BANCOINVENTORY_SLOTS
  195.         Call Manager.ChangeValue("BancoInventory", "Obj" & loopd, .BancoInvent.Object(loopd).OBJIndex & "-" & .BancoInvent.Object(loopd).Amount)
  196.     Next loopd
  197.     '*******************************************************************************************
  198.    '[/KEVIN]-----------
  199.      
  200.     'Save Inv
  201.    Call Manager.ChangeValue("Inventory", "CantidadItems", val(.Invent.NroItems))
  202.    
  203.     For LoopC = 1 To MAX_INVENTORY_SLOTS
  204.         Call Manager.ChangeValue("Inventory", "Obj" & LoopC, .Invent.Object(LoopC).OBJIndex & "-" & .Invent.Object(LoopC).Amount & "-" & .Invent.Object(LoopC).Equipped)
  205.     Next LoopC
  206.    
  207.     Call Manager.ChangeValue("Inventory", "WeaponEqpSlot", CStr(.Invent.WeaponEqpSlot))
  208.     Call Manager.ChangeValue("Inventory", "ArmourEqpSlot", CStr(.Invent.ArmourEqpSlot))
  209.     Call Manager.ChangeValue("Inventory", "CascoEqpSlot", CStr(.Invent.CascoEqpSlot))
  210.     Call Manager.ChangeValue("Inventory", "EscudoEqpSlot", CStr(.Invent.EscudoEqpSlot))
  211.     Call Manager.ChangeValue("Inventory", "BarcoSlot", CStr(.Invent.BarcoSlot))
  212.     Call Manager.ChangeValue("Inventory", "MunicionSlot", CStr(.Invent.MunicionEqpSlot))
  213.     Call Manager.ChangeValue("Inventory", "MochilaSlot", CStr(.Invent.MochilaEqpSlot))
  214.     Call Manager.ChangeValue("Inventory", "HerramientaSlot", CStr(.Invent.HerramientaEqpslot))
  215.     '/Nacho
  216.    
  217.     Dim cad As String
  218.    
  219.     For LoopC = 1 To MAXUSERHECHIZOS
  220.         cad = .Stats.UserHechizos(LoopC)
  221.         Call Manager.ChangeValue("HECHIZOS", "H" & LoopC, cad)
  222.     Next
  223.    
  224.     Dim NroMascotas As Long
  225.     NroMascotas = .NroMascotas
  226.    
  227.     For LoopC = 1 To MAXMASCOTAS
  228.         ' Mascota valida?
  229.        If .MascotasIndex(LoopC) > 0 Then
  230.             ' Nos aseguramos que la criatura no fue invocada
  231.            If Npclist(.MascotasIndex(LoopC)).Contadores.TiempoExistencia = 0 Then
  232.                 cad = .MascotasType(LoopC)
  233.             Else 'Si fue invocada no la guardamos
  234.                cad = "0"
  235.                 NroMascotas = NroMascotas - 1
  236.             End If
  237.             Call Manager.ChangeValue("MASCOTAS", "MAS" & LoopC, cad)
  238.         Else
  239.             cad = .MascotasType(LoopC)
  240.             Call Manager.ChangeValue("MASCOTAS", "MAS" & LoopC, cad)
  241.         End If
  242.    
  243.     Next
  244.    
  245.     Call Manager.ChangeValue("MASCOTAS", "NroMascotas", CStr(NroMascotas))
  246.    
  247.     For LoopC = 1 To 3
  248.         Call Manager.ChangeValue("RECOMPENSAS", "Recompensa" & LoopC, val(.Recompensas(LoopC)))
  249.     Next LoopC
  250.    
  251.     Call Manager.ChangeValue("Guild", "GUILDID", .GuildID)
  252.     Call Manager.ChangeValue("Guild", "RequestedTo", .flags.WaitingApprovement)
  253.    
  254.     'Devuelve el head de muerto
  255.    If .flags.Muerto = 1 Then
  256.         .Char.Head = iCabezaMuerto
  257.     End If
  258. End With
  259.  
  260.     Call Manager.DumpFile(UserFile)
  261.    
  262.     Set Manager = Nothing
  263.    
  264.     If Existe Then Call Kill(UserFile & ".bk")
  265.  
  266. Exit Sub
  267.  
  268. Errhandler:
  269. Call LogError("Error en SaveUser")
  270. Set Manager = Nothing
  271.  
  272. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement