コード例 #1
0
        public void ToFight()
        {
            gameFightController = new GameFightController(new GameModel(model.Knights)
            {
                myTower = model.TowerType, UsersGold = model.GoldRest
            });

            GameFight MyMenu1 = new GameFight(gameFightController);

            MyMenu1.ShowDialog();
        }
コード例 #2
0
ファイル: StartFightTask.cs プロジェクト: 745c5412/tera-emu
        private void Run(object state)
        {
            if (Started)
            {
                this.cancel();
                return;
            }
            Started = true;
            team1.Remove(p1);
            team2.Remove(p2);
            p1.Send(new BasicNoOperationMessage());
            p2.Send(new BasicNoOperationMessage());
            var Fight = new KolizeumFight(map, p1.Client, p2.Client);

            map.AddFight(Fight);
            foreach (var Player in team1)
            {
                try
                {
                    Player.Send(new BasicNoOperationMessage());
                    Logger.Error("Ini Player " + Player.Name);
                    var Fighter     = new CharacterFighter(Fight, Player.GetClient());
                    var FightAction = new GameFight(Fighter, Fight);
                    Player.Client.AddGameAction(FightAction);
                    Fight.JoinFightTeam(Fighter, Fight.GetTeam1(), false, -1, false);
                }
                catch (Exception e)
                {
                    Logger.Error(e);
                }
            }
            foreach (var Player in team2)
            {
                try
                {
                    Player.Send(new BasicNoOperationMessage());
                    Logger.Error("Ini Player " + Player.Name);
                    //if (Prism.CurrentFight.CanJoin(Team, Client.GetCharacter()))
                    var Fighter     = new CharacterFighter(Fight, Player.GetClient());
                    var FightAction = new GameFight(Fighter, Fight);
                    Player.Client.AddGameAction(FightAction);
                    Fight.JoinFightTeam(Fighter, Fight.GetTeam2(), false, -1, false);
                }
                catch (Exception e)
                {
                    Logger.Error(e);
                }
            }
        }
コード例 #3
0
        private static void ProcessConquestJoinDefenseRequest(WorldClient Client, string Packet)
        {
            if (Packet.Length < 2)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }
            switch (Packet[2])
            {
            case 'J':
                long prismID = Client.Character.myMap.subArea.Prisme;
                var  Prism   = PrismeTable.getPrism(prismID);
                if (Prism == null || Prism.Alignement != Client.Character.Alignement || Client.GetFight() != null || Prism.CurrentFight == null)
                {
                    Client.Send(new BasicNoOperationMessage());
                    return;
                }

                if (Client.GetFight() == null && !Client.GetCharacter().isAaway)
                {
                    if (Client.GetCharacter().myMap.Id != Prism.Mapid)
                    {
                        Client.GetCharacter().isJoiningTaxFight = true;
                        Client.GetCharacter().OldPosition       = new Couple <Map, int>(Client.Character.myMap, Client.Character.CellId);
                        Client.GetCharacter().Teleport(Prism.Map, Prism.CellId);
                        try
                        {
                            System.Threading.Thread.Sleep(700);
                        }
                        catch (Exception e)
                        {
                            Logger.Error(e);
                        }
                    }

                    if (Client.GetCharacter().HasRestriction(RestrictionEnum.RESTRICTION_IS_TOMBESTONE))
                    {
                        Client.Send(new BasicNoOperationMessage());
                        return;
                    }

                    var Team = Prism.CurrentFight.GetTeam2();

                    if (Prism.CurrentFight.CanJoin(Team, Client.GetCharacter()))
                    {
                        var Fighter = new CharacterFighter(Prism.CurrentFight, Client);

                        var FightAction = new GameFight(Fighter, Prism.CurrentFight);

                        Client.AddGameAction(FightAction);

                        Prism.CurrentFight.JoinFightTeam(Fighter, Team, false, -1, false);
                    }
                }

                //AnalyseDefense
                var Packets = new List <PacketBase>();
                foreach (var Prisme in PrismeTable.Cache.Values.Where(x => x.Alignement == Client.Character.Alignement && (x.inFight == 0 || x.inFight == -2)))
                {
                    Packets.Add(new PrismInformationsDefenseMessage(Prisme.PrismDefenders(Prisme.ActorId, Prisme.CurrentFight)));
                }
                foreach (var packet in Packets)
                {
                    Network.WorldServer.GetChatController().getAlignementChannel(Client.Character.AlignmentType).Send(packet);
                }

                break;
            }
        }
