public static void AddObject(string[] args, WorldClass session) { var pChar = session.Character; int objectId = CommandParser.Read <int>(args, 1); GameObject gObject = DataMgr.FindGameObject(objectId); if (gObject != null) { ChatMessageValues chatMessage = new ChatMessageValues(0, ""); GameObjectSpawn spawn = new GameObjectSpawn() { Guid = GameObjectSpawn.GetLastGuid() + 1, Id = objectId, GameObject = gObject, Position = pChar.Position, Map = pChar.Map }; if (spawn.AddToDB()) { chatMessage.Message = "Spawn successfully added."; spawn.AddToWorld(); ChatHandler.SendMessage(ref session, chatMessage); } else { chatMessage.Message = "Spawn can't be added."; ChatHandler.SendMessage(ref session, chatMessage); } } }
public static void HandleQueryGameObject(ref PacketReader packet, WorldClass session) { byte[] guidMask = { 6, 4, 0, 5, 1, 7, 3, 2 }; byte[] guidBytes = { 5, 0, 6, 7, 3, 4, 2, 1 }; BitUnpack BitUnpack = new BitUnpack(packet); var id = packet.Read <int>(); var guid = BitUnpack.GetPackedValue(guidMask, guidBytes); PacketWriter queryGameObjectResponse = new PacketWriter(ServerMessage.QueryGameObjectResponse); BitPack BitPack = new BitPack(queryGameObjectResponse); var gObject = DataMgr.FindGameObject(id); var hasData = (gObject != null); queryGameObjectResponse.WriteInt32(id); queryGameObjectResponse.WriteInt32(0); if (hasData) { var stats = gObject.Stats; queryGameObjectResponse.WriteInt32((int)stats.Type); queryGameObjectResponse.WriteInt32(stats.DisplayInfoId); queryGameObjectResponse.WriteCString(stats.Name); for (int i = 0; i < 3; i++) { queryGameObjectResponse.WriteCString(""); } queryGameObjectResponse.WriteCString(stats.IconName); queryGameObjectResponse.WriteCString(stats.CastBarCaption); queryGameObjectResponse.WriteCString(""); foreach (var v in stats.Data) { queryGameObjectResponse.WriteInt32(v); } queryGameObjectResponse.WriteFloat(stats.Size); queryGameObjectResponse.WriteUInt8((byte)stats.QuestItemId.Count); foreach (var v in stats.QuestItemId) { queryGameObjectResponse.WriteInt32(v); } queryGameObjectResponse.WriteInt32(stats.ExpansionRequired); var size = (uint)queryGameObjectResponse.BaseStream.Length - 13; queryGameObjectResponse.WriteUInt32Pos(size, 9); } else { Log.Message(LogType.Debug, "Gameobject (Id: {0}) not found.", id); } BitPack.Write(hasData); BitPack.Flush(); session.Send(ref queryGameObjectResponse); }