Text() public method

public Text ( ) : string
return string
Example #1
0
 public void Connect()
 {
     //Wrap our function inside a catcher
     try
     {
         //Open our packet reader
         PacketReader Reader = new PacketReader(PacketInformation.buffer);
         byte type = Reader.Byte();
         Reader.Skip(3);
         string ID = Reader.Text();
         string PW = Reader.Text();
         Reader.Close();
         //Set login result information
         int LoginResult = LoginUser(ID, ref PW, ref Player, true);
         //If the login is succesfull
         if (LoginResult == 0)
         {
             //Send succes packet
             client.Send(Packet.ConnectSuccess());
         }
         //If the login is wrong
         else
         {
             //Disconnect the user
             client.Disconnect(PacketInformation.Client);
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Client connect error {0}", ex);
         Systems.Debugger.Write(ex);
     }
 }
Example #2
0
 //Void character delete
 void CharacterDelete()
 {
     //Wrap our function in a catcher
     try
     {
         //Create new packet reader
         PacketReader Reader = new PacketReader(PacketInformation.buffer);
         //Skip one not used byte
         Reader.Skip(1);
         //Get character name information
         string CharacterName = Reader.Text();
         //Close packet reader
         Reader.Close();
         //Update and set time + deletion state into the database
         MsSQL.InsertData("UPDATE character SET deletedtime=dateadd(dd,7,getdate()),deleted='1' WHERE name='" + CharacterName + "'");
         //Send visual state of character on screen sit down
         client.Send(Packet.ScreenSuccess(3));
     }
     //Catch bad exception errors
     catch (Exception ex)
     {
         //Write information to the console
         Console.WriteLine("Character deletion error {0}", ex);
         //Write information to debug logger
         Systems.Debugger.Write(ex);
     }
 }
Example #3
0
 void CharacterRestore()
 {
     //Wrap our function in a catcher
     try
     {
         //Create new packet reader
         PacketReader Reader = new PacketReader(PacketInformation.buffer);
         //Skip one byte
         Reader.Skip(1);
         //Read charactername to be restored
         string CharacterName = Reader.Text();
         Reader.Close();
         //Update database information set deleted state to 0
         MsSQL.InsertData("UPDATE character SET deleted='0' WHERE name='" + CharacterName + "'");
         //Send state packet to client character standing up
         client.Send(Packet.ScreenSuccess(5));
     }
     //Catch bad exception errors
     catch (Exception ex)
     {
         //Write information to the console
         Console.WriteLine("Character restore error {0}", ex);
         //Write information to the debug log
         Systems.Debugger.Write(ex);
     }
 }
Example #4
0
 //This is for checking the new character name
 public void CharacterCheck(byte[] buff)
 {
     //Wrap our function into a catcher
     try
     {
         //Open our packet reader
         PacketReader Reader = new PacketReader(buff);
         //Ignore first byte
         Reader.Skip(1);
         //Read character name
         string Charactername = Reader.Text();
         //Close packet reader
         Reader.Close();
         //If Character name is in use
         if (CharacterCheck(Charactername))
             //Send in use packet
             client.Send(Packet.CharacterName(4));
         //If character name is ok
         else
             //Send succes packet
             client.Send(Packet.ScreenSuccess(4));
     }
     catch (Exception ex)
     {
         //Write any error to debog log
         Systems.Debugger.Write(ex);
     }
 }
Example #5
0
        void HandleRegisterIcon()
        {
            try
            {
                PacketReader reader = new PacketReader(PacketInformation.buffer);
                byte type = reader.Byte();
                int iconlenght = reader.Int32();
                string icon = reader.Text();
                reader.Close();

                string convertedicon = ConvertToHex(icon);
                //Save output to .dat file in hex formatting.
            }
            catch (Exception ex)
            {
                Console.WriteLine("Guild icon register error {0}", ex);
            }
        }
Example #6
0
        public void CharacterCheck(byte[] buff)
        {
            try
            {
                PacketReader Reader = new PacketReader(buff);
                Reader.Byte();

                string name = Reader.Text();
                Reader.Close();
                if (CharacterCheck(name))
                    client.Send(Packet.CharacterName(4));
                else client.Send(Packet.ScreenSuccess(4));
            }
            catch (Exception ex)
            {
                Console.WriteLine("CharacterCheck()");
                deBug.Write(ex);
                Console.WriteLine(ex);
            }
        }
Example #7
0
        /////////////////////////////////////////////////////////////////////////////////
        // Item Switch
        /////////////////////////////////////////////////////////////////////////////////
        void ItemMain()
        {
            #region Item Actions
            try
            {
                if (Character.State.Die || Character.Information.Scroll) return;
                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                byte iType = Reader.Byte();

                switch (iType)
                {
                    case 0:
                        if (Character.State.Busy) return;
                        ItemMove(Reader.Byte(), Reader.Byte(), Reader.Int16());
                        break;
                    case 1:
                        ItemMoveInStorage(Reader.Byte(), Reader.Byte(), Reader.Int16());
                        break;
                    case 2:
                        Player_MoveItemToStorage(Reader.Byte(), Reader.Byte(), Reader.Int32());
                        break;
                    case 3:
                        Player_MoveStorageItemToInv(Reader.Byte(), Reader.Byte(), Reader.Int32());
                        break;
                    case 4:
                        ItemMoveToExhangePage(Reader.Byte());
                        break;
                    case 5:
                        ItemMoveExchangeToInv(Reader.Byte());
                        break;
                    case 8:
                        Player_BuyItem(Reader.Byte(), Reader.Byte(), Reader.Int16(), Reader.Int32());
                        break;
                    case 9:
                        Player_SellItem(Reader.Byte(), Reader.Int16(), Reader.UInt16());
                        break;
                    case 7:
                        if (Character.State.Busy) return;
                        Player_DropItem(Reader.Byte());
                        break;
                    case 10:
                        if (Character.State.Busy) return;
                        Player_DropGold(Reader.UInt64());
                        break;
                    case 11:
                        Player_TakeGoldW(iType, Reader.Int64());
                        break;
                    case 12:
                        Player_GiveGoldW(iType, Reader.Int64());
                        break;
                    case 13:
                        ItemExchangeGold(Reader.Int64());
                        break;
                    case 16:
                        MovePetToPet(Reader.Int32(), Reader.Byte(), Reader.Byte(), Reader.Int16());
                        break;
                    case 24:
                        Player_BuyItemFromMall(Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Text());
                        break;
                    case 26:
                        MoveItemFromPet(Reader.Int32(), Reader.Byte(), Reader.Byte());
                        break;
                    case 27:
                        MoveItemToPet(Reader.Int32(), Reader.Byte(), Reader.Byte());
                        break;
                    case 29:
                        ItemMoveInStorage(Reader.Byte(), Reader.Byte(), Reader.Int16());//Move inside guild storage
                        break;
                    case 30:
                        Player_MoveItemToStorage(Reader.Byte(), Reader.Byte(), Reader.Int32());//Move to guild storage
                        break;
                    case 31:
                        Player_MoveStorageItemToInv(Reader.Byte(), Reader.Byte(), Reader.Int32());//Move from guild storage
                        break;
                    case 32:
                        Player_GiveGoldW(iType, Reader.Int64());//Guild storage
                        break;
                    case 33:
                        Player_TakeGoldW(iType, Reader.Int64());//Guild storage
                        break;
                    case 35:
                        ItemAvatarUnEquip(Reader.Byte(), Reader.Byte());
                        break;
                    case 36:
                        ItemAvatarEquip(Reader.Byte(), Reader.Byte());
                        break;
                    default:
                        Print.Format("Unknown Item Function:{0}:{1}", iType, Decode.StringToPack(PacketInformation.buffer));
                        break;
                }
                Reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Item Switch Error {0}", ex);
            }
            #endregion
        }
Example #8
0
 /////////////////////////////////////////////////////////////////////////////////
 // Friend groups
 /////////////////////////////////////////////////////////////////////////////////
 void FriendGroup(string type)
 {
     try
     {
         //We use string type for switch statement.
         switch (type)
         {
             //Add new group
             case "ADD":
                 //First check if the user has friends
                 int friendcount = MsSQL.GetRowsCount("SELECT * FROM FRIENDS WHERE owner='" + Character.Information.CharacterID + "'");
                 //If the user has no friends return
                 if (friendcount == 0) return;
                 //Create our packet reader
                 PacketReader reader = new PacketReader(PacketInformation.buffer);
                 //Start reading information
                 string groupname = reader.Text();
                 //Close the reader
                 reader.Close();
                 //Update database information
                 MsSQL.InsertData("INSERT INTO friends_groups (playerid,groupname) VALUES ('" + Character.Information.CharacterID + "','" + groupname + "')");
                 //Get group id from count
                 short groupid = GetGroupId(Character.Information.CharacterID);
                 //Send packet to client
                 client.Send(Packet.FriendGroupManage("ADD", groupname, groupid, 0));
                 break;
             //Remove group
             case "REMOVE":
                 //Create our packet reader
                 reader = new PacketReader(PacketInformation.buffer);
                 //Start reading information
                 groupid = reader.Int16();
                 //Close the reader
                 reader.Close();
                 //Get group name
                 string groupnameinfo = GetGroupName(Character.Information.CharacterID, groupid);
                 //Update database information
                 MsSQL.InsertData("DELETE FROM friends_groups WHERE groupname='" + groupnameinfo + "'");
                 //Send packet to client
                 client.Send(Packet.FriendGroupManage("REMOVE", groupnameinfo, groupid, 0));
                 break;
             //Move to group
             case "MOVE":
                 //Create our packet reader
                 reader = new PacketReader(PacketInformation.buffer);
                 //Start reading information
                 int targetid = reader.Int32();
                 groupid = reader.Int16();
                 //Close the reader
                 reader.Close();
                 //Get groupname
                 groupnameinfo = GetGroupName(Character.Information.CharacterID, groupid);
                 //Update database information
                 MsSQL.UpdateData("UPDATE friends SET group_name='" + groupnameinfo + "' WHERE owner='" + Character.Information.CharacterID + "' AND friend_name='" + targetid + "'");
                 //Send packet to client
                 client.Send(Packet.FriendGroupManage("MOVE", groupnameinfo, groupid, targetid));
                 break;
         }
     }
     catch (Exception ex)
     {
         Systems.Debugger.Write(ex);
     }
 }
Example #9
0
        void Chat()
        {
            /*
             *  We use for each now, to make sure there wont be any issues
             *  Incase the list we send the packet to can have none connected clients.
             *  To prevent bugging of chat we repeat and check each client before sending.
             */
            try
            {
                //Set our list of ranged players
                List<int> Rangedplayers = Character.Spawn;
                //Create new packet reader for reading packet data
                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                //Chat type byte (for our switch case).
                byte chatType = Reader.Byte();
                //Byte chat index
                byte chatIndex = Reader.Byte();
                //Link count byte
                byte linkCount = Reader.Byte();
                //Create switch to switch on type of chat (normal party etc).
                switch (chatType)
                {
                    //--------------------------------- [Normal chat] ---------------------------------//
                    case 1:
                        //Read written text from packet data
                        string Text = Reader.Text3();
                        //Close packet reader
                        Reader.Close();

                        // .additem 111 12
                        if (Character.Information.GM == 1 && Text[0] == '.')
                        {
                            gmCommands(Text);
                        }

                        //Repeat for each in range player
                        foreach (int member in Rangedplayers)
                        {
                            //Make sure the member is not null
                            if (member != 0)
                            {
                                //Make sure its not sending to our client
                                if (member != Character.Information.UniqueID)
                                {
                                    //Get member detail
                                    Systems memberinfo = GetPlayer(member);
                                    //Send packet to the in range player
                                    memberinfo.client.Send(Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, null));
                                }
                            }
                        }
                        //Send chatindex packet to ourselfs
                        client.Send(Packet.ChatIndexPacket(chatType, chatIndex));
                        break;
                    //--------------------------------- [Normal chat pink] ---------------------------------//
                    case 3:
                        //Check if our character has gm rights or not
                        if (Character.Information.GM == 1)
                        {
                            //Read packet information (text typed).
                            Text = Reader.Text3();
                            //Close packet reader
                            Reader.Close();
                            //Repeat for each player in our range list
                            foreach (int member in Rangedplayers)
                            {
                                //Check if the member is not null
                                if (member != 0)
                                {
                                    //Make sure its not sending to our own client
                                    if (member != Character.Information.UniqueID)
                                    {
                                        //Get member detail
                                        Systems memberinfo = GetPlayer(member);
                                        //Send packet to the member
                                        memberinfo.client.Send(Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, null));
                                    }
                                }
                            }
                            //Send chat index to our client
                            client.Send(Packet.ChatIndexPacket(chatType, chatIndex));
                            break;
                        }
                        //If character tried to use pink chat but isnt a gm
                        else
                        {
                            //We ban the player for hacking attempt.
                            Disconnect("ban");
                        }
                        break;
                    //--------------------------------- [Private chat] ---------------------------------//
                    case 2:
                        //Read from packet data who we are sending the message to
                        string Target = Reader.Text();
                        //Get information from the given player we send to
                        Systems Targetplayer = GetPlayerName(Target);
                        //Make sure the player sending to is not null
                        if (Targetplayer != null)
                        {
                            //Make sure the player is ingame (Not teleporting or such).
                            if (Targetplayer.Character.InGame)
                            {
                                //Read the message from the packet data
                                Text = Reader.Text3();
                                //Close the packet reader
                                Reader.Close();
                                //Send packet to our target
                                Targetplayer.client.Send(Packet.ChatPacket(chatType, 0, Text, this.Character.Information.Name));
                                //Send chatindex packet to ourselfs
                                client.Send(Packet.ChatIndexPacket(chatType, chatIndex));
                            }
                        }
                        break;
                    //--------------------------------- [Party chat] ---------------------------------//
                    case 4:
                        //Make sure the player is in a party
                        if (Character.Network.Party != null)
                        {
                            //Read the text the player has typed from packet data
                            Text = Reader.Text3();
                            //Close packet reader
                            Reader.Close();
                            //Repeat for each member in the party member list
                            foreach (int member in Character.Network.Party.Members)
                            {
                                //Make sure the member isnt null (0)
                                if (member != 0)
                                {
                                    //Get detailed info for the player
                                    Systems memberinfo = GetPlayer(member);
                                    //Send packet information to the member for chat
                                    memberinfo.client.Send(Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, this.Character.Information.Name));
                                }
                            }
                            //Finally send chatindex packet to ourselfs
                            client.Send(Packet.ChatIndexPacket(chatType, chatIndex));
                        }

                        break;
                    //--------------------------------- [Guild chat] ---------------------------------//
                    case 5:
                        //Read message beeing send from packet data
                        Text = Reader.Text3();
                        //Close packet reader
                        Reader.Close();
                        //Repeat for each member in the guild member list
                        foreach (int member in Character.Network.Guild.Members)
                        {
                            //Make sure the member is not null (0)
                            if (member != 0)
                            {
                                //Get guild member detailed information
                                Systems Guildmember = GetPlayerMainid(member);
                                //Again check if the guild member is not null
                                if (Guildmember != null)
                                {
                                    //Send chat packet to the member
                                    Guildmember.client.Send(Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, this.Character.Information.Name));
                                }
                            }
                        }
                        //Send chat index packet to our client
                        client.Send(Packet.ChatIndexPacket(chatType, chatIndex));

                        break;
                    //--------------------------------- [Global chat] ---------------------------------//
                    case 6:
                        //Get sender name from packet data
                        string Sender = Reader.Text();
                        //Get message from packet data
                        Text = Reader.Text3();
                        //Send to every client connected and logged in
                        SendAll(Packet.ChatPacket(chatType, Character.Information.UniqueID, " " + Text, Sender));
                        break;
                    //--------------------------------- [Notice chat] ---------------------------------//
                    case 7:
                        //Make sure the character sending is a gm
                        if (Character.Information.GM == 1)
                        {
                            //Get message from packet data
                            Text = Reader.Text3();
                            //Close packet reader
                            Reader.Close();
                            //Send to everyone ingame (using void sendnoticecon).
                            SendAll(sendnoticecon(chatType, Character.Information.UniqueID, Text, null));
                        }
                        //If the character is not a gm
                        else
                        {
                            //Disconnect and ban the player for hack attempt
                            Disconnect("ban");
                        }
                        break;
                    //--------------------------------- [Stall chat] ---------------------------------//
                    case 9:
                        //Read message from packet data
                        Text = Reader.Text3();
                        //Close packet reader
                        Reader.Close();
                        //Repeat for each member in the stall
                        foreach (int stallmember in Character.Network.Stall.Members)
                        {
                            //Make sure the stall member isnt null 0
                            if (stallmember != 0)
                            {
                                //Get stall member details
                                Systems member = GetPlayer(stallmember);
                                //Make sure the member isnt null
                                if (member != null)
                                {
                                    //Send chat packet to the member
                                    member.client.Send(Packet.ChatPacket(chatType, Character.Network.Stall.ownerID, Text, this.Character.Information.Name));
                                }
                            }
                        }
                        //Send chat index to ourselfs
                        client.Send(Packet.ChatIndexPacket(chatType, chatIndex));
                        break;
                    //--------------------------------- [Academy chat] ---------------------------------//
                    case 10:
                        //Todo academy system then chat.
                        break;
                    //--------------------------------- [Union chat] ---------------------------------//
                    case 11:
                        //Read message from packet data
                        Text = Reader.Text3();
                        //Close packet reader
                        Reader.Close();
                        //If the character has no union
                        if (!Character.Network.Guild.UnionActive)
                            //Return
                            return;
                        //Else for each member in the union
                        foreach (int member in Character.Network.Guild.UnionMembers)
                        {
                            //Make sure the union member is not null 0
                            if (member != 0)
                            {
                                //Get member detailed information
                                Systems tomember = GetPlayerMainid(member);
                                //Make sure the member is not null
                                if (tomember != null)
                                {
                                    //Make sure the member isnt ourself
                                    if(tomember.Character.Information.CharacterID != Character.Information.CharacterID)
                                    {
                                        //Send packet to the union member
                                        tomember.client.Send(Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, Character.Information.Name));
                                    }
                                }
                            }
                        }
                        //Repeat for each member in the guild
                        foreach (int member in Character.Network.Guild.Members)
                        {
                            //Make sure the member isnt null 0
                            if (member != 0)
                            {
                                //Get member detailed information
                                Systems tomember = GetPlayerMainid(member);
                                //Make sure the member isnt null
                                if (tomember != null)
                                {
                                    //Make sure the member isnt ourself
                                    if (tomember.Character.Information.CharacterID != Character.Information.CharacterID)
                                    {
                                        //Send packet to the member
                                        tomember.Character.Network.Guild.SingleSend = false;
                                    }
                                }
                            }
                        }
                        //Finally send chat index packet to ourself
                        client.Send(Packet.ChatIndexPacket(chatType, chatIndex));
                        break;
                }
            }
            //If an exception error happens
            catch (Exception errorinformation)
            {
                //Write the information to the console
                Console.WriteLine("Chat error {0}", errorinformation);
                //Write the information to the log system
                Systems.Debugger.Write(errorinformation);
            }
        }