コード例 #4
0
ファイル: GuildHandler.cs プロジェクト: 745c5412/tera-emu
        private static void ProcessTaxCollectorJoinFigh(WorldClient Client, string Packet)
        {
            String PercoID = IntHelper.toString(int.Parse(Packet.Substring(1)), 36);
            long   TiD     = -1;

            if (!long.TryParse(PercoID, out TiD))
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }
            var TaxCollector = TaxCollectorTable.GetPerco(TiD);

            if (TaxCollector == null)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            short MapID = -1;

            try
            {
                MapID = (short)TaxCollector.Mapid;
            }
            catch (Exception e)
            {};

            int CellID = -1;

            try
            {
                CellID = TaxCollector.CellId;
            }
            catch (Exception e)
            {};

            if (TiD == -1 || TaxCollector.CurrentFight == null || MapID == -1 || CellID == -1)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            if (Client.GetFight() == null && !Client.GetCharacter().isAaway)
            {
                if (Client.GetCharacter().myMap.Id != MapID)
                {
                    Client.GetCharacter().isJoiningTaxFight = true;
                    Client.GetCharacter().OldPosition       = new Couple <Map, int>(Client.Character.myMap, Client.Character.CellId);
                    Client.GetCharacter().Teleport(TaxCollector.Map, CellID);
                    try
                    {
                        System.Threading.Thread.Sleep(700);
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e);
                    }
                }

                if (Client.GetCharacter().HasRestriction(RestrictionEnum.RESTRICTION_IS_TOMBESTONE))
                {
                    Client.Send(new BasicNoOperationMessage());
                    return;
                }

                var Team = TaxCollector.CurrentFight.GetTeam2();

                if (TaxCollector.CurrentFight.CanJoin(Team, Client.GetCharacter()))
                {
                    var Fighter = new CharacterFighter(TaxCollector.CurrentFight, Client);

                    var FightAction = new GameFight(Fighter, TaxCollector.CurrentFight);

                    Client.AddGameAction(FightAction);

                    TaxCollector.CurrentFight.JoinFightTeam(Fighter, Team, false, -1, false);
                }
            }
        }
コード例 #5
0
ファイル: FightHandler.cs プロジェクト: 745c5412/tera-emu
        public static void ProcessGameFightJoinRequest(WorldClient Client, string Packet)
        {
            var Data = Packet.Substring(5).Split(';');

            if (Data.Length > 2)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            var FightId = 0;

            if (!int.TryParse(Data[0], out FightId))
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            var Fight = Client.GetCharacter().GetMap().GetFight(FightId);

            if (Data.Length == 1)
            {
                if (Fight.CanJoinSpectator())
                {
                    Fight.JoinFightSpectator(Client);
                }
                else
                {
                    Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 57));
                }

                return;
            }

            var LeaderId = 0;

            if (!int.TryParse(Data[1], out LeaderId))
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            if (Fight == null)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            if (Client.GetCharacter().HasRestriction(RestrictionEnum.RESTRICTION_IS_TOMBESTONE))
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            var Team = Fight.GetTeam(LeaderId);

            if (Fight.CanJoin(Team, Client.GetCharacter()))
            {
                var Fighter = new CharacterFighter(Fight, Client);

                var FightAction = new GameFight(Fighter, Fight);

                Client.AddGameAction(FightAction);

                Fight.JoinFightTeam(Fighter, Team);
            }
        }