Ejemplo n.º 1
0
 // TODO: NewPlayer messages should be broadcasted at the Game level, which means we may have to track players separately from objects in Game
 public void Enter(Actor actor)
 {
     this.AddActor(actor);
     actor.OnEnter(this);
     // Broadcast reveal
     // NOTE: Revealing to all right now since the flow results in actors that have initial positions that are not within the range of the player
     var players = this.Players.Values; //this.GetPlayersInRange(actor.Position, 480.0f);
     //Logger.Debug("Enter {0}, reveal to {1} players", actor.DynamicID, players.Count);
     foreach (var player in players)
     {
         actor.Reveal(player);
     }
 }
Ejemplo n.º 2
0
        // TODO: NewPlayer messages should be broadcasted at the Game level, which means we may have to track players separately from objects in Game
        public void Enter(Actor actor)
        {
            this.AddActor(actor);
            actor.OnEnter(this);
            // Broadcast reveal
            // NOTE: Revealing to all right now since the flow results in actors that have initial positions that are not within the range of the player. /komiga

            var players = this._players.Values; //this.GetPlayersInRange(actor.Position, 480.0f);
            foreach (var player in players)
            {
                actor.Reveal(player);
            }
        }
Ejemplo n.º 3
0
        public void DropItem(Hero hero, Item item, Vector3D postition)
        {
            Random random = new Random();

            Actor itemActor = new Actor()
            {
                GBHandle = new GBHandle()
                {
                    Field0 = 2,
                    Field1 = item.Gbid,
                },
                InventoryLocationData = null,
                Scale = 1.35f,
                Position = postition,
                WorldId = hero.WorldId,
                RotationAmount = 0.768145f,
                RotationAxis = new Vector3D()
                {
                    X = 0f,
                    Y = 0f,
                    Z = (float)random.NextDouble(),
                },
                SnoId = item.SNOId,
                DynamicId = item.ItemId,
            };

            GetWorld(hero.WorldId).AddActor(itemActor);
            itemActor.Reveal(hero);
            item.Reveal(hero);

            hero.InGameClient.PacketId += 10 * 2;
            hero.InGameClient.SendMessage(new DWordDataMessage()
            {
                Id = 0x89,
                Field0 = hero.InGameClient.PacketId,
            });

            hero.InGameClient.FlushOutgoingBuffer();

        }
Ejemplo n.º 4
0
        // TODO: NewPlayer messages should be broadcasted at the Game level, which means we may have to track players separately from objects in Game
        public void Enter(Actor actor)
        {
            this.AddActor(actor);
            actor.OnEnter(this);
            // Broadcast reveal
            // NOTE: Revealing to all right now since the flow results in actors that have initial positions that are not within the range of the player. /komiga

            var players = this._players.Values; //this.GetPlayersInRange(actor.Position, 480.0f);
            foreach (var player in players)
            {
                if (actor is Player.Player) Logger.Debug("Enter: Revealing player: {0}[DynamicId:{1}] to {2}[DynamicId:{3}]", ((Player.Player)actor).Properties.Name, actor.DynamicID, player.Properties.Name, player.DynamicID);
                actor.Reveal(player);
            }
        }