public static byte[] SpawnPortal(WorldMgr.Monsters o, WorldMgr.character c, int itemid)
        {
            PacketWriter Writer = new PacketWriter();

            Writer.Create(OperationCode.SERVER_SOLO_SPAWN);
            Writer.DWord(o.ID);
            Writer.DWord(o.UniqueID);
            Writer.Byte(o.xSec);
            Writer.Byte(o.ySec);
            Writer.Float(Formule.packetx((float)o.x, o.xSec));
            Writer.Float(o.z);
            Writer.Float(Formule.packety((float)o.y, o.ySec));
            Writer.Word(0);
            Writer.Byte(1);
            Writer.Byte(0);
            Writer.Byte(1);
            Writer.Byte(6);
            Writer.Text(c.Information.Name);
            Writer.DWord(itemid);
            Writer.Byte(1);
            return(Writer.GetBytes());
        }
        public static object GetObjects(int id)
        {
            try
            {
                WorldMgr.Monsters o = GetObject(id);
                if (o != null)
                {
                    return(o);
                }

                PlayerMgr sys = GetPlayers(id);
                if (sys != null)
                {
                    return(sys);
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
            return(null);
        }
        public static byte[] ObjectSpawn(WorldMgr.Monsters o)        //Monster spawns
        {
            PacketWriter Writer = new PacketWriter();

            Writer.Create(OperationCode.SERVER_SOLO_SPAWN);
            Writer.DWord(o.ID);
            Writer.DWord(o.UniqueID);
            Writer.Byte(o.xSec);
            Writer.Byte(o.ySec);
            Writer.Float(Formule.packetx((float)o.x, o.xSec));
            Writer.Float(o.z);
            Writer.Float(Formule.packety((float)o.y, o.ySec));

            switch (o.LocalType)
            {
            case 0:

                Writer.Word(0);
                Writer.Word(1);
                Writer.Byte(o.xSec);
                Writer.Byte(o.ySec);

                if (!FileDB.CheckCave(o.xSec, o.ySec))
                {
                    if (o.xSec == 0)
                    {
                        Writer.Word(0);
                    }
                    else
                    {
                        Writer.Word(Formule.packetx((float)(o.x + o.wx), o.xSec));
                    }
                    Writer.Word(o.z);
                    if (o.ySec == 0)
                    {
                        Writer.Word(0);
                    }
                    else
                    {
                        Writer.Word(Formule.packety((float)(o.y + o.wy), o.ySec));
                    }
                }
                else
                {
                    if (o.x < 0)
                    {
                        Writer.Word(Formule.cavepacketx((float)(o.x + o.wx)));
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(Formule.cavepacketx((float)(o.x + o.wx)));
                    }

                    Writer.DWord(o.z);

                    if (o.y < 0)
                    {
                        Writer.Word(Formule.cavepackety((float)(o.y + o.wy)));
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(Formule.cavepackety((float)(o.y + o.wy)));
                    }
                }

                Writer.Byte(1);
                Writer.Byte(o.Runing == true ? 2 : 0);
                Writer.Byte(0);
                Writer.Float(o.WalkingSpeed);          // Walk speed
                Writer.Float(o.RunningSpeed);          // Run speed
                Writer.Float(o.BerserkerSpeed);        // Berserk speed

                Writer.Byte(0);                        //new ?

                Writer.Byte(0);
                Writer.Byte(2);
                Writer.Byte(1);
                Writer.Byte(5);
                Writer.Byte(o.Type);
                break;

            case 1:
                Writer.Word(o.Angle);
                Writer.Word(1);
                Writer.Byte(o.xSec);
                Writer.Byte(o.ySec);

                if (!FileDB.CheckCave(o.xSec, o.ySec))
                {
                    Writer.Word(Formule.packetx((float)(o.x + o.wx), o.xSec));
                    Writer.Word(o.z);
                    Writer.Word(Formule.packety((float)(o.y + o.wy), o.ySec));
                }
                else
                {
                    if (o.x < 0)
                    {
                        Writer.Word(Formule.cavepacketx((float)(o.x + o.wx)));
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(Formule.cavepacketx((float)(o.x + o.wx)));
                    }

                    Writer.DWord(o.z);

                    if (o.y < 0)
                    {
                        Writer.Word(Formule.cavepackety((float)(o.y + o.wy)));
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(Formule.cavepackety((float)(o.y + o.wy)));
                    }
                }

                Writer.Byte(1);
                Writer.Byte(o.Runing == true ? 2 : 0);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Float(o.WalkingSpeed);                        // Walk speed
                Writer.Float(o.RunningSpeed);                        // Run speed
                Writer.Float(o.BerserkerSpeed);                      // Berserk speed
                Writer.Byte(0);
                Writer.Byte(2);
                Writer.Byte(1);
                Writer.Byte(5);
                Writer.Byte(o.Type);
                Writer.Byte(4);
                break;

            case 2:
                Writer.Word(o.Angle);                         // Should be angle? yet not changing ingame..
                Writer.Byte(0);
                Writer.Byte(1);
                Writer.Byte(0);
                Writer.Word(o.Angle);                         // Should be angle? yet not changing ingame..
                Writer.Byte(1);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.DWord(0);
                Writer.DWord(0);
                Writer.Float(100);
                Writer.Byte(0);
                Writer.Byte(2);
                Writer.Byte(0);
                Writer.Byte(2);
                break;

            case 3:
                Writer.Word(0);
                Writer.Byte(1);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Byte(1);
                Writer.DWord(0);
                Writer.DWord(0);
                Writer.Byte(0);
                break;

            case 4:
                /*Writer.Word(0); // Angle
                 * Writer.Byte(0);
                 * Writer.Byte(1);
                 * Writer.Byte(0);
                 * Writer.Word(0); // Angle
                 * Writer.Byte(1);
                 * Writer.Byte(0);
                 * Writer.Byte(0);
                 * Writer.Byte(0);
                 * Writer.Float(o.WalkingSpeed);// Walk speed
                 * Writer.Float(o.RunningSpeed);// Run speed
                 * Writer.Float(o.BerserkerSpeed);// Berserk speed
                 * Writer.Byte(0);
                 * Writer.Byte(2);
                 * Writer.Byte(1);
                 * Writer.Byte(5);
                 * Writer.Byte(0);
                 * Writer.Byte(34);
                 * Writer.Byte(1);
                 * */
                // Thiefs and trader spawns
                Writer.Word(0);                         // Angle
                Writer.Word(1);
                Writer.Byte(o.xSec);
                Writer.Byte(o.ySec);

                if (!FileDB.CheckCave(o.xSec, o.ySec))
                {
                    Writer.Word(Formule.packetx((float)(o.x + o.wx), o.xSec));
                    Writer.Word(o.z);
                    Writer.Word(Formule.packety((float)(o.y + o.wy), o.ySec));
                }
                else
                {
                    if (o.x < 0)
                    {
                        Writer.Word(Formule.packetx((float)(o.x + o.wx), o.xSec));
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(Formule.packetx((float)(o.x + o.wx), o.xSec));
                    }

                    Writer.DWord(o.z);

                    if (o.y < 0)
                    {
                        Writer.Word(Formule.packety((float)(o.y + o.wy), o.ySec));
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(Formule.packety((float)(o.y + o.wy), o.ySec));
                    }
                }

                Writer.Byte(1);
                Writer.Byte(o.Runing == true ? 2 : 0);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Float(o.WalkingSpeed);                        // Walk speed
                Writer.Float(o.RunningSpeed);                        // Run speed
                Writer.Float(o.BerserkerSpeed);                      // Berserk speed
                Writer.Byte(0);
                Writer.Byte(2);
                Writer.Byte(1);
                Writer.Byte(5);
                Writer.Byte(0);
                Writer.Byte(34);                         // 227 Need to check what this is...
                Writer.Byte(1);

                break;

            case 5:
                // Static monster spawns
                Writer.Word(0);
                Writer.Word(1);
                Writer.Byte(o.xSec);
                Writer.Byte(o.ySec);

                if (!FileDB.CheckCave(o.xSec, o.ySec))
                {
                    Writer.Word(Formule.packetx((float)o.x, o.xSec));
                    Writer.Word(o.z);
                    Writer.Word(Formule.packety((float)o.y, o.ySec));
                }
                else
                {
                    if (o.x < 0)
                    {
                        Writer.Word(Formule.packetx((float)o.x, o.xSec));
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(Formule.packetx((float)o.x, o.xSec));
                    }

                    Writer.DWord(o.z);

                    if (o.y < 0)
                    {
                        Writer.Word(Formule.packety((float)o.y, o.ySec));
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(Formule.packety((float)o.y, o.ySec));
                    }
                }

                Writer.Byte(1);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Byte(0);
                Writer.Float(0);                            // Walk speed
                Writer.Float(0);                            // Run speed
                Writer.Float(100);                          // Berserk speed
                Writer.Byte(0);
                Writer.Byte(2);
                Writer.Byte(1);
                Writer.Byte(5);
                Writer.Byte(o.Type);
                Writer.Byte(0);
                o.LocalType = 1;
                break;

            default:
                break;
            }
            return(Writer.GetBytes());
        }