public override void Process(Level level)
        {
            //Clan creation
            Alliance alliance = ObjectManager.CreateAlliance(0);
            alliance.SetAllianceName(m_vAllianceName);
            alliance.SetAllianceDescription(m_vAllianceDescription);
            alliance.SetAllianceType(m_vAllianceType);
            alliance.SetRequiredScore(m_vRequiredScore);
            alliance.SetAllianceBadgeData(m_vAllianceBadgeData);
            //alliance.SetAllianceOrigin(m_vAllianceOrigin);
            alliance.SetWarFrequency(m_vWarFrequency);

            //Set player clan
            //ObjectManager.OnlinePlayers.TryGetValue(p.Client, out player);
            level.GetPlayerAvatar().SetAllianceId(alliance.GetAllianceId());
            AllianceMemberEntry member = new AllianceMemberEntry(level.GetPlayerAvatar().GetId());
            member.SetRole(2);
            alliance.AddAllianceMember(member);

            var joinAllianceCommand = new JoinAllianceCommand();
            joinAllianceCommand.SetAlliance(alliance);
            var availableServerCommandMessage = new AvailableServerCommandMessage(this.Client);
            availableServerCommandMessage.SetCommandId(1);
            availableServerCommandMessage.SetCommand(joinAllianceCommand);
            PacketManager.ProcessOutgoingPacket(availableServerCommandMessage);
        }
 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
         {
             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)
                     p.SetPlayerName(senderName + " #" + senderId);
                 else
                     p.SetPlayerName(senderName);
                 p.SetChatMessage(this.Message);
                 p.SetPlayerId(senderId);
                 p.SetLeagueId(level.GetPlayerAvatar().GetLeagueId());
                 PacketManager.ProcessOutgoingPacket(p);
             }
         }
     }    
 }
Пример #3
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());
            }
        }
 public override void Process(Level level)
 {
     level.GetPlayerAvatar().SetName(this.PlayerName);
     var p = new AvatarNameChangeOkMessage(this.Client);
     p.SetAvatarName(level.GetPlayerAvatar().GetAvatarName());
     PacketManager.ProcessOutgoingPacket(p);
 }
        public override void Process(Level level)
        {
            var alliance = ObjectManager.GetAlliance(m_vAllianceId);
            if (alliance != null)
            {
                if(!alliance.IsAllianceFull())
                {
                    level.GetPlayerAvatar().SetAllianceId(alliance.GetAllianceId());
                    AllianceMemberEntry member = new AllianceMemberEntry(level.GetPlayerAvatar().GetId());
                    member.SetRole(1);
                    alliance.AddAllianceMember(member);

                    var joinAllianceCommand = new JoinAllianceCommand();
                    joinAllianceCommand.SetAlliance(alliance);
                    var availableServerCommandMessage = new AvailableServerCommandMessage(this.Client);
                    availableServerCommandMessage.SetCommandId(1);
                    availableServerCommandMessage.SetCommand(joinAllianceCommand);

                    PacketManager.ProcessOutgoingPacket(availableServerCommandMessage);
                    PacketManager.ProcessOutgoingPacket(new AllianceStreamMessage(this.Client, alliance));

                    if(alliance.GetScore() == 10000)
                    {
                        alliance.SetScore(0);
                    }

                    int percentuale = (level.GetPlayerAvatar().GetScore()) / (2);
                    alliance.SetScore(alliance.GetScore() + percentuale);
                }
            }
        }
        public override void Process(Level level)
        {
            try
            {
                level.Tick();

                if (NumberOfCommands > 0)
                {
                    using (var br = new BinaryReader(new MemoryStream(NestedCommands)))
                    {
                        for (int i = 0; i < NumberOfCommands; i++)
                        {
                            object obj = CommandFactory.Read(br);
                            if (obj != null)
                            {
                                string player = "";
                                if (level != null)
                                    player += " (" + level.GetPlayerAvatar().GetId() + ", " + level.GetPlayerAvatar().GetAvatarName() + ")";
                                Debugger.WriteLine("\t" + obj.GetType().Name + player);
                                ((Command)obj).Execute(level);
                                //Debugger.WriteLine("finished processing of command " + obj.GetType().Name + player);
                            }
                            else
                                break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Debugger.WriteLine("Exception occurred during command processing." + ex.ToString());
                Console.ResetColor();
            }
        }
Пример #7
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);
     }
 }
 public override void Process(Level level)
 {
     Alliance alliance = ObjectManager.GetAlliance(level.GetPlayerAvatar().GetAllianceId());
     level.GetPlayerAvatar().SetAllianceId(0);
     alliance.RemoveMember(level.GetPlayerAvatar().GetId());
     //envoyer message départ à tous les membres
     //si chef nommer un nouveau chef
     //if alliance member count = 0, supprimer alliance
     PacketManager.ProcessOutgoingPacket(new LeaveAllianceOkMessage(this.Client, alliance));
 }
