Esempio n. 1
0
        public void LockBattleFrontStatus(int battleFrontId, Realms lockingRealm, VictoryPointProgress vpp)
        {
            var activeStatus = BattleFrontStatuses.Single(x => x.BattleFrontId == battleFrontId);

            activeStatus.Locked            = true;
            activeStatus.LockingRealm      = lockingRealm;
            activeStatus.FinalVictoryPoint = vpp;
            activeStatus.LockTimeStamp     = FrameWork.TCPManager.GetTimeStamp();
        }
        public void LockBattleFrontStatus(int battleFrontId, Realms lockingRealm, VictoryPointProgress vpp)
        {
            var activeStatus = BattleFrontStatuses.Single(x => x.BattleFrontId == battleFrontId);

            if (activeStatus == null)
            {
                ProgressionLogger.Warn($"Could not locate Active Status for battlefront Id {battleFrontId}");
            }

            activeStatus.Locked            = true;
            activeStatus.LockingRealm      = lockingRealm;
            activeStatus.FinalVictoryPoint = vpp;
            activeStatus.LockTimeStamp     = FrameWork.TCPManager.GetTimeStamp();

            ProgressionLogger.Info($"Locking BF Status {activeStatus.Description} to realm:{lockingRealm}");
        }
        public void WriteVictoryPoints(Realms realm, PacketOut Out, VictoryPointProgress vpp)
        {
            Out.WriteByte((byte)vpp.OrderVictoryPoints);
            Out.WriteByte((byte)vpp.DestructionVictoryPoints);

            //no clue but set to a value wont show the pool updatetimer
            Out.WriteByte(0);
            Out.WriteByte(0);

            Out.WriteByte(00);


            Out.WriteUInt32(0);
            //local timer for poolupdates
            //int curTimeSeconds = TCPManager.GetTimeStamp();

            //if (_nextVpUpdateTime == 0 || curTimeSeconds > _nextVpUpdateTime)
            //        Out.WriteUInt32(0);
            //    else
            //        Out.WriteUInt32((uint)(_nextVpUpdateTime - curTimeSeconds)); //in seconds
        }
        public void ResetProgressionCommunications(Player plr, Realms realm, VictoryPointProgress vpp, string forceT4)
        {
            _logger.Warn("F_CAMPAIGN_STATUS");
            PacketOut Out = new PacketOut((byte)Opcodes.F_CAMPAIGN_STATUS, 159);

            Out.WriteHexStringBytes("0005006700CB00"); // 7

            // Dwarfs vs Greenskins T1

            Out.WriteByte(0);    // 0 and ignored
            Out.WriteByte(100);  // % Order lock
            Out.WriteByte(0);    // % Dest lock
            // Dwarfs vs Greenskins T2
            //BuildCaptureStatus(Out, WorldMgr.GetRegion(12, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(50);
            Out.WriteByte(50);
            // Dwarfs vs Greenskins T3
            //BuildCaptureStatus(Out, WorldMgr.GetRegion(10, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(100);
            // Dwarfs vs Greenskins T4
            //BuildCaptureStatus(Out, WorldMgr.GetRegion(2, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(0);
            // Empire vs Chaos T1
            //BuildCaptureStatus(Out, WorldMgr.GetRegion(8, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(100);
            Out.WriteByte(0);
            // Empire vs Chaos T2
            //BuildCaptureStatus(Out, WorldMgr.GetRegion(14, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(100);
            // Empire vs Chaos T3
            // BuildCaptureStatus(Out, WorldMgr.GetRegion(6, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(100);
            // Empire vs Chaos T4
            // BuildCaptureStatus(Out, WorldMgr.GetRegion(11, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(0);
            // High Elves vs Dark Elves T1
            //BuildCaptureStatus(Out, WorldMgr.GetRegion(3, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(0);
            // High Elves vs Dark Elves T2
            //BuildCaptureStatus(Out, WorldMgr.GetRegion(15, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(0);
            // High Elves vs Dark Elves T3
            // BuildCaptureStatus(Out, WorldMgr.GetRegion(16, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(0);
            // High Elves vs Dark Elves T4
            //BuildCaptureStatus(Out, WorldMgr.GetRegion(4, false), realm);
            Out.WriteByte(0);
            Out.WriteByte(100);
            Out.WriteByte(100);

            Out.Fill(0, 83);

            if (string.IsNullOrEmpty(forceT4))
            {
                Out.WriteByte(3);       //dwarf fort
                Out.WriteByte((byte)1); // KV 0 contested, 1 order, 2 dest
                Out.WriteByte((byte)0); // TM
                Out.WriteByte((byte)2); // BC
                Out.WriteByte(3);       //fort

                Out.WriteByte(3);       //emp fort
                Out.WriteByte((byte)1); // reik
                Out.WriteByte((byte)0); // praag
                Out.WriteByte((byte)2); // cw
                Out.WriteByte(3);       //fort

                Out.WriteByte(3);       //elf fort
                Out.WriteByte((byte)1); // Eataine
                Out.WriteByte((byte)0); // DW
                Out.WriteByte((byte)2); // Caledor
                Out.WriteByte(3);       //fort
            }
            else
            {
                Out.WriteByte(3);                                     //dwarf fort
                Out.WriteByte(Convert.ToByte(forceT4[0].ToString())); // KV 0 contested, 1 order, 2 dest
                Out.WriteByte(Convert.ToByte(forceT4[1].ToString())); // TM
                Out.WriteByte(Convert.ToByte(forceT4[2].ToString())); // BC
                Out.WriteByte(3);                                     //fort

                Out.WriteByte(3);                                     //emp fort
                Out.WriteByte(Convert.ToByte(forceT4[3].ToString())); // reik
                Out.WriteByte(Convert.ToByte(forceT4[4].ToString())); // praag
                Out.WriteByte(Convert.ToByte(forceT4[5].ToString())); // cw
                Out.WriteByte(3);                                     //fort

                Out.WriteByte(3);                                     //elf fort
                Out.WriteByte(Convert.ToByte(forceT4[6].ToString())); // Eataine
                Out.WriteByte(Convert.ToByte(forceT4[7].ToString())); // DW
                Out.WriteByte(Convert.ToByte(forceT4[8].ToString())); // Caledor
                Out.WriteByte(3);                                     //fort
            }
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(0);
            Out.WriteByte(0);

            Out.WriteByte(00);

            Out.Fill(0, 4);

            _logger.Debug("APOCCOMM:" + Out.ToString());

            plr.SendPacket(Out);
        }
        public void SendCampaignStatus(Player plr, VictoryPointProgress vpp, Realms realm)
        {
            _logger.Trace("Send Campaign Status");
            _logger.Warn("F_CAMPAIGN_STATUS");
            PacketOut Out = new PacketOut((byte)Opcodes.F_CAMPAIGN_STATUS, 159);

            Out.WriteHexStringBytes("0005006700CB00"); // 7

            // Dwarfs vs Greenskins T1
            BuildCaptureStatus(Out, WorldMgr.GetRegion(1, false), realm);

            // Dwarfs vs Greenskins T2
            BuildCaptureStatus(Out, WorldMgr.GetRegion(12, false), realm);

            // Dwarfs vs Greenskins T3
            BuildCaptureStatus(Out, WorldMgr.GetRegion(10, false), realm);

            // Dwarfs vs Greenskins T4
            BuildCaptureStatus(Out, WorldMgr.GetRegion(2, false), realm);

            // Empire vs Chaos T1
            BuildCaptureStatus(Out, WorldMgr.GetRegion(8, false), realm);

            // Empire vs Chaos T2
            BuildCaptureStatus(Out, WorldMgr.GetRegion(14, false), realm);

            // Empire vs Chaos T3
            BuildCaptureStatus(Out, WorldMgr.GetRegion(6, false), realm);

            // Empire vs Chaos T4
            BuildCaptureStatus(Out, WorldMgr.GetRegion(11, false), realm);

            // High Elves vs Dark Elves T1
            BuildCaptureStatus(Out, WorldMgr.GetRegion(3, false), realm);

            // High Elves vs Dark Elves T2
            BuildCaptureStatus(Out, WorldMgr.GetRegion(15, false), realm);

            // High Elves vs Dark Elves T3
            BuildCaptureStatus(Out, WorldMgr.GetRegion(16, false), realm);

            // High Elves vs Dark Elves T4
            BuildCaptureStatus(Out, WorldMgr.GetRegion(4, false), realm);

            Out.Fill(0, 83);

            // RB   4/24/2016   Added logic for T4 campaign progression.
            //gs t4
            // 0 contested 1 order controled 2 destro controled 3 notcontroled locked
            Out.WriteByte(3);                                          //dwarf fort
            BuildBattleFrontStatus(Out, WorldMgr.GetRegion(2, false)); //kadrin valley
            Out.WriteByte(3);                                          //orc fort

            //chaos t4
            Out.WriteByte(3);   //empire fort

            Out.WriteByte((byte)3);
            BuildBattleFrontStatus(Out, WorldMgr.GetRegion(11, false)); //reikland
            Out.WriteByte(3);                                           //chaos fort

            //elf
            Out.WriteByte(3);                                          //elf fort
            BuildBattleFrontStatus(Out, WorldMgr.GetRegion(4, false)); //etaine
            Out.WriteByte(3);                                          //delf fort

            Out.WriteByte(0);                                          // Order underdog rating
            Out.WriteByte(0);                                          // Destruction underdog rating

            if (plr == null)
            {
                byte[] buffer = Out.ToArray();

                if (Player._Players.Count == 0)
                {
                    plr.SendPacket(Out);
                }
                else
                {
                    lock (Player._Players)
                    {
                        foreach (Player player in Player._Players)
                        {
                            if (player == null || player.IsDisposed || !player.IsInWorld())
                            {
                                continue;
                            }

                            PacketOut playerCampaignStatus = new PacketOut(0, 159)
                            {
                                Position = 0
                            };
                            playerCampaignStatus.Write(buffer, 0, buffer.Length);

                            if (player.Region?.Campaign != null)
                            {
                                WriteVictoryPoints(player.Realm, playerCampaignStatus, vpp);
                            }

                            else
                            {
                                playerCampaignStatus.Fill(0, 9);
                            }

                            playerCampaignStatus.Fill(0, 4);

                            player.SendPacket(playerCampaignStatus);
                        }
                    }
                }
            }
            else
            {
                if (plr.Region?.Campaign != null)
                {
                    WriteVictoryPoints(plr.Realm, Out, vpp);
                }

                else
                {
                    Out.Fill(0, 9);
                }

                Out.Fill(0, 4);

                plr.SendPacket(Out);
            }
        }