// 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); } }
// 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); } }
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(); }
// 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); } }