|  |  | 
 
  |  |  |  |  
  |  |  |  |  
  |  |  |  |  
  |  |  |  |  
  |  | 
	
		
   
   
      | General::General Discussion General discussion about EverQuest(tm), EQEMu, and related topics. Do not post support topics here.
 |  
	
	
		
	
	
	| 
			
			 
			
				04-20-2016, 05:54 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 Yep, you were dead on.
 OP_WorldComplete made it all better, thanks~
 
 Zone doesn't shut down on me anymore.
 |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				04-22-2016, 05:56 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
				  
 OP_ChannelMessage (Client->Server), work in progress. 
Main Bottleneck is at the very bottom. 		
//TODO: Reading ChannelMessage string is suppose to be variable sized and not a 64 FixedLengthString. 
Client->Server Packet logs
 
	Quote: 
	
		| [04-22-2016 :: 15:07:44] [Packet :: Client -> Server] [OP_ChannelMessage - 0x0045] [Size: 286] [04-22-2016 :: 15:07:44] [Packet :: Client -> Server (Dump)] [OP_ChannelMessage - 0x0045] [Size: 286]
 0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 16: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 32: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 48: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 64: 4A 6F 6E 64 73 00 00 00 - 00 00 00 00 00 00 00 00  | Jonds...........
 80: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 96: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 112: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 128: 00 00 00 00 05 00 00 00 - 00 00 00 00 46 46 46 46  | ............FFFF
 144: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 160: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 176: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 192: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 208: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 224: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 240: 46 46 46 46 78 00 00 00 - 00 00 00 00 00 00 00 00  | FFFFx...........
 256: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 272: 00 00 00 00 00 00 00 00 - 00 00 00 00              | ............
 
 [04-22-2016 :: 15:07:44] [Zone Server] Client::ChannelMessageReceived() Channel:5 message:'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF  FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF  FFFFFFFFFFFFFx'
 |  Server->Client Packet logs
 
	Quote: 
	
		| [04-22-2016 :: 15:07:44] [Packet :: Server -> Client] [OP_ChannelMessage - 0x0045] [Size: 248] [04-22-2016 :: 15:07:44] [Packet :: Server -> Client (Dump)] [OP_ChannelMessage - 0x0045] [Size: 248]
 0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 16: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 32: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 48: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 64: 4A 6F 6E 64 73 00 00 00 - 00 00 00 00 00 00 00 00  | Jonds...........
 80: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 96: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 112: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
 128: 00 00 00 00 05 00 00 00 - 64 00 00 00 46 46 46 46  | ........d...FFFF
 144: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 160: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 176: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 192: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 208: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 224: 46 46 46 46 46 46 46 46 - 46 46 46 46 46 46 46 46  | FFFFFFFFFFFFFFFF
 240: 46 46 46 46 78 00                                  | FFFFx.
 
 |  Client Send Chat message
 
	Code: 		public void DoChannelMessage()
		{
			
//			/*000*/	char	targetname[64];		// Tell recipient
//			/*064*/	char	sender[64];			// The senders name (len might be wrong)
//			/*128*/	uint32	language;			// Language
//			/*132*/	uint32	chan_num;			// Channel
//			/*144*/	uint32	skill_in_language;	// The players skill in this language? might be wrong
//			/*148*/	char	message[0];			// Variable length message
		
		string TestMessage = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFx";
		int TestMessageLength = TestMessage.Length * 2;
		int RequestSize = 74 + TestMessageLength;
		byte[] ChannelMessageRequest = new byte[RequestSize];
		int position = 0;
		
				
		WriteFixedLengthString("", ref ChannelMessageRequest, ref position, 64);
		WriteFixedLengthString("Jonds", ref ChannelMessageRequest, ref position, 64);
		WriteInt32(0, ref ChannelMessageRequest, ref position);
		WriteInt32(5, ref ChannelMessageRequest, ref position);
		WriteInt32(0, ref ChannelMessageRequest, ref position);
		WriteFixedLengthString(TestMessage, ref ChannelMessageRequest, ref position, TestMessageLength);
		GenerateAndSendWorldPacket (ChannelMessageRequest.Length, 69 /* OP_ChannelMessage */, curZoneId, curInstanceId, ChannelMessageRequest);				
		} 
