当前位置: 首页>>代码示例>>C#>>正文


C# Client.SendScreen方法代码示例

本文整理汇总了C#中Client.SendScreen方法的典型用法代码示例。如果您正苦于以下问题:C# Client.SendScreen方法的具体用法?C# Client.SendScreen怎么用?C# Client.SendScreen使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Client的用法示例。


在下文中一共展示了Client.SendScreen方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GiveReward

        public static void GiveReward(Client.GameState client)
        {
            if (IsRace)
            {
                if (No < 10)
                {

                    client.Entity.ConquerPoints += Reward;
                    Reward -= 400;
                    No++;
                    if (No == 1)
                    {
                        PhoenixProject.Network.GamePackets._String Packet = new PhoenixProject.Network.GamePackets._String(true);
                        Packet.UID = client.Entity.UID;
                        Packet.Type = PhoenixProject.Network.GamePackets._String.Effect;
                        Packet.TextsCount = 1;
                        Packet.Texts.Add("ridmatch_first");
                        client.SendScreen(Packet, true);
                        client.Entity.RacePoints += 20;
                    }
                    if (No == 2)
                    {
                        PhoenixProject.Network.GamePackets._String Packet = new PhoenixProject.Network.GamePackets._String(true);
                        Packet.UID = client.Entity.UID;
                        Packet.Type = PhoenixProject.Network.GamePackets._String.Effect;
                        Packet.TextsCount = 1;
                        Packet.Texts.Add("ridmatch_second");
                        client.SendScreen(Packet, true);
                        client.Entity.RacePoints += 15;
                    }
                    if (No == 3)
                    {
                        PhoenixProject.Network.GamePackets._String Packet = new PhoenixProject.Network.GamePackets._String(true);
                        Packet.UID = client.Entity.UID;
                        Packet.Type = PhoenixProject.Network.GamePackets._String.Effect;
                        Packet.TextsCount = 1;
                        Packet.Texts.Add("ridmatch_third");
                        client.SendScreen(Packet, true);
                        client.Entity.RacePoints += 10;
                    }
                }
                else
                {
                    client.Entity.ConquerPoints += 5000;
                    client.Entity.RacePoints += 5;
                    No++;
                }
                SendTimerStatus(client.Entity.Name);
                //FinishRace();
            }
        }
开发者ID:Mromany,项目名称:Conquista5679-TheHunterSource-,代码行数:51,代码来源:SteedRace.cs

示例2: Mine

 public static void Mine(Client.GameState client)
 {
     if (client.Equipment.Free(4))
     {
         client.Mining = false;
         return;
     }
     var item = client.Equipment.TryGetItem(4);
     var info = Database.ConquerItemInformation.BaseInformations[item.ID];
     Data data = new Data(true);
     data.ID = Data.SwingPickaxe;
     data.UID = client.Entity.UID;
     client.SendScreen(data, true);
     if (info == null)
     {
         client.Mining = false;
         return;
     }
     if (info.Name != "PickAxe" && info.Name != "Hoe")
     {
         client.Mining = false;
         return;
     }
     if (!ServerBase.Kernel.Rate(40))
     {
         return;
     }
     switch (client.Entity.MapID)
     {
         case 1218://meteor zone mine
         case 6001://jail war mine
         case 6000://jails
             {
                 Mine(700001, 700011, 700031, 700041, 1072010, 1072020, 1072050, 0, client);
                 break;
             }
         case 1025://phoenixcity minecave
         case 1028://twincity minecave
             {
                 Mine(700011, 700001, 700021, 700071, 1072010, 1072050, 1072031, 0, client);
                 break;
             }
         case 1027://DesertMine
         case 1026://ApeMine
             {
                 Mine(700051, 700061, 0, 0, 1072010, 1072020, 1072040, 1072050, client);
                 break;
             }
         default:
             {
                 client.Send(new Message("You cannot mine here. You must go inside a mine.", System.Drawing.Color.Red, Message.TopLeft));
                 client.Mining = false;
                 break;
             }
     }
 }
开发者ID:AiiMz,项目名称:PserverWork,代码行数:56,代码来源:Mine.cs

示例3: PlayerJump


