コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
        }