Esempio n. 1
0
 public void RefreshActor(double contextualId, short cellEnd)
 {
     if (Players.Find(p => p.ContextualId == contextualId) != null)
     {
         Players.Find(p => p.ContextualId == contextualId).Disposition.CellId = cellEnd;
         Console.WriteLine(
             $@"(Players) {
                     Players.Find(p => p.ContextualId == contextualId).Name
                 } se déplace sur la cellid -> {cellEnd}");
     }
     else if (Monsters.Find(p => p.ContextualId == contextualId) != null)
     {
         Monsters.Find(p => p.ContextualId == contextualId).Disposition.CellId = cellEnd;
         Console.WriteLine($@"(Monsters) se déplace sur la cellid -> {cellEnd}");
     }
     else if (Others.Find(p => p.ContextualId == contextualId) != null)
     {
         Others.Find(p => p.ContextualId == contextualId).Disposition.CellId = cellEnd;
         Console.WriteLine($@"(Others) se déplace sur la cellid -> {cellEnd}");
     }
     else if (Npcs.Find(p => p.ContextualId == contextualId) != null)
     {
         Npcs.Find(p => p.ContextualId == contextualId).Disposition.CellId = cellEnd;
         Console.WriteLine($@"(Npcs) se déplace sur la cellid -> {cellEnd}");
     }
     else
     {
         Console.WriteLine($@"Quelque chose se déplace sur la cellid -> {cellEnd}");
     }
 }
Esempio n. 2
0
File: Map.cs Progetto: Teles1/Cookie
        private void HandleGameMapMovementMessage(IAccount account, GameMapMovementMessage message)
        {
            // The player has moved.
            Console.WriteLine($"GameMapMovementMessage[{message.ActorId}]CharacterId[{account.Character.Id}]");
            lock (CheckLock)
            {
                var clientMovement = MapMovementAdapter.GetClientMovement(message.KeyMovements.Select(s => (uint)s).ToList());
                if (message.ActorId == account.Character.Id)
                {
                    account.Character.CellId = clientMovement.CellEnd.CellId;
                }
                else if (Players.Find(x => x.Id == message.ActorId) != null)
                {
                    Players.Find(x => x.Id == message.ActorId).CellId = clientMovement.CellEnd.CellId;
                }
                else if (Entities.Find(x => x.Id == message.ActorId) != null)
                {
                    Entities.Find(x => x.Id == message.ActorId).CellId = clientMovement.CellEnd.CellId;
                }
                else if (Monsters.Find(x => x.Id == message.ActorId) != null)
                {
                    Monsters.Find(x => x.Id == message.ActorId).CellId = clientMovement.CellEnd.CellId;
                }
                //else
                //Logger.Default.Log($"ActorId[{message.ActorId}] not found");
                //Monsters.Add(new MonsterGroup(new GroupMonsterStaticInformations(), message.ActorId, clientMovement.CellEnd.CellId));
            }

            UpdateMapControl();

            OnMapMovement(message);
        }
Esempio n. 3
0
        private void HandleGameMapMovementMessage(IAccount account, GameMapMovementMessage message)
        {
            lock (CheckLock)
            {
                var clientMovement =
                    MapMovementAdapter.GetClientMovement(message.KeyMovements.Select(s => (uint)s).ToList());

                if (Players.Find(x => x.Id == message.ActorId) != null)
                {
                    Players.Find(x => x.Id == message.ActorId).CellId = clientMovement.CellEnd.CellId;
                }
                if (Entities.Find(x => x.Id == message.ActorId) != null)
                {
                    Entities.Find(x => x.Id == message.ActorId).CellId = clientMovement.CellEnd.CellId;
                }
                if (Monsters.Find(x => x.Id == message.ActorId) != null)
                {
                    Monsters.Find(x => x.Id == message.ActorId).CellId = clientMovement.CellEnd.CellId;
                }

                if (message.ActorId == account.Character.Id)
                {
                    account.Character.CellId = clientMovement.CellEnd.CellId;
                }
            }

            UpdateMapControl();

            OnMapMovement(message);
        }
