mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Actor speed packet done, actor position packet implemented.
This commit is contained in:
		| @@ -16,6 +16,7 @@ using FFXIVClassic_Map_Server.packets.send; | ||||
| using FFXIVClassic_Map_Server.packets.send.login; | ||||
| using FFXIVClassic_Map_Server.packets.send.Actor.inventory; | ||||
| using FFXIVClassic_Map_Server.packets.send.Actor; | ||||
| using FFXIVClassic_Map_Server.packets.send.actor; | ||||
|  | ||||
| namespace FFXIVClassic_Lobby_Server | ||||
| { | ||||
| @@ -181,7 +182,6 @@ namespace FFXIVClassic_Lobby_Server | ||||
|               | ||||
|                         BasePacket reply5 = new BasePacket("./packets/login/login5.bin"); | ||||
|                         BasePacket reply6 = new BasePacket("./packets/login/login6_data.bin"); | ||||
|                         BasePacket reply62 = new BasePacket("./packets/login/login6_2.bin"); | ||||
|                         BasePacket reply7 = new BasePacket("./packets/login/login7_data.bin"); | ||||
|                         BasePacket reply8 = new BasePacket("./packets/login/login8_data.bin"); | ||||
|                         BasePacket reply9 = new BasePacket("./packets/login/login9_zonesetup.bin"); | ||||
| @@ -207,8 +207,12 @@ namespace FFXIVClassic_Lobby_Server | ||||
|                         client.queuePacket(BasePacket.createPacket(_0x2Packet.buildPacket(player.actorID), true, false)); | ||||
|  | ||||
|                         client.queuePacket(reply5); | ||||
|  | ||||
|                         client.queuePacket(BasePacket.createPacket(AddActorPacket.buildPacket(player.actorID, player.actorID), true, false)); | ||||
|  | ||||
|                         client.queuePacket(reply6); | ||||
|  | ||||
|                         client.queuePacket(BasePacket.createPacket(SetActorPositionPacket.buildPacket(player.actorID, player.actorID, SetActorPositionPacket.INNPOS_X, SetActorPositionPacket.INNPOS_Y, SetActorPositionPacket.INNPOS_Z, SetActorPositionPacket.INNPOS_ROT, SetActorPositionPacket.SPAWNTYPE_PLAYERWAKE), true, false)); | ||||
|                         client.queuePacket(BasePacket.createPacket(player.getActor().createSpeedPacket(player.actorID), true, false)); | ||||
|                         client.queuePacket(BasePacket.createPacket(player.getActor().createStatePacket(player.actorID), true, false));               | ||||
|  | ||||
|   | ||||
| @@ -13,16 +13,21 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x00CE; | ||||
|         public const uint PACKET_SIZE = 0x48; | ||||
|  | ||||
|         public const uint SPAWNTYPE_NORMAL = 1; | ||||
|         public const uint SPAWNTYPE_WARP1  = 2; | ||||
|         public const uint SPAWNTYPE_FADEIN = 0; | ||||
|         public const uint SPAWNTYPE_PLAYERWAKE = 1; | ||||
|         public const uint SPAWNTYPE_WARP_DUTY  = 2; | ||||
|         public const uint SPAWNTYPE_WARP2  = 3; | ||||
|         public const uint SPAWNTYPE_WARP3 = 4; | ||||
|         public const uint SPAWNTYPE_WARP_YELLOW = 5; | ||||
|         public const uint SPAWNTYPE_WARP_DUTY2 = 6; | ||||
|         public const uint SPAWNTYPE_WARP_LIGHT = 7; | ||||
|  | ||||
|         public const float INNPOS_X     = 157.550003f; | ||||
|         public const float INNPOS_Y     = 000.000000f; | ||||
|         public const float INNPOS_Z     = 165.050003f; | ||||
|         public const float INNPOS_ROT   =  -1.530000f; | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, uint actorID, float x, float y, float z, float rotation) | ||||
|         public static SubPacket buildPacket(uint sourceActorID, uint targetActorID, float x, float y, float z, float rotation, uint spawnType) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE-0x20]; | ||||
|  | ||||
| @@ -31,15 +36,19 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 using (BinaryWriter binWriter = new BinaryWriter(mem)) | ||||
|                 { | ||||
|                     binWriter.Write((Int32)0); | ||||
|                     binWriter.Write((Int32)0); | ||||
|                     binWriter.Write((Int32)sourceActorID); | ||||
|                     binWriter.Write((Single)x); | ||||
|                     binWriter.Write((Single)y); | ||||
|                     binWriter.Write((Single)z); | ||||
|                     binWriter.Write((Single)rotation); | ||||
|  | ||||
|                     binWriter.BaseStream.Seek(0x24, SeekOrigin.Begin); | ||||
|  | ||||
|                     binWriter.Write((UInt32)spawnType); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, actorID, data); | ||||
|             return new SubPacket(OPCODE, sourceActorID, targetActorID, data); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|   | ||||
| @@ -0,0 +1,86 @@ | ||||
| using FFXIVClassic_Lobby_Server.packets; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
| { | ||||
|     class SetActorSpeedPacket | ||||
|     { | ||||
|         public const ushort OPCODE = 0x00D0; | ||||
|         public const uint PACKET_SIZE = 0xA8; | ||||
|  | ||||
|         public const ushort DEFAULT_STOP = 0x0000; | ||||
|         public const ushort DEFAULT_WALK = 0x4000; | ||||
|         public const ushort DEFAULT_RUN  = 0x40A0; | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, uint targetActorID) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryWriter binWriter = new BinaryWriter(mem)) | ||||
|                 { | ||||
|                     binWriter.Write((UInt16)00); | ||||
|                     binWriter.Write((UInt16)DEFAULT_STOP); | ||||
|                     binWriter.Write((UInt32)0); | ||||
|  | ||||
|                     binWriter.Write((UInt16)00); | ||||
|                     binWriter.Write((UInt16)DEFAULT_WALK); | ||||
|                     binWriter.Write((UInt32)1); | ||||
|  | ||||
|                     binWriter.Write((UInt16)00); | ||||
|                     binWriter.Write((UInt16)DEFAULT_RUN); | ||||
|                     binWriter.Write((UInt32)2); | ||||
|  | ||||
|                     binWriter.Write((UInt16)00); | ||||
|                     binWriter.Write((UInt16)DEFAULT_RUN); | ||||
|                     binWriter.Write((UInt32)3); | ||||
|  | ||||
|                     binWriter.BaseStream.Seek(0x80, SeekOrigin.Begin); | ||||
|  | ||||
|                     binWriter.Write((UInt32)5); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, uint targetActorID, ushort stopSpeed, ushort walkSpeed, ushort runSpeed) | ||||
|         {                | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryWriter binWriter = new BinaryWriter(mem)) | ||||
|                 { | ||||
|                     binWriter.Write((UInt16)00); | ||||
|                     binWriter.Write((UInt16)stopSpeed); | ||||
|                     binWriter.Write((UInt32)0); | ||||
|  | ||||
|                     binWriter.Write((UInt16)00); | ||||
|                     binWriter.Write((UInt16)walkSpeed); | ||||
|                     binWriter.Write((UInt32)1); | ||||
|  | ||||
|                     binWriter.Write((UInt16)00); | ||||
|                     binWriter.Write((UInt16)runSpeed); | ||||
|                     binWriter.Write((UInt32)2); | ||||
|  | ||||
|                     binWriter.Write((UInt16)00); | ||||
|                     binWriter.Write((UInt16)runSpeed); | ||||
|                     binWriter.Write((UInt32)3); | ||||
|  | ||||
|                     binWriter.BaseStream.Seek(0x90, SeekOrigin.Begin); | ||||
|  | ||||
|                     binWriter.Write((UInt32)5); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user