public override void Execute(Level level)
 {
     if (level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
     {
         if (m_vArgs.Length >= 1)
         {
             string message = string.Join("\n", m_vArgs.Skip(1));
             AllianceMailStreamEntry mail = new AllianceMailStreamEntry();
             mail.SetId((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
             mail.SetSenderId(0);
             mail.SetSenderAvatarId(0);
             mail.SetSenderName("EuroClash.Net");
             mail.SetIsNew(0);
             mail.SetAllianceId(0);
             mail.SetAllianceBadgeData(0);
             mail.SetAllianceName("Automatic Information");
             mail.SetMessage("Total Completed Connections: " + ResourcesManager.GetConnectedClients().Count + "\nPlayers Online: " + ResourcesManager.GetOnlinePlayers().Count + "\nIn Memory Alliances: " + ObjectManager.GetInMemoryAlliances().Count + "\nIn Memory Levels: " + ResourcesManager.GetInMemoryLevels().Count);
             mail.SetSenderLeagueId(22);
             var p = new AvatarStreamEntryMessage(level.GetClient());
             p.SetAvatarStreamEntry(mail);
             PacketManager.ProcessOutgoingPacket(p);
         }
     }
     else
     {
         SendCommandFailedMessage(level.GetClient());
     }
 }
예제 #2
0
        public override void Execute(Level level)
        {
            if(level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
            {
                if(m_vArgs.Length >= 1)
                {
                    string message = string.Join(" ", m_vArgs.Skip(1));
                    var avatar = level.GetPlayerAvatar();
                    AllianceMailStreamEntry mail = new AllianceMailStreamEntry();
                    mail.SetId((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
                    mail.SetSenderId(avatar.GetId());
                    mail.SetSenderAvatarId(avatar.GetId());
                    mail.SetSenderName(avatar.GetAvatarName());
                    mail.SetIsNew(0);
                    mail.SetAllianceId(0);
                    mail.SetAllianceBadgeData(0);
                    mail.SetAllianceName("Legendary Administrator");
                    mail.SetMessage(message);
                    mail.SetSenderLevel(avatar.GetAvatarLevel());
                    mail.SetSenderLeagueId(avatar.GetLeagueId());

                    foreach (var onlinePlayer in ResourcesManager.GetOnlinePlayers())
                    {
                        var p = new AvatarStreamEntryMessage(onlinePlayer.GetClient());
                        p.SetAvatarStreamEntry(mail);
                        PacketManager.ProcessOutgoingPacket(p);
                    }
                }
            }
            else
            {
                SendCommandFailedMessage(level.GetClient());
            }
        }
        public override void Execute(Level level)
        {
            if (level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
            {
                if (m_vArgs.Length >= 1)
                {
                    var avatar = level.GetPlayerAvatar();
                    AllianceMailStreamEntry mail = new AllianceMailStreamEntry();
                    mail.SetId((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
                    mail.SetSenderId(0);
                    mail.SetSenderAvatarId(0);
                    mail.SetSenderName("System Admin");
                    mail.SetIsNew(0);
                    mail.SetAllianceId(0);
                    mail.SetAllianceBadgeData(0);
                    mail.SetAllianceName("System Manager");
                    mail.SetMessage("System is restarting in a few moments");
                    mail.SetSenderLevel(500);
                    mail.SetSenderLeagueId(22);

                    foreach (var onlinePlayer in ResourcesManager.GetOnlinePlayers())
                    {
                        var p = new AvatarStreamEntryMessage(onlinePlayer.GetClient());
                        p.SetAvatarStreamEntry(mail);
                        PacketManager.ProcessOutgoingPacket(p);
                        Console.WriteLine("issue");
                    }
                    System.Diagnostics.Process.Start(@"tools\ucs-restart.bat");
                }
            }
            else
            {
                SendCommandFailedMessage(level.GetClient());
            }
        }
 public override void Execute(Level level)
 {
     if(level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
     {
         if(m_vArgs.Length >= 2)
         {
             try
             {
                 long id = Convert.ToInt64(m_vArgs[1]);
                 var l = ResourcesManager.GetPlayer(id);
                 if(ResourcesManager.IsPlayerOnline(l))
                 {
                     var p = new OutOfSyncMessage(l.GetClient());
                     PacketManager.ProcessOutgoingPacket(p);
                 }
                 else
                 {
                     Debugger.WriteLine("Kick failed: id " + id + " not found");
                 }
             }
             catch(Exception ex)
             {
                 Debugger.WriteLine("Kick failed with error: " + ex.ToString()); 
             }
         }
     }
     else
     {
         SendCommandFailedMessage(level.GetClient());
     }
 }
예제 #5
0
        public override void Execute(Level level)
        {
            if (level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
            {
                if (m_vArgs.Length >= 1)
                {

                    //SetResourceCount(ObjectManager.DataTables.GetResourceByName("Gold"), Convert.ToInt32(ConfigurationManager.AppSettings["startingGold"]));
                   // ResourcesManager.GetPlayer().GetPlayerAvatar().SetResourceCount(ObjectManager.DataTables.GetResourceByName("Gold"), Convert.ToInt32("32"));
                    level.GetPlayerAvatar().SetResourceCount(ObjectManager.DataTables.GetResourceByName("Gold"), Convert.ToInt32("999999999"));
                    level.GetPlayerAvatar().SetResourceCount(ObjectManager.DataTables.GetResourceByName("DarkElixir"), Convert.ToInt32("999999999"));
                    level.GetPlayerAvatar().SetResourceCount(ObjectManager.DataTables.GetResourceByName("Elixir"), Convert.ToInt32("999999999"));
                    level.GetPlayerAvatar().SetDiamonds(99999999);
                    if (ResourcesManager.IsPlayerOnline(level))
                    {
                        var p = new OutOfSyncMessage(level.GetClient());
                        PacketManager.ProcessOutgoingPacket(p);
                    }
                }
            }
            else
            {
                SendCommandFailedMessage(level.GetClient());
            }
        }
예제 #6
0
 public void CreateAccount(Level l)
 {
     try
     {
         Debugger.WriteLine("Saving new account to database (player id: " + l.GetPlayerAvatar().GetId() + ")");
         using (var db = new Database.ucsdbEntities(m_vConnectionString))
         {
             db.player.Add(
                 new Database.player
                 {
                     PlayerId = l.GetPlayerAvatar().GetId(),
                     AccountStatus = l.GetAccountStatus(),
                     AccountPrivileges = l.GetAccountPrivileges(),
                     LastUpdateTime = l.GetTime(),
                     Avatar = l.GetPlayerAvatar().SaveToJSON(),
                     GameObjects = l.SaveToJSON()
                 }
             );
             db.SaveChanges();
         }
     }
     catch (Exception ex)
     {
         Debugger.WriteLine("An exception occured during CreateAccount processing:", ex);
     }
 }
예제 #7
0
        public override void Execute(Level level)
        {
            if (level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
            {
                if (m_vArgs.Length >= 1)
                {
                    //"Established Connections: " Maybe useless
                    string message = string.Join("\n", m_vArgs.Skip(1));
                    AllianceMailStreamEntry mail = new AllianceMailStreamEntry();
                    mail.SetId((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
                    mail.SetSenderId(0);
                    mail.SetSenderAvatarId(0);
                    mail.SetSenderName("UCS System");
                    mail.SetIsNew(0);
                    mail.SetAllianceId(0);
                    mail.SetAllianceBadgeData(0);
                    mail.SetAllianceName("Legendary Administrator");
                    mail.SetMessage("Latest Server Status:\nConnected Players:" + ResourcesManager.GetConnectedClients().Count + "\nIn Memory Alliances:" + ObjectManager.GetInMemoryAlliances().Count + "\nIn Memory Levels:" + ResourcesManager.GetInMemoryLevels().Count);
                    mail.SetSenderLeagueId(22);

                    foreach (var onlinePlayer in ResourcesManager.GetOnlinePlayers())
                    {
                        var p = new AvatarStreamEntryMessage(onlinePlayer.GetClient());
                        p.SetAvatarStreamEntry(mail);
                        PacketManager.ProcessOutgoingPacket(p);
                    }
                }
            }
            else
            {
                SendCommandFailedMessage(level.GetClient());
            }
        }
 public override void Execute(Level level)
 {
     if(level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
     {
         if(m_vArgs.Length >= 2)
         {
             try
             {
                 long id = Convert.ToInt64(m_vArgs[1]);
                 var l = ResourcesManager.GetPlayer(id);
                 if(l != null)
                 {
                     l.SetAccountStatus(0);
                 }
                 else
                 {
                     Debugger.WriteLine("Unban failed: id " + id + " not found");
                 }
             }
             catch(Exception ex)
             {
                 Debugger.WriteLine("Unban failed with error: " + ex.ToString()); 
             }
         }
     }
     else
     {
         SendCommandFailedMessage(level.GetClient());
     }
 }
예제 #9
0
 public override void Execute(Level level)
 {
     if (level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
     {
         if (m_vArgs.Length >= 1)
         {
             string message = string.Join("\n", m_vArgs.Skip(1));
             AllianceMailStreamEntry mail = new AllianceMailStreamEntry();
             mail.SetId((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
             mail.SetSenderId(0);
             mail.SetSenderAvatarId(0);
             mail.SetSenderName("EuroClash.Net");
             mail.SetIsNew(0);
             mail.SetAllianceId(0);
             mail.SetAllianceBadgeData(0);
             mail.SetAllianceName("Automatic Information");
             mail.SetMessage("/info72 - Shows Server Statistics \n/refill - Refill Resources \n/changelog - View Last Updates");
             mail.SetSenderLeagueId(22);
             var p = new AvatarStreamEntryMessage(level.GetClient());
             p.SetAvatarStreamEntry(mail);
             PacketManager.ProcessOutgoingPacket(p);
         }
     }
     else
     {
         SendCommandFailedMessage(level.GetClient());
     }
 }
예제 #10
0
        public override void Execute(Level level)
        {
            if (level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
            {
                if (m_vArgs.Length >= 1)
                {
                    if(level.GetAccountPrivileges() == 5)
                    {

                    } else
                    {
                        if (ResourcesManager.IsPlayerOnline(level))
                        {
                            var p = new OutOfSyncMessage(level.GetClient());
                            PacketManager.ProcessOutgoingPacket(p);
                        }
                    }
                }
            }
            else
            {
                SendCommandFailedMessage(level.GetClient());
            }
        }
 public override void Execute(Level level)
 {
     if(level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
     {
         foreach (var onlinePlayer in ResourcesManager.GetOnlinePlayers())
         {
             var p = new ShutdownStartedMessage(onlinePlayer.GetClient());
             p.SetCode(5);
             PacketManager.ProcessOutgoingPacket(p);
         }
     }
     else
     {
         SendCommandFailedMessage(level.GetClient());
     }
 }
예제 #12
0
 public override void Execute(Level level)
 {
     if (level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
     {
         if (m_vArgs.Length >= 1)
         {
             try
             {
                 long id = Convert.ToInt64(m_vArgs[1]);
                 var l = ResourcesManager.GetPlayer(id, true);
                 if (l != null)
                 {
                     l.GetPlayerAvatar().SetName(m_vArgs[2]);
                     if (ResourcesManager.IsPlayerOnline(l))
                     {
                         var p = new AvatarNameChangeOkMessage(l.GetClient());
                         p.SetAvatarName(m_vArgs[2]);
                         PacketManager.ProcessOutgoingPacket(p);
                     }
                 }
                 else
                 {
                     Debugger.WriteLine("RenameAvatar failed: id " + id + " not found");
                 }
             }
             catch (Exception ex)
             {
                 Debugger.WriteLine("RenameAvatar failed with error: " + ex.ToString());
             }
         }
     }
     else
     {
         SendCommandFailedMessage(level.GetClient());
     }
 }
예제 #13
0
 public override void Execute(Level level)
 {
     if (level.GetAccountPrivileges() >= GetRequiredAccountPrivileges())
     {
         if (m_vArgs.Length >= 1)
         {
             using (StreamReader sr = new StreamReader(@"gamefiles/default/homemax.json"))
             {
                 m_vHomeTowerMax = sr.ReadToEnd();
             }
             level.SetHome(m_vHomeTowerMax);
             //level.LoadFromJSON(m_vHomeTowerMax);
             if (ResourcesManager.IsPlayerOnline(level))
             {
                 var p = new OutOfSyncMessage(level.GetClient());
                 PacketManager.ProcessOutgoingPacket(p);
             }
         }
     }
     else
     {
         SendCommandFailedMessage(level.GetClient());
     }
 }
예제 #14
0
        public override void Process(Level level)
        {
            if (Convert.ToBoolean(ConfigurationManager.AppSettings["maintenanceMode"]))
            {
                var p = new LoginFailedMessage(this.Client);
                p.SetErrorCode(10);
                PacketManager.ProcessOutgoingPacket(p);
                return;
            }

            string[] versionData = ConfigurationManager.AppSettings["clientVersion"].Split('.');
            if(versionData.Length >= 2)
            {
                if(m_vClientMajorVersion != Convert.ToInt32(versionData[0]) || m_vClientBuild != Convert.ToInt32(versionData[1]))
                {
                    var p = new LoginFailedMessage(this.Client);
                    p.SetErrorCode(8);
                    p.SetUpdateURL("http://www.ultrapowa.com/");
                    PacketManager.ProcessOutgoingPacket(p);
                    return;
                }
            }
            else
            {
                Debugger.WriteLine("Connection failed. UCS config key clientVersion is not properly set.");
            }

            level = ResourcesManager.GetPlayer(m_vAccountId);
            if(level != null)
            {
                if(level.GetAccountStatus() == 99)
                {
                    var p = new LoginFailedMessage(this.Client);
                    p.SetErrorCode(11);
                    PacketManager.ProcessOutgoingPacket(p);
                    return;
                }
            }

            if(Convert.ToBoolean(ConfigurationManager.AppSettings["useCustomPatch"]))
            {
                if (m_vResourceSha != ObjectManager.FingerPrint.sha)
                {
                    var p = new LoginFailedMessage(this.Client);
                    p.SetErrorCode(7);
                    p.SetResourceFingerprintData(ObjectManager.FingerPrint.SaveToJson());
                    p.SetContentURL(ConfigurationManager.AppSettings["patchingServer"]);
                    p.SetUpdateURL("http://www.ultrapowa.com/");
                    PacketManager.ProcessOutgoingPacket(p);
                    return;
                }
            }

            this.Client.ClientSeed = m_vClientSeed;
            PacketManager.ProcessOutgoingPacket(new SessionKeyMessage(this.Client));
            Debugger.WriteLine("[D] Retrieve Player Data for player " + m_vAccountId);
            Console.ResetColor();
            //New player
            if (level == null)
            {
                level = ObjectManager.CreateAvatar(m_vAccountId);
                byte[] tokenSeed = new byte[20];
                new Random().NextBytes(tokenSeed);
                SHA1 sha = new SHA1CryptoServiceProvider();
                m_vPassToken = BitConverter.ToString(sha.ComputeHash(tokenSeed)).Replace("-","");
            }
            if (level.GetAccountPrivileges() > 0)
                level.GetPlayerAvatar().SetLeagueId(21);
            if (level.GetAccountPrivileges() > 4)
                level.GetPlayerAvatar().SetLeagueId(22);
            ResourcesManager.LogPlayerIn(level, this.Client);
            level.Tick();

            var loginOk = new LoginOkMessage(this.Client);
            var avatar = level.GetPlayerAvatar();
            loginOk.SetAccountId(avatar.GetId());
            loginOk.SetPassToken(m_vPassToken);
            loginOk.SetServerMajorVersion(m_vClientMajorVersion);
            loginOk.SetServerBuild(m_vClientBuild);
            loginOk.SetContentVersion(m_vClientContentVersion);

            loginOk.SetDaysSinceStartedPlaying(10);
            loginOk.SetServerTime(Math.Round((level.GetTime().Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000).ToString());
            loginOk.SetAccountCreatedDate("1414003838000");
            loginOk.SetStartupCooldownSeconds(0);
            loginOk.SetCountryCode("US");
            PacketManager.ProcessOutgoingPacket(loginOk);

            Alliance alliance = ObjectManager.GetAlliance(level.GetPlayerAvatar().GetAllianceId());
            if (alliance == null)
                level.GetPlayerAvatar().SetAllianceId(0);
            PacketManager.ProcessOutgoingPacket(new OwnHomeDataMessage(this.Client, level));
            if (alliance != null)
                PacketManager.ProcessOutgoingPacket(new AllianceStreamMessage(this.Client, alliance));
        }
        public override void Process(Level level)
        {
            if(Message.Length > 0)
            {
                if(Message[0] == '/')
                {
                    object obj = GameOpCommandFactory.Parse(Message);
                    if (obj != null)
                    {
                        string player = "";
                        if (level != null)
                            player += " (" + level.GetPlayerAvatar().GetId() + ", " + level.GetPlayerAvatar().GetAvatarName() + ")";
                        Debugger.WriteLine("\t" + obj.GetType().Name + player);
                        ((GameOpCommand)obj).Execute(level);
                    }
                }
                else
                {
                    var alliances = ObjectManager.GetAlliance(level.GetPlayerAvatar().GetAllianceId());
                    long senderId = level.GetPlayerAvatar().GetId();
                    string senderName = level.GetPlayerAvatar().GetAvatarName();
                    foreach(var onlinePlayer in ResourcesManager.GetOnlinePlayers())
                    {
                        var p = new GlobalChatLineMessage(onlinePlayer.GetClient());

                        if (onlinePlayer.GetAccountPrivileges() > 0)
                        {
                            if (level.GetPlayerAvatar().GetAllianceId() >= 1)
                            {
                                p.SetPlayerName(senderName + " #" + senderId + "\n🏰	 " + alliances.GetAllianceName());
                            }
                            else
                            {
                                p.SetPlayerName(senderName + " #" + senderId);
                            }
                        }
                        else
                        {
                            if (level.GetPlayerAvatar().GetAllianceId() >= 1)
                            {
                                p.SetPlayerName(senderName + "\n🏰 " + alliances.GetAllianceName());
                            }
                            else
                            {
                                p.SetPlayerName(senderName);
                            }
                        }

                        if(level.GetPlayerAvatar().GetAllianceId() >= 1)
                        {
                            p.SetChatMessage("\n" + this.Message);
                        }
                        else
                        {
                            p.SetChatMessage(this.Message);
                        }

                        p.SetPlayerId(senderId);

                        // 400 BRONZO || 800 ARGENTO || ORO 1400 | CRISTALLO 2000 | MASTER 2600 | CHAMP 3200 | TITAN 4100
                        if (level.GetPlayerAvatar().GetScore() >= 400 && level.GetPlayerAvatar().GetScore() <= 800 )
                        {
                            p.SetLeagueId(3); // bronzo
                        }
                        else if (level.GetPlayerAvatar().GetScore() >= 801 && level.GetPlayerAvatar().GetScore() <= 1400)
                        {
                            p.SetLeagueId(6);
                        }
                        else if (level.GetPlayerAvatar().GetScore() >= 1401 && level.GetPlayerAvatar().GetScore() <= 2000)
                        {
                            p.SetLeagueId(9);
                        }
                        else if (level.GetPlayerAvatar().GetScore() >= 2001 && level.GetPlayerAvatar().GetScore() <= 2600)
                        {
                            p.SetLeagueId(12);
                        }
                        else if (level.GetPlayerAvatar().GetScore() >= 2601 && level.GetPlayerAvatar().GetScore() <= 3200)
                        {
                            p.SetLeagueId(15);
                        }
                        else if (level.GetPlayerAvatar().GetScore() >= 3201 && level.GetPlayerAvatar().GetScore() <= 4099)
                        {
                            p.SetLeagueId(18);
                        }
                        else if (level.GetPlayerAvatar().GetScore() >= 4100)
                        {
                            p.SetLeagueId(21);
                        }

                        if(level.GetAccountPrivileges() == 5)
                        {
                            p.SetLeagueId(22);
                        }

                        //p.SetLeagueId(4);
                        //level.GetPlayerAvatar().GetScore();
                        PacketManager.ProcessOutgoingPacket(p);
                    }
                }
            }
        }