Пример #9
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 Process(Level level)
        {
            var avatar = level.GetPlayerAvatar();
            var allianceId = avatar.GetAllianceId();
            if (allianceId > 0)
            {
                ChatStreamEntry cm = new ChatStreamEntry();
                cm.SetId((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
                cm.SetAvatar(avatar);
                cm.SetMessage(m_vChatMessage);

                Alliance alliance = ObjectManager.GetAlliance(allianceId);
                if (alliance != null)
                {
                    alliance.AddChatMessage(cm);

                    foreach (var onlinePlayer in ResourcesManager.GetOnlinePlayers())
                    {
                        if(onlinePlayer.GetPlayerAvatar().GetAllianceId() == allianceId)
                        {
                            var p = new AllianceStreamEntryMessage(onlinePlayer.GetClient());
                            p.SetStreamEntry(cm);
                            PacketManager.ProcessOutgoingPacket(p);
                        }
                    }
                }
            }
        }
 public override void Execute(Level level)
 {
     ResourceData rd = (ResourceData)ObjectManager.DataTables.GetDataById(m_vResourceId);
     if(rd != null)
     {
         if (m_vResourceCount >= 1)
         {
             if (!rd.PremiumCurrency)
             {
                 var avatar = level.GetPlayerAvatar();
                 int diamondCost = GamePlayUtil.GetResourceDiamondCost(m_vResourceCount, rd);
                 int unusedResourceCap = avatar.GetUnusedResourceCap(rd);
                 if(m_vResourceCount <= unusedResourceCap)
                 {
                     if(avatar.HasEnoughDiamonds(diamondCost))
                     {
                         avatar.UseDiamonds(diamondCost);
                         avatar.CommodityCountChangeHelper(0, rd, m_vResourceCount);
                         if(m_vIsCommandEmbedded >= 1)
                             ((Command)m_vCommand).Execute(level);
                     }
                 }
             }
         }   
     }
 }
        //00 00 02 01 1D CD 65 10 00 00 38 A6

        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();
            GameObject go = level.GameObjectManager.GetGameObjectByID(m_vBuildingId);
            
            if(go != null)
            {
                if(go.ClassId == 0)
                {
                    Building b = (Building)go;
                    UnitProductionComponent upc = b.GetUnitProductionComponent();
                    if(upc != null)
                    {
                        int totalRemainingTime = upc.GetTotalRemainingSeconds();
                        int cost = GamePlayUtil.GetSpeedUpCost(totalRemainingTime);
                        if(upc.IsSpellForge())
                        {
                            int multiplier = ObjectManager.DataTables.GetGlobals().GetGlobalData("SPELL_SPEED_UP_COST_MULTIPLIER").NumberValue;
                            cost = (int)(((long)cost * (long)multiplier * (long)1374389535) >> 32);
                            cost = Math.Max((cost >> 5) + (cost >> 31), 1);
                        }
                        if (ca.HasEnoughDiamonds(cost))
                        {
                            if (upc.HasHousingSpaceForSpeedUp())
                            {
                                ca.UseDiamonds(cost);
                                upc.SpeedUp();
                            }
                        }
                    }
                }
            }
        }
        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)
        {
            var avatar = level.GetPlayerAvatar();
            var allianceId = avatar.GetAllianceId();
            if (allianceId > 0)
            {
                var alliance = ObjectManager.GetAlliance(allianceId);
                if (alliance != null)
                {
                    AllianceMailStreamEntry mail = new AllianceMailStreamEntry();
                    mail.SetId((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
                    mail.SetAvatar(avatar);
                    mail.SetIsNew(0);
                    mail.SetSenderId(avatar.GetId());
                    mail.SetAllianceId(allianceId);

                    mail.SetAllianceBadgeData(alliance.GetAllianceBadgeData());

                    mail.SetAllianceName(alliance.GetAllianceName());
                    mail.SetMessage(m_vMailContent);

                    foreach (var onlinePlayer in ResourcesManager.GetOnlinePlayers())
                    {
                        if (onlinePlayer.GetPlayerAvatar().GetAllianceId() == allianceId)
                        {
                            var p = new AvatarStreamEntryMessage(onlinePlayer.GetClient());
                            p.SetAvatarStreamEntry(mail);
                            PacketManager.ProcessOutgoingPacket(p);
                        }
                    }
                }
            }
        }
        //00 00 02 25 00 00 00 00 07 1D CD 65 0A 1D CD 65 09 1D CD 65 0B 1D CD 65 08 1D CD 65 0C 1D CD 65 07 1D CD 65 06 00 00 1B 07
        //public uint Unknown1 { get; set; } //00 00 2D 7F some client tick

        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();

            foreach(var buildingId in m_vBuildingIdList)
            {
                Building b = (Building)level.GameObjectManager.GetGameObjectByID(buildingId);
                if (b.CanUpgrade())
                {
                    BuildingData bd = b.GetBuildingData();
                    int cost = bd.GetBuildCost(b.GetUpgradeLevel() + 1);
                    ResourceData rd;
                    if(m_vIsAltResource == 0)
                        rd = bd.GetBuildResource(b.GetUpgradeLevel() + 1);
                    else
                        rd = bd.GetAltBuildResource(b.GetUpgradeLevel() + 1);
                    if (ca.HasEnoughResources(rd, cost))
                    {
                        if (level.HasFreeWorkers())
                        {
                            ca.SetResourceCount(rd, ca.GetResourceCount(rd) - cost);
                            b.StartUpgrading();
                        }
                    }
                }
            }
        }
 public override void Execute(Level level)
 {
     ClientAvatar ca = level.GetPlayerAvatar();
     GameObject go = level.GameObjectManager.GetGameObjectByID(BuildingId);
     if(go != null)
     {
         Building b = (Building)go;
         HeroBaseComponent hbc = b.GetHeroBaseComponent();
         if(hbc != null)
         {
             if(hbc.CanStartUpgrading())
             {
                 HeroData hd = ObjectManager.DataTables.GetHeroByName(b.GetBuildingData().HeroType);
                 int currentLevel = ca.GetUnitUpgradeLevel(hd);
                 ResourceData rd = hd.GetUpgradeResource(currentLevel);
                 int cost = hd.GetUpgradeCost(currentLevel);
                 if(ca.HasEnoughResources(rd, cost))
                 {
                     if(level.HasFreeWorkers())
                     {
                         hbc.StartUpgrading();
                     }
                 }
             }
         }
     }
 }
        public override void Process(Level level)
        {
            level.Tick();

            Alliance alliance = ObjectManager.GetAlliance(level.GetPlayerAvatar().GetAllianceId());
            //player.GetPlayerAvatar().Clean();
            PacketManager.ProcessOutgoingPacket(new OwnHomeDataMessage(this.Client, level));
            if (alliance != null)
                PacketManager.ProcessOutgoingPacket(new AllianceStreamMessage(this.Client, alliance));
        }
Пример #18
0
        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();

            AchievementData ad = (AchievementData)ObjectManager.DataTables.GetDataById(AchievementId);

            ca.AddDiamonds(ad.DiamondReward);
            ca.AddExperience(ad.ExpReward);

            ca.SetAchievment(ad, true);
        }
        //00 00 02 10 1D CD 65 09 00 01 03 B7

        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();
            GameObject go = level.GameObjectManager.GetGameObjectByID(m_vBuildingId);

            if (go != null)
            {
                Building b = (Building)go;
                HeroBaseComponent hbc = b.GetHeroBaseComponent();
                if (hbc != null)
                    hbc.SpeedUpUpgrade();
            }
        }
        public override void Process(Level level)
        {
            Alliance alliance = ObjectManager.GetAlliance(level.GetPlayerAvatar().GetAllianceId());
            level.GetPlayerAvatar().SetAllianceId(0);
            alliance.RemoveMember(level.GetPlayerAvatar().GetId());

            //envoyer message départ à tous les membres
            //si chef nommer un nouveau chef
            //if alliance member count = 0, supprimer alliance
            if (alliance.GetAllianceMembers().Count() == 0)
            {
                alliance.SetRequiredScore(9999999);
                alliance.SetAllianceDescription("CLAN DISBANDED");

            }
            int percentuale = (level.GetPlayerAvatar().GetScore()) / (2);

            alliance.SetScore(alliance.GetScore() - percentuale);
            if(alliance.GetScore() <= -1)
            {
                alliance.SetScore(0);
            }
            PacketManager.ProcessOutgoingPacket(new LeaveAllianceOkMessage(this.Client, alliance));
        }
        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();
            foreach (int buildingId in BuildingIds)
            {
                GameObject go = level.GameObjectManager.GetGameObjectByID(buildingId);

                ConstructionItem b = (ConstructionItem)go;
                int costs = ((BuildingData)b.GetConstructionItemData()).BoostCost[b.UpgradeLevel];
                if (ca.HasEnoughDiamonds(costs))
                {
                    b.BoostBuilding();
                    ca.SetDiamonds(ca.GetDiamonds() - costs);
                }
            }
        }
        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();

            DecoData dd = (DecoData)ObjectManager.DataTables.GetDataById(DecoId);

            if (ca.HasEnoughResources(dd.GetBuildResource(), dd.GetBuildCost()))
            {
                ResourceData rd = dd.GetBuildResource();
                ca.CommodityCountChangeHelper(0, rd, -dd.GetBuildCost());

                Deco d = new Deco(dd, level);
                d.SetPositionXY(X, Y);
                level.GameObjectManager.AddGameObject(d);
            }
        }
 public override void Execute(Level level)
 {
     ClientAvatar ca = level.GetPlayerAvatar();
     GameObject go = level.GameObjectManager.GetGameObjectByID(BuildingId);
     Building b = (Building)go;
     UnitUpgradeComponent uuc = b.GetUnitUpgradeComponent();
     int unitLevel = ca.GetUnitUpgradeLevel(this.UnitData);
     if(uuc.CanStartUpgrading(this.UnitData))
     {
         int cost = this.UnitData.GetUpgradeCost(unitLevel);
         ResourceData rd = this.UnitData.GetUpgradeResource(unitLevel);
         if(ca.HasEnoughResources(rd,cost))
         {
             ca.SetResourceCount(rd, ca.GetResourceCount(rd) - cost);
             uuc.StartUpgrading(this.UnitData);
         }
     }
 }
        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();

            TrapData td = (TrapData)ObjectManager.DataTables.GetDataById(TrapId);
            Trap t = new Trap(td, level);

            if (ca.HasEnoughResources(td.GetBuildResource(0), td.GetBuildCost(0)))
            {
                if (level.HasFreeWorkers())
                {
                    ResourceData rd = td.GetBuildResource(0);
                    ca.CommodityCountChangeHelper(0, rd, -td.GetBuildCost(0));

                    t.StartConstructing(X, Y);
                    level.GameObjectManager.AddGameObject(t);
                }
            }
        }
        public uint Unknown1 { get; set; } //00 00 2D 7F some client tick

        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();

            BuildingData bd = (BuildingData)ObjectManager.DataTables.GetDataById(BuildingId);
            Building b = new Building(bd, level);

            if (ca.HasEnoughResources(bd.GetBuildResource(0), bd.GetBuildCost(0)))
            {
                if (bd.IsWorkerBuilding() || level.HasFreeWorkers())
                {
                    //Ajouter un check sur le réservoir d'élixir noir
                    ResourceData rd = bd.GetBuildResource(0);
                    ca.CommodityCountChangeHelper(0, rd, -bd.GetBuildCost(0));

                    b.StartConstructing(X, Y);
                    level.GameObjectManager.AddGameObject(b);
                }
            }
        }
        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();
            GameObject go = level.GameObjectManager.GetGameObjectByID(BuildingId);

            ConstructionItem b = (ConstructionItem)go;
            if(b.CanUpgrade())
            {
                var bd = b.GetConstructionItemData();
                if (ca.HasEnoughResources(bd.GetBuildResource(b.GetUpgradeLevel() + 1), bd.GetBuildCost(b.GetUpgradeLevel() + 1)))
                {
                    if (level.HasFreeWorkers())
                    {
                        ResourceData rd = bd.GetBuildResource(b.GetUpgradeLevel() + 1);
                        ca.SetResourceCount(rd, ca.GetResourceCount(rd) - bd.GetBuildCost(b.GetUpgradeLevel() + 1));
                        b.StartUpgrading();
                    }
                }
            }
        }
        //00 00 02 05 1D CD 65 13 00 00 53 8F

        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();
            GameObject go = level.GameObjectManager.GetGameObjectByID(m_vBuildingId);
            if(go != null)
            {
                if(go.ClassId == 0)
                {
                    Building b = (Building)go;
                    UnitUpgradeComponent uuc = b.GetUnitUpgradeComponent();
                    if(uuc != null)
                    {
                        if (uuc.GetCurrentlyUpgradedUnit() != null)
                        {
                            uuc.SpeedUp();
                        }
                    }
                }
            } 
        }
        public override void Execute(Level level)
        {
            ClientAvatar ca = level.GetPlayerAvatar();
            GameObject go = level.GameObjectManager.GetGameObjectByID(m_vBuildingId);

            if(go != null)
            {
                if(go.ClassId == 4)
                {
                    Trap t = (Trap)go;
                    int upgradeLevel = t.GetUpgradeLevel();
                    var rd = t.GetTrapData().GetBuildResource(upgradeLevel);
                    int sellPrice = t.GetTrapData().GetSellPrice(upgradeLevel);
                    ca.CommodityCountChangeHelper(0, rd, sellPrice);
                    level.GameObjectManager.RemoveGameObject(t);
                }
                else if(go.ClassId == 6)
                {
                    Deco d = (Deco)go;
                    var rd = d.GetDecoData().GetBuildResource();
                    int sellPrice = d.GetDecoData().GetSellPrice();
                    if(rd.PremiumCurrency)
                    {
                        ca.SetDiamonds(ca.GetDiamonds() + sellPrice);
                    }
                    else
                    {
                        ca.CommodityCountChangeHelper(0, rd, sellPrice);
                    }
                    level.GameObjectManager.RemoveGameObject(d);
                }
                else
                {
                    //TODO BUILDING
                    /*
                    Building b = (Building)go;
                    level.GameObjectManager.RemoveGameObject(b);
                     * */
                }
            }  
        }
