Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
binary accounts the easy way....
#1
Ok, yes I can do this on a new mirage source even mirage source 2 and it works fine but i have a problem the problem is how would I do it for something like this.


Code:
Sub LoadPlayer(ByVal index As Long, _
   ByVal Name As String)
Dim FileName As String
Dim i As Long
Dim N As Long

    Call ClearPlayer(index)
    FileName = App.Path & "\accounts\" & Trim$(Name) & ".ini"
    Player(index).Login = GetVar(FileName, "GENERAL", "Login")
    Player(index).Password = GetVar(FileName, "GENERAL", "Password")
    Player(index).Pet.Alive = NO
    For i = 1 To MAX_CHARS

        ' General
        Player(index).Char(i).Name = GetVar(FileName, "CHAR" & i, "Name")
        Player(index).Char(i).Sex = Val(GetVar(FileName, "CHAR" & i, "Sex"))
        Player(index).Char(i).Class = Val(GetVar(FileName, "CHAR" & i, "Class"))
        If Player(index).Char(i).Class = 0 Then Player(index).Char(i).Class = 1
        Player(index).Char(i).Sprite = Val(GetVar(FileName, "CHAR" & i, "Sprite"))
        Player(index).Char(i).Level = Val(GetVar(FileName, "CHAR" & i, "Level"))
        Player(index).Char(i).Exp = Val(GetVar(FileName, "CHAR" & i, "Exp"))
        Player(index).Char(i).Access = Val(GetVar(FileName, "CHAR" & i, "Access"))
        Player(index).Char(i).PK = Val(GetVar(FileName, "CHAR" & i, "PK"))
        Player(index).Char(i).Guild = GetVar(FileName, "CHAR" & i, "Guild")
        Player(index).Char(i).Guildaccess = Val(GetVar(FileName, "CHAR" & i, "Guildaccess"))

        ' Vitals
        Player(index).Char(i).HP = Val(GetVar(FileName, "CHAR" & i, "HP"))
        Player(index).Char(i).MP = Val(GetVar(FileName, "CHAR" & i, "MP"))
        Player(index).Char(i).SP = Val(GetVar(FileName, "CHAR" & i, "SP"))

        ' Stats
        Player(index).Char(i).STR = Val(GetVar(FileName, "CHAR" & i, "str"))
        Player(index).Char(i).DEF = Val(GetVar(FileName, "CHAR" & i, "DEF"))
        Player(index).Char(i).Speed = Val(GetVar(FileName, "CHAR" & i, "SPEED"))
        Player(index).Char(i).Magi = Val(GetVar(FileName, "CHAR" & i, "MAGI"))
        Player(index).Char(i).POINTS = Val(GetVar(FileName, "CHAR" & i, "POINTS"))

        ' Worn equipment
        Player(index).Char(i).ArmorSlot = Val(GetVar(FileName, "CHAR" & i, "ArmorSlot"))
        Player(index).Char(i).WeaponSlot = Val(GetVar(FileName, "CHAR" & i, "WeaponSlot"))
        Player(index).Char(i).HelmetSlot = Val(GetVar(FileName, "CHAR" & i, "HelmetSlot"))
        Player(index).Char(i).ShieldSlot = Val(GetVar(FileName, "CHAR" & i, "ShieldSlot"))

        ' Position
        Player(index).Char(i).Map = Val(GetVar(FileName, "CHAR" & i, "Map"))
        Player(index).Char(i).x = Val(GetVar(FileName, "CHAR" & i, "X"))
        Player(index).Char(i).y = Val(GetVar(FileName, "CHAR" & i, "Y"))
        Player(index).Char(i).Dir = Val(GetVar(FileName, "CHAR" & i, "Dir"))

        ' Check to make sure that they aren't on map 0, if so reset'm
        If Player(index).Char(i).Map = 0 Then
            Player(index).Char(i).Map = START_MAP
            Player(index).Char(i).x = START_X
            Player(index).Char(i).y = START_Y
        End If

        ' Inventory
        For N = 1 To MAX_INV
            Player(index).Char(i).Inv(N).num = Val(GetVar(FileName, "CHAR" & i, "InvItemNum" & N))
            Player(index).Char(i).Inv(N).Value = Val(GetVar(FileName, "CHAR" & i, "InvItemVal" & N))
            Player(index).Char(i).Inv(N).Dur = Val(GetVar(FileName, "CHAR" & i, "InvItemDur" & N))
        Next

        ' Spells
        For N = 1 To MAX_PLAYER_SPELLS
            Player(index).Char(i).Spell(N) = Val(GetVar(FileName, "CHAR" & i, "Spell" & N))
        Next

        If Val(GetVar(FileName, "CHAR" & i, "HasPet")) = 1 Then
            Player(index).Pet.Sprite = Val(GetVar(FileName, "CHAR" & i, "Pet"))
            Player(index).Pet.Alive = YES
            Player(index).Pet.Dir = DIR_UP
            Player(index).Pet.Map = Player(index).Char(i).Map
            Player(index).Pet.x = Player(index).Char(i).x + Int((Rnd * 3) - 1)

            If Player(index).Pet.x < 0 Or Player(index).Pet.x > MAX_MAPX Then Player(index).Pet.x = GetPlayerX(index)
            Player(index).Pet.y = Player(index).Char(i).y + Int((Rnd * 3) - 1)

            If Player(index).Pet.y < 0 Or Player(index).Pet.y > MAX_MAPY Then Player(index).Pet.y = GetPlayerY(index)
            Player(index).Pet.MapToGo = 0
            Player(index).Pet.XToGo = -1
            Player(index).Pet.YToGo = -1
            Player(index).Pet.Level = Val(GetVar(FileName, "CHAR" & i, "PetLevel"))
            Player(index).Pet.HP = Player(index).Pet.Level * 5 '???
        End If
        For N = 1 To MAX_FRIENDS
            Player(index).Char(i).Friends(N) = GetVar(FileName, "CHAR" & i, "Friend" & N)
        Next
        FileName = App.Path & "\banks\" & Trim(Name) & ".ini"
        ' Bank
        For N = 1 To MAX_BANK
            Player(index).Char(i).Bank(N).num = Val(GetVar(FileName, "CHAR" & i, "BankItemNum" & N))
            Player(index).Char(i).Bank(N).Value = Val(GetVar(FileName, "CHAR" & i, "BankItemVal" & N))
            Player(index).Char(i).Bank(N).Dur = Val(GetVar(FileName, "CHAR" & i, "BankItemDur" & N))
        Next N
    Next
