示例#1
0
 public static void HandleGameContextCreateRequestMessage(WorldClient client, GameContextCreateRequestMessage message)
 {
     if (client.Character.IsInWorld)
     {
         client.Character.SendServerMessage("You are already Logged !");
     }
     else
     {
         ContextHandler.SendGameContextDestroyMessage(client);
         ContextHandler.SendGameContextCreateMessage(client, (sbyte)(client.Character.IsInFight() ? GameContextEnum.FIGHT : GameContextEnum.ROLE_PLAY));
         client.Character.RefreshStats();
         client.Character.LogIn();
     }
 }
示例#2
0
        public static void HandleGameRolePlayPlayerFightRequestMessage(WorldClient client, GameRolePlayPlayerFightRequestMessage message)
        {
            Character actor = client.Character.Map.GetActor <Character>((int)message.targetId);

            if (actor != null)
            {
                if (message.friendly)
                {
                    FighterRefusedReasonEnum fighterRefusedReasonEnum = client.Character.CanRequestFight(actor);
                    if (fighterRefusedReasonEnum != FighterRefusedReasonEnum.FIGHTER_ACCEPTED)
                    {
                        ContextHandler.SendChallengeFightJoinRefusedMessage(client, client.Character, fighterRefusedReasonEnum);
                    }
                    else
                    {
                        FightRequest fightRequest = new FightRequest(client.Character, actor);
                        client.Character.OpenRequestBox(fightRequest);
                        actor.OpenRequestBox(fightRequest);
                        fightRequest.Open();
                    }
                }
                else
                {
                    FighterRefusedReasonEnum fighterRefusedReasonEnum = client.Character.CanAgress(actor);
                    if (fighterRefusedReasonEnum != FighterRefusedReasonEnum.FIGHTER_ACCEPTED)
                    {
                        ContextHandler.SendChallengeFightJoinRefusedMessage(client, client.Character, fighterRefusedReasonEnum);
                    }
                    else
                    {
                        Fight fight = Singleton <FightManager> .Instance.CreateAgressionFight(actor.Map, client.Character.AlignmentSide, actor.AlignmentSide);

                        fight.RedTeam.AddFighter(client.Character.CreateFighter(fight.RedTeam));
                        fight.BlueTeam.AddFighter(actor.CreateFighter(fight.BlueTeam));
                        fight.StartPlacement();
                    }
                }
            }
        }
示例#3
0
 public static void HandleChallengeTargetsListRequestMessage(WorldClient client, ChallengeTargetsListRequestMessage message)
 {
     if (client.Character.Fight != null)
     {
         var challenge = client.Character.Fight.GetChallenge(message.challengeId);
         if (challenge != null)
         {
             var target = client.Character.Fight.GetOneFighter(challenge.TargetId);
             if (target != null && target.IsVisibleFor(client.Character))
             {
                 ContextHandler.SendChallengeTargetsListMessage(client, new int[1] {
                     target.Id
                 }, new short[1] {
                     target.Cell.Id
                 });
             }
             else
             {
                 ContextHandler.SendChallengeTargetsListMessage(client, new int[0], new short[0]);
             }
         }
     }
 }
示例#4
0
 public static void HandleGameMapChangeOrientationRequestMessage(WorldClient client, GameMapChangeOrientationRequestMessage message)
 {
     client.Character.Direction = (DirectionsEnum)message.direction;
     ContextHandler.SendGameMapChangeOrientationMessage(client.Character.CharacterContainer.Clients, client.Character);
 }