private static void NewMethod1(Player player, Item item, ItemStructure strucc) { var builder = new PacketBuilder(Packets.SendToClient.OpenContainer); builder.AddU8(0); // container index builder.AddU16(item.Id); // container look id? the one identifying the container builder.AddString(strucc.Name); builder.AddU8(strucc.ContainerSize); builder.AddU8(0); // root container, 1 == child container var inside = player.Equipment.Backpack.Inside; if (inside == null) { builder.AddU8(0); } else { builder.AddU8((byte)inside.Count); for (int i = 0; i < inside.Count; i++) { builder.AddItem(inside[i]); } } player.OpenContainer(player.Equipment.Backpack); builder.Send(player); }
public void Open(byte newContainerIndex, Item container, ItemStructure strucc, bool childContainer = true) { var builder = new PacketBuilder(Packets.SendToClient.OpenContainer); builder.AddU8(newContainerIndex); // container index builder.AddU16(container.Id); // container look id? the one identifying the container builder.AddString(strucc.Name); builder.AddU8(strucc.ContainerSize); builder.AddU8((byte)(childContainer ? 1 : 0)); // 0 == root container, 1 == child container var inside = container.Inside; if (inside == null) { builder.AddU8(0); } else { builder.AddU8((byte) inside.Count); for (int i = 0; i < inside.Count; i++) { builder.AddItem(inside[i]); } } _player.OpenContainer(container); builder.Send(_player); }
public void UpdateLight(Creature creature) { var builder = new PacketBuilder(Packets.SendToClient.UpdateCreatureLight); builder.AddU32(creature.Id); builder.AddU8(creature.LightColor); builder.AddU8(creature.LightLevel); builder.Send(_player); }
public void WorldLight() { var builder = new PacketBuilder(Packets.SendToClient.WorldLight); // 40 = night // 250 = day builder.AddU8(40); builder.AddU8(215); builder.Send(_player); }
public void CreatureTurn(Creature creature) { var builder = new PacketBuilder(); builder.AddPacketId(Packets.SendToClient.CreatureTurn); builder.AddPosition(creature.Position); builder.AddU8(creature.ZIndex); builder.AddU16(0x63); builder.AddU32(creature.Id); builder.AddU8((byte)creature.Direction); builder.Send(_player); }
public void Stats() { var builder = new PacketBuilder(Packets.SendToClient.PlayerStats); builder.AddU16(_player.Hitpoints); builder.AddU16(_player.MaxHitpoints); builder.AddU16(_player.Capacity); builder.AddU32(_player.Experience); builder.AddU8(_player.Level); builder.AddU16(_player.Mana); builder.AddU16(_player.MaxMana); builder.AddU8(_player.MagicLevel.Get()); builder.Send(_player); }
public void AddMapDescriptionToBuilder(PacketBuilder builder, ushort x, ushort y, byte z, int width, int height, bool isStep) { const int maxZ = 15; var skip = -1; byte startZ, endZ; short zStep; if (z > 7) { startZ = (byte)(_player.Position.Z - 2); endZ = (byte)(Math.Min(maxZ, z + 2)); zStep = 1; } else { startZ = 7; endZ = 0; zStep = -1; } // if (_player.Position.Z > 7) // { // startz = (byte) (_player.Position.Z - 2); // endz = (byte) (Math.Min(maxZ, _player.Position.Z + 2)); // zstep = 1; // } // else // { // startz = 7; // endz = 0; // zstep = -1; // } // short x = (short) (_player.Position.X - 8); // short y = (short) (_player.Position.Y - 6); // byte z = _player.Position.Z; for (short nz = startZ; nz != endZ + zStep; nz += zStep) // +/- 2 of player z (but no higher than max Z or lower than min Z) { AddFloorDescriptionToBuilder(builder, x, y, (byte)nz, width, height, (short)(z - nz), isStep, ref skip); } if (skip < 0) { return; } builder.AddU8((byte)skip); builder.AddU8(0xFF); }
public void StatusIcons() { var builder = new PacketBuilder(Packets.SendToClient.PlayerStatusIcons); builder.AddU8((byte)Constants.StatusIcons.None); builder.Send(_player); }
public void MoveSouth() { var builder = new PacketBuilder(Packets.SendToClient.CreaturePositionUpdate); var oldPos = _player.Position; var oldZIndex = _player.ZIndex; builder.AddPosition(oldPos); builder.AddU8(oldZIndex); // old stack position (z-index) _player.MoveDown(); var newPos = _player.Position; builder.AddPosition(newPos); builder.Send(_player); builder.AddPacketId(Packets.SendToClient.MoveDown); /* add rest of map description */ _player.Packets.Map.AddMapDescriptionToBuilder(builder, (ushort)(oldPos.X - 8), (ushort)(newPos.Y + 7), newPos.Z, GameClient.Width, 1, true); builder.Send(_player); var newZIndex = IoC.Game.GetCreatureZIndex(_player, _player.Position); IoC.Game.CreatureMoved(_player, oldPos, newPos, newZIndex); }
public void ServerBroadcast(string message) { var builder = new PacketBuilder(Packets.SendToClient.SpecialMessage); builder.AddU8(0xF); builder.AddString(message); builder.Send(_player); }
public void Magic(Position destination, byte projectileId) { var builder = new PacketBuilder(Packets.SendToClient.MagicEffect); builder.AddPosition(destination); builder.AddU8((byte)(projectileId - 1)); // projectile id - 1 because the client adds 1 to whatever we send builder.Send(_player); }
public void UpdateHealth(Creature creature) { var builder = new PacketBuilder(Packets.SendToClient.UpdateCreatureHealthPercent); builder.AddU32(creature.Id); builder.AddU8(creature.PercentHitpoints); builder.Send(_player); }
public void Logout(Creature creature) { var builder = new PacketBuilder(Packets.SendToClient.MagicEffect); builder.AddPosition(creature.Position); builder.AddU8(2); // effect id - 1 builder.Send(_player); }
public void LookAt(string message) { var builder = new PacketBuilder(Packets.SendToClient.SpecialMessage); builder.AddU8(0x13); builder.AddString(message); builder.Send(_player); }
public void AdvanceOrRaid(string message) { var builder = new PacketBuilder(Packets.SendToClient.SpecialMessage); builder.AddU8(0x10); builder.AddString(message); builder.Send(_player); }
public void StatusAndConsole(string message) { var builder = new PacketBuilder(Packets.SendToClient.SpecialMessage); builder.AddU8(0x11); builder.AddString(message); builder.Send(_player); }
public void Animated(Position pos, Colors color, string message) { var builder = new PacketBuilder(Packets.SendToClient.AnimatedText); builder.AddPosition(pos); builder.AddU8((byte)color); builder.AddString(message); builder.Send(_player); }
public void CreatureDisappear(Creature creature) { var builder = new PacketBuilder(); builder.AddPacketId(Packets.SendToClient.ItemOrCreatureDisappear); builder.AddPosition(creature.Position); builder.AddU8(creature.ZIndex); builder.Send(_player); }
public void Private(string fromName, string message) { var builder = new PacketBuilder(Packets.SendToClient.Message); builder.AddString(fromName); // source player builder.AddU8((byte)MessageTypes.Private); // message type builder.AddString(message); builder.Send(_player); }
/// <summary> /// Probably some sort of global channel message /// </summary> public void NotSure(string text, string something) { var builder = new PacketBuilder(Packets.SendToClient.Message); builder.AddString(text); // source player builder.AddU8((byte)MessageTypes.NotSure); // message type builder.AddString(something); // source player builder.Send(_player); }
public void Projectile(Position source, Position destination, byte projectileId) { var builder = new PacketBuilder(Packets.SendToClient.ProjectileEffect); builder.AddPosition(source); builder.AddPosition(destination); builder.AddU8((byte)(projectileId - 1)); // projectile id - 1 because the client adds 1 to whatever we send builder.Send(_player); // 3 (4) == HMM projectile id }
// if (!tile.skip) // { // if (skip >= 0) // { // builder.AddU8((byte) skip); // builder.AddU8(0xFF); // } // // skip = 0; // var count = 0; // if (tile.t.GroundId > 0) // { // builder.AddU16(tile.t.GroundId); // count++; // } // // if (tile.t.Items?.Count > 0) // { // foreach (var t in tile.t.Items) // { // if (count > 9) // break; // builder.AddItem(t); // count++; // } // } // // var creatures = Game.Instance.GetCreaturesOnTile(currentTile); // // if (creatures == null) continue; // foreach (var creature in creatures) // { // if (count > 9) // break; // builder.AddCreature(_player, creature); // count++; // } // } // else // { // skip++; // if (skip != 0xFF) continue; // builder.AddU8(0xFF); // builder.AddU8(0xFF); // skip = -1; // } // } public void CreatureMoved(Position oldPos, Position newPos, byte newZIndex) { var builder = new PacketBuilder(); builder.AddPacketId(Packets.SendToClient.CreaturePositionUpdate); builder.AddPosition(oldPos); builder.AddU8(newZIndex); // not 100% sure if it should be new or old z-index builder.AddPosition(newPos); builder.Send(_player); }
public void Creature(Position pos, string message) { var builder = new PacketBuilder(Packets.SendToClient.Message); builder.AddString(""); // source player builder.AddU8((byte)MessageTypes.Creature); // message type builder.AddPosition(pos); builder.AddString(message); builder.Send(_player); }
public void Yell(Position pos, string fromName, string message) { var builder = new PacketBuilder(Packets.SendToClient.Message); builder.AddString(fromName); // source player builder.AddU8((byte)MessageTypes.Yell); // message type builder.AddPosition(pos); builder.AddString(message.ToUpper()); builder.Send(_player); }
public void LocalMessage(Position pos, string fromName, string message, byte speechType) { var builder = new PacketBuilder(Packets.SendToClient.Message); builder.AddString(fromName); // source player builder.AddU8(speechType); // message type builder.AddPosition(pos); builder.AddString(message); builder.Send(_player); }
public void UpdateOutfit(Creature creature) { var builder = new PacketBuilder(Packets.SendToClient.UpdateCreatureOutfit); builder.AddU32(creature.Id); builder.AddU8(creature.Outfit.Id); if (creature.Outfit.Id != 0) { builder.AddU8(creature.Outfit.Head); builder.AddU8(creature.Outfit.Body); builder.AddU8(creature.Outfit.Legs); builder.AddU8(creature.Outfit.Feet); } else { // invisible builder.AddU16(0); } builder.Send(_player); }
private void AddFloorDescriptionToBuilder(PacketBuilder builder, ushort x, ushort y, byte z, int width, int height, short offset, bool isStep, ref int skip) { /* add floor description */ for (ushort nx = 0; nx < width; nx++) { for (ushort ny = 0; ny < height; ny++) { // var currentTile = new Position((ushort) (x + nx + offset), (ushort) (y + ny + offset), // (byte) nz); var tile = IoC.Game.GetTile( (ushort)(x + nx + offset), (ushort)(y + ny + offset), z); if (tile != null) { if (skip >= 0) { builder.AddU8((byte)skip); builder.AddU8(0xFF); } skip = 0; AddTileDescriptionToBuilder(builder, tile, isStep); } else { skip += 1; if (skip == 0xFF) { builder.AddU8(0xFF); builder.AddU8(0xFF); skip = -1; } } } } }
public void Legs(Item item) { if (item.Id == 0) { return; } var builder = new PacketBuilder(Packets.SendToClient.FillEquipmentSlot); builder.AddU8((byte)EquipmentSlots.Legs); builder.AddItem(item); builder.Send(_player); _player.Equipment.Legs = item; }
public void Skills() { var builder = new PacketBuilder(Packets.SendToClient.PlayerSkills); builder.AddU8(_player.Skills.Fist.Get()); builder.AddU8(_player.Skills.Club.Get()); builder.AddU8(_player.Skills.Sword.Get()); builder.AddU8(_player.Skills.Axe.Get()); builder.AddU8(_player.Skills.Dist.Get()); builder.AddU8(_player.Skills.Shield.Get()); builder.AddU8(_player.Skills.Fish.Get()); builder.Send(_player); }
public void MoveEast() { var builder = new PacketBuilder(Packets.SendToClient.CreaturePositionUpdate); var oldPos = _player.Position; var oldZIndex = _player.ZIndex; builder.AddPosition(oldPos); builder.AddU8(oldZIndex); // old stack position (z-index) _player.MoveRight(); var newPos = _player.Position; builder.AddPosition(newPos); builder.AddPacketId(Packets.SendToClient.MoveRight); /* add rest of map description */ _player.Packets.Map.AddMapDescriptionToBuilder(builder, (ushort)(newPos.X + 9), (ushort)(newPos.Y - 6), newPos.Z, 1, GameClient.Height, true); builder.Send(_player); IoC.Game.CreatureMoved(_player, oldPos, newPos, oldZIndex); }