Esempio n. 4
0
        public void ThrowItems(Tuple <int, short, byte, int, int, short> parameter)
        {
            MapMonster mon = Monsters.Find(s => s.MapMonsterId == parameter.Item1) ?? Monsters.Find(s => s.MonsterVNum == parameter.Item1);

            if (mon == null)
            {
                return;
            }
            short originX = mon.MapX;
            short originY = mon.MapY;
            short destX;
            short destY;
            int   amount = 1;

            Observable.Timer(TimeSpan.FromSeconds(parameter.Item6)).Subscribe(s =>
            {
                for (int i = 0; i < parameter.Item3; i++)
                {
                    amount = ServerManager.RandomNumber(parameter.Item4, parameter.Item5);
                    destX  = (short)(originX + ServerManager.RandomNumber(-10, 10));
                    destY  = (short)(originY + ServerManager.RandomNumber(-10, 10));
                    if (Map.IsBlockedZone(destX, destY))
                    {
                        destX = originX;
                        destY = originY;
                    }
                    MonsterMapItem droppedItem           = new MonsterMapItem(destX, destY, parameter.Item2, amount);
                    DroppedList[droppedItem.TransportId] = droppedItem;
                    Broadcast($"throw {droppedItem.ItemVNum} {droppedItem.TransportId} {originX} {originY} {droppedItem.PositionX} {droppedItem.PositionY} {(droppedItem.GoldAmount > 1 ? droppedItem.GoldAmount : droppedItem.Amount)}");
                }
            });
        }
Esempio n. 5
0
        protected IFighter GetFighter(double fighterId)
        {
            lock (CheckLock)
            {
                //Logger.Default.Log($"Looking for id [{fighterId}]");

                //foreach (var monster in Account.Character.Map.Monsters)
                //    Logger.Default.Log($"[Monster]{monster.GroupName} has id {monster.Id} and level [{monster.GroupLevel}]");
                //foreach (var fighter in Fighters)
                //    Logger.Default.Log($"[Fighter]Fighter on {fighter.CellId} has id {fighter.Id}");
                //foreach (var companion in Companions)
                //    Logger.Default.Log($"[Companion]{companion.Name} has id {companion.Id}");

                if (Monsters.Find(x => x.Id == fighterId) != null)
                {
                    return(Monsters.FirstOrDefault(m => m.Id == fighterId));
                }
                //else if (Companions.Find(x => x.Id == fighterId) != null)
                //    return Companions.FirstOrDefault(c => c.Id == fighterId);
                else
                {
                    return(Fighters.FirstOrDefault(f => f.Id == fighterId));
                }
            }
        }
Esempio n. 6
0
 protected IFighter GetFighter(double fighterId)
 {
     return(Monsters.Find(x => x.Id == fighterId) != null
         ? Monsters.FirstOrDefault(m => m.Id == fighterId)
         : (Companions.Find(x => x.Id == fighterId) != null
             ? Companions.FirstOrDefault(c => c.Id == fighterId)
             : Fighters.FirstOrDefault(f => f.Id == fighterId)));
 }
Esempio n. 7
0
 protected void RemoveFighter(double Id)
 {
     lock (CheckLock)
     {
         Fighters.Remove(Fighters.Find(f => f.Id == Id));
         Monsters.Remove(Monsters.Find(m => m.Id == Id));
     }
 }
