Пример #1
0
 public void ObjectHitInfo(
     ObjectRayHit hit,
     ref ObjectHitInfo hitInfo
     )
 {
     // this never needs to be called
     hit.SetObject.Set.ObjectHitInfo(hit, ref hitInfo);
 }
 public static byte[] getCode4SyncData(List <ObjectHitInfo> objs)
 {
     using (SendPacket s = new SendPacket())
     {
         for (int i = 0; i < objs.Count; i++)
         {
             ObjectHitInfo obj = objs[i];
             if (obj.syncType == 1)
             {
                 if (obj.objSyncId == 0)
                 {
                     s.writeC((byte)P2P_SUB_HEAD.OBJECT_STATIC);
                     s.writeH((ushort)obj.objId);
                     s.writeH(8);
                     s.writeH((ushort)obj.objLife);
                     s.writeC((byte)obj.killerId);
                 }
                 else
                 {
                     s.writeC((byte)P2P_SUB_HEAD.OBJECT_ANIM);
                     s.writeH((ushort)obj.objId);
                     s.writeH(13);
                     s.writeH((ushort)obj.objLife);
                     s.writeC((byte)obj._animId1);
                     s.writeC((byte)obj._animId2);
                     s.writeT(obj._specialUse);
                 }
             }
             else if (obj.syncType == 2)
             {
                 Events events  = Events.LifeSync;
                 int    tamanho = 11;
                 if (obj.objLife == 0)
                 {
                     events  |= Events.Death;
                     tamanho += 12;
                 }
                 s.writeC((byte)P2P_SUB_HEAD.USER);
                 s.writeH((ushort)obj.objId);
                 s.writeH((ushort)tamanho);
                 s.writeD((uint)events);
                 s.writeH((ushort)obj.objLife);
                 if (events.HasFlag(Events.Death))
                 {
                     s.writeC((byte)(obj.deathType + (obj.objId * 16)));
                     s.writeC((byte)obj.hitPart);
                     s.writeH(0); //obj.Position.X.RawValue);
                     s.writeH(0); //obj.Position.Y.RawValue);
                     s.writeH(0); //obj.Position.Z.RawValue);
                     s.writeD(obj.weaponId);
                     //Logger.warning("[Death] X: " + obj.Position.X + "; Y: " + obj.Position.Y + "; Z: " + obj.Position.Z);
                 }
             }
             else if (obj.syncType == 3)
             {
                 if (obj.objSyncId == 0)
                 {
                     s.writeC((byte)P2P_SUB_HEAD.STAGEINFO_OBJ_STATIC);
                     s.writeH((ushort)obj.objId);
                     s.writeH(6);
                     s.writeC((obj.objLife == 0));
                 }
                 else
                 {
                     s.writeC((byte)P2P_SUB_HEAD.STAGEINFO_OBJ_ANIM);
                     s.writeH((ushort)obj.objId);
                     s.writeH(14);
                     s.writeC((byte)obj._destroyState);
                     s.writeH((ushort)obj.objLife);
                     s.writeT(obj._specialUse);
                     s.writeC((byte)obj._animId1);
                     s.writeC((byte)obj._animId2);
                 }
             }
             else if (obj.syncType == 4)
             {
                 s.writeC((byte)P2P_SUB_HEAD.STAGEINFO_CHARA);
                 s.writeH((ushort)obj.objId);
                 s.writeH(11);
                 s.writeD(256);
                 s.writeH((ushort)obj.objLife);
             }
             else if (obj.syncType == 5)
             {
                 s.writeC((byte)P2P_SUB_HEAD.USER);
                 s.writeH((short)obj.objId);
                 s.writeH(11);
                 s.writeD(524288);
                 s.writeC((byte)(obj.killerId + ((int)obj.deathType * 16)));
                 s.writeC((byte)obj.objLife);
             }
         }
         return(s.mstream.ToArray());
     }
 }
