mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Figured out all main actor states and implemented the stuff properly. Implemented the chocobo/goobbue appearance stuff. Formatted CharaWork a bit.
This commit is contained in:
		| @@ -147,6 +147,8 @@ | ||||
|     <Compile Include="packets\send\list\ListStartPacket.cs" /> | ||||
|     <Compile Include="packets\send\player\SendAchievementRatePacket.cs" /> | ||||
|     <Compile Include="packets\send\player\SetCurrentJobPacket.cs" /> | ||||
|     <Compile Include="packets\send\player\SetCurrentMountGoobbuePacket.cs" /> | ||||
|     <Compile Include="packets\send\player\SetCurrentMountChocoboPacket.cs" /> | ||||
|     <Compile Include="packets\send\player\SetGrandCompanyPacket.cs" /> | ||||
|     <Compile Include="packets\send\actor\SetActorNamePacket.cs" /> | ||||
|     <Compile Include="packets\send\actor\SetActorPropetyPacket.cs" /> | ||||
|   | ||||
| @@ -8,12 +8,12 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara | ||||
| { | ||||
|     class CharaWork | ||||
|     { | ||||
|         public ParameterSave   parameterSave = new ParameterSave(); | ||||
|         public ParameterTemp parameterTemp = new ParameterTemp(); | ||||
|         public BattleSave battleSave = new BattleSave(); | ||||
|         public BattleTemp battleTemp = new BattleTemp(); | ||||
|         public EventSave eventSave = new EventSave(); | ||||
|         public EventTemp eventTemp = new EventTemp(); | ||||
|         public ParameterSave    parameterSave = new ParameterSave(); | ||||
|         public ParameterTemp    parameterTemp = new ParameterTemp(); | ||||
|         public BattleSave       battleSave = new BattleSave(); | ||||
|         public BattleTemp       battleTemp = new BattleTemp(); | ||||
|         public EventSave        eventSave = new EventSave(); | ||||
|         public EventTemp        eventTemp = new EventTemp(); | ||||
|  | ||||
|         public byte[] property = new byte[32]; | ||||
|  | ||||
|   | ||||
| @@ -42,7 +42,8 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara | ||||
|         public uint currentTarget = 0xC0000000; | ||||
|         public uint currentLockedTarget = 0xC0000000; | ||||
|  | ||||
|         public uint currentState = SetActorStatePacket.STATE_PASSIVE; | ||||
|         public uint currentMainState = SetActorStatePacket.MAIN_STATE_PASSIVE; | ||||
|         public uint currentSubState = SetActorStatePacket.SUB_STATE_PLAYER; | ||||
|  | ||||
|         public CharaWork charaWork = new CharaWork(); | ||||
|         public PlayerWork playerWork = new PlayerWork(); | ||||
| @@ -59,7 +60,7 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara | ||||
|  | ||||
|         public SubPacket createStatePacket(uint playerActorID) | ||||
|         { | ||||
|             return SetActorStatePacket.buildPacket(actorId, playerActorID, currentState); | ||||
|             return SetActorStatePacket.buildPacket(actorId, playerActorID, currentMainState, currentSubState); | ||||
|         } | ||||
|  | ||||
|         public BasePacket createActorSpawnPackets(uint playerActorID) | ||||
|   | ||||
| @@ -9,20 +9,31 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
| { | ||||
|     class SetActorStatePacket | ||||
|     { | ||||
|         public const ushort OPCODE = 0x0134; | ||||
|         public const int MAIN_STATE_PASSIVE = 0; | ||||
|         public const int MAIN_STATE_DEAD = 1; | ||||
|         public const int MAIN_STATE_ACTIVE = 2; | ||||
|         public const int MAIN_STATE_DEAD2 = 3; | ||||
|  | ||||
|         public const int MAIN_STATE_SITTING_OBJECT = 11; | ||||
|         public const int MAIN_STATE_SITTING_FLOOR = 13; | ||||
|  | ||||
|         public const int MAIN_STATE_MOUNTED = 15; | ||||
|  | ||||
|         public const int MAIN_STATE_UNKNOWN1 = 0x0E; | ||||
|         public const int MAIN_STATE_UNKNOWN2 = 0x1E; | ||||
|         public const int MAIN_STATE_UNKNOWN3 = 0x1F; | ||||
|         public const int MAIN_STATE_UNKNOWN4 = 0x20; | ||||
|  | ||||
|         //What is this for? | ||||
|         public const int SUB_STATE_PLAYER = 0xBF; | ||||
|         public const int SUB_STATE_MONSTER = 0x03; | ||||
|  | ||||
|         public const ushort OPCODE = 0x134; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public const int STATE_NONE     = 0x0000; | ||||
| 		public const int STATE_DEAD		= 0x0303; | ||||
| 		public const int STATE_PASSIVE	= 0xBF00; | ||||
| 		public const int STATE_ACTIVE	= 0xBF02; | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, uint targetID, uint state) | ||||
|         { | ||||
|             ulong combined = 0; | ||||
|  | ||||
|             combined |= state; | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, uint targetID, uint mainState, uint subState) | ||||
|         {             | ||||
|             uint combined = (mainState & 0xFF) | ((subState & 0xFF) << 8); | ||||
|             return new SubPacket(OPCODE, playerActorID, targetID, BitConverter.GetBytes(combined)); | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -0,0 +1,39 @@ | ||||
| using FFXIVClassic_Lobby_Server.packets; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.packets.send.player | ||||
| { | ||||
|     class SetCurrentMountChocoboPacket | ||||
|     { | ||||
|         public const int CHOCOBO_NORMAL = 0; | ||||
|  | ||||
|         public const int CHOCOBO_LIMSA1 = 0x1; | ||||
|         public const int CHOCOBO_LIMSA2 = 0x2; | ||||
|         public const int CHOCOBO_LIMSA3 = 0x3; | ||||
|         public const int CHOCOBO_LIMSA4 = 0x4; | ||||
|  | ||||
|         public const int CHOCOBO_GRIDANIA1 = 0x1F; | ||||
|         public const int CHOCOBO_GRIDANIA2 = 0x20; | ||||
|         public const int CHOCOBO_GRIDANIA3 = 0x21; | ||||
|         public const int CHOCOBO_GRIDANIA4 = 0x22; | ||||
|  | ||||
|         public const int CHOCOBO_ULDAH1 = 0x3D; | ||||
|         public const int CHOCOBO_ULDAH2 = 0x3E; | ||||
|         public const int CHOCOBO_ULDAH3 = 0x3F; | ||||
|         public const int CHOCOBO_ULDAH4 = 0x40; | ||||
|  | ||||
|         public const ushort OPCODE = 0x0197; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, int appearanceId) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|             data[5] = (byte)(appearanceId & 0xFF); | ||||
|             return new SubPacket(OPCODE, playerActorID, playerActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,23 @@ | ||||
| using FFXIVClassic_Lobby_Server.packets; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.packets.send.player | ||||
| { | ||||
|     class SetCurrentMountGoobbuePacket | ||||
|     { | ||||
|  | ||||
|         public const ushort OPCODE = 0x01a0; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, int appearanceId) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|             data[0] = (byte)(appearanceId & 0xFF); | ||||
|             return new SubPacket(OPCODE, playerActorID, playerActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user