End Sub

and

Code:
Sub SavePlayer(ByVal index As Long)
Dim FileName As String
Dim i As Long
Dim N As Long

    FileName = App.Path & "\accounts\" & Trim$(Player(index).Login) & ".ini"
    Call PutVar(FileName, "GENERAL", "Login", Trim$(Player(index).Login))
    Call PutVar(FileName, "GENERAL", "Password", Trim$(Player(index).Password))
    For i = 1 To MAX_CHARS

        ' General
        Call PutVar(FileName, "CHAR" & i, "Name", Trim$(Player(index).Char(i).Name))
        Call PutVar(FileName, "CHAR" & i, "Class", STR(Player(index).Char(i).Class))
        Call PutVar(FileName, "CHAR" & i, "Sex", STR(Player(index).Char(i).Sex))
        Call PutVar(FileName, "CHAR" & i, "Sprite", STR(Player(index).Char(i).Sprite))
        Call PutVar(FileName, "CHAR" & i, "Level", STR(Player(index).Char(i).Level))
        Call PutVar(FileName, "CHAR" & i, "Exp", STR(Player(index).Char(i).Exp))
        Call PutVar(FileName, "CHAR" & i, "Access", STR(Player(index).Char(i).Access))
        Call PutVar(FileName, "CHAR" & i, "PK", STR(Player(index).Char(i).PK))
        Call PutVar(FileName, "CHAR" & i, "Guild", Trim$(Player(index).Char(i).Guild))
        Call PutVar(FileName, "CHAR" & i, "Guildaccess", STR(Player(index).Char(i).Guildaccess))

        ' Vitals
        Call PutVar(FileName, "CHAR" & i, "HP", STR(Player(index).Char(i).HP))
        Call PutVar(FileName, "CHAR" & i, "MP", STR(Player(index).Char(i).MP))
        Call PutVar(FileName, "CHAR" & i, "SP", STR(Player(index).Char(i).SP))

        ' Stats
        Call PutVar(FileName, "CHAR" & i, "str", STR(Player(index).Char(i).STR))
        Call PutVar(FileName, "CHAR" & i, "DEF", STR(Player(index).Char(i).DEF))
        Call PutVar(FileName, "CHAR" & i, "SPEED", STR(Player(index).Char(i).Speed))
        Call PutVar(FileName, "CHAR" & i, "MAGI", STR(Player(index).Char(i).Magi))
        Call PutVar(FileName, "CHAR" & i, "POINTS", STR(Player(index).Char(i).POINTS))

        ' Worn equipment
        Call PutVar(FileName, "CHAR" & i, "ArmorSlot", STR(Player(index).Char(i).ArmorSlot))
        Call PutVar(FileName, "CHAR" & i, "WeaponSlot", STR(Player(index).Char(i).WeaponSlot))
        Call PutVar(FileName, "CHAR" & i, "HelmetSlot", STR(Player(index).Char(i).HelmetSlot))
        Call PutVar(FileName, "CHAR" & i, "ShieldSlot", STR(Player(index).Char(i).ShieldSlot))

        ' Check to make sure that they aren't on map 0, if so reset'm
        If Player(index).Char(i).Map = 0 Then
            Player(index).Char(i).Map = START_MAP
            Player(index).Char(i).x = START_X
            Player(index).Char(i).y = START_Y
        End If

        ' Position
        Call PutVar(FileName, "CHAR" & i, "Map", STR(Player(index).Char(i).Map))
        Call PutVar(FileName, "CHAR" & i, "X", STR(Player(index).Char(i).x))
        Call PutVar(FileName, "CHAR" & i, "Y", STR(Player(index).Char(i).y))
        Call PutVar(FileName, "CHAR" & i, "Dir", STR(Player(index).Char(i).Dir))

        ' Inventory
        For N = 1 To MAX_INV
            Call PutVar(FileName, "CHAR" & i, "InvItemNum" & N, STR(Player(index).Char(i).Inv(N).num))
            Call PutVar(FileName, "CHAR" & i, "InvItemVal" & N, STR(Player(index).Char(i).Inv(N).Value))
            Call PutVar(FileName, "CHAR" & i, "InvItemDur" & N, STR(Player(index).Char(i).Inv(N).Dur))
        Next

        ' Spells
        For N = 1 To MAX_PLAYER_SPELLS
            Call PutVar(FileName, "CHAR" & i, "Spell" & N, STR(Player(index).Char(i).Spell(N)))
        Next

        ' Pet
        If i = Player(index).CharNum Then
            If Player(index).Pet.Alive = YES Then
                Call PutVar(FileName, "CHAR" & i, "HasPet", 1)
                Call PutVar(FileName, "CHAR" & i, "Pet", STR(Player(index).Pet.Sprite))
                Call PutVar(FileName, "CHAR" & i, "PetLevel", STR(Player(index).Pet.Level))
            Else
                Call PutVar(FileName, "CHAR" & i, "HasPet", 0)
                Call DelVar(FileName, "CHAR" & i, "Pet") ' Saving space
                Call DelVar(FileName, "CHAR" & i, "PetLevel")
            End If
        Else
            Call PutVar(FileName, "CHAR" & i, "HasPet", 0)
            Call DelVar(FileName, "CHAR" & i, "Pet") ' Saving space
            Call DelVar(FileName, "CHAR" & i, "PetLevel")
        End If

        ' Friend list
        For N = 1 To MAX_FRIENDS
            Call PutVar(FileName, "CHAR" & i, "Friend" & N, Player(index).Char(i).Friends(N))
        Next
        
        FileName = App.Path & "\banks\" & Trim(Player(index).Login) & ".ini"
        ' Bank
        For N = 1 To MAX_BANK
            Call PutVar(FileName, "CHAR" & i, "BankItemNum" & N, STR(Player(index).Char(i).Bank(N).num))
            Call PutVar(FileName, "CHAR" & i, "BankItemVal" & N, STR(Player(index).Char(i).Bank(N).Value))
            Call PutVar(FileName, "CHAR" & i, "BankItemDur" & N, STR(Player(index).Char(i).Bank(N).Dur))
        Next N
        
    Next
End Sub


It confused me since I have banks and pets it makes me wounder if its possible while keeping the banks and pets in ini. unless if you change them to .bin I could still use them..... haven't the clue.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)