/// <summary> /// Sets a property /// </summary> /// <param name="player">target player</param> /// <param name="name">property name</param> /// <param name="value">value</param> /// <param name="isInt">send as int?</param> internal void Property(Player player, string name, object value, bool isInt) { PacketStream stream = new PacketStream(0x01FB); stream.WriteUInt32(player.Handle); stream.WriteBool(isInt); stream.WriteString(name, 16); if (isInt) { stream.WriteInt64(Convert.ToInt64(value)); } else { stream.WriteInt64(0); string val = (string)value; stream.WriteString(val, val.Length + 1); } ClientManager.Instance.Send(player, stream, BroadcastArea.Self); }
internal void GoldUpdate(Player player, long gold, int chaos) { PacketStream stream = new PacketStream(0x03E9); stream.WriteInt64(gold); stream.WriteInt32(chaos); ClientManager.Instance.Send(player, stream, BroadcastArea.Self); }
internal void InventoryList(Player player, List<uint> inventory) { PacketStream stream = new PacketStream(0x00CF); stream.WriteUInt16((ushort)inventory.Count); for (int i = 0; i < inventory.Count; i++) { Item item = (Item) GObjectManager.Instance.Get(ObjectType.Item, inventory[i]); // TS_ITEM_BASE_INFO stream.WriteUInt32(item.Handle); stream.WriteInt32(item.Code); stream.WriteInt64(item.UId); stream.WriteInt64(item.Count); stream.WriteInt32(item.Durability); stream.WriteUInt32(item.Endurance); stream.WriteByte((byte)item.Enhance); stream.WriteByte((byte)item.Level); stream.WriteInt32(item.Flag); stream.WriteInt32(item.Socket[0]); stream.WriteInt32(item.Socket[1]); stream.WriteInt32(item.Socket[2]); stream.WriteInt32(item.Socket[3]); stream.WriteInt32(item.RemainTime); stream.WriteByte((byte)item.ElementalEffectType); stream.WriteInt32(0); // TODO : elemental_effect_remain_time stream.WriteInt32(item.ElementalEffectAttackPoint); stream.WriteInt32(item.ElementalEffectMagicPoint); // TS_ITEM_INFO stream.WriteInt16((short)item.WearInfo); stream.WriteUInt32(0); // TODO : own_summon_handle stream.WriteInt32(i); // TODO : index } ClientManager.Instance.Send(player, stream, BroadcastArea.Self); }
internal void ExpUpdate(Player player, long exp, int jp) { PacketStream stream = new PacketStream(0x03EB); stream.WriteUInt32(player.Handle); stream.WriteInt64(exp); stream.WriteInt32(jp); ClientManager.Instance.Send(player, stream, BroadcastArea.Self); }