Пример #29
0
        public void RefreshResourcesCaps()
        {
            var table         = ObjectManager.DataTables.GetTable(2);
            int resourceCount = table.GetItemCount();
            int resourceStorageComponentCount = GetComponents(6).Count;

            for (int i = 0; i < resourceCount; i++)
            {
                int resourceCap = 0;
                for (int j = 0; j < resourceStorageComponentCount; j++)
                {
                    var res = (ResourceStorageComponent)GetComponents(6)[j];
                    if (res.IsEnabled())
                    {
                        resourceCap += res.GetMax(i);
                    }
                    var resource = (ResourceData)table.GetItemAt(i);
                    if (!resource.PremiumCurrency)
                    {
                        m_vLevel.GetPlayerAvatar().SetResourceCap(resource, resourceCap);
                    }
                }
            }
        }
Пример #30
0
        public async Task <byte[]> Encode()
        {
            List <byte> data   = new List <byte>();
            Level       avatar = await ResourcesManager.GetPlayer(m_vAvatarId);

            data.AddInt64(m_vAvatarId);
            if (avatar.GetPlayerAvatar().GetAvatarName() != null)
            {
                data.AddString(avatar.GetPlayerAvatar().GetAvatarName());
                data.AddInt32(m_vRole);
                data.AddInt32(avatar.GetPlayerAvatar().GetAvatarLevel());
                data.AddInt32(avatar.GetPlayerAvatar().GetLeagueId());
                data.AddInt32(avatar.GetPlayerAvatar().GetScore());
                data.AddInt32(m_vDonatedTroops);
                data.AddInt32(m_vReceivedTroops);
            }
            else
            {
                data.AddString("Player can't be loaded");
                data.AddInt32(m_vRole);
                data.AddInt32(1);
                data.AddInt32(1);
                data.AddInt32(400);
                data.AddInt32(0);
                data.AddInt32(0);
                avatar.GetPlayerAvatar().SetAllianceId(0);
            }
            data.AddInt32(m_vOrder);
            data.AddInt32(m_vPreviousOrder);
            data.AddInt32(m_vIsNewMember);
            data.AddInt32(m_vWarCooldown);
            data.AddInt32(m_vWarOptInStatus);
            data.Add(1);
            data.AddInt64(m_vAvatarId);
            return(data.ToArray());
        }