Client Read Chat message
 
	Code: 		public void HandleWorldMessage_ChannelMessage(byte[] data, int datasize)
		{
			
//			/*000*/	char	targetname[64];		// Tell recipient
//			/*064*/	char	sender[64];			// The senders name (len might be wrong)
//			/*128*/	uint32	language;			// Language
//			/*132*/	uint32	chan_num;			// Channel
//			/*144*/	uint32	skill_in_language;	// The players skill in this language? might be wrong
//			/*148*/	char	message[0];			// Variable length message
	
		int position = 0;
		
		string ChannelTargetName = ReadFixedLengthString(data, ref position, 64);
		string ChannelSender = ReadFixedLengthString(data, ref position, 64);
		Int32 ChannelLanguage = ReadInt32(data, ref position);
		Int32 ChannelNumber = ReadInt32(data, ref position);
		Int32 ChannelSkill = ReadInt32(data, ref position);
		//TODO: ChannelMessage is suppose to be variable sized and not a 64 FixedLengthString
		string ChannelMessage = ReadFixedLengthString(data, ref position, 64);
		} 
Fixed Length String reference
 
	Code: 		public string ReadFixedLengthString(byte[] data, ref Int32 position, Int32 count)
		{
			string retval = System.Text.Encoding.Default.GetString(data, position, count);
			position += count;
			return retval;
		} |  
 
  |  |  |  |  
	
		
	
	
	| 
			
			 
			
				04-30-2016, 05:10 AM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 Easy fix, this advice solved it. 
	Quote: 
	
		| [05:37] <image> I would just subtract the rest of the packet |  lines in green
 
	Code: 		public void HandleWorldMessage_ChannelMessage(byte[] data, int datasize)
		{
		int position = 0;
		string ChannelTargetName = ReadFixedLengthString(data, ref position, 64);
		string ChannelSender = ReadFixedLengthString(data, ref position, 64);
		Int32 ChannelLanguage = ReadInt32(data, ref position);
		Int32 ChannelNumber = ReadInt32(data, ref position);
		Int32 ChannelSkill = ReadInt32(data, ref position);
		Int32 ChannelVarLength = datasize - position;
		string ChannelMessage = ReadFixedLengthString(data, ref position, ChannelVarLength);
		} |  
	
		
	
	
	| 
			
			 
			
				05-02-2016, 05:16 AM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 Revamping inputs with system below, working on chat stuffs, and also spawns.https://youtu.be/KVbxemkOWew |  
	
		
	
	
	| 
			
			 
			
				05-04-2016, 04:41 AM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 |  
	
		
	
	
	| 
			
			 
			
				05-07-2016, 04:44 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 |  
	
		
	
	
	| 
			
			 
			
				05-09-2016, 11:27 AM
			
			
			
		 |  
	| 
		
			
			| Hill Giant |  | 
					Join Date: Jul 2012 Location: Oklahoma 
						Posts: 222
					      |  |  
	| 
 Cool. One day at  a time! |  
	
		
	
	
	| 
			
			 
			
				05-10-2016, 05:31 AM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 |  
	
		
	
	
	| 
			
			 
			
				05-15-2016, 06:05 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 Changed how spawns work. Instead of creating (instantiating) mobs as they pop (runtime), i instantiate prefabs to an object pool on start and then activate/deactivate individual prefabs from the pool as i need. 
This increases performance by a huge margin. Right now the pool is global but the pools will eventually be zone specific at some point. I tossed in beetle prefab only just for testing purposes.
http://youtu.be/KnS1MeQ9VkA |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				05-16-2016, 08:15 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
				  
 PunchQuest. Stuff below for my reference 
	Code: 478-OP_TargetMouse
ClientTarget_Struct {
/*000*/	uint32	new_target;			// Target ID
};
43-op_autoattack
44-op_autoattack2
109-op_damage
struct CombatDamage_Struct
{
/* 00 */	uint16	target;
/* 02 */	uint16	source;
/* 04 */	uint8	type; //slashing, etc. 231 (0xE7) for spells
/* 05 */	uint16	spellid;
/* 07 */	uint32	damage;
/* 11 */	float force;
/* 15 */	float meleepush_xy;	// see above notes in Action_Struct
/* 19 */	float meleepush_z;
/* 23 */	uint32 special; // 2 = Rampage, 1 = Wild Rampage
};
8-op_action
// this is what causes the caster to animate and the target to
// get the particle effects around them when a spell is cast
// also causes a buff icon
struct Action_Struct
{
 /* 00 */	uint16 target;	// id of target
 /* 02 */	uint16 source;	// id of caster
 /* 04 */	uint16 level; // level of caster
 /* 06 */	uint16 instrument_mod;
 /* 08 */	uint32 bard_focus_id;
// some kind of sequence that's the same in both actions
// as well as the combat damage, to tie em together?
 /* 14 */	uint32 sequence;
 /* 22 */	uint8 type;		// 231 (0xE7) for spells
 /* 27 */	uint16 spell;	// spell id being cast
 /* 31 */
}; |  
 
  |  |  |  |  
	
		
	
	
	| 
			
			 
			
				05-17-2016, 06:02 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				05-18-2016, 02:33 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
				  
 hardcoded x,y,z,h to the /loc infront of priest of discord in nqeynos, but my packet doesnt seem right 