//.........这里部分代码省略.........
                }
                else if (client.Entity.ContainsFlag(Update.Flags.Ride))
                {
                    int time = (int)ServerBase.Kernel.maxJumpTime(client.lastJumpDistance);
                    int speedprc = Database.DataHolder.SteedSpeed(client.Equipment.TryGetItem(ConquerItem.Steed).Plus);
                    if (speedprc != 0)
                    {
                        if (Now < client.lastJumpTime.AddMilliseconds(time - (time * speedprc / 100)))
                        {
                        }
                    }
                    else
                    {
                    }
                }
            }
            Jump:
            client.lastJumpDistance = ServerBase.Kernel.GetDistance(new_X, new_Y, client.Entity.X, client.Entity.Y);
            client.lastClientJumpTime = generalData.TimeStamp;
            client.lastJumpTime = Now;
            Game.Map Map = client.Map;
            if (Map != null)
            {
                if (Map.Floor[new_X, new_Y, Game.MapObjectType.Player, null])
                {
                    if (ServerBase.Kernel.GetDistance(new_X, new_Y, client.Entity.X, client.Entity.Y) <= 20)
                    {
                        client.Entity.Action = Game.Enums.ConquerAction.Jump;
                        client.Entity.Facing = ServerBase.Kernel.GetAngle(generalData.wParam1, generalData.wParam2, new_X, new_Y);
                        client.Entity.PX = client.Entity.X;
                        client.Entity.PY = client.Entity.Y;
                        client.Entity.X = new_X;
                        client.Entity.Y = new_Y;
                        client.SendScreen(generalData, true);
                        client.Screen.Reload(generalData);
                        if (client.Entity.MapID == 1005)
                        {
                            if (new_X == 42 && new_Y == 51)//stig
                            {
                                if (!client.Entity.ContainsFlag(Update.Flags.Stigma) && !client.Entity.ContainsFlag(Update.Flags.Ghost))
                                {
                                    SpellUse suse = new SpellUse(true);
                                    suse.Attacker = client.Entity.UID;
                                    suse.SpellID = 1095;
                                    suse.SpellLevel = 3;
                                    suse.X = 42;
                                    suse.Y = 51;
                                    suse.Targets.Add(client.Entity.UID, 0);
                                    client.Entity.AddFlag(Update.Flags.Stigma);
                                    client.Entity.StigmaStamp = Time32.Now;
                                    client.Entity.StigmaIncrease = 25;
                                    client.Entity.StigmaTime = 20;
                                    client.SendScreen(suse, true);
                                    if (client.Entity.EntityFlag == PhoenixProject.Game.EntityFlag.Player)
                                        client.Send(ServerBase.Constants.Stigma(25, 20));
                                }
                            }
                            else
                            {
                                if (new_X == 42 && new_Y == 48)//rev
                                {
                                    if (client.Entity.ContainsFlag(Update.Flags.Ghost))
                                    {
                                        SpellUse suse = new SpellUse(true);
                                        suse.Attacker = client.Entity.UID;
                                        suse.SpellID = 1050;
开发者ID:Mromany,项目名称:Conquista5679-TheHunterSource-,代码行数:67,代码来源:PacketHandler.cs

示例4: PlayerGroundMovment

        static void PlayerGroundMovment(GroundMovement groundMovement, Client.GameState client)
        {
            client.Entity.Action = PhoenixProject.Game.Enums.ConquerAction.None;
            client.Attackable = true;
            client.Mining = false;

            if (client.Entity.ContainsFlag3(Network.GamePackets.Update.Flags3.MagicDefender))
            {

                client.Entity.MagicDefenderTime = 0;
                client.Entity.MagicDefenderIncrease = 0;
                client.Entity.RemoveFlag3(Network.GamePackets.Update.Flags3.MagicDefender);
                SyncPacket packet = new SyncPacket
                {
                    Identifier = client.Entity.UID,
                    Count = 2,
                    Type = PhoenixProject.Network.GamePackets.SyncPacket.SyncType.StatusFlag,
                    StatusFlag1 = (ulong)client.Entity.StatusFlag,
                    StatusFlag2 = (ulong)client.Entity.StatusFlag2,
                    Unknown1 = 0x31,
                    StatusFlagOffset = 0x80,
                    Time = 0,
                    Value = 0,
                    Level = 0
                };
                client.Entity.Owner.Send((byte[])packet);
                foreach (var Client in client.MagicDef)
                {
                    if (Client.Entity.ContainsFlag2(Update.Flags2.kimo4))
                    {
                        Client.Entity.RemoveFlag2(Update.Flags2.kimo4);
                    }
                }
                client.MagicDef.Clear();
            }
            if (client.Entity.ContainsFlag(Update.Flags.CastPray))
            {
                client.Entity.RemoveFlag(Update.Flags.CastPray);
                foreach (var Client in client.Prayers)
                {
                    if (Client.Entity.ContainsFlag(Update.Flags.Praying))
                    {
                        Client.Entity.RemoveFlag(Update.Flags.Praying);
                    }
                }
                client.Prayers.Clear();
            }
            if (client.Entity.ContainsFlag(Update.Flags.Praying))
            {
                client.Entity.RemoveFlag(Update.Flags.Praying);
                if (client.PrayLead != null)
                    client.PrayLead.Prayers.Remove(client);
                client.PrayLead = null;
            }
            if (client.Entity.AttackPacket != null)
            {
                client.Entity.AttackPacket = null;
            }
            if (client.Entity.ContainsFlag(Update.Flags.Ride))
                client.Entity.Vigor -= 1;
            client.Entity.PX = client.Entity.X;
            client.Entity.PY = client.Entity.Y;

            if ((byte)groundMovement.Direction > 7)
                groundMovement.Direction = (PhoenixProject.Game.Enums.ConquerAngle)((byte)groundMovement.Direction % 8);

            client.Entity.Move(groundMovement.Direction);

            if (groundMovement.GroundMovementType == GroundMovement.TwoCoordonates)
                client.Entity.Move(groundMovement.Direction);

            client.SendScreen(groundMovement, true);
            client.Screen.Reload(groundMovement);
            if (client.Entity.MapID == 1002)
            {
                if (client.Entity.X == 436 && client.Entity.Y == 444)//stig
                {
                    if (!client.Entity.ContainsFlag(Update.Flags.Ghost))
                    {
                        if (client.Entity.EntityFlag == PhoenixProject.Game.EntityFlag.Player && client.Entity.MaxHitpoints != client.Entity.Hitpoints)
                        {
                            SpellUse suse = new SpellUse(true);
                            suse.Attacker = client.Entity.UID;
                            suse.SpellID = 1195;
                            suse.SpellLevel = 0;
                            suse.X = 436;
                            suse.Y = 444;
                            uint Hp = (client.Entity.MaxHitpoints - client.Entity.Hitpoints);
                            client.Entity.Hitpoints = client.Entity.MaxHitpoints;
                            suse.Targets.Add(client.Entity.UID, Hp);
                            client.SendScreen(suse, true);
                            client.Send(new Message("Your HP Now : " + client.Entity.Hitpoints + "!", System.Drawing.Color.Red, Message.Talk));
                        }
                    }
                }

            }
            if (client.Entity.MapID == 1005)
            {
                if (client.Entity.X == 42 && client.Entity.Y == 51)//stig
//.........这里部分代码省略.........
开发者ID:Mromany,项目名称:Conquista5679-TheHunterSource-,代码行数:101,代码来源:PacketHandler.cs

示例5: CpsFowin

        public static void CpsFowin(Client.GameState GC)
        {
            // Entity GC = new Entity();
            if (Kernel.SteedTornament.cps == 1)
            {
                GC.Entity.ConquerPoints += 20000;
                GC.Entity.cp = 20000;
                foreach (Client.GameState Chaar in ServerBase.Kernel.GamePool.Values)
                {

                    //Entity Chaar = (Game.Entity)DE.Value;
                    {
                        if (Chaar != null)
                        {
                            if (Chaar.Entity.MapID == 1950)
                            {

                                Kernel.SendWorldMessage(new Message(""+ " "+" ", System.Drawing.Color.Orange, Message.Center), Kernel.GamePool.Values);
                                Kernel.SendWorldMessage(new Message( " Rank         Name         Score", System.Drawing.Color.Orange, Message.Center), Kernel.GamePool.Values);
                                Kernel.SendWorldMessage(new Message( "No.1          " + GC.Entity.Name + "      " + (DateTime.Now - GC.Entity.SteedRaceTime) + "", System.Drawing.Color.Orange, Message.Center), Kernel.GamePool.Values);
                                Conquer_Online_Server.Network.GamePackets._String Packet = new Conquer_Online_Server.Network.GamePackets._String(true);
                                //GamePackets.poker Packet2 = new GamePackets.poker(true, client);
                                Packet.UID = GC.Entity.UID;
                                Packet.Type = _String.Effect;
                                Packet.TextsCount = 1;
                                Packet.Texts.Add("ridmatch_first");
                                GC.SendScreen(Packet, true);
                            }
                        }
                    }
                }
            }
            else if (Kernel.SteedTornament.cps == 2)
            {
                GC.Entity.ConquerPoints += 17000;
                GC.Entity.cp = 17000;
                foreach (Client.GameState Chaar in ServerBase.Kernel.GamePool.Values)
                {

                   // Entity Chaar = (Game.Entity)DE.Value;
                    {
                        if (Chaar != null)
                        {
                            if (Chaar.Entity.MapID == 1950)
                            {
               Kernel.SendWorldMessage(new Message( "No.2          " + GC.Entity.Name + "      " + (DateTime.Now - GC.Entity.SteedRaceTime) + "", System.Drawing.Color.Orange, Message.Center), Kernel.GamePool.Values);
               Conquer_Online_Server.Network.GamePackets._String Packet = new Conquer_Online_Server.Network.GamePackets._String(true);
               //GamePackets.poker Packet2 = new GamePackets.poker(true, client);
               Packet.UID = GC.Entity.UID;
               Packet.Type = _String.Effect;
               Packet.TextsCount = 1;
               Packet.Texts.Add("ridmatch_second");
               GC.SendScreen(Packet, true);
                            }
                        }
                    }
                }
            }
            else if (Kernel.SteedTornament.cps == 3)
            {
                GC.Entity.ConquerPoints += 15000;
                GC.Entity.cp = 15000;
                foreach (DictionaryEntry DE in Kernel.H_Chars)
                {
                    Entity Chaar = (Game.Entity)DE.Value;
                    {
                        if (Chaar != null)
                        {
                            if (Chaar.MapID == 1950)
                            {
                  Kernel.SendWorldMessage(new Message( "No.3          " + GC.Entity.Name + "      " + (DateTime.Now - GC.Entity.SteedRaceTime) + "", System.Drawing.Color.Orange, Message.Center), Kernel.GamePool.Values);
                  Conquer_Online_Server.Network.GamePackets._String Packet = new Conquer_Online_Server.Network.GamePackets._String(true);
                  //GamePackets.poker Packet2 = new GamePackets.poker(true, client);
                  Packet.UID = GC.Entity.UID;
                  Packet.Type = _String.Effect;
                  Packet.TextsCount = 1;
                  Packet.Texts.Add("ridmatch_third");
                  GC.SendScreen(Packet, true);
                            }
                        }
                    }
                }
            }
            else if (Kernel.SteedTornament.cps == 4)
            {
                GC.Entity.ConquerPoints += 14000;
                GC.Entity.cp = 14000;
                foreach (DictionaryEntry DE in Kernel.H_Chars)
                {
                    Entity Chaar = (Game.Entity)DE.Value;
                    {
                        if (Chaar != null)
                        {
                            if (Chaar.MapID == 1950)
                            {
                               Kernel.SendWorldMessage(new Message( "No.4         " + GC.Entity.Name + "      " + (DateTime.Now - GC.Entity.SteedRaceTime) + "", System.Drawing.Color.Orange, Message.Center), Kernel.GamePool.Values);
                               Conquer_Online_Server.Network.GamePackets._String Packet = new Conquer_Online_Server.Network.GamePackets._String(true);
                               //GamePackets.poker Packet2 = new GamePackets.poker(true, client);
                               Packet.UID = GC.Entity.UID;
                               Packet.Type = _String.Effect;
//.........这里部分代码省略.........
开发者ID:AiiMz,项目名称:PserverWork,代码行数:101,代码来源:SteedRace.cs

示例6: Chat

        static void Chat(Message message, Client.GameState client)
        {
            //Console.WriteLine("[" + client.Entity.Name + "][Chat] " + message.__Message);
            if (!CheckCommand(message, client))
            {
                if (message.ChatType != Message.Service)
                {
                    if (client.ChatBanned)
                        if (DateTime.Now > client.ChatBanTime.AddMinutes(client.ChatBanLasts))
                            client.ChatBanned = false;
                        else
                        {
                            int minutes = (int)new TimeSpan((client.ChatBanTime.AddMinutes(client.ChatBanLasts) - DateTime.Now).Ticks).TotalMinutes;
                            client.Send(new Message("You are banned from chat. You have to wait: " + minutes + " minutes before you can speak again!", System.Drawing.Color.Green, Message.Talk));
                            return;
                        }
                }
                if (client.Entity.Name == message._From)
                {
                    switch (message.ChatType)
                    {
                        case Message.HawkMessage:
                            {
                                if (client.Booth != null)
                                {
                                    client.Booth.HawkMessage = message;
                                    client.SendScreen(message, true);
                                }
                                break;
                            }
                        case Message.Talk:
                            {
                                client.SendScreen(message, false);
                                break;
                            }
                        case Message.Whisper:
                            {
                                foreach (Client.GameState pClient in ServerBase.Kernel.GamePool.Values)
                                {
                                    if (pClient != null)
                                    {
                                        if (pClient.Entity.Name == message._To)
                                        {
                                            message.Mesh = client.Entity.Mesh;
                                            pClient.Send(message);
                                            if (client.Account.State == Database.AccountTable.AccountState.GameMaster)
                                            {
                                                #region msglog
                                                var dt = DateTime.Now;
                                                string date = dt.Year + "-" + dt.Month + "//";
                                                string datess = +dt.Day + "//";
                                                if (!Directory.Exists(System.Windows.Forms.Application.StartupPath + ServerBase.Constants.Unhandledgmlog))
                                                    Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog);

                                                if (!Directory.Exists(System.Windows.Forms.Application.StartupPath + ServerBase.Constants.Unhandledgmlog + "\\msglog"))
                                                    Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog");

                                                if (!Directory.Exists(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + ""))
                                                    Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "");
                                                if (!File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "\\" + dt.Day + ".txt"))
                                                    File.CreateText(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "\\" + dt.Day + ".txt");

                                                File.WriteAllText(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "\\" + dt.Day + ".txt",
                        File.ReadAllText(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "\\" + dt.Day + ".txt") +
                        "\r\n" + client.Entity.Name + " Talk to : [" + pClient.Entity.Name + "] Message: [" + message.__Message + "]");
                                                #endregion
                                            }
                                            if (client.Account.State == Database.AccountTable.AccountState.ProjectManager)
                                            {
                                                #region msglog
                                                var dt = DateTime.Now;
                                                string date = dt.Year + "-" + dt.Month + "//";
                                                string datess = +dt.Day + "//";
                                                if (!Directory.Exists(System.Windows.Forms.Application.StartupPath + ServerBase.Constants.Unhandledgmlog))
                                                    Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog);

                                                if (!Directory.Exists(System.Windows.Forms.Application.StartupPath + ServerBase.Constants.Unhandledgmlog + "\\msglog"))
                                                    Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog");

                                                if (!Directory.Exists(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + ""))
                                                    Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "");
                                                if (!File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "\\" + dt.Day + ".txt"))
                                                    File.CreateText(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "\\" + dt.Day + ".txt");

                                                File.WriteAllText(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "\\" + dt.Day + ".txt",
                        File.ReadAllText(System.Windows.Forms.Application.StartupPath + "\\" + ServerBase.Constants.Unhandledgmlog + "\\msglog\\" + date + "\\" + dt.Day + ".txt") +
                        "\r\n" + client.Entity.Name + " Talk to : [" + pClient.Entity.Name + "] Message: [" + message.__Message + "]");
                                                #endregion
                                            }
                                            return;
                                        }
                                    }
                                }
                                foreach (Game.ConquerStructures.Society.Friend friend in client.Friends.Values)
                                {
                                    if (friend.Name == message._To)
                                    {
                                        message.__Message = message.__Message.Replace("'", "¹");
                                        client.OnMessageBoxEventParams = new object[3];
                                        client.OnMessageBoxEventParams[0] = client.Entity.UID;
//.........这里部分代码省略.........
开发者ID:Mromany,项目名称:Conquista5679-TheHunterSource-,代码行数:101,代码来源:PacketHandler.cs

示例7: ChangeAction

 static void ChangeAction(Data generalData, Client.GameState client)
 {
     client.Entity.Action = (ushort)generalData.dwParam;
     if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.CastPray))
     {
         foreach (var Client in client.Prayers)
         {
             generalData.UID = Client.Entity.UID;
             generalData.dwParam = (uint)client.Entity.Action;
             generalData.wParam1 = Client.Entity.X;
             generalData.wParam2 = Client.Entity.Y;
             Client.Entity.Action = client.Entity.Action;
             if (Time32.Now >= Client.CoolStamp.AddMilliseconds(1500))
             {
                 if (Client.Equipment.IsAllSuper())
                     generalData.dwParam = (uint)(generalData.dwParam | (uint)(Client.Entity.Class * 0x10000 + 0x1000000));
                 else if (Client.Equipment.IsArmorSuper())
                     generalData.dwParam = (uint)(generalData.dwParam | (uint)(Client.Entity.Class * 0x10000));
                 Client.SendScreen(generalData, true);
                 Client.CoolStamp = Time32.Now;
             }
             else
                 Client.SendScreen(generalData, false);
         }
     }
     generalData.UID = client.Entity.UID;
     generalData.dwParam = (uint)client.Entity.Action;
     if (client.Entity.Action == PhoenixProject.Game.Enums.ConquerAction.Cool)
     {
         if (Time32.Now >= client.CoolStamp.AddMilliseconds(1500))
         {
             if (client.Equipment.IsAllSuper())
                 generalData.dwParam = (uint)(generalData.dwParam | (uint)(client.Entity.Class * 0x10000 + 0x1000000));
             else if (client.Equipment.IsArmorSuper())
                 generalData.dwParam = (uint)(generalData.dwParam | (uint)(client.Entity.Class * 0x10000));
             client.SendScreen(generalData, true);
             client.CoolStamp = Time32.Now;
         }
         else
             client.SendScreen(generalData, false);
     }
     else
         client.SendScreen(generalData, false);
 }
开发者ID:Mromany,项目名称:Conquista5679-TheHunterSource-,代码行数:44,代码来源:PacketHandler.cs

示例8: AddFriend

 static void AddFriend(KnownPersons knownperson, Client.GameState client)
 {
     if (!client.Friends.ContainsKey(knownperson.UID) && client.Friends.Count < 100)
     {
         Client.GameState Client = ServerBase.Kernel.GamePool[knownperson.UID];
         if (Client != null)
         {
             Client.OnMessageBoxOK = delegate
             {
                 if (client != null)
                 {
                     if (client.Socket != null)
                     {
                         if (client.Socket.Connected)
                         {
                             if (!Client.Friends.ContainsKey(client.Entity.UID))
                             {
                                 client.Friends.Add(Client.Entity.UID, new PhoenixProject.Game.ConquerStructures.Society.Friend()
                                 {
                                     ID = Client.Entity.UID,
                                     Name = Client.Entity.Name
                                 });
                                 Client.Friends.Add(client.Entity.UID, new PhoenixProject.Game.ConquerStructures.Society.Friend()
                                 {
                                     ID = client.Entity.UID,
                                     Name = client.Entity.Name
                                 });
                                 client.Send(new KnownPersons(true)
                                 {
                                     UID = Client.Entity.UID,
                                     Type = KnownPersons.AddFriend,
                                     Name = Client.Entity.Name,
                                     Online = true
                                 });
                                 Client.Send(new KnownPersons(true)
                                 {
                                     UID = client.Entity.UID,
                                     Type = KnownPersons.AddFriend,
                                     Name = client.Entity.Name,
                                     Online = true
                                 });
                                 Database.KnownPersons.AddFriend(client, client.Friends[Client.Entity.UID]);
                                 client.SendScreen(new Message(Client.Entity.Name + " has accepted " + client.Entity.Name + "'s friendship request.", System.Drawing.Color.Red, Message.TopLeft), true);
                             }
                         }
                     }
                 }
             };
             Client.OnMessageBoxCANCEL = delegate
             {
                 if (client != null)
                 {
                     if (client.Socket != null)
                     {
                         if (client.Socket.Connected)
                         {
                             if (Client != null)
                             {
                                 if (Client.Socket != null)
                                 {
                                     if (Client.Socket.Connected)
                                     {
                                         client.Send(new Message(Client.Entity.Name + " has rejected your friendship request.", System.Drawing.Color.Red, Message.TopLeft));
                                     }
                                 }
                             }
                         }
                     }
                 }
             };
             Client.Send(new NpcReply(NpcReply.MessageBox, client.Entity.Name + " wants to be your friend."));
         }
     }
 }
开发者ID:Mromany,项目名称:Conquista5679-TheHunterSource-,代码行数:74,代码来源:PacketHandler.cs

示例9: UseItem


//.........这里部分代码省略.........
                case 724205:
                case 724207:
                case 724208:
                case 724210:
                case 724211:
                case 724212:
                case 724215:
                case 725055:
                case 725056:
                case 725057:
                case 725058:
                case 725160:
                case 725161:
                case 725162:
                case 725163:
                case 725164:
                case 725165:
                case 725166:
                case 725167:
                case 725168:
                case 725169:
                case 725170:
                case 725171: GainRefineryItem(item, client); break;
                #endregion
                #region FireWorks
                case 720030://firework
                    {
                        client.Inventory.Remove(item, Game.Enums.ItemUse.Remove);
                        _String str = new _String(true);
                        str.UID = client.Entity.UID;
                        str.TextsCount = 1;
                        str.Type = _String.Effect;
                        str.Texts.Add("zf2-e290");
                        client.SendScreen(str, true);
                        break;
                    }
                case 720031://EndlessLove
                    {
                        client.Inventory.Remove(item, Game.Enums.ItemUse.Remove);
                        _String str = new _String(true);
                        str.UID = client.Entity.UID;
                        str.TextsCount = 1;
                        str.Type = _String.Effect;
                        str.Texts.Add("zf2-e355");
                        client.SendScreen(str, true);
                        break;
                    }
                case 720032://MyWish
                    {
                        client.Inventory.Remove(item, Game.Enums.ItemUse.Remove);
                        _String str = new _String(true);
                        str.UID = client.Entity.UID;
                        str.TextsCount = 1;
                        str.Type = _String.Effect;
                        str.Texts.Add("zf2-e240");
                        client.SendScreen(str, true);
                        break;
                    }
                #endregion
                #region Demon Boxs
                #region 10cps
                case 720650:
                    {
                        Database.MonsterInformation monster = new PhoenixProject.Database.MonsterInformation();
                        // monster.Boss = true;
                        monster.Hitpoints = 33;
开发者ID:Mromany,项目名称:Conquista5679-TheHunterSource-,代码行数:67,代码来源:PacketHandler.cs

示例10: HandlePacket


//.........这里部分代码省略.........
                        break;

                    }
                case 2233:
                    {

                        GamePackets.Team_Pk pk = new Team_Pk(client.Entity.UID);
                        pk.Send(client);
                        break;

                    }
                case 2252:
                    {

                        // byte[] sed = new byte[60];
                        // ;rver };
                        client.Send(packet);
                        break;

                    }
                case 1130:
                    {
                        if (client.Entity.TitlePacket != null)
                        {
                            if (packet[9] == 4)
                            {
                                if (client.Entity.TitlePacket.dwParam2 != 0)
                                    client.Entity.TitlePacket.Send(client);
                            }
                            if (packet[9] == 3)
                            {
                                client.Entity.TitleActivated = packet[8];
                                client.Send(packet);
                                client.SendScreen(client.Entity.SpawnPacket, false);
                            }
                        }
                        break;
                    }
                #endregion
                #region TopGuilds
                case 1058:
                    {
                        if (client.Guild != null && client.AsMember != null)
                        {
                            if (client.AsMember != null)
                            {
                                Writer.WriteUInt32((uint)client.AsMember.SilverDonation, 8, packet);
                                if (client.Entity.GuildRank != (ushort)Conquer_Online_Server.Game.Enums.GuildMemberRank.DeputyLeader)
                                    if (client.Entity.GuildRank != (ushort)Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
                                        if (client.AsMember.SilverDonation > client.Guild.money_donation)
                                        {
                                            client.Guild.money_donation = (uint)client.AsMember.SilverDonation;
                                            client.Entity.GuildRank = (ushort)Conquer_Online_Server.Game.Enums.GuildMemberRank.OSupervisor;
                                            client.AsMember.Rank = (Conquer_Online_Server.Game.Enums.GuildMemberRank)client.Entity.GuildRank;
                                        }

                                Writer.WriteUInt32((uint)client.AsMember.ConquerPointDonation, 20, packet);
                                if (client.Entity.GuildRank != (ushort)Conquer_Online_Server.Game.Enums.GuildMemberRank.DeputyLeader)
                                    if (client.Entity.GuildRank != (ushort)Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
                                        if (client.AsMember.ConquerPointDonation > client.Guild.cp_donaion)
                                        {
                                            client.Guild.cp_donaion = (uint)client.AsMember.ConquerPointDonation;
                                            client.Entity.GuildRank = (ushort)Conquer_Online_Server.Game.Enums.GuildMemberRank.CPSupervisor;
                                            client.AsMember.Rank = (Conquer_Online_Server.Game.Enums.GuildMemberRank)client.Entity.GuildRank;
                                        }
开发者ID:faresali,项目名称:co-pserver,代码行数:66,代码来源:PacketHandler.cs

示例11: Chat

        static void Chat(Message message, Client.GameState client)
        {
            //Console.WriteLine("[" + client.Entity.Name + "][Chat] " + message.__Message);
            if (!CheckCommand(message, client))
            {
                if (message.ChatType != Message.Service)
                {
                    if (client.ChatBanned)
                        if (DateTime.Now > client.ChatBanTime.AddMinutes(client.ChatBanLasts))
                            client.ChatBanned = false;
                        else
                        {
                            int minutes = (int)new TimeSpan((client.ChatBanTime.AddMinutes(client.ChatBanLasts) - DateTime.Now).Ticks).TotalMinutes;
                            client.Send(new Message("You are banned from chat. You have to wait: " + minutes + " minutes before you can speak again!", System.Drawing.Color.Green, Message.Talk));
                            return;
                        }
                }
                switch (message.ChatType)
                {
                    case Message.HawkMessage:
                        {
                            if (client.Booth != null)
                            {
                                client.Booth.HawkMessage = message;
                                client.SendScreen(message, true);
                            }
                            break;
                        }
                    case Message.Talk:
                        {

                            client.SendScreen(message, false);
                            break;
                        }
                    case Message.Whisper:
                        {

                            var varr = ServerBase.Kernel.GamePool.Values.GetEnumerator();
                            varr.MoveNext();
                            int COunt = ServerBase.Kernel.GamePool.Count;
                            for (uint x = 0;
                                x < COunt;
                                x++)
                            {
                                if (x >= COunt) break;

                                Client.GameState pClient = (varr.Current as Client.GameState);

                                if (pClient.Entity.Name == message._To)
                                {
                                    message.Mesh = client.Entity.Mesh;
                                    pClient.Send(message);
                                    return;
                                }
                                varr.MoveNext();

                            }
                            foreach (Game.ConquerStructures.Society.Friend friend in client.Friends.Values)
                            {
                                if (friend.Name == message._To)
                                {
                                    message.__Message = message.__Message.Replace("'", "¹");
                                    client.OnMessageBoxEventParams = new object[3];
                                    client.OnMessageBoxEventParams[0] = client.Entity.UID;
                                    client.OnMessageBoxEventParams[1] = friend.ID;
                                    client.OnMessageBoxEventParams[2] = Console.TimeStamp() + message.__Message;
                                    client.OnMessageBoxOK =
                                        delegate
                                        {
                                            Database.KnownPersons.UpdateMessageOnFriend(Convert.ToUInt32(client.OnMessageBoxEventParams[0]), Convert.ToUInt32(client.OnMessageBoxEventParams[1]), Convert.ToString(client.OnMessageBoxEventParams[2]));
                                            client.Send(new Message("Message sent!", System.Drawing.Color.Green, Message.TopLeft));
                                        };
                                    client.OnMessageBoxCANCEL =
                                        delegate
                                        {
                                            client.OnMessageBoxEventParams = new object[0];
                                        };
                                    client.Send(new NpcReply(NpcReply.MessageBox, "To " + friend.Name + ": \r\n" + message.__Message + "\r\n\r\nSend? (It will replace other messages.)"));
                                    return;
                                }
                            }
                            client.Send(new Message("The player is not online.", System.Drawing.Color.Orange, Message.Service));
                            break;
                        }
                    case Message.Service:
                        {
                            var varr = ServerBase.Kernel.GamePool.Values.GetEnumerator();
                            varr.MoveNext();
                            int COunt = ServerBase.Kernel.GamePool.Count;
                            for (uint x = 0;
                                x < COunt;
                                x++)
                            {
                                if (x >= COunt) break;

                                Client.GameState pClient = (varr.Current as Client.GameState);
                                if (pClient.Account.State == Database.AccountTable.AccountState.GameMaster || pClient.Account.State == Database.AccountTable.AccountState.ProjectManager)
                                {
                                    message.ChatType = Message.Talk;
                                    string _Message = "Service-> " + client.Entity.Name + " needs your help. Respond to him/her right now!!!";
//.........这里部分代码省略.........
开发者ID:faresali,项目名称:co-pserver,代码行数:101,代码来源:PacketHandler.cs

示例12: Reincarnation

            public Reincarnation(Client.GameState client, byte new_class)
            {
                if (client.Entity.Level < 130)
                    return;
                _client = client;
                RemoveSkill = new SafeDictionary<ushort, Conquer_Online_Server.Interfaces.ISkill>(500);
                Addskill = new SafeDictionary<ushort, Conquer_Online_Server.Interfaces.ISkill>(500);
                #region Low level items
                for (byte i = 1; i < 9; i++)
                {
                    if (i != 7)
                    {
                        Interfaces.IConquerItem item = client.Equipment.TryGetItem(i);
                        if (item != null && item.ID != 0)
                        {
                            try
                            {
                                //client.UnloadItemStats(item, false);
                                Database.ConquerItemInformation cii = new Conquer_Online_Server.Database.ConquerItemInformation(item.ID, item.Plus);
                                item.ID = cii.LowestID(Network.PacketHandler.ItemMinLevel(Network.PacketHandler.ItemPosition(item.ID)));
                                item.Mode = Conquer_Online_Server.Game.Enums.ItemMode.Update;
                                item.Send(client);
                                client.LoadItemStats(item);
                                Database.ConquerItemTable.UpdateItemID(item, client);
                            }
                            catch
                            {
                                Console.WriteLine("Reborn item problem: " + item.ID);
                            }
                        }
                    }
                }
                Interfaces.IConquerItem hand = client.Equipment.TryGetItem(5);
                if (hand != null)
                {
                    client.Equipment.Remove(5);
                    client.CalculateStatBonus();
                    client.CalculateHPBonus();
                    client.SendStatMessage();
                }
                else
                    client.SendScreen(client.Entity.SpawnPacket, false);
                #endregion

                #region Remove Extra Skill
                if (client.Entity.FirstRebornClass == 15 && client.Entity.SecondRebornClass == 15 && client.Entity.Class == 15)
                {
                    WontAdd(Conquer_Online_Server.Game.Enums.SkillIDs.DragonWhirl);
                }
                if (client.Entity.FirstRebornClass == 25 && client.Entity.SecondRebornClass == 25 && client.Entity.Class == 25)
                {
                    WontAdd(Conquer_Online_Server.Game.Enums.SkillIDs.Perseverance);
                }
                if (client.Entity.FirstRebornClass == 45 && client.Entity.SecondRebornClass == 45 && client.Entity.Class == 45)
                {
                    WontAdd(Conquer_Online_Server.Game.Enums.SkillIDs.StarArrow);
                }
                if (client.Entity.FirstRebornClass == 55 && client.Entity.SecondRebornClass == 55 && client.Entity.Class == 55)
                {
                    WontAdd(Conquer_Online_Server.Game.Enums.SkillIDs.PoisonStar);
                }
                if (client.Entity.FirstRebornClass == 65 && client.Entity.SecondRebornClass == 65 && client.Entity.Class == 65)
                {
                    WontAdd(Conquer_Online_Server.Game.Enums.SkillIDs.SoulShackle);
                }
                if (client.Entity.FirstRebornClass == 135 && client.Entity.SecondRebornClass == 135 && client.Entity.Class == 135)
                {
                    WontAdd(Conquer_Online_Server.Game.Enums.SkillIDs.AzureShield);
                }
                if (client.Entity.FirstRebornClass == 145 && client.Entity.SecondRebornClass == 145 && client.Entity.Class == 145)
                {
                    WontAdd(Conquer_Online_Server.Game.Enums.SkillIDs.HeavenBlade);
                }
                #endregion
                client.Entity.FirstRebornClass = client.Entity.SecondRebornClass;
                client.Entity.SecondRebornClass = client.Entity.Class;
                client.Entity.Class = new_class;
                client.Entity.SecondRebornLevel = client.Entity.Level;
                //client.Entity.ReincarnationLev = client.Entity.Level;//kikoz
                client.Entity.Level = 15;
                client.Entity.Experience = 0;
                client.Entity.Atributes =
                 (ushort)(client.ExtraAtributePoints(client.Entity.FirstRebornClass, client.Entity.FirstRebornLevel) +
                  client.ExtraAtributePoints(client.Entity.SecondRebornClass, client.Entity.SecondRebornLevel) + 62);

                client.Spells.Clear();
                client.Spells = new SafeDictionary<ushort, Conquer_Online_Server.Interfaces.ISkill>(100);
                switch (client.Entity.FirstRebornClass)
                {
                    case 15:
                        {
                            Add(Conquer_Online_Server.Game.Enums.SkillIDs.Cyclone);
                            Add(Conquer_Online_Server.Game.Enums.SkillIDs.Hercules);
                            Add(Conquer_Online_Server.Game.Enums.SkillIDs.SpiritHealing);
                            Add(Conquer_Online_Server.Game.Enums.SkillIDs.Robot);
                            break;
                        }
                    case 25:
                        {
                            Add(Conquer_Online_Server.Game.Enums.SkillIDs.SuperMan);
//.........这里部分代码省略.........
开发者ID:faresali,项目名称:co-pserver,代码行数:101,代码来源:PacketHandler.cs

示例13: CheckForExtraWeaponPowers

        public static void CheckForExtraWeaponPowers(Client.GameState client, Entity attacked)
        {
            #region Right Hand
            if (client.Equipment.TryGetItem(ConquerItem.RightWeapon) != null)
            {
                if (client.Equipment.TryGetItem(ConquerItem.RightWeapon).ID != 0)
                {
                    var Item = client.Equipment.TryGetItem(ConquerItem.RightWeapon);
                    if (Item.Effect != Enums.ItemEffect.None)
                    {
                        if (ServerBase.Kernel.Rate(30))
                        {
                            switch (Item.Effect)
                            {
                                case Enums.ItemEffect.HP:
                                    {
                                        SpellUse spellUse = new SpellUse(true);
                                        spellUse.SpellID = 1175;
                                        spellUse.SpellLevel = 4;
                                        spellUse.X = client.Entity.X;
                                        spellUse.Y = client.Entity.Y;
                                        spellUse.Targets.Add(client.Entity.UID, 300);
                                        uint damage = Math.Min(300, client.Entity.MaxHitpoints - client.Entity.Hitpoints);
                                        client.Entity.Hitpoints += damage;
                                        client.SendScreen(spellUse, true);
                                        break;
                                    }
                                case Enums.ItemEffect.MP:
                                    {
                                        SpellUse spellUse = new SpellUse(true);
                                        spellUse.SpellID = 1175;
                                        spellUse.SpellLevel = 2;
                                        spellUse.X = client.Entity.X;
                                        spellUse.Y = client.Entity.Y;
                                        spellUse.Targets.Add(client.Entity.UID, 300);
                                        ushort damage = (ushort)Math.Min(300, client.Entity.MaxMana - client.Entity.Mana);
                                        client.Entity.Mana += damage;
                                        client.SendScreen(spellUse, true);
                                        break;
                                    }
                                case Enums.ItemEffect.Shield:
                                    {
                                        if (client.Entity.ContainsFlag(Update.Flags.MagicShield))
                                            return;
                                        SpellUse spellUse = new SpellUse(true);
                                        spellUse.SpellID = 1020;
                                        spellUse.SpellLevel = 0;
                                        spellUse.X = client.Entity.X;
                                        spellUse.Y = client.Entity.Y;
                                        spellUse.Targets.Add(client.Entity.UID, 120);
                                        client.Entity.ShieldTime = 0;
                                        client.Entity.ShieldStamp = Time32.Now;
                                        client.Entity.MagicShieldStamp = Time32.Now;
                                        client.Entity.MagicShieldTime = 0;

                                        client.Entity.AddFlag(Update.Flags.MagicShield);
                                        client.Entity.MagicShieldStamp = Time32.Now;
                                        client.Entity.MagicShieldIncrease = 2;
                                        client.Entity.MagicShieldTime = 120;
                                        if (client.Entity.EntityFlag == EntityFlag.Player)
                                            client.Send(ServerBase.Constants.Shield(2, 120));
                                        client.SendScreen(spellUse, true);
                                        break;
                                    }
                                case Enums.ItemEffect.Poison:
                                    {
                                        if (attacked != null)
                                        {
                                            if (attacked.UID == client.Entity.UID)
                                                return;
                                            if (attacked.ToxicFogLeft > 0)
                                                return;
                                            SpellUse spellUse = new SpellUse(true);
                                            spellUse.SpellID = 5040;
                                            spellUse.Attacker = attacked.UID;
                                            spellUse.SpellLevel = 9;
                                            spellUse.X = attacked.X;
                                            spellUse.Y = attacked.Y;
                                            spellUse.Targets.Add(attacked.UID, 0);
                                            spellUse.Targets[attacked.UID].Hit = true;
                                            attacked.ToxicFogStamp = Time32.Now;
                                            attacked.ToxicFogLeft = 10;
                                            attacked.ToxicFogPercent = 0.05F;
                                            client.SendScreen(spellUse, true);
                                        }
                                        break;
                                    }
                            }
                        }
                    }
                }
            }
            #endregion
            #region Left Hand
            if (client.Equipment.TryGetItem(ConquerItem.LeftWeapon) != null)
            {
                if (client.Equipment.TryGetItem(ConquerItem.LeftWeapon).ID != 0)
                {
                    var Item = client.Equipment.TryGetItem(ConquerItem.LeftWeapon);
                    if (Item.Effect != Enums.ItemEffect.None)
//.........这里部分代码省略.........
开发者ID:AiiMz,项目名称:PserverWork,代码行数:101,代码来源:Handle.cs

示例14: GetDialog


//.........这里部分代码省略.........
                                        }
                                    }
                                    break;
                                }
                            #endregion

                            #region Gates
                            case 516074:
                                {
                                    if (client.Guild != null)
                                    {
                                        if (client.Guild.PoleKeeper)
                                        {
                                            switch (npcRequest.OptionID)
                                            {
                                                case 0:
                                                    dialog.Text("Select the option you want to pursue.");
                                                    if (client.AsMember.Rank != Conquer_Online_Server.Game.Enums.GuildMemberRank.Member)
                                                    {
                                                        dialog.Option("Open gate.", 1);
                                                    }
                                                    dialog.Option("Get inside.", 3);
                                                    dialog.Option("Nothing.", 255);
                                                    dialog.Send();
                                                    break;
                                                case 1:
                                                    {
                                                        Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.Mesh = (ushort)(250 + Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.Mesh % 10);

                                                        Update upd = new Update(true);
                                                        upd.UID = Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.UID;
                                                        upd.Append(Update.Mesh, Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.Mesh);
                                                        Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.Hitpoints = Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.MaxHitpoints;
                                                        client.SendScreen(upd, true);
                                                        break;
                                                    }
                                                case 2:
                                                    {
                                                        Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.Mesh = (ushort)(240 + Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.Mesh % 10);

                                                        Update upd = new Update(true);
                                                        upd.UID = Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.UID;
                                                        upd.Append(Update.Mesh, Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.Mesh);
                                                        Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.Hitpoints = Conquer_Online_Server.Game.ConquerStructures.Society.GuildWar.LeftGate.MaxHitpoints;
                                                        client.SendScreen(upd, true);
                                                        break;
                                                    }
                                                case 3:
                                                    {
                                                        client.Entity.Teleport(1038, 162, 198);
                                                        break;
                                                    }
                                            }
                                        }
                                    }
                                    break;
                                }
                            case 516075:
                                {
                                    if (client.Guild != null)
                                    {
                                        if (client.Guild.PoleKeeper)
                                        {
                                            switch (npcRequest.OptionID)
                                            {
                                                case 0:
开发者ID:AiiMz,项目名称:PserverWork,代码行数:67,代码来源:NPCS.cs

示例15: Win


//.........这里部分代码省略.........
                loser.Send(loser.ArenaStatistic);
                QualifyEngine.DoQuit(loser);

            }
            else if (loser == null && winner != null)
            {
                winner.ArenaStatistic.PlayWith = 0;
                winner.ArenaStatistic.AcceptBox = false;
                winner.ArenaStatistic.TodayWin++;
                winner.ArenaStatistic.TotalWin++;
                ArenaSignup sign = new ArenaSignup();
                sign.DialogID = ArenaSignup.MainIDs.Match;
                sign.OptionID = ArenaSignup.DialogButton.Win;
                winner.Send(sign.BuildPacket());

                sign = new ArenaSignup();
                sign.DialogID = ArenaSignup.MainIDs.Match;
                sign.OptionID = ArenaSignup.DialogButton.MatchOff;
                winner.Send(sign.BuildPacket());
                Sort();
                QualifyEngine.DoQuit(winner);
                winner.Send(winner.ArenaStatistic);
            }
            else if (loser == null && winner == null)
            {
                return;
            }
            else
            {
                if (winner.ArenaStatistic.PlayWith != 0 && loser.ArenaStatistic.PlayWith != 0)
                {
                    int diff = (int)winner.ArenaStatistic.ArenaPoints - (int)loser.ArenaStatistic.ArenaPoints;
                    diff = diff < 0 ? -diff : diff;
                    if (diff == 0 || diff > 50)
                        diff = ServerBase.Kernel.Random.Next(30, 50);

                    ArenaSignup sign = new ArenaSignup();
                    sign.DialogID = ArenaSignup.MainIDs.Match;
                    loser.Send(sign.BuildPacket());
                    sign.OptionID = ArenaSignup.DialogButton.Win;
                    winner.Send(sign.BuildPacket());

                    sign = new ArenaSignup();
                    sign.DialogID = ArenaSignup.MainIDs.Match;
                    sign.OptionID = ArenaSignup.DialogButton.MatchOff;
                    loser.Send(sign.BuildPacket());
                    winner.Send(sign.BuildPacket());

                    winner.ArenaStatistic.PlayWith = 0;
                    loser.ArenaStatistic.PlayWith = 0;
                    winner.ArenaStatistic.AcceptBox = false;
                    loser.ArenaStatistic.AcceptBox = false;
                    winner.ArenaStatistic.ArenaPoints += (uint)diff;
                    Message message = null;
                    message = new Message("" + winner.ArenaStatistic.Name + " has Defeated " + loser.ArenaStatistic.Name + " in the Qualifier, and is currently ranked No. " + winner.ArenaStatistic.Rank + "!", System.Drawing.Color.Red, Message.Qualifier);
                    foreach (Client.GameState client in ServerBase.Kernel.GamePool.Values)
                    {
                        client.Send(message);
                    }
                    loser.ArenaStatistic.ArenaPoints -= (uint)diff;
                    if (loser.ArenaStatistic.ArenaPoints > 80000)
                        loser.ArenaStatistic.ArenaPoints = 0;
                    if (loser.ArenaStatistic.ArenaPoints == 0)
                        QualifyEngine.DoQuit(loser);

                    winner.ArenaStatistic.TodayWin++;
                    winner.ArenaStatistic.TotalWin++;
                    if (winner.ArenaStatistic.TodayWin == 9)
                        winner.IncreaseExperience(winner.ExpBall, false);
                    if (winner.ArenaStatistic.TodayBattles == 20)
                        winner.IncreaseExperience(winner.ExpBall, false);
                    if (loser.ArenaStatistic.TodayBattles == 20)
                        loser.IncreaseExperience(loser.ExpBall, false);
                    loser.ArenaStatistic.TotalLose++;

                    Sort();
                    winner.Send(winner.ArenaStatistic);
                    loser.Send(loser.ArenaStatistic);
                    QualifyEngine.DoQuit(winner);
                    QualifyEngine.DoQuit(loser);

                    winner.QualifierGroup = null;
                    loser.QualifierGroup = null;

                    _String str = new _String(true);
                    str.UID = winner.Entity.UID;
                    str.TextsCount = 1;
                    str.Type = _String.Effect;
                    str.Texts.Add("sports_victory");
                    winner.SendScreen(str, true);

                    _String strs = new _String(true);
                    strs.UID = loser.Entity.UID;
                    strs.TextsCount = 1;
                    strs.Type = _String.Effect;
                    strs.Texts.Add("sports_failure");
                    loser.SendScreen(strs, true);
                }
            }
        }
开发者ID:Mromany,项目名称:Conquista5679-TheHunterSource-,代码行数:101,代码来源:Arena.cs


注:本文中的Client.SendScreen方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。