Пример #31
0
        public override void Process(Level level)
        {
            if (!Convert.ToBoolean(ConfigurationManager.AppSettings["maintenanceMode"]) || Client.CState == 0)
            {
                var p = new LoginFailedMessage(Client);
                p.SetErrorCode(10);
                PacketManager.ProcessOutgoingPacket(p);
                return;
            }

            /*
            var versionData = ConfigurationManager.AppSettings["clientVersion"].Split('.');
            if (versionData.Length >= 2)
            {
                var cv = ClientVersion.Split('.');
                if (cv[0] != versionData[0] || cv[1] != versionData[1])
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(8);
                    p.SetUpdateURL(Convert.ToString(ConfigurationManager.AppSettings["UpdateUrl"]));
                    PacketManager.ProcessOutgoingPacket(p);
                    return;
                }
            }
            else
            {
                Debugger.WriteLine("[UCR][10101] Connection failed. UCR config key clientVersion is not properly set.");
            }
            */

            level = ResourcesManager.GetPlayer(UserID);
            if (level != null)
            {
                if (level.GetAccountStatus() == 99)
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(11);
                    PacketManager.ProcessOutgoingPacket(p);
                    return;
                }
            }
            else
            {
                level = ObjectManager.CreateAvatar(UserID);
                var tokenSeed = new byte[20];
                new Random().NextBytes(tokenSeed);
                using (SHA1 sha = new SHA1CryptoServiceProvider())
                    UserToken = BitConverter.ToString(sha.ComputeHash(tokenSeed)).Replace("-", string.Empty);
            }

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

            Client.ClientSeed = Unknown;
            ResourcesManager.LogPlayerIn(level, Client);
            level.Tick();

            var loginOk = new LoginOkMessage(Client);
            var avatar = level.GetPlayerAvatar();
            loginOk.SetAccountId(avatar.GetId());
            loginOk.SetPassToken(UserToken);
            loginOk.SetServerEnvironment("prod");
            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(Language);
            PacketManager.ProcessOutgoingPacket(loginOk);

            /*
            var alliance = ObjectManager.GetAlliance(level.GetPlayerAvatar().GetAllianceId());
            if (alliance == null)
                level.GetPlayerAvatar().SetAllianceId(0);

            PacketManager.ProcessOutgoingPacket(new OwnHomeDataMessage(Client, level));
            */
        }