Esempio n. 8
0
File: Map.cs Progetto: Teles1/Cookie
        public void LaunchAttack(double removeMob = 0)
        {
            if (removeMob != 0)
            {
                Monsters.Remove(Monsters.Find(x => x.Id == removeMob));
            }
            Logger.Default.Log($"LaunchAttack");
            var monsterGroup = Monsters.FirstOrDefault();

            if (monsterGroup == null)
            {
                return;
            }
            int maxLevel = monsterGroup.GroupLevel;

            foreach (var monster in Monsters)
            {
                if (monster.GroupLevel > maxLevel)
                {
                    monsterGroup = monster;
                }
            }
            if (_account.Character.CellId == monsterGroup.CellId)
            {
                _account.Network.SendToServer(new GameRolePlayAttackMonsterRequestMessage(monsterGroup.Id));
                return;
            }
            var movement = MoveToCell(monsterGroup.CellId);

            void MovementFinished(object s, CellMovementEventArgs e)
            {
                movement.MovementFinished -= MovementFinished;
                if (e.Sucess)
                {
                    if (e.EndCell == monsterGroup.CellId)
                    {
                        Task.Delay(250).Wait();
                        _account.Network.SendToServer(new GameRolePlayAttackMonsterRequestMessage(monsterGroup.Id));
                        Logger.Default.Log($"Launching Attack");
                    }
                    else
                    {
                        Logger.Default.Log($"Movement returned Success but endCell[{e.EndCell}] doens't match with monsterCell[{monsterGroup.CellId}]. Perhaps listening to wrong movement?");
                        LaunchAttack(monsterGroup.Id);
                    }
                }

                /*else
                 * {
                 *  Logger.Default.Log($"Could not move closer to {monsterGroup.GroupName}.");
                 *  _account.PerformAction(_account.Character.PathManager.DoAction, 1000);
                 * }
                 */
            }

            movement.MovementFinished += MovementFinished;
            movement.PerformMovement();
        }
Esempio n. 9
0
        private void HandleGameContextRemoveElementMessage(IAccount account, GameContextRemoveElementMessage message)
        {
            lock (CheckLock)
            {
                Players.Remove(Players.Find(p => p.Id == message.ObjectId));
                Monsters.Remove(Monsters.Find(x => x.Id == message.ObjectId));
                Entities.Remove(Entities.Find(x => x.Id == message.ObjectId));

                UpdateMapControl();
            }
        }
Esempio n. 10
0
 private void HandleGameActionFightDeathMessage(IAccount account, GameActionFightDeathMessage message)
 {
     lock (CheckLock)
     {
         if (Fighter.Id == message.TargetId)
         {
             Logger.Default.Log("Bot mort");
             Fighters.Remove(Fighters.Find(f => f.Id == message.TargetId));
         }
         if (Monsters.Exists(m => m.Id == message.TargetId))
         {
             Logger.Default.Log($"Monstre[{message.TargetId}] est mort");
             Monsters.Remove(Monsters.Find(m => m.Id == message.TargetId));
             Logger.Default.Log($"Signalig FighterDiedAutoReset", LogMessageType.Divers);
             FighterDiedAutoReset.Set();
         }
     }
 }
Esempio n. 11
0
        public void ThrowItems(Tuple <int, short, byte, int, int> parameter)
        {
            MapMonster mon = Monsters.Find(s => s.MapMonsterId == parameter.Item1) ?? Monsters.Find(s => s.MonsterVNum == parameter.Item1);

            if (mon == null)
            {
                return;
            }
            short originX = mon.MapX;
            short originY = mon.MapY;
            short destX;
            short destY;
            int   amount = ServerManager.RandomNumber(parameter.Item4, parameter.Item5);

            for (int i = 0; i < parameter.Item3; i++)
            {
                destX = (short)(originX + ServerManager.RandomNumber(-10, 10));
                destY = (short)(originY + ServerManager.RandomNumber(-10, 10));
                MonsterMapItem droppedItem = new MonsterMapItem(destX, destY, parameter.Item2, amount);
                if (parameter.Item2 == 99)
                {
                    return;
                }
                if (amount == 99)
                {
                    return;
                }
                if (parameter == null)
                {
                    return;
                }
                if (droppedItem == null)
                {
                    return;
                }
                DroppedList[droppedItem.TransportId] = droppedItem;

                Broadcast($"throw {droppedItem.ItemVNum} {droppedItem.TransportId} {originX} {originY} {droppedItem.PositionX} {droppedItem.PositionY} {(droppedItem.GoldAmount > 1 ? droppedItem.GoldAmount : droppedItem.Amount)}");
            }
        }
Esempio n. 12
0
 protected void RemoveFighter(double Id)
 {
     Fighters.Remove(Fighters.Find(f => f.Id == Id));
     Monsters.Remove(Monsters.Find(m => m.Id == Id));
     Companions.Remove(Companions.Find(c => c.Id == Id));
 }
Esempio n. 13
0
 public bool NoEntitiesOnCell(int cellId)
 {
     return(Monsters.Find(p => p.Disposition.CellId == cellId) == null);
 }