Client: 
 
	Code: 		public void DoClientUpdate()
		{
			GameObject us = EqemuConnectObject;
			float x = -us.transform.position.x;
			float y = us.transform.position.z;
			float z = us.transform.position.y;
			float h = us.transform.rotation.y;
						
			byte[] PositionUpdateRequest = new byte[38];
			Int32 position = 0;
				
			WriteInt16((short)OurEntityID, ref PositionUpdateRequest, ref position);
			WriteInt32(BitConverter.ToInt32(BitConverter.GetBytes(x), 0), ref PositionUpdateRequest, ref position);
			WriteInt32(BitConverter.ToInt32(BitConverter.GetBytes(y), 0), ref PositionUpdateRequest, ref position);
			WriteInt32(BitConverter.ToInt32(BitConverter.GetBytes(z), 0), ref PositionUpdateRequest, ref position);
			WriteInt32(0, ref PositionUpdateRequest, ref position);
			WriteInt32(0, ref PositionUpdateRequest, ref position);
			WriteInt32(0, ref PositionUpdateRequest, ref position);
			WriteInt32(0, ref PositionUpdateRequest, ref position);
			WriteInt32(0, ref PositionUpdateRequest, ref position);
			WriteInt32(122, ref PositionUpdateRequest, ref position);
			GenerateAndSendWorldPacket (PositionUpdateRequest.Length, 87 /* OP_ClientUpdate */, 2, curInstanceId, PositionUpdateRequest);
		} Server: 
 
	Code: struct PlayerPositionUpdateClient_Struct
{
/*0000*/ uint16	spawn_id;
/*0004*/ float	x_pos;				// x coord
/*0004*/ float	y_pos;				// y coord
/*0004*/ float	z_pos;				// z coord
/*0008*/ float	delta_x;			// Change in z
/*0012*/ float	delta_y;			// Change in x
/*0016*/ float	delta_z;			// Change in y
/*0016*/ float	delta_heading;			// Change in y
/*0020*/ int32	animationspeed;		// animation
/*0032*/ float	rotation;			// Directional heading
/*0036*/
}; UnityPacket:
 
	Code: [05-18-2016 :: 15:15:22] [Packet :: Client -> Server (Dump)] [OP_ClientUpdate - 0x0057] [Size: 40] 
   0: EB 00 EA 00 00 00 0B 00 - 00 00 02 00 00 00 00 00  | ................
  16: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
  32: 00 7A 00 00 00 00                                  | .z.... TitaniumPacket: 
 
	Code: [05-18-2016 :: 02:37:22] [Packet :: Client -> Server] [OP_ClientUpdate - 0x0057] [Size: 38]
[05-18-2016 :: 02:37:22] [Packet :: Client -> Server (Dump)] [OP_ClientUpdate - 0x0057] [Size: 38]
   0: E9 00 2F 36 00 00 30 41 - 00 00 00 00 00 00 00 00  | ../6..0A........
  16: 00 00 00 00 00 00 20 00 - 00 00 6A 43 64 10 08 40  | ...... ...jCd..@
  32: D0 03 00 00 |  
 
  |  |  |  |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				05-18-2016, 06:49 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
				  
 solved. Died to priest of discord. Pras 
	Code: [05-18-2016 :: 15:44:47] [Packet :: Client -> Server (Dump)] [OP_ClientUpdate - 0x0057] [Size: 40] 
   0: ED 00 00 00 6A 43 00 00 - 30 41 00 00 00 40 00 00  | ....jC..0A...@..
  16: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
  32: 00 00 00 00 F4 42                                  | .....B
[05-18-2016 :: 15:44:52] [Zone Server] Got 0x5007 from world:
[05-18-2016 :: 15:44:52] [Packet :: Client -> Server] [OP_TargetMouse - 0x01de] [Size: 6]
[05-18-2016 :: 15:44:52] [Packet :: Client -> Server (Dump)] [OP_TargetMouse - 0x01de] [Size: 6] 
   0: 56 00 00 00                                        | V...
[05-18-2016 :: 15:44:52] [Packet :: Server -> Client] [OP_TargetHoTT - 0x01dd] [Size: 6]
[05-18-2016 :: 15:44:52] [Packet :: Server -> Client (Dump)] [OP_TargetHoTT - 0x01dd] [Size: 6] 
   0: 00 00 00 00                                        | ....
 [05-18-2016 :: 15:44:54] [Zone Server] Got 0x5007 from world:
[05-18-2016 :: 15:44:54] [Packet :: Client -> Server] [OP_AutoAttack - 0x002b] [Size: 6]
[05-18-2016 :: 15:44:54] [Packet :: Client -> Server (Dump)] [OP_AutoAttack - 0x002b] [Size: 6] 
   0: 01 00 00 00                                        | ....
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client] [OP_Animation - 0x0021] [Size: 6]
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client (Dump)] [OP_Animation - 0x0021] [Size: 6] 
   0: ED 00 0A 05                                        | ....
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client] [OP_Damage - 0x006d] [Size: 29]
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client (Dump)] [OP_Damage - 0x006d] [Size: 29] 
   0: 56 00 ED 00 01 FF FF 00 - 00 00 00 00 00 00 00 00  | V...............
  16: 00 74 43 00 00 00 00 00 - 00 00 00                 | .tC........
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client] [OP_CancelTrade - 0x0042] [Size: 10]
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client (Dump)] [OP_CancelTrade - 0x0042] [Size: 10] 
   0: ED 00 00 00 07 00 00 00                            | ........
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client] [OP_PreLogoutReply - 0x0178] [Size: 2]
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client (Dump)] [OP_PreLogoutReply - 0x0178] [Size: 2] 
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client] [OP_BecomeCorpse - 0x0034] [Size: 18]
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client (Dump)] [OP_BecomeCorpse - 0x0034] [Size: 18] 
   0: ED 00 00 00 00 00 30 41 - 00 00 6A 43 00 00 00 40  | ......0A..jC...@
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client] [OP_Death - 0x006e] [Size: 34]
[05-18-2016 :: 15:44:54] [Packet :: Server -> Client (Dump)] [OP_Death - 0x006e] [Size: 34] 
   0: ED 00 00 00 56 00 00 00 - ED 00 00 00 02 00 00 00  | ....V...........
  16: FF FF FF FF 1C 00 00 00 - 59 01 00 00 00 00 00 00  | ........Y.......
[05-18-2016 :: 15:44:55] [Packet :: Server -> Client] [OP_ZonePlayerToBind - 0x0220] [Size: 35]
[05-18-2016 :: 15:44:55] [Packet :: Server -> Client (Dump)] [OP_ZonePlayerToBind - 0x0220] [Size: 35] 
   0: 02 00 00 00 00 00 FF C3 - 00 00 64 42 00 00 F8 41  | ..........dB...A
  16: 00 00 00 00 4E 6F 72 74 - 68 20 51 65 79 6E 6F 73  | ....North Qeynos
  32: 00                                                 | . |  
 
  |  |  |  |  
	
		
	
	
	| 
			
			 
			
				05-21-2016, 04:56 PM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 |  
	
		
	
	
	| 
			
			 
			
				05-22-2016, 04:32 AM
			
			
			
		 |  
	| 
		
			
			| Discordant |  | 
					Join Date: Mar 2009 Location: eqbrowser.com 
						Posts: 309
					      |  |  
	| 
 Rotation good now, mob pathing is not very good at all . Had a tough rotation problem, posting mafs incase someone else needs to do the same type of mafs.
 
In Eqemu: 
Rotation is counter clockwise. 
A full rotation is 255 (not 360).
 
//calculate server->client heading for client 
float h = Mathf.Lerp(360,0,[heading-from-op_zonespawns] /255f);
  
//calculate client->server heading for server 
float h = Mathf.Lerp(255,0,[player-current-heading] /360f); |  
	
		
	
	
	
		
	
	
	
	
	| 
	|  Posting Rules |  
	| 
		
		You may not post new threads You may not post replies You may not post attachments You may not edit your posts 
 HTML code is Off 
 |  |  |  All times are GMT -4. The time now is 09:56 AM.
 
 |  |  
    |  |  |  |  
    |  |  |  |  
     |  |  |  |  
 |  |