コード例 #1
0
        public static SubPacket buildPacket(uint playerActorId, uint targetActorId, string conditionName, List <LuaParam> luaParams)
        {
            byte[] data = new byte[PACKET_SIZE - 0x20];

            using (MemoryStream mem = new MemoryStream(data))
            {
                using (BinaryWriter binWriter = new BinaryWriter(mem))
                {
                    binWriter.Write((UInt32)playerActorId);
                    binWriter.Write((UInt32)targetActorId);
                    binWriter.Write((Byte)0x5);
                    binWriter.Write((Byte)0x87);
                    binWriter.Write((Byte)0xDC);
                    binWriter.Write((Byte)0x75);
                    binWriter.Write((UInt32)0x30400000);
                    binWriter.Write(Encoding.ASCII.GetBytes(conditionName), 0, Encoding.ASCII.GetByteCount(conditionName) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(conditionName));

                    binWriter.Seek(0x30, SeekOrigin.Begin);

                    LuaUtils.writeLuaParams(binWriter, luaParams);
                }
            }

            return(new SubPacket(OPCODE, playerActorId, playerActorId, data));
        }
コード例 #2
0
        public static SubPacket buildPacket(uint playerActorID, uint targetActorID, List <LuaParam> luaParams)
        {
            byte[] data = new byte[PACKET_SIZE - 0x20];

            using (MemoryStream mem = new MemoryStream(data))
            {
                using (BinaryWriter binWriter = new BinaryWriter(mem))
                {
                    LuaUtils.writeLuaParams(binWriter, luaParams);
                }
            }

            return(new SubPacket(OPCODE, playerActorID, targetActorID, data));
        }
コード例 #3
0
        public static SubPacket buildPacket(uint sourceId, uint targetId, uint actorId, uint textOwnerActorId, ushort textId, byte log, List <LuaParam> lParams)
        {
            int lParamsSize = findSizeOfParams(lParams);

            byte[] data;
            ushort opcode;

            if (lParamsSize <= 0x8)
            {
                data   = new byte[SIZE_GAMEMESSAGE_WITH_ACTOR2 - 0x20];
                opcode = OPCODE_GAMEMESSAGE_WITH_ACTOR2;
            }
            else if (lParamsSize <= 0x10)
            {
                data   = new byte[SIZE_GAMEMESSAGE_WITH_ACTOR3 - 0x20];
                opcode = OPCODE_GAMEMESSAGE_WITH_ACTOR3;
            }
            else if (lParamsSize <= 0x20)
            {
                data   = new byte[SIZE_GAMEMESSAGE_WITH_ACTOR4 - 0x20];
                opcode = OPCODE_GAMEMESSAGE_WITH_ACTOR4;
            }
            else
            {
                data   = new byte[SIZE_GAMEMESSAGE_WITH_ACTOR5 - 0x20];
                opcode = OPCODE_GAMEMESSAGE_WITH_ACTOR5;
            }

            using (MemoryStream mem = new MemoryStream(data))
            {
                using (BinaryWriter binWriter = new BinaryWriter(mem))
                {
                    binWriter.Write((UInt32)actorId);
                    binWriter.Write((UInt32)textOwnerActorId);
                    binWriter.Write((UInt16)textId);
                    binWriter.Write((UInt16)log);
                    LuaUtils.writeLuaParams(binWriter, lParams);

                    if (lParamsSize <= 0x14 - 12)
                    {
                        binWriter.Seek(0x14, SeekOrigin.Begin);
                        binWriter.Write((UInt32)8);
                    }
                }
            }

            return(new SubPacket(opcode, sourceId, targetId, data));
        }
コード例 #4
0
        public static SubPacket buildPacket(uint sourceActorID, uint targetActorID, string objectName, string className, List <LuaParam> initParams)
        {
            byte[] data = new byte[PACKET_SIZE - 0x20];

            using (MemoryStream mem = new MemoryStream(data))
            {
                using (BinaryWriter binWriter = new BinaryWriter(mem))
                {
                    int value1 = 0x00; //Instance ID?
                    int value2 = 0x3040;
                    binWriter.Write((Int16)value1);
                    binWriter.Write((Int16)value2);
                    binWriter.Write(Encoding.ASCII.GetBytes(objectName), 0, Encoding.ASCII.GetByteCount(objectName) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(objectName));
                    binWriter.BaseStream.Seek(0x24, SeekOrigin.Begin);
                    binWriter.Write(Encoding.ASCII.GetBytes(className), 0, Encoding.ASCII.GetByteCount(className) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(className));
                    binWriter.BaseStream.Seek(0x44, SeekOrigin.Begin);
                    LuaUtils.writeLuaParams(binWriter, initParams);
                }
            }

            return(new SubPacket(OPCODE, sourceActorID, targetActorID, data));
        }
コード例 #5
0
        public static SubPacket buildPacket(uint playerActorID, uint eventOwnerActorID, string eventStarter, string callFunction, List <LuaParam> luaParams)
        {
            byte[] data        = new byte[PACKET_SIZE - 0x20];
            int    maxBodySize = data.Length - 0x80;

            using (MemoryStream mem = new MemoryStream(data))
            {
                using (BinaryWriter binWriter = new BinaryWriter(mem))
                {
                    binWriter.Write((UInt32)playerActorID);
                    binWriter.Write((UInt32)eventOwnerActorID);
                    binWriter.Write((Byte)5);
                    binWriter.Write(Encoding.ASCII.GetBytes(eventStarter), 0, Encoding.ASCII.GetByteCount(eventStarter) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(eventStarter));
                    binWriter.Seek(0x29, SeekOrigin.Begin);
                    binWriter.Write(Encoding.ASCII.GetBytes(callFunction), 0, Encoding.ASCII.GetByteCount(callFunction) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(callFunction));
                    binWriter.Seek(0x49, SeekOrigin.Begin);

                    LuaUtils.writeLuaParams(binWriter, luaParams);
                }
            }

            return(new SubPacket(OPCODE, playerActorID, playerActorID, data));
        }