Example #10
0
        public void IngameLogin()
        {
            //Wrap our function inside a catcher
            try
            {
                //Create new packet reader
                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                //Read character name from packet
                string CharacterName = Reader.Text();
                //Close reader
                Reader.Close();
                //Anti hack checking sql query
                Systems.MsSQL ms = new Systems.MsSQL("SELECT name FROM character WHERE account='" + Player.AccountName + "' AND name='" + CharacterName + "'");
                //Check if the player account and character belongs together (count row).
                int checkinfo = ms.Count();
                //If there's no result
                if (checkinfo == 0)
                {
                    //Optional ban user here for hacking.

                    //Disconnect the user if hack attempt
                    client.Disconnect(this.client.clientSocket);
                    return;
                }
                //If there's a result we continue loading
                else
                {

                    //Create new character definition details
                    Character = new character();
                    //Set character name
                    Character.Information.Name = CharacterName;
                    //Set player id
                    Character.Account.ID = Player.ID;
                    //Load player data
                    PlayerDataLoad();
                    //Load job data
                    LoadJobData();
                    //Check same character
                    checkSameChar(CharacterName, Character.Information.UniqueID);
                    //Check character stats
                    CheckCharStats(Character);
                    //Lock while we add new client
                    lock (Systems.clients)
                    {
                        //Add new client
                        Systems.clients.Add(this);
                    }
                    //Send login screen packet
                    client.Send(Packet.LoginScreen());
                    //Send player data load start packet
                    client.Send(Packet.StartPlayerLoad());
                    //Send player data load data
                    client.Send(Packet.Load(Character));
                    //Send end load for player data
                    client.Send(Packet.EndPlayerLoad());
                    //Update online status in database
                    MsSQL.UpdateData("UPDATE character SET online='1' WHERE id='" + Character.Information.CharacterID + "'");
                    //Set PVP State
                    MsSQL.UpdateData("UPDATE character SET Pvpstate='0' WHERE id='" + Character.Information.CharacterID + "'");
                    //Update server information (Players online).
                    UpdateServerInfo();
                    //Open our timers for spawn checks etc.
                    OpenTimer();
                    //Load blue data for character
                    LoadBlues(Character);
                    //Create new list for equiped items
                    List<Global.slotItem> EquipedItems = new List<Global.slotItem>();
                    //For each equiped item under slot 13
                    for (byte q = 0; q < 13; q++)
                    {
                        //Add items to the list
                        EquipedItems.Add(GetItem((uint)Character.Information.CharacterID, q, 0));
                    }
                    //Load blues for each item
                    foreach (Global.slotItem sitem in EquipedItems)
                    {
                        //Check if the dictionary contains our blue id on item
                        if (Data.ItemBlue.ContainsKey(sitem.dbID))
                        {
                            //If exists, load blue for the item
                            LoadBluesid(sitem.dbID);
                            //If blue amount is not 0
                            if (Data.ItemBlue[sitem.dbID].totalblue != 0)
                                //Add blue to stats and information
                                AddRemoveBlues(this, sitem, true);
                        }
                    }
                    //Default luck (Will be based on tickets increasment etc.
                    this.Character.Blues.Luck = 100;
                }
            }
            //Catch bad exception errors
            catch (Exception ex)
            {
                //Write to debug log
                Systems.Debugger.Write(ex);
            }
        }