Пример #3
0
 public static byte[] getCode4SyncData(List <ObjectHitInfo> objs)
 {
     using (SendPacket sendPacket = new SendPacket())
     {
         for (int index = 0; index < objs.Count; ++index)
         {
             ObjectHitInfo objectHitInfo = objs[index];
             if (objectHitInfo.syncType == 1)
             {
                 if (objectHitInfo.objSyncId == 0)
                 {
                     sendPacket.writeC((byte)3);
                     sendPacket.writeH((ushort)objectHitInfo.objId);
                     sendPacket.writeH((short)8);
                     sendPacket.writeH((ushort)objectHitInfo.objLife);
                     sendPacket.writeC((byte)objectHitInfo.killerId);
                 }
                 else
                 {
                     sendPacket.writeC((byte)6);
                     sendPacket.writeH((ushort)objectHitInfo.objId);
                     sendPacket.writeH((short)13);
                     sendPacket.writeH((ushort)objectHitInfo.objLife);
                     sendPacket.writeC((byte)objectHitInfo._animId1);
                     sendPacket.writeC((byte)objectHitInfo._animId2);
                     sendPacket.writeT(objectHitInfo._specialUse);
                 }
             }
             else if (objectHitInfo.syncType == 2)
             {
                 Events events = Events.LifeSync;
                 int    num    = 11;
                 if (objectHitInfo.objLife == 0)
                 {
                     events |= Events.Death;
                     num    += 12;
                 }
                 sendPacket.writeC((byte)0);
                 sendPacket.writeH((ushort)objectHitInfo.objId);
                 sendPacket.writeH((ushort)num);
                 sendPacket.writeD((uint)events);
                 sendPacket.writeH((ushort)objectHitInfo.objLife);
                 if (events.HasFlag((Enum)Events.Death))
                 {
                     sendPacket.writeC((byte)(objectHitInfo.deathType + objectHitInfo.objId * 16));
                     sendPacket.writeC((byte)objectHitInfo.hitPart);
                     sendPacket.writeH((short)0);
                     sendPacket.writeH((short)0);
                     sendPacket.writeH((short)0);
                     sendPacket.writeD(objectHitInfo.weaponId);
                 }
             }
             else if (objectHitInfo.syncType == 3)
             {
                 if (objectHitInfo.objSyncId == 0)
                 {
                     sendPacket.writeC((byte)9);
                     sendPacket.writeH((ushort)objectHitInfo.objId);
                     sendPacket.writeH((short)6);
                     sendPacket.writeC(objectHitInfo.objLife == 0);
                 }
                 else
                 {
                     sendPacket.writeC((byte)12);
                     sendPacket.writeH((ushort)objectHitInfo.objId);
                     sendPacket.writeH((short)14);
                     sendPacket.writeC((byte)objectHitInfo._destroyState);
                     sendPacket.writeH((ushort)objectHitInfo.objLife);
                     sendPacket.writeT(objectHitInfo._specialUse);
                     sendPacket.writeC((byte)objectHitInfo._animId1);
                     sendPacket.writeC((byte)objectHitInfo._animId2);
                 }
             }
             else if (objectHitInfo.syncType == 4)
             {
                 sendPacket.writeC((byte)8);
                 sendPacket.writeH((ushort)objectHitInfo.objId);
                 sendPacket.writeH((short)11);
                 sendPacket.writeD(256);
                 sendPacket.writeH((ushort)objectHitInfo.objLife);
             }
             else if (objectHitInfo.syncType == 5)
             {
                 sendPacket.writeC((byte)0);
                 sendPacket.writeH((short)objectHitInfo.objId);
                 sendPacket.writeH((short)11);
                 sendPacket.writeD(524288);
                 sendPacket.writeC((byte)(objectHitInfo.killerId + (int)objectHitInfo.deathType * 16));
                 sendPacket.writeC((byte)objectHitInfo.objLife);
             }
         }
         return(sendPacket.mstream.ToArray());
     }
 }