Пример #32
0
        public void LoadFromJSON(string jsonString)
        {
            JObject jObject = JObject.Parse(jsonString);

            this.m_vAllianceId        = jObject["alliance_id"].ToObject <long>();
            this.m_vAllianceName      = jObject["alliance_name"].ToObject <string>();
            this.m_vAllianceBadgeData = jObject["alliance_badge"].ToObject <int>();
            this.m_vAllianceType      = jObject["alliance_type"].ToObject <int>();
            if (jObject["required_score"] != null)
            {
                this.m_vRequiredScore = jObject["required_score"].ToObject <int>();
            }
            this.m_vAllianceDescription = jObject["description"].ToObject <string>();
            this.m_vAllianceExperience  = jObject["alliance_experience"].ToObject <int>();
            this.m_vAllianceLevel       = jObject["alliance_level"].ToObject <int>();
            if (jObject["won_wars"] != null)
            {
                this.m_vWonWars = jObject["won_wars"].ToObject <int>();
            }
            if (jObject["lost_wars"] != null)
            {
                this.m_vLostWars = jObject["lost_wars"].ToObject <int>();
            }
            if (jObject["draw_wars"] != null)
            {
                this.m_vDrawWars = jObject["draw_wars"].ToObject <int>();
            }
            if (jObject["war_frequency"] != null)
            {
                this.m_vWarFrequency = jObject["war_frequency"].ToObject <int>();
            }
            if (jObject["alliance_origin"] != null)
            {
                this.m_vAllianceOrigin = jObject["alliance_origin"].ToObject <int>();
            }
            using (IEnumerator <JToken> enumerator = ((JArray)jObject["members"]).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    JObject             jObject2            = (JObject)enumerator.Current;
                    long                num                 = jObject2["avatar_id"].ToObject <long>();
                    AllianceMemberEntry allianceMemberEntry = new AllianceMemberEntry(num);
                    Level               level               = new Level(num);
                    this.m_vScore += level.GetPlayerAvatar().GetScore();
                    allianceMemberEntry.Load(jObject2);
                    this.m_vAllianceMembers.Add(num, allianceMemberEntry);
                }
            }
            this.m_vScore /= 2;
            JArray jArray = (JArray)jObject["chatMessages"];

            if (jArray != null)
            {
                using (IEnumerator <JToken> enumerator = jArray.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        JObject     jObject3    = (JObject)enumerator.Current;
                        StreamEntry streamEntry = new StreamEntry();
                        switch (jObject3["type"].ToObject <int>())
                        {
                        case 1:
                            streamEntry = new TroopRequestStreamEntry();
                            break;

                        case 2:
                            streamEntry = new ChatStreamEntry();
                            break;

                        case 3:
                            streamEntry = new InvitationStreamEntry();
                            break;

                        case 4:
                            streamEntry = new AllianceEventStreamEntry();
                            break;

                        case 5:
                            streamEntry = new ShareStreamEntry();
                            break;
                        }
                        streamEntry.Load(jObject3);
                        this.m_vChatMessages.Add(streamEntry);
                    }
                }
            }
        }
