Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sub SaveUser(ByVal UserIndex As Integer, ByVal UserFile As String)
- '*************************************************
- 'Author: Unknown
- 'Last modified: 12/01/2010 (ZaMa)
- 'Saves the Users records
- '23/01/2007 Pablo (ToxicWaste) - Agrego NivelIngreso, FechaIngreso, MatadosIngreso y NextRecompensa.
- '12/01/2010: ZaMa - Los druidas pierden la inmunidad de ser atacados cuando pierden el efecto del mimetismo.
- '*************************************************
- On Error GoTo Errhandler
- Dim OldUserHead As Long
- Dim Manager As clsIniManager
- Dim Existe As Boolean
- With UserList(UserIndex)
- 'ESTO TIENE QUE EVITAR ESE BUGAZO QUE NO SE POR QUE GRABA USUARIOS NULOS
- 'clase=0 es el error, porq el enum empieza de 1!!
- If .Clase = 0 Or .Stats.ELV = 0 Then
- Call LogCriticEvent("Estoy intentando guardar un usuario nulo de nombre: " & .Name)
- Exit Sub
- End If
- Set Manager = New clsIniManager
- If FileExist(UserFile) Then
- Call Manager.Initialize(UserFile)
- If FileExist(UserFile & ".bk") Then Call Kill(UserFile & ".bk")
- Name UserFile As UserFile & ".bk"
- Existe = True
- End If
- If .flags.Mimetizado = 1 Then
- .Char.body = .CharMimetizado.body
- .Char.Head = .CharMimetizado.Head
- .Char.CascoAnim = .CharMimetizado.CascoAnim
- .Char.ShieldAnim = .CharMimetizado.ShieldAnim
- .Char.WeaponAnim = .CharMimetizado.WeaponAnim
- .Counters.Mimetismo = 0
- .flags.Mimetizado = 0
- ' Se fue el efecto del mimetismo, puede ser atacado por npcs
- .flags.Ignorado = False
- End If
- If FileExist(UserFile, vbNormal) Then
- If .flags.Muerto = 1 Then
- OldUserHead = .Char.Head
- .Char.Head = Manager.GetValue("INIT", "Head")
- End If
- ' Kill UserFile
- End If
- Dim LoopC As Integer
- Call Manager.ChangeValue("FLAGS", "Muerto", CStr(.flags.Muerto))
- Call Manager.ChangeValue("FLAGS", "Escondido", CStr(.flags.Escondido))
- Call Manager.ChangeValue("FLAGS", "Hambre", CStr(.flags.Hambre))
- Call Manager.ChangeValue("FLAGS", "Sed", CStr(.flags.Sed))
- Call Manager.ChangeValue("FLAGS", "Desnudo", CStr(.flags.Desnudo))
- Call Manager.ChangeValue("FLAGS", "Ban", CStr(.flags.Ban))
- Call Manager.ChangeValue("FLAGS", "Navegando", CStr(.flags.Navegando))
- Call Manager.ChangeValue("FLAGS", "Envenenado", CStr(.flags.Envenenado))
- Call Manager.ChangeValue("FLAGS", "Paralizado", CStr(.flags.Paralizado))
- Call Manager.ChangeValue("FLAGS", "IsLeader", CStr(.flags.IsLeader))
- 'Matrix
- Call Manager.ChangeValue("FLAGS", "LastMap", CStr(.flags.lastMap))
- 'Eventos
- Call Manager.ChangeValue("EVENTOS", "Quests", CStr(.Events.Quests))
- Call Manager.ChangeValue("EVENTOS", "Torneos", CStr(.Events.Torneos))
- Call Manager.ChangeValue("CONSEJO", "PERTENECE", IIf(.flags.Privilegios And PlayerType.RoyalCouncil, "1", "0"))
- Call Manager.ChangeValue("CONSEJO", "PERTENECECAOS", IIf(.flags.Privilegios And PlayerType.ChaosCouncil, "1", "0"))
- Call Manager.ChangeValue("COUNTERS", "Pena", CStr(.Counters.Pena))
- Call Manager.ChangeValue("COUNTERS", "SkillsAsignados", CStr(.Counters.AsignedSkills))
- Call Manager.ChangeValue("FACCIONES", "Bando", val(.Faccion.Bando))
- Call Manager.ChangeValue("FACCIONES", "BandoOriginal", val(.Faccion.BandoOriginal))
- Call Manager.ChangeValue("FACCIONES", "Matados0", val(.Faccion.Matados(0)))
- Call Manager.ChangeValue("FACCIONES", "Matados1", val(.Faccion.Matados(1)))
- Call Manager.ChangeValue("FACCIONES", "Matados2", val(.Faccion.Matados(2)))
- Call Manager.ChangeValue("FACCIONES", "Jerarquia", val(.Faccion.Jerarquia))
- Call Manager.ChangeValue("FACCIONES", "Ataco1", (.Faccion.Ataco(1) = 1))
- Call Manager.ChangeValue("FACCIONES", "Ataco2", (.Faccion.Ataco(2) = 1))
- 'Call WriteVar(UserFile, "FACCIONES", "Quests", val(.Faccion.Quests))
- Call Manager.ChangeValue("FACCIONES", "Torneos", val(.Faccion.Torneos))
- '¿Fueron modificados los atributos del usuario?
- If Not .flags.TomoPocion Then
- For LoopC = 1 To UBound(.Stats.UserAtributos)
- Call Manager.ChangeValue("ATRIBUTOS", "AT" & LoopC, CStr(.Stats.UserAtributos(LoopC)))
- Next LoopC
- Else
- For LoopC = 1 To UBound(.Stats.UserAtributos)
- '.Stats.UserAtributos(LoopC) = .Stats.UserAtributosBackUP(LoopC)
- Call Manager.ChangeValue("ATRIBUTOS", "AT" & LoopC, CStr(.Stats.UserAtributosBackUP(LoopC)))
- Next LoopC
- End If
- For LoopC = 1 To UBound(.Stats.UserSkills)
- Call Manager.ChangeValue("SKILLS", "SK" & LoopC, CStr(.Stats.UserSkills(LoopC)))
- Next LoopC
- Call Manager.ChangeValue("CONTACTO", "Email", .email)
- Call Manager.ChangeValue("INIT", "Genero", .Genero)
- Call Manager.ChangeValue("INIT", "Raza", .raza)
- Call Manager.ChangeValue("INIT", "Hogar", .Hogar)
- Call Manager.ChangeValue("INIT", "Clase", .Clase)
- Call Manager.ChangeValue("INIT", "Desc", .desc)
- Call Manager.ChangeValue("INIT", "Heading", CStr(.Char.heading))
- Call Manager.ChangeValue("INIT", "Head", CStr(.OrigChar.Head))
- If .flags.Muerto = 0 Then
- Call Manager.ChangeValue("INIT", "Body", CStr(.Char.body))
- End If
- Call Manager.ChangeValue("INIT", "Arma", CStr(.Char.WeaponAnim))
- Call Manager.ChangeValue("INIT", "Escudo", CStr(.Char.ShieldAnim))
- Call Manager.ChangeValue("INIT", "Casco", CStr(.Char.CascoAnim))
- #If ConUpTime Then
- Dim TempDate As Date
- TempDate = Now - .LogOnTime
- .LogOnTime = Now
- .UpTime = .UpTime + (Abs(Day(TempDate) - 30) * 24 * 3600) + Hour(TempDate) * 3600 + Minute(TempDate) * 60 + Second(TempDate)
- .UpTime = .UpTime
- Call Manager.ChangeValue("INIT", "UpTime", .UpTime)
- #End If
- 'First time around?
- If Manager.GetValue("INIT", "LastIP1") = vbNullString Then
- Call Manager.ChangeValue("INIT", "LastIP1", .ip & " - " & Date & ":" & time)
- 'Is it a different ip from last time?
- ElseIf .ip <> Left$(Manager.GetValue("INIT", "LastIP1"), InStr(1, Manager.GetValue("INIT", "LastIP1"), " ") - 1) Then
- Dim i As Integer
- For i = 5 To 2 Step -1
- Call Manager.ChangeValue("INIT", "LastIP" & i, Manager.GetValue("INIT", "LastIP" & CStr(i - 1)))
- Next i
- Call Manager.ChangeValue("INIT", "LastIP1", .ip & " - " & Date & ":" & time)
- 'Same ip, just update the date
- Else
- Call Manager.ChangeValue("INIT", "LastIP1", .ip & " - " & Date & ":" & time)
- End If
- Call Manager.ChangeValue("INIT", "Position", .Pos.map & "-" & .Pos.X & "-" & .Pos.Y)
- Call Manager.ChangeValue("STATS", "GLD", CStr(.Stats.GLD))
- Call Manager.ChangeValue("STATS", "BANCO", CStr(.Stats.Banco))
- Call Manager.ChangeValue("STATS", "MaxHP", CStr(.Stats.MaxHp))
- Call Manager.ChangeValue("STATS", "MinHP", CStr(.Stats.MinHp))
- Call Manager.ChangeValue("STATS", "MaxSTA", CStr(.Stats.MaxSta))
- Call Manager.ChangeValue("STATS", "MinSTA", CStr(.Stats.MinSta))
- Call Manager.ChangeValue("STATS", "MaxMAN", CStr(.Stats.MaxMAN))
- Call Manager.ChangeValue("STATS", "MinMAN", CStr(.Stats.MinMAN))
- Call Manager.ChangeValue("STATS", "MaxHIT", CStr(.Stats.MaxHIT))
- Call Manager.ChangeValue("STATS", "MinHIT", CStr(.Stats.MinHIT))
- Call Manager.ChangeValue("STATS", "MaxAGU", CStr(.Stats.MaxAGU))
- Call Manager.ChangeValue("STATS", "MinAGU", CStr(.Stats.MinAGU))
- Call Manager.ChangeValue("STATS", "MaxHAM", CStr(.Stats.MaxHam))
- Call Manager.ChangeValue("STATS", "MinHAM", CStr(.Stats.MinHam))
- Call Manager.ChangeValue("STATS", "SkillPtsLibres", CStr(.Stats.SkillPts))
- Call Manager.ChangeValue("STATS", "EXP", CStr(.Stats.Exp))
- Call Manager.ChangeValue("STATS", "ELV", CStr(.Stats.ELV))
- Call Manager.ChangeValue("STATS", "ELU", CStr(.Stats.ELU))
- Call Manager.ChangeValue("MUERTES", "UserMuertes", CStr(.Stats.UsuariosMatados))
- 'Call WriteVar(UserFile, "MUERTES", "CrimMuertes", Cstr$(.Stats.CriminalesMatados))
- Call Manager.ChangeValue("MUERTES", "NpcsMuertes", CStr(.Stats.NPCsMuertos))
- '[KEVIN]----------------------------------------------------------------------------
- '*******************************************************************************************
- Call Manager.ChangeValue("BancoInventory", "CantidadItems", val(.BancoInvent.NroItems))
- Dim loopd As Integer
- For loopd = 1 To MAX_BANCOINVENTORY_SLOTS
- Call Manager.ChangeValue("BancoInventory", "Obj" & loopd, .BancoInvent.Object(loopd).OBJIndex & "-" & .BancoInvent.Object(loopd).Amount)
- Next loopd
- '*******************************************************************************************
- '[/KEVIN]-----------
- 'Save Inv
- Call Manager.ChangeValue("Inventory", "CantidadItems", val(.Invent.NroItems))
- For LoopC = 1 To MAX_INVENTORY_SLOTS
- Call Manager.ChangeValue("Inventory", "Obj" & LoopC, .Invent.Object(LoopC).OBJIndex & "-" & .Invent.Object(LoopC).Amount & "-" & .Invent.Object(LoopC).Equipped)
- Next LoopC
- Call Manager.ChangeValue("Inventory", "WeaponEqpSlot", CStr(.Invent.WeaponEqpSlot))
- Call Manager.ChangeValue("Inventory", "ArmourEqpSlot", CStr(.Invent.ArmourEqpSlot))
- Call Manager.ChangeValue("Inventory", "CascoEqpSlot", CStr(.Invent.CascoEqpSlot))
- Call Manager.ChangeValue("Inventory", "EscudoEqpSlot", CStr(.Invent.EscudoEqpSlot))
- Call Manager.ChangeValue("Inventory", "BarcoSlot", CStr(.Invent.BarcoSlot))
- Call Manager.ChangeValue("Inventory", "MunicionSlot", CStr(.Invent.MunicionEqpSlot))
- Call Manager.ChangeValue("Inventory", "MochilaSlot", CStr(.Invent.MochilaEqpSlot))
- Call Manager.ChangeValue("Inventory", "HerramientaSlot", CStr(.Invent.HerramientaEqpslot))
- '/Nacho
- Dim cad As String
- For LoopC = 1 To MAXUSERHECHIZOS
- cad = .Stats.UserHechizos(LoopC)
- Call Manager.ChangeValue("HECHIZOS", "H" & LoopC, cad)
- Next
- Dim NroMascotas As Long
- NroMascotas = .NroMascotas
- For LoopC = 1 To MAXMASCOTAS
- ' Mascota valida?
- If .MascotasIndex(LoopC) > 0 Then
- ' Nos aseguramos que la criatura no fue invocada
- If Npclist(.MascotasIndex(LoopC)).Contadores.TiempoExistencia = 0 Then
- cad = .MascotasType(LoopC)
- Else 'Si fue invocada no la guardamos
- cad = "0"
- NroMascotas = NroMascotas - 1
- End If
- Call Manager.ChangeValue("MASCOTAS", "MAS" & LoopC, cad)
- Else
- cad = .MascotasType(LoopC)
- Call Manager.ChangeValue("MASCOTAS", "MAS" & LoopC, cad)
- End If
- Next
- Call Manager.ChangeValue("MASCOTAS", "NroMascotas", CStr(NroMascotas))
- For LoopC = 1 To 3
- Call Manager.ChangeValue("RECOMPENSAS", "Recompensa" & LoopC, val(.Recompensas(LoopC)))
- Next LoopC
- Call Manager.ChangeValue("Guild", "GUILDID", .GuildID)
- Call Manager.ChangeValue("Guild", "RequestedTo", .flags.WaitingApprovement)
- 'Devuelve el head de muerto
- If .flags.Muerto = 1 Then
- .Char.Head = iCabezaMuerto
- End If
- End With
- Call Manager.DumpFile(UserFile)
- Set Manager = Nothing
- If Existe Then Call Kill(UserFile & ".bk")
- Exit Sub
- Errhandler:
- Call LogError("Error en SaveUser")
- Set Manager = Nothing
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement