Показать сообщение отдельно
Непрочитано 15.02.2018, 11:30   #8
Пользователь

Автор темы (Топик Стартер) Re: Help me please UDP3 EVENT Opcode 3 and 4

Цитата:
Сообщение от Awiion Посмотреть сообщение
bmzproject,

Link
When I get x, y, z, camX, camZ, Area
Opcode 3
case 3:
            {
                log.info("Packet Replication Opcode 3 Slot :" + slotID);
                if (room != null)
                {
                	onlyDecrypt(originalbuffer, this.length);
                    sub_opcode = originalbuffer.readByte();
                    slot = originalbuffer.readShort();
                    sub_length = originalbuffer.readShort();
                    EventType = 0;
                    if (sub_opcode != 2)
                    {
                        EventType = originalbuffer.readInt();
                    }
                    System.out.println("============================================================================================");
                    System.out.println("| Sub-Opcode: " + sub_opcode + " | Slot: " + slot + "| Length: " + sub_length + " | EventType: " + EventType + " |");
                    System.out.println("============================================================================================");                   
                    if ((EventType & 0x01) > 0)
                    {
                        System.out.println("====================================================");
                        System.out.println("Action State");
                        System.out.println(" Condition 1 " + originalbuffer.readShort());
                        System.out.println(" Condition 2 " + originalbuffer.readShort());
                        System.out.println("====================================================");
                        remainvalue += 0x01;
                    }
                    if ((EventType & 0x02) > 0)
                    {
                        System.out.println("====================================================");
                        System.out.println("Animation : " + originalbuffer.readShort());
                        System.out.println("====================================================");
                        remainvalue += 0x02;
                    }
                    if ((EventType & 0x04) > 0)
                    {
                    	this.x = originalbuffer.readShort();
                        this.y = originalbuffer.readShort();
                        this.z = originalbuffer.readShort();
                        this.camX = originalbuffer.readShort();
                        this.camZ = originalbuffer.readShort();
                        this.Area = originalbuffer.readShort();
                        System.out.println("====================================================");
                        System.out.println("X : " + x);     
                        System.out.println("Y : " + y);  
                        System.out.println("Z : " + z);  
                        System.out.println("camX : " + camX);  
                        System.out.println("camZ : " + camZ);  
                        System.out.println("Area : " + Area);                        
                        System.out.println("====================================================");
                        remainvalue += 0x04;
 
                    }                                
                    for (Player p : room.getPlayers().values())
                    {    
                    	log.info("====================================================");
                        log.info("| Sub-Opcode: " + sub_opcode + " | Slot: " + slot + "| length: " + sub_length + " | EventType: " + EventType + " |");
                        log.info("====================================================");
                        ByteBuf _buf = Unpooled.buffer(0, this.length).order(ByteOrder.LITTLE_ENDIAN);   
                        _buf.writeByte(4); // OPCODE 4
                        _buf.writeByte(-1); // SLOT -1
                        _buf.writeFloat(this.time); // TIME
                        _buf.writeByte(1); // SESSION
                        _buf.writeShort(this.length); // LENGTH this.length
                        _buf.writeShort(0); // EVENT 1
                        _buf.writeShort(0); // EVENT 2
                        _buf.writeBytes(this.InternalPacket.copy());                 
                        ctx.writeAndFlush(new DatagramPacket(_buf.copy(), p.net));
                    }
                }
                break;
        }
Code: Java
What do I do next?
I need an example of how to send values to a client.

Opcode 4
case 4:
            {                           
                if (room != null)
                {
                	if ((EventType & 0x04) > 0)
                    {
                    	this.x = originalbuffer.readShort();
                        this.y = originalbuffer.readShort();
                        this.z = originalbuffer.readShort();
                        this.camX = originalbuffer.readShort();
                        this.camZ = originalbuffer.readShort();
                        this.Area = originalbuffer.readShort();
                        System.out.println("====================================================");
                        System.out.println("X : " + x);     
                        System.out.println("Y : " + y);  
                        System.out.println("Z : " + z);  
                        System.out.println("camX : " + camX);  
                        System.out.println("camZ : " + camZ);  
                        System.out.println("Area : " + Area);                        
                        System.out.println("====================================================");
                        remainvalue += 0x04;
 
                    }
                    for (Player p : room.getPlayers().values())
                    {
                        ByteBuf _buf = Unpooled.buffer(0, this.length).order(ByteOrder.LITTLE_ENDIAN);
                        _buf.writeByte(4); // OPCODE
                        _buf.writeByte(-1); // SLOT
                        _buf.writeFloat(this.time); // TIME
                        _buf.writeByte(1); // SESSION
                        _buf.writeShort(this.length); // LENGTH
                        _buf.writeShort(0); // EVENT 1
                        _buf.writeShort(0); // EVENT 2
                        _buf.writeBytes(this.InternalPacket.copy());
                        ctx.writeAndFlush(new DatagramPacket(_buf, p.net));
                    }
                }
                break;
            }
Code: Java
bmzproject вне форума Ответить с цитированием