Пример #33
0
        public void LoadFromJSON(string jsonString)
        {
            JObject jsonObject = JObject.Parse(jsonString);

            m_vAllianceId        = jsonObject["alliance_id"].ToObject <long>();
            m_vAllianceName      = jsonObject["alliance_name"].ToObject <string>();
            m_vAllianceBadgeData = jsonObject["alliance_badge"].ToObject <int>();
            m_vAllianceType      = jsonObject["alliance_type"].ToObject <int>();
            m_vRequiredScore     = jsonObject["required_score"].ToObject <int>();
            // m_vScore = jsonObject["score"].ToObject<int>();
            m_vAllianceDescription = jsonObject["description"].ToObject <string>();
            m_vAllianceExperience  = jsonObject["alliance_experience"].ToObject <int>();
            m_vAllianceLevel       = jsonObject["alliance_level"].ToObject <int>();
            m_vWarLogPublic        = jsonObject["war_log_public"].ToObject <byte>();
            m_vWonWars             = jsonObject["won_wars"].ToObject <int>();
            m_vLostWars            = jsonObject["lost_wars"].ToObject <int>();
            m_vDrawWars            = jsonObject["draw_wars"].ToObject <int>();
            m_vWarFrequency        = jsonObject["war_frequency"].ToObject <int>();
            m_vAllianceOrigin      = jsonObject["alliance_origin"].ToObject <int>();
            JArray jsonMembers = (JArray)jsonObject["members"];

            foreach (JToken jToken in jsonMembers)
            {
                JObject             jsonMember = (JObject)jToken;
                long                id         = jsonMember["avatar_id"].ToObject <long>();
                Level               pl         = ResourcesManager.GetPlayer(id);
                AllianceMemberEntry member     = new AllianceMemberEntry(id);
                m_vScore = m_vScore + pl.GetPlayerAvatar().GetScore();
                member.Load(jsonMember);
                m_vAllianceMembers.Add(id, member);
            }
            m_vScore = m_vScore / 2;
            JArray jsonMessages = (JArray)jsonObject["chatMessages"];

            if (jsonMessages != null)
            {
                foreach (JToken jToken in jsonMessages)
                {
                    JObject jsonMessage        = (JObject)jToken;
                    StreamEntry.StreamEntry se = new StreamEntry.StreamEntry();
                    if (jsonMessage["type"].ToObject <int>() == 1)
                    {
                        se = new TroopRequestStreamEntry();
                    }
                    else if (jsonMessage["type"].ToObject <int>() == 2)
                    {
                        se = new ChatStreamEntry();
                    }
                    else if (jsonMessage["type"].ToObject <int>() == 3)
                    {
                        se = new InvitationStreamEntry();
                    }
                    else if (jsonMessage["type"].ToObject <int>() == 4)
                    {
                        se = new AllianceEventStreamEntry();
                    }
                    else if (jsonMessage["type"].ToObject <int>() == 5)
                    {
                        se = new ShareStreamEntry();
                    }
                    se.Load(jsonMessage);
                    m_vChatMessages.Add(se);
                }
            }
        }