Example #11
0
        //Void creation for characters
        void CharacterCreate()
        {
            //Start wrapper for catching errors
            try
            {
                //Check the amount of characters created (If 4 then we return).
                if (MsSQL.GetRowsCount("SELECT * FROM character WHERE account='" + Player.AccountName + "'") == 4)
                    return;
                //Open our packet reader
                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                //Need to be checked
                byte tocheck = Reader.Byte();
                //String character name
                string NewCharacterName = Reader.Text();
                //Integer for character model
                int NewCharacterModel = Reader.Int32();
                //Byte for character volume
                byte NewCharacterVolume = Reader.Byte();
                //Set new integer for item creation [4] total
                int[] Item = new int[4];
                //Item id one integer
                Item[0] = Reader.Int32();
                //Item id two integer
                Item[1] = Reader.Int32();
                //Item id three integer
                Item[2] = Reader.Int32();
                //Item id four integer
                Item[3] = Reader.Int32();
                //Close packet reader
                Reader.Close();
                //Set default character stats
                double MagicalDefense = 3;
                double PhysicalDefense = 6;
                double ParryRatio = 11;
                double HitRatio = 11;
                double MinimalPhysicalAttack = 6;
                double MaxPhysicalAttack = 9;
                double MinimalMagicalAttack = 6;
                double MaxMagicalAttack = 10;
                //Set mag defense
                MagicalDefense += Data.ItemBase[Item[0]].Defans.MinMagDef;
                MagicalDefense += Data.ItemBase[Item[1]].Defans.MinMagDef;
                MagicalDefense += Data.ItemBase[Item[2]].Defans.MinMagDef;
                //Set phy defence
                PhysicalDefense += Data.ItemBase[Item[0]].Defans.MinPhyDef;
                PhysicalDefense += Data.ItemBase[Item[1]].Defans.MinPhyDef;
                PhysicalDefense += Data.ItemBase[Item[2]].Defans.MinPhyDef;
                //Set parry information
                ParryRatio += Data.ItemBase[Item[0]].Defans.Parry;
                ParryRatio += Data.ItemBase[Item[1]].Defans.Parry;
                ParryRatio += Data.ItemBase[Item[2]].Defans.Parry;
                //Set hit ratio
                HitRatio += Data.ItemBase[Item[3]].Attack.MinAttackRating;
                //Set phy attack
                MinimalPhysicalAttack += Data.ItemBase[Item[3]].Attack.Min_LPhyAttack;
                MaxPhysicalAttack += Data.ItemBase[Item[3]].Attack.Min_HPhyAttack;
                //Set mag attack
                MinimalMagicalAttack += Data.ItemBase[Item[3]].Attack.Min_LMagAttack;
                MaxMagicalAttack += Data.ItemBase[Item[3]].Attack.Min_HMagAttack;
                //Set bool for european or chinese characters
                if (NewCharacterModel >= 14715 && NewCharacterModel <= 14745)
                    European = true;
                //Replace any bad character from the name like [ , ] etc.
                NewCharacterName = Removebadchars(NewCharacterName);
                //Check the character name before creation
                if (CharacterCheck(NewCharacterName))
                {
                    //If bad send informational packet
                    client.Send(Packet.CharacterName(4));
                    //Finally return.
                    return;
                }
                //Random x y z output
                int random = rnd.Next(1, 3);
                //If player is creating a european character
                if (European)
                {
                    //Set random start location for european
                    if (random == 1)
                    { randomx = 1030; randomz = 80; randomy = 512; }
                    if (random == 2)
                    { randomx = 889; randomz = 83; randomy = 1104; }
                    if (random == 3)
                    { randomx = 453; randomz = 80; randomy = 1249; }
                    //Insert the basic information into the database
                    MsSQL.InsertData("INSERT INTO character (account, name, chartype, volume, xsect, ysect, xpos, zpos, ypos, GuideData) VALUES ('" + Player.AccountName + "','" + NewCharacterName + "', '" + NewCharacterModel + "', '" + NewCharacterVolume + "','79','105','" + randomx + "','" + randomz + "','" + randomy + "','0000000000000000')");
                    //Insert reverse scroll data into the database
                    MsSQL.InsertData("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + NewCharacterName + "','79','105','"+randomx+"','"+randomy+"','"+randomz+"')");
                    //Set definition for the character id information
                    Player.CreatingCharID = MsSQL.GetDataInt("Select * from character Where name='" + NewCharacterName + "'", "id");
                    //If the 3rd item is a sword or a dark staff
                    if (Item[3] == 10730 || Item[3] == 10734)
                    {
                        //Add the mag def information
                        MagicalDefense += Data.ItemBase[251].Defans.MinMagDef;
                        //Add the phy def information
                        PhysicalDefense += Data.ItemBase[251].Defans.MinPhyDef;
                        //Add parry ration
                        ParryRatio += Data.ItemBase[251].Defans.Parry;
                        //Add shield item
                        AddItem(10738, 0, 7, Player.CreatingCharID, 0);
                    }
                    //If the 3rd item is a crossbow
                    if (Item[3] == 10733)
                    {
                        //We add our base bolts 250
                        AddItem(10376, 250, 7, Player.CreatingCharID, 0);
                    }

                    //Add base mastery's for europe characters
                    AddMastery(513, Player.CreatingCharID); //Warrior
                    AddMastery(515, Player.CreatingCharID); //Rogue
                    AddMastery(514, Player.CreatingCharID); //Wizard
                    AddMastery(516, Player.CreatingCharID); //Warlock
                    AddMastery(517, Player.CreatingCharID); //Bard
                    AddMastery(518, Player.CreatingCharID); //Cleric
                }
                //If the character model is an chinese character
                else
                {
                    //Set random start location for chinese
                    if (random == 1)
                    { randomx = 1030; randomz = 80; randomy = 512; randomysec = 97; }
                    if (random == 2)
                    { randomx = 959; randomz = 20; randomy = 421; randomysec = 98; }
                    if (random == 3)
                    { randomx = 964; randomz = 0; randomy = 235; randomysec = 97; }
                    //Add character default information into the database
                    MsSQL.InsertData("INSERT INTO character (account, name, chartype, volume, xsect, ysect, xpos, zpos, ypos, GuideData) VALUES ('" + Player.AccountName + "','" + NewCharacterName + "', '" + NewCharacterModel + "', '" + NewCharacterVolume + "','168','" + randomysec + "','"+ randomx +"','"+ randomz +"','"+ randomy +"','0000000000000000')");
                    //Add character reverse scroll information into the database
                    MsSQL.InsertData("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + NewCharacterName + "','168','"+randomysec+"','"+randomx+"','"+randomy+"','"+randomz+"')");
                    //Get new character id
                    Player.CreatingCharID = MsSQL.GetDataInt("Select * from character Where name='" + NewCharacterName + "'", "id");
                    //If the item chosen is a blade or sword
                    if (Item[3] == 3632 || Item[3] == 3633)
                    {
                        //Set magical defense for shield
                        MagicalDefense += Data.ItemBase[251].Defans.MinMagDef;
                        //Set physical defense for shield
                        PhysicalDefense += Data.ItemBase[251].Defans.MinPhyDef;
                        //Set parry ratio for shield
                        ParryRatio += Data.ItemBase[251].Defans.Parry;
                        //Add the shield to the character
                        AddItem(251, 0, 7, Player.CreatingCharID, 0);
                    }
                    //If the item is a bow
                    if (Item[3] == 3636)
                    {
                        //Add 250 arrows to the new character
                        AddItem(62, 250, 7, Player.CreatingCharID, 0);
                    }
                    AddMastery(257, Player.CreatingCharID); //blade
                    AddMastery(258, Player.CreatingCharID); //heuksal
                    AddMastery(259, Player.CreatingCharID); //bow
                    AddMastery(273, Player.CreatingCharID); //cold
                    AddMastery(274, Player.CreatingCharID); //light
                    AddMastery(275, Player.CreatingCharID); //fire
                    AddMastery(276, Player.CreatingCharID); //force
                }
                //Add job mastery same for both races
                AddMastery(1000, Player.CreatingCharID);
                //Add the base items
                AddItem(Item[0], 0, 1, Player.CreatingCharID, 0);
                AddItem(Item[1], 0, 4, Player.CreatingCharID, 0);
                AddItem(Item[2], 0, 5, Player.CreatingCharID, 0);
                AddItem(Item[3], 0, 6, Player.CreatingCharID, 0);
                //Open settings information for start items
                ini = new Framework.Ini(Environment.CurrentDirectory + @"\Settings\Settings.ini");
                try
                {
                    //European start items custom
                    string Item1 = ini.GetValue("European.Start", "Item1", "").ToString();
                    string Item2 = ini.GetValue("European.Start", "Item2", "").ToString();
                    string Item3 = ini.GetValue("European.Start", "Item3", "").ToString();
                    string Item4 = ini.GetValue("European.Start", "Item4", "").ToString();
                    string Item5 = ini.GetValue("European.Start", "Item5", "").ToString();
                    //Chinese start items cusom
                    string Item6 = ini.GetValue("Chinese.Start", "Item1", "").ToString();
                    string Item7 = ini.GetValue("Chinese.Start", "Item2", "").ToString();
                    string Item8 = ini.GetValue("Chinese.Start", "Item3", "").ToString();
                    string Item9 = ini.GetValue("Chinese.Start", "Item4", "").ToString();
                    string Item10 = ini.GetValue("Chinese.Start", "Item5", "").ToString();
                    //The amount related information for european items custom
                    string Amount1 = ini.GetValue("European.Start", "Amount1", "").ToString();
                    string Amount2 = ini.GetValue("European.Start", "Amount2", "").ToString();
                    string Amount3 = ini.GetValue("European.Start", "Amount3", "").ToString();
                    string Amount4 = ini.GetValue("European.Start", "Amount4", "").ToString();
                    string Amount5 = ini.GetValue("European.Start", "Amount5", "").ToString();
                    //The amount related information for chinese items custom
                    string Amount6 = ini.GetValue("Chinese.Start", "Amount1", "").ToString();
                    string Amount7 = ini.GetValue("Chinese.Start", "Amount2", "").ToString();
                    string Amount8 = ini.GetValue("Chinese.Start", "Amount3", "").ToString();
                    string Amount9 = ini.GetValue("Chinese.Start", "Amount4", "").ToString();
                    string Amount10 = ini.GetValue("Chinese.Start", "Amount5", "").ToString();
                    //Add the custom items (European)
                    AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, Player.CreatingCharID, 0);
                    //Add the custom items (Chinese)
                    AddItem(Convert.ToInt32(Item6), Convert.ToByte(Amount1), 13, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item7), Convert.ToByte(Amount2), 14, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item8), Convert.ToByte(Amount3), 15, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item9), Convert.ToByte(Amount4), 16, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item10), Convert.ToByte(Amount5), 17, Player.CreatingCharID, 0);
                }
                catch (Exception) { }

                //Update database information for stats
                MsSQL.UpdateData("update character set min_phyatk='" + (int)Math.Round(MinimalPhysicalAttack) +
                        "', max_phyatk='" + Math.Round(MaxPhysicalAttack) +
                        "', min_magatk='" + Math.Round(MinimalMagicalAttack) +
                        "', max_magatk='" + Math.Round(MaxMagicalAttack) +
                        "', phydef='" + Math.Round(PhysicalDefense) +
                        "', magdef='" + Math.Round(PhysicalDefense) +
                        "', parry='" + Math.Round(ParryRatio) +
                        "', hit='" + Math.Round(HitRatio) +
                        "' where name='" + NewCharacterName + "'");
                //Send information to the console
                Console.WriteLine("Character: " + NewCharacterName + " has been created");
                //Send packet success to the client
                client.Send(Packet.ScreenSuccess(1));
            }
            //If a error happens just catch it.
            catch (Exception ex) { Console.WriteLine(ex); }
        }
Example #12
0
        void CharacterCreate()
        {
            try
            {
                //Define amount of characters allowed!
                if (MsSQL.GetRowsCount("SELECT * FROM character WHERE account='" + Player.AccountName + "'") == 4)
                    return;

                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                Reader.Byte();
                string name = Reader.Text();
                int model = Reader.Int32();
                byte volume = Reader.Byte();
                int[] Item = new int[4];
                Item[0] = Reader.Int32();
                Item[1] = Reader.Int32();
                Item[2] = Reader.Int32();
                Item[3] = Reader.Int32();
                Reader.Close();

                #region Check Name
                if (CharacterCheck(name))
                {
                    client.Send(Packet.CharacterName(4));
                    return;
                }
                if (name.Contains("[")) return;
                if (name.Contains("GM")) return;
                if (name.Contains("]")) return;
                if (name.Contains("_")) return;
                if (name.Contains("-")) return;
                #endregion
                //#################################################################### European models begin

                if (model >= 14715 && model <= 14745)
                {
                    MsSQL.InsertData("INSERT INTO character (account, name, chartype, volume, xsect, ysect, xpos, zpos, ypos, savearea,GuideData) VALUES ('" + Player.AccountName + "','" + name + "', '" + model + "', '" + volume + "','79','105','1000','1000','83','20','0000000000000000')");
                    MsSQL.InsertData("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + name + "','79','105','1000','22','83')");
                    Player.CreatingCharID = MsSQL.GetDataInt("Select * from character Where name='" + name + "'", "id");

                    double MagDef = 3;
                    double PhyDef = 6;
                    double Parry = 11;
                    double Hit = 11;
                    double MinPhyA = 6;
                    double MaxPhyA = 9;
                    double MinMagA = 6;
                    double MaxMagA = 10;

                    Framework.Ini ini;
                    ini = new Framework.Ini(Environment.CurrentDirectory + @"\Settings\Settings_Custom.ini");
                    string Item1 = ini.GetValue("START ITEMS EUROPE", "Item001").ToString();
                    string Item2 = ini.GetValue("START ITEMS EUROPE", "Item002").ToString();
                    string Item3 = ini.GetValue("START ITEMS EUROPE", "Item003").ToString();
                    string Item4 = ini.GetValue("START ITEMS EUROPE", "Item004").ToString();
                    string Item5 = ini.GetValue("START ITEMS EUROPE", "Item005").ToString();

                    string Amount1 = ini.GetValue("START ITEMS EUROPE", "Amount001").ToString();
                    string Amount2 = ini.GetValue("START ITEMS EUROPE", "Amount002").ToString();
                    string Amount3 = ini.GetValue("START ITEMS EUROPE", "Amount003").ToString();
                    string Amount4 = ini.GetValue("START ITEMS EUROPE", "Amount004").ToString();
                    string Amount5 = ini.GetValue("START ITEMS EUROPE", "Amount005").ToString();
                    try
                    {
                    AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, 1, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, 1, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, 1, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, 1, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, 1, Player.CreatingCharID, 0);
                    }
                    catch (Exception)
                    {

                    }

                    AddItem(Item[0], 0, 1, 0, Player.CreatingCharID, 0);
                    AddItem(Item[1], 0, 4, 0, Player.CreatingCharID, 0);
                    AddItem(Item[2], 0, 5, 0, Player.CreatingCharID, 0);
                    AddItem(Item[3], 0, 6, 0, Player.CreatingCharID, 0);

                    MagDef += Data.ItemBase[Item[0]].Defans.MinMagDef;
                    MagDef += Data.ItemBase[Item[1]].Defans.MinMagDef;
                    MagDef += Data.ItemBase[Item[2]].Defans.MinMagDef;
                    PhyDef += Data.ItemBase[Item[0]].Defans.MinPhyDef;
                    PhyDef += Data.ItemBase[Item[1]].Defans.MinPhyDef;
                    PhyDef += Data.ItemBase[Item[2]].Defans.MinPhyDef;
                    Parry += Data.ItemBase[Item[0]].Defans.Parry;
                    Parry += Data.ItemBase[Item[1]].Defans.Parry;
                    Parry += Data.ItemBase[Item[2]].Defans.Parry;
                    Hit += Data.ItemBase[Item[3]].Attack.MinAttackRating;
                    MinPhyA += Data.ItemBase[Item[3]].Attack.Min_LPhyAttack;
                    MaxPhyA += Data.ItemBase[Item[3]].Attack.Min_HPhyAttack;
                    MinMagA += Data.ItemBase[Item[3]].Attack.Min_LMagAttack;
                    MaxMagA += Data.ItemBase[Item[3]].Attack.Min_HMagAttack;

                    if (Item[3] == 10730 || Item[3] == 10734)
                    {
                        MagDef += Data.ItemBase[251].Defans.MinMagDef;
                        PhyDef += Data.ItemBase[251].Defans.MinPhyDef;
                        Parry += Data.ItemBase[251].Defans.Parry;
                        AddItem(10738, 0, 7, 0, Player.CreatingCharID, 0);
                    }
                    if (Item[3] == 10733)
                    {
                        AddItem(10376, 250, 7, 1, Player.CreatingCharID, 0);
                    }
                    MsSQL.UpdateData("update character set min_phyatk='" + (int)Math.Round(MinPhyA) +
                            "', max_phyatk='" + Math.Round(MaxPhyA) +
                            "', min_magatk='" + Math.Round(MinMagA) +
                            "', max_magatk='" + Math.Round(MaxMagA) +
                            "', phydef='" + Math.Round(PhyDef) +
                            "', magdef='" + Math.Round(PhyDef) +
                            "', parry='" + Math.Round(Parry) +
                            "', hit='" + Math.Round(Hit) +
                            "' where name='" + name + "'");

                    AddMastery(513, Player.CreatingCharID); //Warrior
                    AddMastery(515, Player.CreatingCharID); //Rogue
                    AddMastery(514, Player.CreatingCharID); //Wizard
                    AddMastery(516, Player.CreatingCharID); //Warlock
                    AddMastery(517, Player.CreatingCharID); //Bard
                    AddMastery(518, Player.CreatingCharID); //Cleric
                    Console.WriteLine("@Gameserver:             Character: " + name + " Has been created");
                    client.Send(Packet.ScreenSuccess(1));
                }
                else
                {

                    #region Check Name
                    if (CharacterCheck(name))
                    {
                        client.Send(Packet.CharacterName(4));
                        return;
                    }
                    #endregion
                    //#################################################################### Chinese models begin
                    MsSQL.InsertData("INSERT INTO character (account, name, chartype, volume,GuideData) VALUES ('" + Player.AccountName + "','" + name + "', '" + model + "', '" + volume + "','0000000000000000')");
                    MsSQL.InsertData("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + name + "','168','79','911','1083','-32')");
                    Player.CreatingCharID = MsSQL.GetDataInt("Select * from character Where name='" + name + "'", "id");

                    #region Item
                    double MagDef   = 3;
                    double PhyDef   = 6;
                    double Parry    = 11;
                    double Hit      = 11;
                    double MinPhyA  = 6;
                    double MaxPhyA  = 9;
                    double MinMagA  = 6;
                    double MaxMagA  = 10;

                    Framework.Ini ini;
                    ini = new Framework.Ini(Environment.CurrentDirectory + @"\Settings\Settings_Custom.ini");

                    string Item1 = ini.GetValue("START ITEMS CHINESE", "Item001").ToString();
                    string Item2 = ini.GetValue("START ITEMS CHINESE", "Item002").ToString();
                    string Item3 = ini.GetValue("START ITEMS CHINESE", "Item003").ToString();
                    string Item4 = ini.GetValue("START ITEMS CHINESE", "Item004").ToString();
                    string Item5 = ini.GetValue("START ITEMS CHINESE", "Item005").ToString();

                    string Amount1 = ini.GetValue("START ITEMS CHINESE", "Amount001").ToString();
                    string Amount2 = ini.GetValue("START ITEMS CHINESE", "Amount002").ToString();
                    string Amount3 = ini.GetValue("START ITEMS CHINESE", "Amount003").ToString();
                    string Amount4 = ini.GetValue("START ITEMS CHINESE", "Amount004").ToString();
                    string Amount5 = ini.GetValue("START ITEMS CHINESE", "Amount005").ToString();

                    try
                    {
                        AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, 1, Player.CreatingCharID, 0);
                        AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, 1, Player.CreatingCharID, 0);
                        AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, 1, Player.CreatingCharID, 0);
                        AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, 1, Player.CreatingCharID, 0);
                        AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, 1, Player.CreatingCharID, 0);
                    }
                    catch (Exception)
                    {

                    }

                    AddItem(Item[0], 0, 1, 0, Player.CreatingCharID, 0);
                    AddItem(Item[1], 0, 4, 0, Player.CreatingCharID, 0);
                    AddItem(Item[2], 0, 5, 0, Player.CreatingCharID, 0);
                    AddItem(Item[3], 0, 6, 0, Player.CreatingCharID, 0);

                    MagDef +=   Data.ItemBase[Item[0]].Defans.MinMagDef;
                    MagDef +=   Data.ItemBase[Item[1]].Defans.MinMagDef;
                    MagDef +=   Data.ItemBase[Item[2]].Defans.MinMagDef;
                    PhyDef +=   Data.ItemBase[Item[0]].Defans.MinPhyDef;
                    PhyDef +=   Data.ItemBase[Item[1]].Defans.MinPhyDef;
                    PhyDef +=   Data.ItemBase[Item[2]].Defans.MinPhyDef;
                    Parry +=    Data.ItemBase[Item[0]].Defans.Parry;
                    Parry +=    Data.ItemBase[Item[1]].Defans.Parry;
                    Parry +=    Data.ItemBase[Item[2]].Defans.Parry;
                    Hit +=      Data.ItemBase[Item[3]].Attack.MinAttackRating;
                    MinPhyA +=  Data.ItemBase[Item[3]].Attack.Min_LPhyAttack;
                    MaxPhyA +=  Data.ItemBase[Item[3]].Attack.Min_HPhyAttack;
                    MinMagA +=  Data.ItemBase[Item[3]].Attack.Min_LMagAttack;
                    MaxMagA +=  Data.ItemBase[Item[3]].Attack.Min_HMagAttack;

                    if (Item[3] == 3632 || Item[3] == 3633)
                    {
                        MagDef +=   Data.ItemBase[251].Defans.MinMagDef;
                        PhyDef +=   Data.ItemBase[251].Defans.MinPhyDef;
                        Parry +=    Data.ItemBase[251].Defans.Parry;
                        AddItem(251, 0, 7, 0, Player.CreatingCharID, 0);
                    }
                    if (Item[3] == 3636)
                    {
                        AddItem(62, 250, 7, 1, Player.CreatingCharID, 0);
                    }
                    #endregion

                    MsSQL.UpdateData("update character set min_phyatk='" + (int)Math.Round(MinPhyA) +
                            "', max_phyatk='"   + Math.Round(MaxPhyA) +
                            "', min_magatk='"   + Math.Round(MinMagA) +
                            "', max_magatk='"   + Math.Round(MaxMagA) +
                            "', phydef='"       + Math.Round(PhyDef) +
                            "', magdef='"       + Math.Round(PhyDef) +
                            "', parry='"        + Math.Round(Parry) +
                            "', hit='"          + Math.Round(Hit) +
                            "' where name='"    + name + "'");

                    AddMastery(257, Player.CreatingCharID); //blade
                    AddMastery(258, Player.CreatingCharID); //heuksal
                    AddMastery(259, Player.CreatingCharID); //bow
                    AddMastery(273, Player.CreatingCharID); //cold
                    AddMastery(274, Player.CreatingCharID); //light
                    AddMastery(275, Player.CreatingCharID); //fire
                    AddMastery(276, Player.CreatingCharID); //force
                    Console.WriteLine("@Gameserver:             Character: " + name + " Has been created");
                    client.Send(Packet.ScreenSuccess(1));

                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("CharacterCreate()");
                deBug.Write(ex);
                Console.WriteLine(ex);
            }
        }
Example #13
0
        public void LoginScreen()
        {
            try
            {
                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                string name = Reader.Text();
                Reader.Close();
                #region Check name before entering (exploit)
                Systems.MsSQL ms = new Systems.MsSQL("SELECT name FROM character WHERE account='" + Player.AccountName + "' AND name='" + name + "'");
                int checkinfo = ms.Count();

                if (checkinfo == 0)
                {
                    return;
                }
                #endregion
                else
                {
                    Character = new character();

                    Character.Information.Name = name;
                    Character.Account.ID = Player.ID;
                    PlayerDataLoad();
                    LoadJobData();
                    checkSameChar(name, Character.Information.UniqueID);
                    CheckCharStats(Character);
                    clients.Add(this);
                    client.Send(Packet.LoginScreen());
                    client.Send(Packet.StartPlayerLoad());
                    client.Send(Packet.Load(Character));

                    client.Send(Packet.EndPlayerLoad());
                    client.Send(Packet.PlayerUnknowPack(Character.Information.UniqueID));
                    client.Send(Packet.UnknownPacket());

                    OpenTimer();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error login by: {0}",Character.Information.Name);
                deBug.Write(ex);
                Console.WriteLine(ex);
            }
        }
Example #14
0
 void CharacterRestore()
 {
     try
     {
         PacketReader Reader = new PacketReader(PacketInformation.buffer);
         Reader.Byte();
         string name = Reader.Text();
         Reader.Close();
         MsSQL.InsertData("UPDATE character SET deletedtime=0 WHERE name='" + name + "'");
         client.Send(Packet.ScreenSuccess(5));
     }
     catch (Exception ex)
     {
         Console.WriteLine("CharacterRestore()");
         deBug.Write(ex);
         Console.WriteLine(ex); //Write source of the error
     }
 }
Example #15
0
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Gm Command Base
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 void GM()
 {
     if (Character.Information.GM == 1)
     {
         PacketReader Reader = new PacketReader(PacketInformation.buffer);
         short gType         = Reader.Int16();
         //Console.WriteLine("GM Command {0} used by:{1} ",gType, Character.Information.Name);
         switch (gType)
         {
             case 0:
                 // Command /playercount
                 break;
             case 1:
                 // Command /finduser
                 break;
             case 2:
                 // Command / MsgClear
                 break;
             case 3:
                 GM_TOTOWN(Reader.Text());
                 break;
             case 4:
                 // Command /Getpos
                 break;
             case 5:
                 // Command /stat
                 break;
             case 6:
                 GM_LOADMONSTER(Reader.Int32(), Reader.Byte(), Reader.Byte());
                 break;
             case 7:
                 GM_MAKEITEM(Reader.Int32(), Reader.Byte());
                 break;
             case 8:
                 GM_GOUSER(Reader.Text());
                 break;
             case 12:
                 // Command /zoe
                 GM_ZOE(Reader.Int32(), Reader.Byte());
                 break;
             case 13:
                 GM_BAN(Reader.Text());
                 break;
             case 14:
                 GM_INVISIBLE();
                 break;
             case 15:
                 GM_INVINCIBLE();
                 break;
             case 16:
                 if (PacketInformation.buffer.Length > 4)
                     GM_WP(Reader.Byte(), Reader.Byte(), Reader.Single(), Reader.Single(), Reader.Single());
                 break;
             case 17:
                 GM_RECALLUSER(Reader.Text());
                 break;
             case 19:
                 // Command /instance
             case 20:
                 GM_MOBKILL(Reader.Int32(), Reader.UInt16());
                 break;
             case 23:
                 GM_BLOCKLOGOUT(Reader.Text(), Reader.Byte());
                 break;
             case 26:
                 GM_LIENAME(Reader.Text());
                 break;
             case 27:
                 //initq
                 GM_SKILL();
                 break;
             case 42:
                 GM_SPAWN_UNIQUE();
                 break;
             case 49:
                 GM_CLEARINVEN();
                 break;
             case 50:
                 // Command /barena
                 break;
             case 25:
                 // Command /fakename
                 // Used for transforming now
                 GM_TRANSFORM(Reader.Text());
                 break;
             case 99:
                 // Command /power %d
             case 100:
                 // Command /timeoff
                 break;
             case 101:
                 // Command /timeon
                 break;
             case 102:
                 // Command /time %d
                 break;
             case 103:
                 // Command /day
                 break;
             case 104:
                 // Command /night
                 break;
             case 105:
                 // Command /rain %d
                 int type = 2;
                 GM_WEATHER(Reader.Int32(),type);
                 break;
             case 106:
                 // Command /snow %d
                 type = 3;
                 GM_WEATHER(Reader.Int32(),type);
                 break;
             case 107:
                 // Command /clear
                 type = 1;
                 GM_WEATHER(Reader.Int32(),type);
                 break;
             case 108:
                 // Command /+
                 break;
             case 109:
                 // Command /-
                 break;
             case 110:
                 // Command /zoom
                 break;
             case 111:
                 // Command /fast
                 break;
             case 112:
                 // Command /showme
                 break;
             case 113:
                 // Command /hideme
                 break;
             case 114:
                 // Command /camera
                 break;
             case 115:
                 // Command /uioff
                 break;
             case 116:
                 // Command /uion
                 break;
             case 117:
                 // Command /frame
                 break;
             case 118:
                 // Command /colon
                 break;
             case 119:
                 // Command /coloff
                 break;
             case 130:
                 // Command /cwclear
                 break;
             case 131:
                 // Command /cwpop
                 break;
             case 132:
                 // Command /cwgo
                 break;
             case 133:
                 // Command /cwstop
                 break;
             case 134:
                 // Command /cwsave
                 break;
             case 135:
                 // Command /ms
                 break;
             case 136:
                 // Command /cs %d
                 break;
             case 137:
                 // Command /id
                 break;
             case 150:
                 // Command /wire
                 break;
             case 151:
                 // Command /ground
                 break;
             case 152:
                 // Command /sky
                 break;
             case 153:
                 // Command /mobj
                 break;
             case 154:
                 // Command /char
                 break;
             case 155:
                 // Command /lod
                 break;
             case 400:
                 // Command /Item %d
                 break;
             case 500:
                 // Command /setfov %d
                 break;
             case 600:
                 // Command /setspeed %d
                 break;
             case 601:
                 // Command /equip %d
                 break;
             case 602:
                 // Command /makeobj %d
                 break;
             case 603:
                 // Command /snd %s
                 break;
             default:
                 Console.WriteLine("Non Coded Gm Command: " + gType);
                 Print.Format(Decode.StringToPack(PacketInformation.buffer));
                 break;
         }
         Reader.Close();
     }
     else
     {
         lock (Systems.clients)
         {
             foreach (Systems sys in Systems.clients)
             {
                 try
                 {
                     if (sys.Character.Information.Name == Character.Information.Name)
                     {
                         sys.client.Send(Packet.ChatPacket(7, Character.Information.UniqueID, "from GM:You are banned.", null));
                         sys.Disconnect("ban");
                         Console.WriteLine("Autobanned user: "******" Due to hacking");
                         return;
                     }
                 }
                 catch (Exception ex)
                 {
                     Console.WriteLine("Commands error: " + ex);
                 }
             }
         }
     }
 }