Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function Char_Save(ByVal UserIndex As Integer, ByVal EsNuevoChar As Boolean) As Boolean
- '***************************************************
- '@ Autor: Lain
- '@ Fecha: 02/08/12
- '@ Desc: Guardamos un char en la base de datos.
- '***************************************************
- On Error GoTo ErrHandler
- ' @@ Declaramos
- Dim LoopC As Integer
- Dim RepuProm As Long
- Dim tmpQuery As String 'About
- Dim tmpStr As String
- With UserList(UserIndex)
- ' @@ Si es nuevo, creamos la row
- If EsNuevoChar Then
- ' @@ Asignamos Nombre y cuenta.
- CN.Execute ("INSERT INTO `" & DATABASE_TABLE_CHARS & "` (" & CHAR_NAME & "," & CHAR_ACCID & ") VALUES ('" & UCase$(.Name) & "'," & .flags.AccountID & ")"), , adCmdText ' MarianF
- ' @@ Obtenemos el ID de la row que acabamos de crear.
- .ID = Char_Get_Index(.Name)
- End If
- ' @@ Si llegó aca con un indice no valido, ¡Hay un problema! 'Comentario fix '[/About]
- If .ID = INVALID_INDEX Then GoTo ErrHandler
- ' Basicos
- tmpQuery = "UPDATE `" & DATABASE_TABLE_CHARS & "` SET"
- tmpQuery = tmpQuery & " " & CHAR_CLASS & "=" & .clase
- tmpQuery = tmpQuery & "," & CHAR_RACE & "=" & .raza
- tmpQuery = tmpQuery & "," & CHAR_GENRE & "=" & .Genero
- tmpQuery = tmpQuery & "," & CHAR_DESC & "='" & .Desc & "'"
- tmpQuery = tmpQuery & "," & CHAR_ACC_SLOT & "='" & .Slot & "'"
- ' Atributos
- ' @@ Guardamos los atributos que tiene sin confundirnos por si se drogó
- If Not .flags.TomoPocion Then '[/About]
- tmpQuery = tmpQuery & "," & CHAR_ATR_CELERITY & "=" & CStr(.STATS.UserAtributos(1))
- tmpQuery = tmpQuery & "," & CHAR_ATR_STRENGTH & "=" & CStr(.STATS.UserAtributos(2))
- tmpQuery = tmpQuery & "," & CHAR_ATR_INTELLIGENCE & "=" & CStr(.STATS.UserAtributos(3))
- tmpQuery = tmpQuery & "," & CHAR_ATR_CHARISMA & "=" & CStr(.STATS.UserAtributos(4))
- tmpQuery = tmpQuery & "," & CHAR_ATR_CONSTITUTION & "=" & CStr(.STATS.UserAtributos(5))
- Else
- tmpQuery = tmpQuery & "," & CHAR_ATR_CELERITY & "=" & CStr(.STATS.UserAtributosBackUP(1))
- tmpQuery = tmpQuery & "," & CHAR_ATR_STRENGTH & "=" & CStr(.STATS.UserAtributosBackUP(2))
- tmpQuery = tmpQuery & "," & CHAR_ATR_INTELLIGENCE & "=" & CStr(.STATS.UserAtributosBackUP(3))
- tmpQuery = tmpQuery & "," & CHAR_ATR_CHARISMA & "=" & CStr(.STATS.UserAtributosBackUP(4))
- tmpQuery = tmpQuery & "," & CHAR_ATR_CONSTITUTION & "=" & CStr(.STATS.UserAtributosBackUP(5))
- End If
- ' Stats
- tmpQuery = tmpQuery & "," & CHAR_MAXHIT & "=" & .STATS.MaxHIT
- tmpQuery = tmpQuery & "," & CHAR_MINHIT & "=" & .STATS.MinHIT
- tmpQuery = tmpQuery & "," & CHAR_MAXMANA & "=" & .STATS.MaxMAN
- tmpQuery = tmpQuery & "," & CHAR_MINMANA & "=" & .STATS.MinMAN
- tmpQuery = tmpQuery & "," & CHAR_MAXHP & "=" & .STATS.MaxHP
- tmpQuery = tmpQuery & "," & CHAR_MINHP & "=" & .STATS.MinHP
- tmpQuery = tmpQuery & "," & CHAR_MINSTA & "=" & .STATS.MinSta
- tmpQuery = tmpQuery & "," & CHAR_MAXSTA & "=" & .STATS.MaxSta
- tmpQuery = tmpQuery & "," & CHAR_MINSED & "=" & .STATS.MinAGU
- tmpQuery = tmpQuery & "," & CHAR_MINHAM & "=" & .STATS.MinHam
- tmpQuery = tmpQuery & "," & CHAR_SKILLSFREE & "=" & .STATS.SkillPts
- ' Flags
- tmpQuery = tmpQuery & "," & CHAR_BANNED & "=" & .flags.BAN
- tmpQuery = tmpQuery & "," & CHAR_NAKED & "=" & .flags.Desnudo
- tmpQuery = tmpQuery & "," & CHAR_NAVIGATING & "=" & .flags.Navegando
- tmpQuery = tmpQuery & "," & CHAR_PARALIZED & "=" & .flags.Paralizado
- tmpQuery = tmpQuery & "," & CHAR_POISON & "=" & .flags.Envenenado
- ' Currency
- tmpQuery = tmpQuery & "," & CHAR_GOLD & "=" & .STATS.GLD
- tmpQuery = tmpQuery & "," & CHAR_ELU & "=" & .STATS.ELU
- tmpQuery = tmpQuery & "," & CHAR_ELV & "=" & .STATS.ELV
- tmpQuery = tmpQuery & "," & CHAR_EXP & "=" & .STATS.EXP
- ' Apariencia
- tmpQuery = tmpQuery & "," & CHAR_HEAD & "=" & .OrigChar.Head
- ' @@ Si no está muerto entonces le guardo el body
- If .flags.Muerto = 0 Then
- tmpQuery = tmpQuery & "," & CHAR_BODY & "=" & .Char.Body
- End If
- tmpQuery = tmpQuery & "," & CHAR_WEAPON & "=" & .Char.WeaponAnim
- tmpQuery = tmpQuery & "," & CHAR_HELMET & "=" & .Char.CascoAnim
- tmpQuery = tmpQuery & "," & CHAR_SHIELD & "=" & .Char.ShieldAnim
- ' Posicion
- tmpQuery = tmpQuery & "," & CHAR_POSITION_MAP & "=" & CStr(.Pos.Map) & "," & CHAR_POSITION_X & "=" & CStr(.Pos.X) & "," & CHAR_POSITION_Y & "=" & CStr(.Pos.Y)
- ' Counters
- tmpQuery = tmpQuery & "," & CHAR_PUNISH_TIME & "=" & .Counters.PenaCarcel
- tmpQuery = tmpQuery & "," & CHAR_NPCKILLED & "=" & .Faccion.NPCsMuertos
- tmpQuery = tmpQuery & "," & CHAR_USERKILLED & "=" & .Faccion.UsuariosMatados
- ' Reputacion
- tmpQuery = tmpQuery & "," & CHAR_NOBLEREP & "=" & .Reputacion.NobleRep
- tmpQuery = tmpQuery & "," & CHAR_BURGUESREP & "=" & .Reputacion.BurguesRep
- tmpQuery = tmpQuery & "," & CHAR_PLEBEREP & "=" & .Reputacion.PlebeRep
- tmpQuery = tmpQuery & "," & CHAR_LADRONREP & "=" & .Reputacion.LadronesRep
- tmpQuery = tmpQuery & "," & CHAR_BANDIDOREP & "=" & .Reputacion.BandidoRep
- tmpQuery = tmpQuery & "," & CHAR_ASESINOREP & "=" & .Reputacion.AsesinoRep
- ' Calculo el Promedio
- RepuProm = (-.Reputacion.AsesinoRep) + (-.Reputacion.BandidoRep) + .Reputacion.BurguesRep + (-.Reputacion.LadronesRep) + .Reputacion.NobleRep + .Reputacion.PlebeRep
- RepuProm = RepuProm / 6
- ' Faccion
- If .Faccion.CaosArmy <> 0 Then
- tmpQuery = tmpQuery & "," & CHAR_FACTION & "=2"
- ElseIf .Faccion.RoyalArmy <> 0 Then
- tmpQuery = tmpQuery & "," & CHAR_FACTION & "=1"
- Else
- tmpQuery = tmpQuery & "," & CHAR_FACTION & "=0"
- End If
- 'tmpQuery = tmpQuery & "," & CHAR_Horda & "=" & .Faccion.CaosArmy
- tmpQuery = tmpQuery & "," & CHAR_RANGECAOS & "=" & .Faccion.RangeCaos
- tmpQuery = tmpQuery & "," & CHAR_RANGEROYAL & "=" & .Faccion.RangeRoyal
- tmpQuery = tmpQuery & "," & CHAR_CRIMINALS_KILLED & "=" & .Faccion.CiudadanosMatados
- tmpQuery = tmpQuery & "," & CHAR_CITIZENS_KILLED & "=" & .Faccion.CriminalesMatados
- If Not .guild Is Nothing Then 'Si tiene el objeto guild entonces guardamos el id del clan.
- tmpQuery = tmpQuery & "," & CHAR_GUILDINDEX & "=" & .guild.getGuildID
- End If
- tmpQuery = tmpQuery & "," & ACC_VAULT & "='"
- LoopC = 1
- Do While LoopC <= MAX_BANCO_SLOTS
- tmpQuery = tmpQuery & CStr(.BancoInvent.Object(LoopC).objIndex) & "-" & CStr(.BancoInvent.Object(LoopC).amount) & IIf(LoopC = MAX_BANCO_SLOTS, "'", "-")
- LoopC = LoopC + 1
- Loop
- tmpQuery = tmpQuery & CHAR_SPELLS & "='"
- LoopC = 1
- Do While LoopC <= MAX_SPELLS_SLOTS
- tmpStr = tmpStr & "-" & CStr(.STATS.UserHechizos(LoopC))
- LoopC = LoopC + 1
- Loop
- tmpQuery = tmpQuery & tmpStr
- tmpStr = tmpStr & "," & CHAR_RINGSLOT & "=" & .Invent.AnilloEqpSlot
- tmpStr = tmpStr & "," & CHAR_ARMORSLOT & "=" & .Invent.ArmourEqpSlot
- tmpStr = tmpStr & "," & CHAR_BARCASLOT & "=" & .Invent.BarcoSlot
- tmpStr = tmpStr & "," & CHAR_HELMETSLOT & "=" & .Invent.CascoEqpSlot
- tmpStr = tmpStr & "," & CHAR_SHIELDSLOT & "=" & .Invent.EscudoEqpSlot
- tmpStr = tmpStr & "," & CHAR_MUNITIONSLOT & "=" & .Invent.MunicionEqpSlot
- tmpStr = tmpStr & "," & CHAR_WEAPONSLOT & "=" & .Invent.WeaponEqpSlot
- tmpQuery = tmpQuery & tmpStr
- tmpStr = CHAR_INVOBJS & "='"
- LoopC = 1
- Do While LoopC <= MAX_INVENTARIO_SLOTS
- tmpStr = tmpStr & CStr(.Invent.Object(LoopC).objIndex) & "-" & CStr(.Invent.Object(LoopC).amount) & "-" & CStr(.Invent.Object(LoopC).Equipped) & IIf(LoopC = MAX_INVENTARIO_SLOTS, "'", "-")
- LoopC = LoopC + 1
- Loop
- tmpQuery = tmpQuery & tmpStr
- tmpStr = CHAR_SKILLS & "='"
- Do While LoopC <= MAX_SKILLS
- tmpStr = tmpStr & CStr(.STATS.UserSkills(LoopC)) & IIf(LoopC = MAX_SKILLS, "'", "-")
- LoopC = LoopC + 1
- Loop
- tmpQuery = tmpQuery & tmpStr
- tmpStr = CHAR_SKILLS_ASSIGNED & "='"
- LoopC = 1
- Do While LoopC <= MAX_SKILLS
- tmpStr = tmpStr & CStr(.STATS.UserAsignedSkills(LoopC)) & IIf(LoopC >= MAX_SKILLS, "'", "-")
- LoopC = LoopC + 1
- Loop
- tmpQuery = tmpQuery & tmpStr
- ' @@ Guardamos los stats
- 'If Not SQL.Char_Save_Stats(UserIndex) Then GoTo ErrHandler
- ' @@ Guardamos los datos de la guild
- 'If Not SQL.Char_Save_Guild(UserIndex) Then GoTo ErrHandler
- ' @@ Guardamos los datos del banco
- 'If Not SQL.Account_Save_Bank(UserIndex) Then GoTo ErrHandler
- ' @@ Guardamos los datos de los hechizos
- 'If Not SQL.Char_Save_Spells(UserIndex) Then GoTo ErrHandler
- ' @@ Guardamos los datos del inventario
- 'If Not SQL.Char_Save_Inventory(UserIndex) Then GoTo ErrHandler
- ' @@ Guardamos los skills del personaje
- 'If Not SQL.Char_Save_Skills(UserIndex) Then GoTo ErrHandler
- End With
- ' @@ Seteamos true
- Char_Save = True
- ' @@ Nos vamos.
- Exit Function
- ErrHandler:
- Char_Save = False
- Call LogDBError("Error en Char_Save. Personaje: " & UserList(UserIndex).Name & ". Error: " & err.Number & " " & err.Description & " Línea: " & Erl())
- Char_Save = False
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement