Exemplo n.º 1
0
        static bool GossipSelectOption(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong vendorGUID = data.ReadUInt64();
            uint  msgid      = data.ReadUInt32();

            BinWriter pkg = LoginClient.NewPacket(SMSG.GOSSIP_MESSAGE);

            string message  = "Welcome to World of WoWCraft! Please report bugs on our Home-Page: http://www.worldofwowcraft.com";
            string message2 = "Visit our Page for the list of known bugs: http://www.worldofwowcraft.com";

            pkg.Write(vendorGUID);                                      // Vendor GUID
            pkg.Write(msgid);                                           // Message ID
            pkg.Write((int)1);                                          // Counter

            pkg.Write((int)1);                                          // Counter Number
            pkg.Write((int)7);                                          // Message Type
            if (msgid == 1)
            {
                pkg.Write(message);                             // Message Text 1
            }
            if (msgid == 2)
            {
                pkg.Write(message2);                            // Message Text 2
            }
            pkg.Write(0);                                       // ?

            client.Send(pkg);

            return(true);
        }
Exemplo n.º 2
0
        static bool GossipHello(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong vendorGUID = data.ReadUInt64();

            BinWriter pkg = LoginClient.NewPacket(SMSG.GOSSIP_MESSAGE);

            string message  = "Welcome to World of WoWCraft!";
            string message2 = "Known Bugs: Read this!";

            pkg.Write(vendorGUID);                      // Vendor GUID
            pkg.Write((int)1);                          // Message ID
            pkg.Write((int)2);                          // Counter

            pkg.Write((int)1);                          // Counter Number
            pkg.Write((int)7);                          // Message Type
            pkg.Write(message);                         // Message Text

            pkg.Write((int)2);                          // Counter Number
            pkg.Write((int)2);                          // Message Type
            pkg.Write(message2);                        // Message Text



            pkg.Write(0);                                       // ?

            client.Send(pkg);

            return(true);
        }
Exemplo n.º 3
0
        static bool PetitionList(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong vendorGUID = data.ReadUInt64();

            BinWriter pkg = LoginClient.NewPacket(SMSG.PETITION_SHOWLIST);

            string msg = "This is a test msg for petition";

            pkg.Write(vendorGUID);
            pkg.Write((ulong)client.Character.ObjectId);
            pkg.Write("TestString");
            pkg.Write((byte)1);
            pkg.Write((byte)1);
            pkg.Write((byte)1);
            pkg.Write((byte)1);
            pkg.Write((int)1);
            pkg.Write((int)1);
            pkg.Write((string)"TestGuild");
            pkg.Write((int)1);
            pkg.Write((int)1);
            pkg.Write((int)1);
            pkg.Write(msg);


            client.Send(pkg);

            Chat.System(client, "Petition Query Working :" + vendorGUID);

            return(true);
        }
Exemplo n.º 4
0
        static bool HandleCharDelete(LoginClient client, CMSG msgID, BinReader data)
        {
            uint id = data.ReadUInt32();

            if (client.Account.Characters == null)
            {
                client.Close(client.Account.Name + " tried to delete a character when there was none on the account.");
                return(true);
            }
            foreach (DBCharacter c in client.Account.Characters)
            {
                if (id == c.ObjectId)
                {
                    try
                    {
                        DataServer.Database.DeleteObject(c);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Deleting character " + c.ObjectId + " failed! " + e.Message);
                    }
                    client.Account.Characters = null;
                    DataServer.Database.FillObjectRelations(client.Account);
                    BinWriter w = LoginClient.NewPacket(SMSG.CHAR_DELETE);
                    w.Write((byte)0x28);
                    client.Send(w);
                    return(true);
                }
            }
            client.Close(client.Account.Name + " tried to delete a character that didn't belong to him.");
            return(true);
        }
Exemplo n.º 5
0
        static bool Quest(LoginClient client, CMSG msgID, BinReader data)
        {
            BinWriter pkg = LoginClient.NewPacket(SMSG.QUESTGIVER_QUEST_LIST);

            ulong  quester = data.ReadUInt64();
            string greets  = ("Hy, " + client.Character.Name + ", the " + client.Character.Class + "!");

            int lenght = DataServer.Database.GetObjectCount(typeof(DBQuest));

            pkg.Write(quester);
            pkg.Write(greets);
            pkg.Write((int)5);                                                  // Quester Emote Delay (5 is default)
            pkg.Write((int)3);                                                  // Quester Emote
            pkg.Write((byte)lenght);                                            // Quest Counter

            int i = 1;

            while (i <= lenght)
            {
                DBQuest quest = null;
                quest = (DBQuest)DataServer.Database.FindObjectByKey(typeof(DBQuest), i);

                pkg.Write(i);                                           // Quest ID
                pkg.Write(quest.RequiredLevel);                         // Quest Level
                pkg.Write((int)5);                                      // ??
                pkg.Write(quest.Title);                                 // Quest Description
                i++;
            }
            client.Send(pkg);

            return(true);
        }
Exemplo n.º 6
0
            static bool OnGuildQuery(LoginClient client, CMSG msgID, BinReader data)
            {
                uint      guildId = data.ReadUInt32();
                BinWriter pkg     = LoginClient.NewPacket(SMSG.GUILD_QUERY_RESPONSE);

                Chat.System(client, "Guild Query");
                DBGuild guild = (DBGuild)DataServer.Database.FindObjectByKey(typeof(DBGuild), guildId);

                if (guild == null)
                {
                    return(true);
                }
                else
                {
                    pkg.Write(guild.ObjectId);
                    pkg.Write(guild.Name);
                    for (uint i = 0; i < 10; i++)
                    {
                        pkg.Write(guild.getRankName(i));
                    }
                    pkg.Write((uint)guild.Icon);
                    pkg.Write((uint)guild.IconColor);
                    pkg.Write((uint)guild.Border);
                    pkg.Write((uint)guild.BorderColor);
                    pkg.Write((uint)guild.Color);
                }
                client.Send(pkg);
                return(true);
            }            //OnGuildQuery
Exemplo n.º 7
0
            static bool OnGuildInvite(LoginClient client, CMSG msgID, BinReader data)
            {
                DBGuild guild = client.Character.Guild;

                if (guild == null || client.Character.GuildID == 0)
                {
                    SendResult(client, 2, " ", (int)GUILDRESULT.NOT_IN_GUILD);
                    return(true);
                }

                if ((guild.getRankFlags(client.Character.GuildRank) & (uint)GUILDFLAGS.INVITE) != (uint)GUILDFLAGS.INVITE)
                {
                    SendResult(client, 1, " ", (int)GUILDRESULT.PERMISSIONS);
                    ; return(true);
                }

                string name = data.ReadString();

                DBCharacter character = (DBCharacter)DataServer.Database.FindObjectByKey(typeof(DBCharacter), name.ToLower());

                if (character == null)
                {
                    SendResult(client, 1, name, (int)GUILDRESULT.NOT_FOUND);
                }

                else
                {
                    LoginClient targetClient = LoginServer.GetLoginClientByCharacterID(character.ObjectId);
                    if (targetClient != null)
                    {
//						targetClient.Character.LastGuildID=client.Character.GuildID;
                        if (targetClient.Character.LastGuildInviterID != 0)
                        {
                            SendResult(client, 1, name, (int)GUILDRESULT.ALREADY_INVITED_TO_GUILD_S);
                            return(true);
                        }

                        if (targetClient.Character.GuildID != 0)
                        {
                            SendResult(client, 1, targetClient.Character.Name, (int)GUILDRESULT.ALREADY_IN_GUILD_S);
                            return(true);
                        }

                        targetClient.Character.LastGuildInviterID = client.Character.ObjectId;

                        BinWriter gpkg = LoginClient.NewPacket(SMSG.GUILD_INVITE);
                        gpkg.Write(client.Character.Name);
                        gpkg.Write(guild.Name);
                        targetClient.Send(gpkg);
                        SendResult(client, 1, name, (int)GUILDRESULT.SUCCESS);
                    }
                    else
                    {
                        Chat.System(client, name + " is not currently online");
                    }
                }

                return(true);
            }            //OnGuildInvite
Exemplo n.º 8
0
            static bool OnTabardVendor(LoginClient client, CMSG msgID, BinReader data)
            {
                BinWriter TestPacket = LoginClient.NewPacket(SMSG.TABARDVENDOR_ACTIVATE);

                TestPacket.Write(client.Character.Selected);
                client.Send(TestPacket);
                return(true);
            }     //OnTabardVendor
Exemplo n.º 9
0
        static bool HandlePing(LoginClient client, CMSG msgID, BinReader data)
        {
            BinWriter w = LoginClient.NewPacket(SMSG.PONG);

            w.Write(data.ReadUInt32());
            client.Send(w);
            return(true);
        }
Exemplo n.º 10
0
        }        //AddMember

        public static void SendResult(LoginClient client, int operation, string sparam, int result)
        {
            BinWriter w = LoginClient.NewPacket(SMSG.GUILD_COMMAND_RESULT);

            w.Write(operation);
            w.Write(sparam);
            w.Write(result);
            client.Send(w);
            return;
        }        //SendResult
Exemplo n.º 11
0
        static bool Tabard(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong vendorGUID = data.ReadUInt64();

            BinWriter pkg = LoginClient.NewPacket(SMSG.TABARDVENDOR_ACTIVATE);

            pkg.Write(vendorGUID);

            client.Send(pkg);

            return(true);
        }
Exemplo n.º 12
0
        static bool Hello(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong quester = data.ReadUInt64();

            BinWriter pkg = LoginClient.NewPacket(SMSG.QUESTGIVER_STATUS);

            pkg.Write(quester);
            pkg.Write((int)3);

            client.Send(pkg);

            return(true);
        }
Exemplo n.º 13
0
        static bool BankActivate(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong vendorGUID = data.ReadUInt64();

            BinWriter pkg = LoginClient.NewPacket(SMSG.SHOW_BANK);

            pkg.Write(vendorGUID);

            client.Send(pkg);

            Chat.System(client, "Bank Working on : " + vendorGUID);

            return(true);
        }
Exemplo n.º 14
0
        static bool HandleAuthSession(LoginClient client, CMSG msgID, BinReader data)
        {
            data.BaseStream.Position += 8;
            string name = data.ReadString().ToLower();

            if (name.Length < 3)
            {
                client.Close("Too short account name");
                return(true);
            }
            if (client.Account != null)
            {
                client.Close(client.Account.Name + " tried to log in again as " + name);
                return(true);
            }

            BinWriter w = LoginClient.NewPacket(SMSG.AUTH_RESPONSE);

            if (LoginClient.IsAccountLoggedIn(name))
            {
                w.Write((byte)0x19);
                client.Send(w);
                client.Close("Client tried to log in with an already logged in account.");
                return(true);
            }
            DBAccount account = null;

            try
            {
                account = (DBAccount)DataServer.Database.FindObjectByKey(typeof(DBAccount), name);
            }
            catch (WoWDaemon.Database.DatabaseException e)
            {
                client.Close(e.Message);
                return(true);
            }

            if (account == null)
            {
                account      = new DBAccount();
                account.Name = name;
                DataServer.Database.AddNewObject(account);
                Console.WriteLine("Created account: " + name);
            }
            client.Account = account;
            Console.WriteLine("Account " + name + " logged in from " + client.RemoteEndPoint);
            w.Write((byte)0x0C);
            client.Send(w);
            return(true);
        }
Exemplo n.º 15
0
            static bool OnGuildDecline(LoginClient client, CMSG msgID, BinReader data)
            {
                LoginClient inviter = LoginServer.GetLoginClientByCharacterID(client.Character.LastGuildInviterID);

                client.Character.LastGuildInviterID = 0;

                BinWriter pkg = LoginClient.NewPacket(SMSG.GUILD_DECLINE);

                pkg.Write(client.Character.Name);
                inviter.Send(pkg);

//				Chat.GuildSay(0, inviter, client.Character.Name+" has declined your offer to join "+client.Character.GuildName, CHATMESSAGETYPE.GUILD);
                return(true);
            }            //OnGuildDecline
Exemplo n.º 16
0
        static bool TaxiQuery(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong taxiGUID = data.ReadUInt64();

            BinWriter pkg = LoginClient.NewPacket(SMSG.TAXINODE_STATUS);

            pkg.Write(taxiGUID);
            pkg.Write((byte)2);                         // Taxi Status
            client.Send(pkg);

            Chat.System(client, "Taxi NPC status query working");

            return(true);
        }
Exemplo n.º 17
0
            static bool OnGuildInfo(LoginClient client, CMSG msgID, BinReader data)
            {
                DBGuild tguild = client.Character.Guild;

                tguild.GuildInfo = data.ReadString();
                DataServer.Database.SaveObject(tguild);
                BinWriter gpkg = LoginClient.NewPacket(SMSG.GUILD_INFO);

                gpkg.Write(tguild.ObjectId);
                gpkg.Write(tguild.GuildInfo);
//				gpkg.Write(rankname);
                client.Send(gpkg);

                return(true);
            }             //OnGuildRoster
Exemplo n.º 18
0
        static bool TaxiQueryNodes(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong taxiGUID = data.ReadUInt64();

            BinWriter pkg = LoginClient.NewPacket(SMSG.SHOWTAXINODES);

            pkg.Write((int)1);                          // Show Map
            pkg.Write(taxiGUID);
            pkg.Write((int)11);                         // Node Location*

            client.Send(pkg);

            Chat.System(client, "Query Avaliable Nodes Working");

            return(true);
        }
Exemplo n.º 19
0
        static bool GroupDecline(LoginClient client, CMSG msgID, BinReader data)
        {
            LoginClient inviter = LoginServer.GetLoginClientByCharacterID(client.Character.LastGroupInviterID);

            client.Character.LastGroupInviterID = 0;
            if (inviter == null)
            {
                return(true);
            }

            BinWriter pkg = LoginClient.NewPacket(SMSG.GROUP_DECLINE);

            pkg.Write(client.Character.Name);
            inviter.Send(pkg);
            return(true);
        }
Exemplo n.º 20
0
        static bool TaxiActivate(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong taxiGUID  = data.ReadUInt64();
            uint  startnode = data.ReadUInt32();
            uint  destnode  = data.ReadUInt32();

            BinWriter pkg = LoginClient.NewPacket(SMSG.ACTIVATETAXIREPLY);

            pkg.Write((int)10);             // Code*

            client.Send(pkg);

            Chat.System(client, "Activate Taxi Working...");

            return(true);
        }
Exemplo n.º 21
0
        static bool CancelTrade(LoginClient client, CMSG msgID, BinReader data)
        {
            uint inviteeGUID = client.Character.LastTradeID;

            LoginClient invitee = LoginServer.GetLoginClientByCharacterID((uint)inviteeGUID);

            client.Character.LastTradeID  = 0;
            invitee.Character.LastTradeID = 0;

            BinWriter pkg = LoginClient.NewPacket(SMSG.TRADE_STATUS);

            pkg.Write((int)3);

            invitee.Send(pkg);

            invitee.Character.TradeCompleted = false;

            return(true);
        }
Exemplo n.º 22
0
        static bool AcceptTrade(LoginClient client, CMSG msgID, BinReader data)
        {
            uint flag        = data.ReadUInt32();
            uint inviteeGUID = client.Character.LastTradeID;

            LoginClient invitee = LoginServer.GetLoginClientByCharacterID((uint)inviteeGUID);

            BinWriter pkg = LoginClient.NewPacket(SMSG.TRADE_STATUS);

            if (invitee.Character.TradeCompleted == true)
            {
                ScriptPacket Money = new ScriptPacket(SCRMSG.TRADEMONEY);

                Money.Write(client.Character.ObjectId);
                Money.Write(invitee.Character.ObjectId);
                Money.Write(client.Character.TradeMoney);
                Money.Write(invitee.Character.TradeMoney);

                client.WorldConnection.Send(Money);

                pkg.Write((int)8);

                invitee.Send(pkg);
                client.Send(pkg);

                client.Character.LastTradeID    = 0;
                client.Character.TradeMoney     = 0;
                client.Character.TradeCompleted = false;

                invitee.Character.LastTradeID    = 0;
                invitee.Character.TradeMoney     = 0;
                invitee.Character.TradeCompleted = false;
            }
            else
            {
                pkg.Write((int)4);
                client.Character.TradeCompleted = true;

                invitee.Send(pkg);
            }

            return(true);
        }
Exemplo n.º 23
0
        static bool QuestDetails(LoginClient client, CMSG msgID, BinReader data)
        {
            ulong quester = data.ReadUInt64();
            int   questid = data.ReadInt32();

            DBQuest quest = null;

            quest = (DBQuest)DataServer.Database.FindObjectByKey(typeof(DBQuest), questid);

            BinWriter q1 = LoginClient.NewPacket(SMSG.QUESTGIVER_QUEST_DETAILS);

            q1.Write(quester);                                  // Quester GUID
            q1.Write(questid);                                  // Quest ID

            q1.Write(quest.Title);                              // Quest Title
            q1.Write(quest.Description);                        // Quest Details
            q1.Write(quest.Objectives);                         // Quest Objectives

            q1.Write((int)0);                                   //?

            q1.Write((int)1);                                   // Choice Reward Item Counter - TODO: ADD ARRAY ON DB

            q1.Write(quest.ChooseRewardID);                     // Choice Reward Item Template_ID
            q1.Write(quest.ChooseQuantity);                     // Choice Reward Item Quantity
            q1.Write(quest.ChooseDisplayID);                    // Choice Reward Item Display_ID

            q1.Write((int)1);                                   // Always Reward Item Counter - TODO: ADD ARRAY ON DB

            q1.Write(quest.AlwaysRewardID);                     // Always Reward Template_ID
            q1.Write(quest.AlwaysRewardQuantity);               // Always Reward Item Quantity
            q1.Write(quest.AlwaysDisplayID);                    // Always Reward Item Display_ID

            q1.Write(quest.MoneyReward);                        // Money Reward
            q1.Write((int)0);                                   // ?
            q1.Write((int)0);                                   // ?

            client.Send(q1);

            Chat.System(client, "Quest Details for quest id " + questid + " from quester " + quester);

            return(true);
        }
Exemplo n.º 24
0
        static bool GossipTextQuery(LoginClient client, CMSG msgID, BinReader data)
        {
            uint  msgid      = data.ReadUInt32();
            ulong vendorGUID = data.ReadUInt64();

            BinWriter pkg = LoginClient.NewPacket(SMSG.NPC_TEXT_UPDATE);

            string topic   = "Out team welcome you!";
            string message = "Please, visit us in irc.gotwow.net #wowcraft";

            pkg.Write(msgid);                                   // Message ID
            pkg.Write(1);                                       // ?
            pkg.Write(topic);                                   // Topic Message
            pkg.Write(message);                                 // Message 1
            pkg.Write((int)0);                                  // Lenguage ID

            client.Send(pkg);

            return(true);
        }
Exemplo n.º 25
0
        static bool VendorLisr(LoginClient client, CMSG msgID, BinReader data)
        {
            BinWriter pkg2 = LoginClient.NewPacket(SMSG.LIST_INVENTORY);

            ulong vendorGUID = data.ReadUInt64();

            DataObject[] obj = DataServer.Database.SelectObjects(typeof(DBVendor), "GUID = '" + vendorGUID + "'");
            if (obj.Length == 0)
            {
                Chat.System(client, "Vendor not found");
                return(true);
            }

            DBVendor tvendor = (DBVendor)obj[0];

            pkg2.Write(tvendor.GUID);                                                           // Vendor GUID (OK)
            if (tvendor.VendorItems == null)
            {
                pkg2.Write((int)0);
                client.Send(pkg2);
                return(true);
            }
            int Lenght = tvendor.VendorItems.Length;
            int i      = 1;

            pkg2.Write((byte)Lenght);                                                           // item counter (OK)
            foreach (DBVendorItem item in tvendor.VendorItems)
            {
                pkg2.Write((int)i);                                             // item counter number (OK)
                pkg2.Write((int)item.TemplateID);                               // item template (OK)
                pkg2.Write((int)item.Template.DisplayID);                       // item icon display_id (OK)
                pkg2.Write((int)item.CurrentQty);                               // Quantity (OK)
                pkg2.Write((int)item.Price);                                    // Price (OK)
                pkg2.Write(0);                                                  // Dunno
                pkg2.Write((int)item.Template.ReqLevel);                        // Item Level (OK)
                i++;
            }

            client.Send(pkg2);
            return(true);
        }
Exemplo n.º 26
0
            static bool OnGuildTabard(LoginClient client, CMSG msgID, BinReader data)
            {
                DBGuild tguild = client.Character.Guild;
                ulong   vGUID  = data.ReadUInt64();

                tguild.Icon        = data.ReadUInt32();
                tguild.IconColor   = data.ReadUInt32();
                tguild.Border      = data.ReadUInt32();
                tguild.BorderColor = data.ReadUInt32();
                tguild.Color       = data.ReadUInt32();
                DataServer.Database.SaveObject(tguild);
                SendToWorld(client, client.Character);
                DBItem newItem = new DBItem();

                newItem.OwnerID    = client.Character.ObjectId;
                newItem.OwnerSlot  = 18;
                newItem.TemplateID = 343;
                DataServer.Database.AddNewObject(newItem);
                DataServer.Database.FillObjectRelations(newItem);
                client.WorldConnection.Send(newItem);

                ScriptPacket Item = new ScriptPacket(SCRMSG.BUYITEM);

                Item.Write(client.Character.ObjectId);
                Item.Write(newItem.ObjectId);
                Item.Write((int)100000);
                client.WorldConnection.Send(Item);

                BinWriter tpkg = LoginClient.NewPacket(SMSG.TABARDVENDOR_ACTIVATE);

                tpkg.Write(client.Character.Selected);
                client.Send(tpkg);

                string gmsg = "Congratulations on your purchase, You may now give them to your members using !givetabard <member>";

                Chat.GuildSay(0, client, gmsg, CHATMESSAGETYPE.GUILD);


                return(true);
            }             //OnGuildTabard
Exemplo n.º 27
0
        public static void SendRoster(LoginClient client, DBGuild tGuild)
        {
            BinWriter pkg = LoginClient.NewPacket(SMSG.GUILD_ROSTER);

            pkg.Write((int)tGuild.Members.Length);
            pkg.Write((string)tGuild.MOTD);                                     //Guild.MOTD);
            pkg.Write((uint)tGuild.MaxRank + 1);                                //# of ranks
            for (uint i = 0; i < tGuild.MaxRank + 1; i++)
            {
                pkg.Write((uint)tGuild.getRankFlags(i));                        //Rank Flags for each rank
            }
            foreach (DBGuildMembers member in tGuild.Members)
            {
                DataServer.Database.FillObjectRelations(member);
                pkg.Write((ulong)member.MemberID);                //((LoginClient)e.Current).Character.Race);
                bool online = false;
                if (LoginServer.GetLoginClientByCharacterID(member.MemberID) != null)
                {
                    online = true;
                }
                pkg.Write((bool)online);                    //Online? 0-no/1-yes
                pkg.Write((string)member.Character.Name);   //Name
                pkg.Write((int)member.Character.GuildRank); //Rank
                pkg.Write((byte)member.Character.Level);    //Level
                pkg.Write((byte)member.Character.Class);    //Class((LoginClient)e.Current).Character.Level);
                pkg.Write((uint)member.Character.Zone);     //Zone
                if (online)
                {
                    pkg.Write((byte)member.Character.GroupLook);                        // Group (0-No/1-Yes) Only if online
                }
                else
                {
                    pkg.Write((uint)member.Character.GuildTimeStamp);                           // GuildTimeStamp
                }
                pkg.Write((string)(member.Note == null?" ":member.Note));                       //Player Note
                pkg.Write((string)(member.Note == null?" ":member.OfficerNote));                //Officer's Note
            }
            client.Send(pkg);
            return;
        } //SendRoster
Exemplo n.º 28
0
        static bool GroupInvite(LoginClient client, CMSG msgID, BinReader data)
        {
            string inviteeName = data.ReadString();
            string inviter     = client.Character.Name;

            if (client.Character.Name == inviteeName)
            {
                Chat.System(client, "You cannot invite yourself to a group");
                return(true);
            }

            DBCharacter invitee = null;

            invitee = (DBCharacter)DataServer.Database.FindObjectByKey(typeof(DBCharacter), inviteeName);
            if (invitee == null)
            {
                Chat.System(client, "Player not found");
                return(true);
            }
            LoginClient invited = LoginServer.GetLoginClientByCharacterID(invitee.ObjectId);

            if (invited == null)
            {
                Chat.System(client, "Player is not online");
                return(true);
            }
            if (invited.Character.LastGroupInviterID != 0)
            {
                Chat.System("That player has already been invited to a group");
                return(true);
            }
            invited.Character.LastGroupInviterID = client.Character.ObjectId;
            BinWriter pkg = LoginClient.NewPacket(SMSG.GROUP_INVITE);

            pkg.Write(inviter);

            invited.Send(pkg);
            return(true);
        }
Exemplo n.º 29
0
        static bool TradeItem(LoginClient client, CMSG msgID, BinReader data)
        {
            byte tradeslot  = data.ReadByte();
            byte sourcebag  = data.ReadByte();
            byte sourceslot = data.ReadByte();

            client.Character.TradeItemCount++;
            uint itemcount = client.Character.TradeItemCount;

            uint inviteeGUID = client.Character.LastTradeID;

            LoginClient invitee = LoginServer.GetLoginClientByCharacterID((uint)inviteeGUID);

            BinWriter pkg = LoginClient.NewPacket(SMSG.TRADE_STATUS_EXTENDED);

            pkg.Write((byte)1);                                         // 0 for giving, 1 for recieving
            pkg.Write((int)1);                                          // Message Count
            pkg.Write(client.Character.TradeMoney);                     // Money Amount
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?

            pkg.Write(tradeslot);                                       // Trade Slot
            pkg.Write((int)1);                                          // Item Template ID
            pkg.Write((int)1542);                                       // Item Display ID
            pkg.Write((int)0);                                          // Item Count
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?
            pkg.Write((int)0);                                          // ?

            invitee.Send(pkg);

            return(true);
        }
Exemplo n.º 30
0
        static bool ListFriend(LoginClient client, CMSG msgID, BinReader data)
        {
            BinWriter flist = LoginClient.NewPacket(SMSG.FRIEND_LIST);

            if (client.Character.Friends == null)
            {
                flist.Write((byte)0);
                client.Send(flist);
            }
            else
            {
                byte tmpByte = (byte)client.Character.Friends.Length;
                flist.Write((char)tmpByte);
                LoginClient FriendOnline = null;
                foreach (DBFriendList Friend in client.Character.Friends)
                {
                    FriendOnline = LoginServer.GetLoginClientByCharacterID(Friend.Friend_ID);
                    if (FriendOnline == null)
                    {
                        flist.Write((ulong)Friend.Friend_ID);
                        flist.Write((char)0x00);
                    }
                    else
                    {
                        flist.Write((ulong)Friend.Friend_ID);
                        flist.Write((char)0x02);
                        flist.Write((int)FriendOnline.Character.Zone);
                        flist.Write((int)FriendOnline.Character.Level);
                        flist.Write((int)FriendOnline.Character.Class);
                    }
                    FriendOnline = null;
                }
                client.Send(flist);
            }
            return(true);
        }