charBytesToString() public static method

public static charBytesToString ( byte data ) : string
data byte
return string
Esempio n. 1
0
        public void processTeamInviteAnswer(ref byte[] packet)
        {
            // read the important things
            byte[] unknownUint16_1 = new byte[2];
            byte[] sizeString      = new byte[2];
            ArrayUtils.copyTo(packet, 3, unknownUint16_1, 0, 2);
            ArrayUtils.copyTo(packet, 7, sizeString, 0, 2);
            UInt16 sizeCharName = NumericalUtils.ByteArrayToUint16(sizeString, 1);

            byte[] characterNameBytes = new byte[sizeCharName];
            ArrayUtils.copyTo(packet, 9, characterNameBytes, 0, sizeCharName);

            string characterName = StringUtils.charBytesToString(characterNameBytes);

            // if it is 0 - then he has accepted the request - otherwise decline and ..we dont care
            if (NumericalUtils.ByteArrayToUint16(unknownUint16_1, 1) == 0)
            {
                lock (WorldSocket.missionTeams)
                {
                    foreach (MissionTeam team in WorldSocket.missionTeams)
                    {
                        if (team.characterMasterName.Equals(characterName))
                        {
                            team.addMember(StringUtils.charBytesToString_NZ(Store.currentClient.playerInstance.CharacterName.getValue()));
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public void processChat(ref byte[] packetData)
        {
            chatCommands = new ChatCommandsHelper();
            int offset = 0;

            //10 00 08 00 00 00 00 06 00 3f 53 61 76 65 00

            int length = (int)packetData[7];

            offset = 9; //Move to length +2
            if (length > 0)
            {
                byte[] textB = new byte[length - 1];
                ArrayUtils.copy(packetData, offset, textB, 0, length - 1);
                string text = StringUtils.charBytesToString(textB);

                if (text[0] == '?')
                {
                    //Maybe a parameter
                    chatCommands.parseCommand(text); // Parse for commands
                }
                else
                {
                    // Not a Param - lets distribute the Message throw our Area
                    ServerPackets pak = new ServerPackets();
                    pak.sendChatMessage(Store.currentClient, text, Store.currentClient.playerData.getCharID(), StringUtils.charBytesToString_NZ(Store.currentClient.playerInstance.CharacterName.getValue()), "AREA");
                    // ToDo: Send the ChatMessage to the Scope of Players
                }
            }
        }
Esempio n. 3
0
 public void processMarketTest(ref byte[] packet)
 {
     byte[] marketCat = new byte[4];
     ArrayUtils.copy(packet, 0, marketCat, 0, 4);
     Console.WriteLine("Open Market Place for Category : " + StringUtils.charBytesToString(marketCat));
     byte[] response         = { 0x0b, 0x81, 0x25, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
     byte[] notEmptyResponse = StringUtils.hexStringToBytes("812a090000000000001800f09a00000000040086d1120080841e00a086010030086e4a"); // Should be the viewData when the marketplace get opened
     Store.currentClient.messageQueue.addRpcMessage(notEmptyResponse);
 }
Esempio n. 4
0
        public void processSetBackgroundRequest(ref byte[] packetData)
        {
            UInt16 backgroundSize = NumericalUtils.ByteArrayToUint16(new byte[] { packetData[3], packetData[4] }, 1);

            byte[] backgroundBytes = new byte[backgroundSize - 1];
            ArrayUtils.copy(packetData, 5, backgroundBytes, 0, backgroundSize - 1);

            string backgroundText = StringUtils.charBytesToString(backgroundBytes);

            Store.dbManager.WorldDbHandler.setBackground(backgroundText);
        }
Esempio n. 5
0
        public string readSizedZeroTerminatedString()
        {
            string value        = "";
            UInt16 sizeOfString = readUInt16(1);

            byte[] stringBytes = new byte[sizeOfString - 1];

            ArrayUtils.copy(packetData, offset, stringBytes, 0, sizeOfString - 1); // -1 strips the zero byte
            value  = StringUtils.charBytesToString(stringBytes);
            offset = offset + sizeOfString;                                        // just one for the zero termination
            return(value);
        }
Esempio n. 6
0
        public string readSizedString()
        {
            string value        = "";
            UInt16 sizeOfString = readUInt16(1);

            byte[] stringBytes = new byte[sizeOfString];

            ArrayUtils.copy(packetData, offset, stringBytes, 0, sizeOfString);
            value  = StringUtils.charBytesToString(stringBytes);
            offset = offset + sizeOfString;
            return(value);
        }
Esempio n. 7
0
        // This is for team and crew invites
        public void processInviteAnswer(ref byte[] packet)
        {
            // read the important things
            byte[] maybeType  = new byte[2];
            byte[] sizeString = new byte[2];
            ArrayUtils.copyTo(packet, 3, maybeType, 0, 2);
            ArrayUtils.copyTo(packet, 7, sizeString, 0, 2);
            UInt16 sizeCharName = NumericalUtils.ByteArrayToUint16(sizeString, 1);

            byte[] characterNameBytes = new byte[sizeCharName];
            ArrayUtils.copyTo(packet, 9, characterNameBytes, 0, sizeCharName);

            string characterName = StringUtils.charBytesToString(characterNameBytes);

            // if it is 0 - then he has accepted the request - otherwise decline and ..we dont care

            switch (NumericalUtils.ByteArrayToUint16(maybeType, 1))
            {
            // Team Invites
            case 0:
                lock (WorldSocket.missionTeams)
                {
                    foreach (MissionTeam team in WorldSocket.missionTeams)
                    {
                        if (team.characterMasterName.Equals(characterName))
                        {
                            team.addMember(StringUtils.charBytesToString_NZ(Store.currentClient.playerInstance.CharacterName.getValue()));
                        }
                    }
                }
                break;

            // Crew Invites
            case 2:
                // ToDo: add to Crew and maybe to faction (if crew is part of faction)
                // ToDo: Generate Repsonse for all connected crew mates and the new member
                // ToDo: add to crew and figure out the responses that are necessary (like crew message , player update etc.)
                // ToDo: for this the "2_player_action" logs could be useful.

                break;
            }
        }
Esempio n. 8
0
        private byte[] parseCommand(byte[] command, int length)
        {
            byte[] temp = new byte[length];


            ArrayUtils.fastCopy(command, temp, length);           //saves time and so
            string response = "";

            string txtCommand  = StringUtils.charBytesToString(temp);
            bool   responseSet = false;

            //TODO: REMOVE CLIENT CONSOLE

            if (!responseSet)
            {
                return(StringUtils.stringToBytes("Unrecognized command: " + txtCommand));
            }

            return(StringUtils.stringToBytes(response));
        }
Esempio n. 9
0
        private void charNameRequest(byte[] packet, NetworkStream client)
        {
            // Get the handle text
            byte[] handleSize = new byte[2];
            handleSize[0] = packet[5];
            handleSize[1] = packet[6];

            int size = (int)NumericalUtils.ByteArrayToUint16(handleSize, 1);

            byte[] handleB = new byte[size - 1];
            ArrayUtils.copy(packet, 7, handleB, 0, size - 1);
            string handleBStr = StringUtils.bytesToString_NS(handleB);             // Handle as "414141"
            string handleStr  = StringUtils.charBytesToString(handleB);            // Handle as "AAA"

            // Process DB to answer the client - we directly create the character
            UInt32 dbResult = Store.dbManager.MarginDbHandler.getNewCharnameID(handleStr, userID);

            // Add the new charId so that we can work with it

            // Create the answer
            string nameRequestResponse = "";

            if (dbResult == 0)
            {
                nameRequestResponse += "0b0f00010000110000000000000000";
                nameRequestResponse += StringUtils.bytesToString_NS(handleSize);
                nameRequestResponse += handleBStr + "00";
            }
            else
            {
                newCharID            = dbResult;
                nameRequestResponse += "0b0f0000000000";
                nameRequestResponse += StringUtils.bytesToString_NS(NumericalUtils.uint32ToByteArray((UInt32)dbResult, 1));
                nameRequestResponse += "0000000000";
                nameRequestResponse += StringUtils.bytesToString_NS(handleSize);
                nameRequestResponse += handleBStr + "00";
            }

            Output.writeToLogForConsole(nameRequestResponse);
            sendMarginData(nameRequestResponse, client);
        }
Esempio n. 10
0
        private void createCharacterRSI(byte[] packet, NetworkStream client)
        {
            // Instance the Data Loader
            DataLoader ItemLoader = DataLoader.getInstance();

            isNewCreatedChar = true;

            string debugHexPacket = StringUtils.bytesToString_NS(packet);

            // lets read the values
            // the IDs for the Appeareance is always uint16 goID
            byte[] bodyTypeIDByte         = new byte[4];
            byte[] professionByte         = new byte[4];
            byte[] facialdetailBytes      = new byte[4];
            byte[] facialdetailColorBytes = new byte[4];
            byte[] hairBytes      = new byte[4];
            byte[] hairColorBytes = new byte[4];
            byte[] skintoneBytes  = new byte[4];
            byte[] tatooBytes     = new byte[4];
            byte[] headIDBytes    = new byte[4];

            // Clothing
            byte[] shirtIDBytes     = new byte[4];
            byte[] pantsIDBytes     = new byte[4];
            byte[] outerwearIDBytes = new byte[4];
            byte[] hatIDBytes       = new byte[4];
            byte[] eyewearIDBytes   = new byte[4];
            byte[] footwearIDBytes  = new byte[4];
            byte[] glovesIDBytes    = new byte[4];
            //byte[] legginsIDBytes           = new byte[4];

            // RSI
            ArrayUtils.copy(packet, 3, skintoneBytes, 0, 2);        // Done!
            ArrayUtils.copy(packet, 7, bodyTypeIDByte, 0, 2);       // Done!
            ArrayUtils.copy(packet, 15, hairBytes, 0, 2);           // Done!
            ArrayUtils.copy(packet, 19, hairColorBytes, 0, 2);      // Done!
            ArrayUtils.copy(packet, 23, tatooBytes, 0, 2);          // Done!
            ArrayUtils.copy(packet, 27, headIDBytes, 0, 2);
            ArrayUtils.copy(packet, 31, facialdetailBytes, 0, 2);
            ArrayUtils.copy(packet, 35, facialdetailColorBytes, 0, 2);
            ArrayUtils.copy(packet, 67, professionByte, 0, 2);

            UInt16 body       = 0;
            UInt16 gender     = 0;
            UInt32 bodyTypeId = NumericalUtils.ByteArrayToUint32(bodyTypeIDByte, 1);

            UInt16 hairId            = NumericalUtils.ByteArrayToUint16(hairBytes, 1);
            UInt16 haircolor         = NumericalUtils.ByteArrayToUint16(hairColorBytes, 1);
            UInt16 tattoo            = NumericalUtils.ByteArrayToUint16(tatooBytes, 1);
            UInt16 facialDetailColor = NumericalUtils.ByteArrayToUint16(facialdetailColorBytes, 1);
            UInt16 skintone          = NumericalUtils.ByteArrayToUint16(skintoneBytes, 1);
            UInt16 headID            = NumericalUtils.ByteArrayToUint16(headIDBytes, 1);

            // Get Values by "NewRSI" IDs
            NewRSIItem hairItem = ItemLoader.getNewRSIItemByTypeAndID("HAIR", hairId);
            NewRSIItem bodyItem = ItemLoader.getNewRSIItemByTypeAndID("BODY", (ushort)bodyTypeId);
            NewRSIItem headItem = ItemLoader.getNewRSIItemByTypeAndID("HEAD", headID);

            Store.dbManager.MarginDbHandler.updateRSIValue("body", bodyItem.internalId.ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("sex", bodyItem.gender.ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("face", headItem.internalId.ToString(), newCharID);              // ToDo:
            Store.dbManager.MarginDbHandler.updateRSIValue("hair", hairItem.internalId.ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("haircolor", haircolor.ToString(), newCharID);                   // ToDo: check if it is correct
            Store.dbManager.MarginDbHandler.updateRSIValue("tattoo", tattoo.ToString(), newCharID);                         // ToDo:
            Store.dbManager.MarginDbHandler.updateRSIValue("facialdetailcolor", facialDetailColor.ToString(), newCharID);   // ToDo:
            Store.dbManager.MarginDbHandler.updateRSIValue("skintone", skintone.ToString(), newCharID);
            // Clothing Items
            // ToDo: GLOVES ARE MISSING!
            ArrayUtils.copy(packet, 43, shirtIDBytes, 0, 2);
            ArrayUtils.copy(packet, 47, glovesIDBytes, 0, 2);
            ArrayUtils.copy(packet, 55, pantsIDBytes, 0, 2);
            ArrayUtils.copy(packet, 51, outerwearIDBytes, 0, 2);
            ArrayUtils.copy(packet, 34, hatIDBytes, 0, 2);
            ArrayUtils.copy(packet, 39, eyewearIDBytes, 0, 2);
            ArrayUtils.copy(packet, 63, footwearIDBytes, 0, 2);

            ClothingItem shirt     = ItemLoader.getItemValues(NumericalUtils.ByteArrayToUint16(shirtIDBytes, 1));
            ClothingItem pants     = ItemLoader.getItemValues(NumericalUtils.ByteArrayToUint16(pantsIDBytes, 1));
            ClothingItem outerwear = ItemLoader.getItemValues(NumericalUtils.ByteArrayToUint16(outerwearIDBytes, 1));
            ClothingItem hat       = ItemLoader.getItemValues(NumericalUtils.ByteArrayToUint16(hatIDBytes, 1));
            ClothingItem eyewear   = ItemLoader.getItemValues(NumericalUtils.ByteArrayToUint16(eyewearIDBytes, 1));
            ClothingItem footwear  = ItemLoader.getItemValues(NumericalUtils.ByteArrayToUint16(footwearIDBytes, 1));
            ClothingItem gloves    = ItemLoader.getItemValues(NumericalUtils.ByteArrayToUint16(glovesIDBytes, 1));


            Store.dbManager.MarginDbHandler.updateRSIValue("hat", hat.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("shirt", shirt.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("shirtcolor", shirt.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("coat", outerwear.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("coatcolor", outerwear.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("pants", pants.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("pantscolor", pants.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("shoes", pants.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("shoecolor", pants.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("glasses", pants.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("glassescolor", pants.getModelId().ToString(), newCharID);

            // ToDO: Figre out the ITem Slots for "currentlyWearing" Items and add the ITems correctly to the Inventory

            // FirstName
            UInt16 currentOffset = 79;

            byte[] firstNameLenBytes = new byte[2];
            ArrayUtils.copy(packet, currentOffset, firstNameLenBytes, 0, 2);
            UInt16 firstNameLen = NumericalUtils.ByteArrayToUint16(firstNameLenBytes, 1);

            currentOffset += 2;

            byte[] firstNameBytes = new byte[NumericalUtils.ByteArrayToUint16(firstNameLenBytes, 1) - 1];
            ArrayUtils.copy(packet, currentOffset, firstNameBytes, 0, firstNameLen - 1);
            string firstNameString = StringUtils.charBytesToString(firstNameBytes);

            currentOffset += firstNameLen;

            // LastName
            byte[] lastNameLenBytes = new byte[2];
            ArrayUtils.copy(packet, currentOffset, lastNameLenBytes, 0, 2);
            UInt16 lastNameLen = NumericalUtils.ByteArrayToUint16(lastNameLenBytes, 1);

            currentOffset += 2;

            byte[] lastNameBytes = new byte[NumericalUtils.ByteArrayToUint16(lastNameLenBytes, 1) - 1];
            ArrayUtils.copy(packet, currentOffset, lastNameBytes, 0, lastNameLen - 1);
            string lastNameString = StringUtils.charBytesToString(lastNameBytes);

            currentOffset += lastNameLen;

            // Description
            byte[] descriptionLenBytes = new byte[2];
            ArrayUtils.copy(packet, currentOffset, descriptionLenBytes, 0, 2);
            UInt16 descriptionLen = NumericalUtils.ByteArrayToUint16(descriptionLenBytes, 1);

            currentOffset += 2;

            byte[] descriptionBytes = new byte[NumericalUtils.ByteArrayToUint16(descriptionLenBytes, 1) - 1];
            ArrayUtils.copy(packet, currentOffset, descriptionBytes, 0, descriptionLen - 1);
            string descriptionString = StringUtils.charBytesToString(descriptionBytes);

            currentOffset += lastNameLen;

            // Update Characters values
            Store.dbManager.MarginDbHandler.updateCharacter(firstNameString, lastNameString, descriptionString, newCharID);

            // Add the Basic Abilitys...
            Store.dbManager.MarginDbHandler.addAbility(-2147481600, 0, newCharID, 1, 1);
            Store.dbManager.MarginDbHandler.addAbility(-2147367936, 1, newCharID, 1, 1);
            Store.dbManager.MarginDbHandler.addAbility(-2147294208, 2, newCharID, 0, 1);
            Store.dbManager.MarginDbHandler.addAbility(-2147281920, 3, newCharID, 0, 0);
            Store.dbManager.MarginDbHandler.addAbility(-2147280896, 4, newCharID, 0, 0);
            Store.dbManager.MarginDbHandler.addAbility(-2147437568, 5, newCharID, 1, 1);
            Store.dbManager.MarginDbHandler.addAbility(-2147425280, 6, newCharID, 0, 0);
            Store.dbManager.MarginDbHandler.addAbility(-2147404800, 7, newCharID, 0, 0);
            Store.dbManager.MarginDbHandler.addAbility(-2147445760, 8, newCharID, 0, 0);
            Store.dbManager.MarginDbHandler.addAbility(-2146493440, 9, newCharID, 0, 0);
            Store.dbManager.MarginDbHandler.addAbility(-2146453504, 10, newCharID, 1, 0);

            // we have all created - lets load the charData
            loadCharacter(packet, client, this.newCharID);
        }
Esempio n. 11
0
        private void createCharacterRSI(byte[] packet, NetworkStream client)
        {
            // Instance the Data Loader
            DataLoader itemLoader = DataLoader.getInstance();

            isNewCreatedChar = true;
            string debugHexPacket = StringUtils.bytesToString_NS(packet);

            // ToDo: Replace all with Packet Reader Instance
            PacketReader reader = new PacketReader(packet);

            reader.incrementOffsetByValue(3);


            UInt16 body   = 0;
            UInt16 gender = 0;


            UInt16 skintone = reader.readUInt16(1);

            reader.setOffsetOverrideValue(7);
            UInt16 bodyTypeId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(15);
            UInt16 hairId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(19);
            UInt16 haircolor = reader.readUInt16(1);

            reader.setOffsetOverrideValue(23);
            UInt16 tattoo = reader.readUInt16(1);

            reader.setOffsetOverrideValue(27);
            UInt16 headId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(31);
            UInt16 facialDetail = reader.readUInt16(1);

            reader.setOffsetOverrideValue(35);
            // ToDo: it has a bug - figure out correct position
            UInt16 facialDetailColor = reader.readUInt16(1);

            // ToDo: Remove this when facialDetailColor is parsed properly
            facialDetailColor = 0;
            reader.setOffsetOverrideValue(67);
            UInt16 profession = reader.readUInt16(1);


            // lets read the values
            // the IDs for the Appeareance is always uint16 goID
            // Extra Hint: there are no leggins in Char Creation Process
            reader.setOffsetOverrideValue(35);
            UInt16 hatId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(39);
            UInt16 eyewearId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(43);
            UInt16 shirtId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(47);
            UInt16 glovesId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(51);
            UInt16 outerwearId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(55);
            UInt16 pantsId = reader.readUInt16(1);

            reader.setOffsetOverrideValue(63);
            UInt16 footwearId = reader.readUInt16(1);


            // Get Values by "NewRSI" IDs
            NewRSIItem hairItem = itemLoader.getNewRSIItemByTypeAndID("HAIR", hairId);
            NewRSIItem bodyItem = itemLoader.getNewRSIItemByTypeAndID("BODY", (ushort)bodyTypeId);
            NewRSIItem headItem = itemLoader.getNewRSIItemByTypeAndID("HEAD", headId);

            Store.dbManager.MarginDbHandler.updateRSIValue("body", bodyItem.internalId.ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("sex", bodyItem.gender.ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("face", headItem.internalId.ToString(), newCharID);              // ToDo:
            Store.dbManager.MarginDbHandler.updateRSIValue("hair", hairItem.internalId.ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("haircolor", haircolor.ToString(), newCharID);                   // ToDo: check if it is correct
            Store.dbManager.MarginDbHandler.updateRSIValue("tattoo", tattoo.ToString(), newCharID);                         // ToDo:
            Store.dbManager.MarginDbHandler.updateRSIValue("facialdetail", facialDetail.ToString(), newCharID);             // ToDo:
            Store.dbManager.MarginDbHandler.updateRSIValue("facialdetailcolor", facialDetailColor.ToString(), newCharID);   // ToDo:
            Store.dbManager.MarginDbHandler.updateRSIValue("skintone", skintone.ToString(), newCharID);


            // Clothing Items
            ClothingItem shirt     = itemLoader.getItemValues(shirtId);
            ClothingItem pants     = itemLoader.getItemValues(pantsId);
            ClothingItem outerwear = itemLoader.getItemValues(outerwearId);
            ClothingItem hat       = itemLoader.getItemValues(hatId);
            ClothingItem eyewear   = itemLoader.getItemValues(eyewearId);
            ClothingItem footwear  = itemLoader.getItemValues(footwearId);
            ClothingItem gloves    = itemLoader.getItemValues(glovesId);

            Store.dbManager.MarginDbHandler.updateRSIValue("hat", hat.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("shirt", shirt.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("shirtcolor", shirt.getColorId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("coat", outerwear.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("coatcolor", outerwear.getColorId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("pants", pants.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("pantscolor", pants.getColorId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("shoes", footwear.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("shoecolor", footwear.getColorId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("glasses", eyewear.getModelId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("glassescolor", eyewear.getColorId().ToString(), newCharID);
            Store.dbManager.MarginDbHandler.updateRSIValue("gloves", gloves.getModelId().ToString(), newCharID);

            Store.dbManager.MarginDbHandler.AddItemToSlot(hatId, 0x61, newCharID);
            Store.dbManager.MarginDbHandler.AddItemToSlot(eyewearId, 0x62, newCharID);
            Store.dbManager.MarginDbHandler.AddItemToSlot(shirtId, 0x63, newCharID);
            Store.dbManager.MarginDbHandler.AddItemToSlot(glovesId, 0x64, newCharID);
            Store.dbManager.MarginDbHandler.AddItemToSlot(outerwearId, 0x65, newCharID);
            Store.dbManager.MarginDbHandler.AddItemToSlot(pantsId, 0x66, newCharID);
            Store.dbManager.MarginDbHandler.AddItemToSlot(footwearId, 0x68, newCharID);


            // FirstName
            UInt16 currentOffset = 79;

            byte[] firstNameLenBytes = new byte[2];
            ArrayUtils.copy(packet, currentOffset, firstNameLenBytes, 0, 2);
            UInt16 firstNameLen = NumericalUtils.ByteArrayToUint16(firstNameLenBytes, 1);

            currentOffset += 2;

            byte[] firstNameBytes = new byte[NumericalUtils.ByteArrayToUint16(firstNameLenBytes, 1) - 1];
            ArrayUtils.copy(packet, currentOffset, firstNameBytes, 0, firstNameLen - 1);
            string firstNameString = StringUtils.charBytesToString(firstNameBytes);

            currentOffset += firstNameLen;

            // LastName
            byte[] lastNameLenBytes = new byte[2];
            ArrayUtils.copy(packet, currentOffset, lastNameLenBytes, 0, 2);
            UInt16 lastNameLen = NumericalUtils.ByteArrayToUint16(lastNameLenBytes, 1);

            currentOffset += 2;

            byte[] lastNameBytes = new byte[NumericalUtils.ByteArrayToUint16(lastNameLenBytes, 1) - 1];
            ArrayUtils.copy(packet, currentOffset, lastNameBytes, 0, lastNameLen - 1);
            string lastNameString = StringUtils.charBytesToString(lastNameBytes);

            currentOffset += lastNameLen;

            // Description
            byte[] descriptionLenBytes = new byte[2];
            ArrayUtils.copy(packet, currentOffset, descriptionLenBytes, 0, 2);
            UInt16 descriptionLen = NumericalUtils.ByteArrayToUint16(descriptionLenBytes, 1);

            currentOffset += 2;

            byte[] descriptionBytes = new byte[NumericalUtils.ByteArrayToUint16(descriptionLenBytes, 1) - 1];
            ArrayUtils.copy(packet, currentOffset, descriptionBytes, 0, descriptionLen - 1);
            string descriptionString = StringUtils.charBytesToString(descriptionBytes);

            currentOffset += lastNameLen;

            // Update Characters values
            Store.dbManager.MarginDbHandler.updateCharacter(firstNameString, lastNameString, descriptionString, newCharID);

            // Add the Basic Abilitys...
            addStartAbilitys(newCharID);

            // we have all created - lets load the charData
            loadCharacter(packet, client, this.newCharID);
        }