public override void BuildCreateMask(UpdateMask mask, bool myself) { base.BuildCreateMask(mask, myself); if (npcflags != 0) { mask.Touch(UpdateFields.UNIT_NPC_FLAGS); } mask.Touch(UpdateFields.UNIT_FIELD_MAXPOWER1 + (ushort)powerType); mask.Touch(UpdateFields.UNIT_FIELD_POWER1 + (ushort)powerType); mask.Touch( UpdateFields.UNIT_FIELD_HEALTH, UpdateFields.UNIT_FIELD_MAXHEALTH, UpdateFields.UNIT_FIELD_LEVEL, UpdateFields.UNIT_FIELD_FACTIONTEMPLATE, UpdateFields.UNIT_FIELD_BYTES_0, UpdateFields.UNIT_FIELD_FLAGS, UpdateFields.UNIT_NPC_EMOTESTATE, UpdateFields.UNIT_FIELD_BASEATTACKTIME, UpdateFields.UNIT_FIELD_BASEATTACKTIME + 1, UpdateFields.UNIT_FIELD_BOUNDINGRADIUS, UpdateFields.UNIT_FIELD_COMBATREACH, UpdateFields.UNIT_FIELD_DISPLAYID, UpdateFields.UNIT_FIELD_NATIVEDISPLAYID, UpdateFields.UNIT_FIELD_AURASTATE, UpdateFields.UNIT_FIELD_MINDAMAGE, UpdateFields.UNIT_FIELD_MAXDAMAGE, UpdateFields.UNIT_FIELD_BYTES_1, UpdateFields.UNIT_FIELD_MOUNTDISPLAYID, UpdateFields.UNIT_FIELD_STAT0, UpdateFields.UNIT_FIELD_STAT1, UpdateFields.UNIT_FIELD_STAT2, UpdateFields.UNIT_FIELD_STAT3, UpdateFields.UNIT_FIELD_STAT4 ); }
public void SendCreateItems(Character carry, CreateItemType type) { SlotID start = 0; SlotID stop = SlotID.BANK; if (type == CreateItemType.Other) { stop = SlotID.INBACKPACK; } if (type == CreateItemType.Bank) { start = SlotID.BANK; stop = (SlotID)items.Length; } UpdateMask imask = new UpdateMask(); while (start < stop) { Item item = carry.items[(int)start]; if (item != null) { item.SendCreateItem(this); imask.Touch(UpdateFields.PLAYER_FIELD_INV_SLOT_HEAD + (ushort)((int)start * 2)); imask.Touch(UpdateFields.PLAYER_FIELD_INV_SLOT_HEAD + (ushort)((int)start * 2 + 1)); } start++; } SendUpdate(carry.BuildUpdate(imask, UpdateType.Value, false)); }
public override void BuildCreateMask(UpdateMask mask, bool myself) { base.BuildCreateMask(mask, myself); mask.Touch( UpdateFields.CONTAINER_FIELD_NUM_SLOTS ); for (int i = 0; i < items.Length; i++) { mask.Touch( UpdateFields.CONTAINER_FIELD_SLOT_1 + (ushort)(i * 2), UpdateFields.CONTAINER_FIELD_SLOT_1 + (ushort)(i * 2 + 1) ); } }
public virtual void BuildCreateMask(UpdateMask mask, bool myself) { mask.Touch( UpdateFields.OBJECT_FIELD_GUID, UpdateFields.OBJECT_FIELD_GUID + 1, UpdateFields.OBJECT_FIELD_ENTRY, UpdateFields.OBJECT_FIELD_TYPE, UpdateFields.OBJECT_FIELD_SCALE_X); }
public override void BuildCreateMask(UpdateMask mask, bool myself) { base.BuildCreateMask(mask, myself); if (myself) { mask.Touch( UpdateFields.PLAYER_XP, UpdateFields.PLAYER_NEXT_LEVEL_XP, UpdateFields.PLAYER_REST_STATE_EXPERIENCE, UpdateFields.PLAYER_FIELD_COINAGE, UpdateFields.PLAYER_FIELD_MOD_DAMAGE_DONE_NEG, UpdateFields.PLAYER_AMMO_ID); uint u = GetUpdateValue(UpdateFields.UNIT_FIELD_FLAGS); SetUpdateValue(UpdateFields.UNIT_FIELD_FLAGS, u | 8, mask); // control player for (ushort i = 0; i < nstat.Length; i++) { mask.Touch(UpdateFields.PLAYER_FIELD_POSSTAT0 + i); } } else { uint u = GetUpdateValue(UpdateFields.UNIT_FIELD_FLAGS); SetUpdateValue(UpdateFields.UNIT_FIELD_FLAGS, u & 0xfffffff7, mask); // not control player } mask.Touch( UpdateFields.PLAYER_BYTES, UpdateFields.PLAYER_BYTES_2, UpdateFields.PLAYER_BYTES_3, UpdateFields.UNIT_FIELD_ATTACKPOWER, UpdateFields.UNIT_FIELD_MINDAMAGE, UpdateFields.UNIT_FIELD_MAXDAMAGE, UpdateFields.UNIT_FIELD_BASEATTACKTIME, UpdateFields.UNIT_FIELD_BASEATTACKTIME + 1 ); for (ushort i = 0; i < res.Length; i++) { mask.Touch(UpdateFields.UNIT_FIELD_RESISTANCES + i); } }
public override void BuildCreateMask(UpdateMask mask, bool myself) { base.BuildCreateMask(mask, myself); mask.Touch( UpdateFields.ITEM_FIELD_OWNER, UpdateFields.ITEM_FIELD_OWNER + 1, UpdateFields.ITEM_FIELD_CONTAINED, UpdateFields.ITEM_FIELD_CONTAINED + 1, UpdateFields.ITEM_FIELD_STACK_COUNT, UpdateFields.ITEM_FIELD_DURABILITY, UpdateFields.ITEM_FIELD_MAXDURABILITY, UpdateFields.ITEM_FIELD_FLAGS); }