Пример #34
0
        public void LoadFromJSON(string jsonString)
        {
            var jsonObject = JObject.Parse(jsonString);

            m_vAllianceId        = jsonObject["alliance_id"].ToObject <long>();
            m_vAllianceName      = jsonObject["alliance_name"].ToObject <string>();
            m_vAllianceBadgeData = jsonObject["alliance_badge"].ToObject <int>();
            m_vAllianceType      = jsonObject["alliance_type"].ToObject <int>();
            if (jsonObject["required_score"] != null)
            {
                m_vRequiredScore = jsonObject["required_score"].ToObject <int>();
            }
            // m_vScore = jsonObject["score"].ToObject<int>();
            m_vAllianceDescription = jsonObject["description"].ToObject <string>();
            m_vAllianceExperience  = jsonObject["alliance_experience"].ToObject <int>();
            m_vAllianceLevel       = jsonObject["alliance_level"].ToObject <int>();
            if (jsonObject["won_wars"] != null)
            {
                m_vWonWars = jsonObject["won_wars"].ToObject <int>();
            }
            if (jsonObject["lost_wars"] != null)
            {
                m_vLostWars = jsonObject["lost_wars"].ToObject <int>();
            }
            if (jsonObject["draw_wars"] != null)
            {
                m_vDrawWars = jsonObject["draw_wars"].ToObject <int>();
            }
            if (jsonObject["war_frequency"] != null)
            {
                m_vWarFrequency = jsonObject["war_frequency"].ToObject <int>();
            }
            if (jsonObject["alliance_origin"] != null)
            {
                m_vAllianceOrigin = jsonObject["alliance_origin"].ToObject <int>();
            }

            var jsonMembers = (JArray)jsonObject["members"];

            foreach (JObject jsonMember in jsonMembers)
            {
                var id     = jsonMember["avatar_id"].ToObject <long>();
                var token  = UCS.Core.ResourcesManager.GetPlayer(id).GetPlayerAvatar().GetUserToken();
                var member = new AllianceMemberEntry(id);
                var scorem = new Level(id, token);
                m_vScore = m_vScore + scorem.GetPlayerAvatar().GetScore();
                member.Load(jsonMember);
                m_vAllianceMembers.Add(id, member);
            }
            m_vScore = m_vScore / 2;

            var jsonMessages = (JArray)jsonObject["chatMessages"];

            if (jsonMessages != null)
            {
                foreach (JObject jsonMessage in jsonMessages)
                {
                    var se = new StreamEntry();
                    switch (jsonMessage["type"].ToObject <int>())
                    {
                    case 1:
                        se = new TroopRequestStreamEntry();
                        break;

                    case 2:
                        se = new ChatStreamEntry();
                        break;

                    case 3:
                        se = new InvitationStreamEntry();
                        break;

                    case 4:
                        se = new AllianceEventStreamEntry();
                        break;

                    case 5:
                        se = new ShareStreamEntry();
                        break;
                    }
                    se.Load(jsonMessage);
                    m_vChatMessages.Add(se);
                }
            }
        }
Пример #35
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));
        }