protected override bool Create(Character c, Hashtable data, ByteArrayBase moredata) { if (!base.Create(c, data, moredata)) { return(false); } items = new Item[(int)data["containerslots"]]; SetUpdateValue(UpdateFields.CONTAINER_FIELD_NUM_SLOTS, (uint)items.Length); while (moredata != null) { SlotID slot = (SlotID)moredata.GetByte(); if (slot == SlotID.CHARACTER) { break; } uint e = moredata.GetDWord(); ushort len = moredata.GetWord(); Item n = new Item(gameServer); n = n.Create(c, e, new ByteArray(moredata.GetArray(len))); if (n != null) { n.SetUpdateValue(UpdateFields.ITEM_FIELD_CONTAINED, GUID); //n.SetUpdateValue(UpdateFields.ITEM_FIELD_CONTAINED_01, GUID); SetItem(slot, n); } } return(true); }
bool AddItem(ByteArrayBase data) { byte slot; uint id; ushort len; data.Get(out slot).Get(out id).Get(out len); ByteArray b = null; if (len > 0) { b = new ByteArray(data.GetArray(len)); } Item n = new Item(gameServer); n = n.Create(this, id, b); if (n == null) { return(false); } return(AddItem((SlotID)slot, n)); }
public object Get() { byte type = pack.GetByte(); switch (type) { case 0: { int n = (int)pack.GetDWord(); return(n); } case 1: { uint cnt = pack.GetDWord(); int[] n = new int[cnt]; for (uint i = 0; i < cnt; i++) { n[i] = (int)pack.GetDWord(); } return(n); } case 2: { float n = pack.GetFloat(); return(n); } case 3: { uint cnt = pack.GetDWord(); float[] n = new float[cnt]; for (uint i = 0; i < cnt; i++) { n[i] = pack.GetFloat(); } return(n); } case 4: { return(pack.GetString()); } case 5: { uint c = pack.GetDWord(); return(codes[c]); } case 6: { uint cnt = pack.GetDWord(); return(pack.GetArray((int)cnt)); } case 10: { uint cnt = pack.GetDWord(); ArrayList n = new ArrayList(); while (cnt > 0) { n.Add(Get()); cnt--; } return(n); } case 11: { uint cnt = pack.GetDWord(); Hashtable n = new Hashtable(); while (cnt > 0) { object ob = Get(); n[ob] = Get(); cnt--; } return(n); } case 12: // SpawnData { return(new SpawnData(this)); } case 13: // MapPosition { return(new MapPosition(this)); } } return(null); }