示例#1
0
 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();
 }
示例#2
0
 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());
         }
     }
 }
示例#3
0
 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();
 }