public CVarSetPacketOut(CVar var, Server tserver) { UsageType = NetUsageType.GENERAL; ID = ServerToClientPacket.CVAR_SET; DataStream ds = new DataStream(); DataWriter dw = new DataWriter(ds); dw.WriteInt(tserver.Networking.Strings.IndexForString(var.Name.ToLowerFast())); dw.WriteFullString(var.Value); Data = ds.ToArray(); }
public void WriteBasicBytes(DataWriter dw) { dw.WriteInt(Count); dw.WriteInt(Datum); dw.WriteFloat((float)Weight); dw.WriteFloat((float)Volume); dw.WriteFloat((float)Temperature); dw.WriteInt(DrawColor.ToArgb()); dw.WriteFullString(Name); dw.WriteFullString(SecondaryName == null ? "" : SecondaryName); dw.WriteFullString(DisplayName); dw.WriteFullString(Description); dw.WriteFullString(GetTextureName()); dw.WriteFullString(GetModelName()); dw.WriteByte((byte)(RenderAsComponent ? 1 : 0)); dw.WriteFloat((float)ComponentRenderOffset.X); dw.WriteFloat((float)ComponentRenderOffset.Y); dw.WriteFloat((float)ComponentRenderOffset.Z); dw.WriteInt(SharedAttributes.Count); foreach (KeyValuePair<string, TemplateObject> entry in SharedAttributes) { if (entry.Key == null || entry.Value == null) { SysConsole.Output(OutputType.WARNING, "Null entry in SharedAttributes for " + Name); continue; } dw.WriteFullString(entry.Key); if (entry.Value is IntegerTag) { dw.WriteByte(0); dw.WriteLong(((IntegerTag)entry.Value).Internal); } else if (entry.Value is NumberTag) { dw.WriteByte(1); dw.WriteDouble(((NumberTag)entry.Value).Internal); } else if (entry.Value is BooleanTag) { dw.WriteByte(2); dw.WriteByte((byte)(((BooleanTag)entry.Value).Internal ? 1 : 0)); } // TODO: shared BaseItemTag? else { dw.WriteByte(3); dw.WriteFullString(entry.Value.ToString()); } } }
public byte[] ServerBytes() { DataStream data = new DataStream(1000); DataWriter dw = new DataWriter(data); dw.WriteInt(Attributes.Count); foreach (KeyValuePair<string, TemplateObject> entry in Attributes) { dw.WriteFullString(entry.Key); if (entry.Value is IntegerTag) { dw.WriteByte(0); dw.WriteLong(((IntegerTag)entry.Value).Internal); } else if (entry.Value is NumberTag) { dw.WriteByte(1); dw.WriteDouble(((NumberTag)entry.Value).Internal); } else if (entry.Value is BooleanTag) { dw.WriteByte(2); dw.WriteByte((byte)(((BooleanTag)entry.Value).Internal ? 1 : 0)); } // TODO: shared BaseItemTag? else { dw.WriteByte(3); dw.WriteFullString(entry.Value.ToString()); } } WriteBasicBytes(dw); dw.WriteInt(Components.Count); foreach (ItemStack itb in Components) { dw.WriteFullBytes(itb.ServerBytes()); } dw.Flush(); return data.ToArray(); }