Difference between revisions of "ChatRoomList"

From SWGANH Wiki
Jump to: navigation, search
(Sample Packet)
(Variable Descriptions)
 
(2 intermediate revisions by 2 users not shown)
Line 5: Line 5:
 
===Struct===
 
===Struct===
 
----
 
----
{| align="center"
+
<pre>
|-
+
SHORT: OperandCount
||
+
INT: Opcode
{| class="wikitable"
+
INT: RoomListSize
|-
+
{
|{{short}}|'''Operand_Count'''
+
  INT: RoomID
|-
+
  INT: PrivateFlag
|{{int}}|'''Opcode'''
+
  BYTE: ModeratedFlag
|-
+
  ASTRING: RoomPathName
|{{int}}|'''Numberof_Chatrooms'''
+
  ASTRING: Game
|-
+
  ASTRING: Server
|{{int}}|'''ChatRoom_ID'''
+
  ASTRING: Owner
|-
+
  ASTRING: Game
|{{int}}|'''NumberOf_RoomNames'''
+
  ASTRING: Server
|-
+
  ASTRING: Creator
|{{byte}}|'''Moderated Bool'''
+
  USTRING: RoomTitle
|-
+
  INT: ModeratorListSize
|{{a_string}}|'''RoomName'''
+
  {
|-
+
    ASTRING: Game
|{{a_string}}|'''Game'''
+
    ASTRING: Server
|-
+
    ASTRING: ModeratorName
|{{a_string}}|'''Server'''
+
  }
|-
+
  INT: UserListSize
|{{a_string}}|'''ChannelCreator'''
+
  {
|-
+
    ASTRING: Game
|{{a_string}}|'''Game'''
+
    ASTRING: Server
|-
+
    ASTRING: UserName
|{{a_string}}|'''Server'''
+
  }
|-
+
}
|{{a_string}}|'''ChannelCreator'''
+
</pre>
|-
+
|{{u_string}}|'''RoomTitle'''
+
|-
+
|{{int}}|'''ModeratorCount'''
+
|-
+
|}
+
 
+
{| class="wikitable"
+
|-
+
|{{a_string}}|'''Game'''
+
|-
+
|{{a_string}}|'''Server'''
+
|-
+
|{{a_string}}|'''ModeratorName'''
+
|-
+
|}
+
 
+
{| class="wikitable"
+
|-
+
|{{int}}|'''UserCount'''
+
|-
+
|}
+
 
+
{| class="wikitable"
+
|-
+
|{{a_string}}|'''Game'''
+
|-
+
|{{a_string}}|'''Server'''
+
|-
+
|{{a_string}}|'''UserName'''
+
|-
+
|}
+
|}
+
  
 
===Variable Descriptions===
 
===Variable Descriptions===
Line 76: Line 43:
 
Opcode     = '''70DEB197'''
 
Opcode     = '''70DEB197'''
 
----
 
----
 +
 +
* '''RoomListSize''':
 +
:A list of ChatRoom Objects, this is the count of rooms to display.
 +
 +
* '''RoomID''':
 +
:The unique ID number assigned to identify this Room. Generated on room creation.
 +
 +
* '''PrivateFlag''':
 +
:An INTEGER flag used to mark the room as private or public. Private rooms require invitation from owner or moderators to enter.
 +
::00000001 = Private
 +
::00000000 = Public
 +
 +
* '''ModeratedFlag''':
 +
:A BYTE flag used to mark the room as being moderated.
 +
::01 = Moderated
 +
::00 = Open
 +
:Note: Moderated Rooms means that no one BUT moderators can talk. Its more like a "Muted" Room. You can still have moderators in an OPEN room. So avoid this confusion.
 +
 +
* '''RoomPathName''':
 +
:The full ChatServer path and name for the room including the RoomName specified on creation.
 +
:Example: "SWG.TestCenter.Chat.tcpa"
 +
 +
* '''Game''':
 +
:The name of the game ("SWG") this player is on.
 +
:Part of ChatAvatarId: 3 ASTRINGs representing the player on the ChatServer. "Game.Server.name" name is the lowercase of the first name for the player.
 +
 +
* '''Server''':
 +
:The name of the server (Galaxy) this player is on. Part of ChatAvatarId object.
 +
 +
* '''Owner''':
 +
:The firstname of the player who current owns the chatroom. Must be only firstname and lowercase. Part of ChatAvatarId object.
 +
 +
* '''Creator''':
 +
:The firstname of the player who originally created the chatroom. Must be only firstname and lowercase. Part of ChatAvatarId object.
 +
 +
* '''RoomTitle''':
 +
:The unicode string containing the Title of the chatroom to display.
 +
:Note: This is the more descriptive text displayed and not the name used in the RoomPathName of the ChatServer.
 +
 +
* '''ModeratorList''':
 +
:A list containing ChatAvatarId's of the moderators for this room. Note: This list does NOT get used to display the information. So it is better to send a blank (NULL/0) list and use the QueryRoom construct, since it actually gets displayed. This will save TONS of bandwidth.
 +
 +
* '''UserList''':
 +
:A list containing ChatAvatarId's of the users current in the room. Note: This list does NOT get used to display the information. So it is better to send a blank (NULL/0) list and use the QueryRoom construct, since it actually gets displayed. This will save TONS of bandwidth.
 +
 +
* '''Additional Info''':
 +
:Use to initialize the list, and then to add to the list. (There is no need to repeat the data)
 +
 
|valign=top|
 
|valign=top|
  
Line 89: Line 104:
 
|}
 
|}
  
==Sample Code==
 
----
 
  
<pre>
 
  ByteBuffer *packet_13 = new ByteBuffer();
 
packet_13->opcode(SOE_CHL_DATA_A);
 
    packet_13->sequence(server_sequence);
 
*packet_13 << (uint16)2;
 
*packet_13 <<(uint32)0x70DEB197;
 
*packet_13 <<(uint32)1;
 
*packet_13 <<(uint32)0x02720a5d;
 
*packet_13 <<(uint32)1;
 
*packet_13 <<(uint8)1;
 
 
*packet_13 <<(uint16)39 <<"SWG.Gorath.group.161418309221.GroupChat";
 
*packet_13 <<(uint16)3 <<"SWG";
 
*packet_13 <<(uint16)6 <<"Gorath";
 
*packet_13 <<(uint16)6 <<"system";
 
*packet_13 <<(uint16)3 <<"SWG";
 
*packet_13 <<(uint16)6 <<"Gorath";
 
*packet_13 <<(uint16)6 <<"system";
 
*packet_13 <<(uint32)2;
 
*packet_13 << (uint8)0x68;
 
*packet_13 << (uint8)0x00;
 
*packet_13 << (uint8)0x69;
 
*packet_13 << (uint8)0x00;
 
*packet_13 << (uint32)1;
 
*packet_13 <<(uint16)3 <<"Swg";
 
*packet_13 <<(uint16)6 <<"Gorath";
 
*packet_13 <<(uint16)6 <<"system";
 
*packet_13 << (uint32)2;
 
*packet_13 <<(uint16)3 <<"Swg";
 
*packet_13 <<(uint16)6 <<"Gorath";
 
*packet_13 <<(uint16)8 <<"partizia";
 
*packet_13 <<(uint16)3 <<"Swg";
 
*packet_13 <<(uint16)6 <<"Gorath";
 
*packet_13 <<(uint16)6 <<"system";
 
*packet_13 << (uint8)0x00 << (uint8)0x00 << (uint8)0x00;
 
server_sequence = queue->Add(packet_13, server_sequence);
 
</pre>
 
  
 
==Sample Packet==
 
==Sample Packet==

Latest revision as of 01:41, 11 May 2008

Server Packet - CharRoomList (70DEB197)

SWGANH Wiki is a repository of Star Wars Galaxies Developer information. This site is only meant to be used by SWGANH Developer team.

Struct


SHORT:			OperandCount
INT:			Opcode
INT:			RoomListSize
{
  INT:			RoomID
  INT:			PrivateFlag
  BYTE:			ModeratedFlag
  ASTRING:		RoomPathName
  ASTRING:		Game
  ASTRING:		Server
  ASTRING:		Owner
  ASTRING:		Game
  ASTRING:		Server
  ASTRING:		Creator
  USTRING:		RoomTitle
  INT:			ModeratorListSize
  {
    ASTRING:		Game
    ASTRING:		Server
    ASTRING:		ModeratorName
  }
  INT:			UserListSize
  {
    ASTRING:		Game
    ASTRING:		Server
    ASTRING:		UserName
  }
}

Variable Descriptions


Opperand_Count = 2

Opcode = 70DEB197


  • RoomListSize:
A list of ChatRoom Objects, this is the count of rooms to display.
  • RoomID:
The unique ID number assigned to identify this Room. Generated on room creation.
  • PrivateFlag:
An INTEGER flag used to mark the room as private or public. Private rooms require invitation from owner or moderators to enter.
00000001 = Private
00000000 = Public
  • ModeratedFlag:
A BYTE flag used to mark the room as being moderated.
01 = Moderated
00 = Open
Note: Moderated Rooms means that no one BUT moderators can talk. Its more like a "Muted" Room. You can still have moderators in an OPEN room. So avoid this confusion.
  • RoomPathName:
The full ChatServer path and name for the room including the RoomName specified on creation.
Example: "SWG.TestCenter.Chat.tcpa"
  • Game:
The name of the game ("SWG") this player is on.
Part of ChatAvatarId: 3 ASTRINGs representing the player on the ChatServer. "Game.Server.name" name is the lowercase of the first name for the player.
  • Server:
The name of the server (Galaxy) this player is on. Part of ChatAvatarId object.
  • Owner:
The firstname of the player who current owns the chatroom. Must be only firstname and lowercase. Part of ChatAvatarId object.
  • Creator:
The firstname of the player who originally created the chatroom. Must be only firstname and lowercase. Part of ChatAvatarId object.
  • RoomTitle:
The unicode string containing the Title of the chatroom to display.
Note: This is the more descriptive text displayed and not the name used in the RoomPathName of the ChatServer.
  • ModeratorList:
A list containing ChatAvatarId's of the moderators for this room. Note: This list does NOT get used to display the information. So it is better to send a blank (NULL/0) list and use the QueryRoom construct, since it actually gets displayed. This will save TONS of bandwidth.
  • UserList:
A list containing ChatAvatarId's of the users current in the room. Note: This list does NOT get used to display the information. So it is better to send a blank (NULL/0) list and use the QueryRoom construct, since it actually gets displayed. This will save TONS of bandwidth.
  • Additional Info:
Use to initialize the list, and then to add to the list. (There is no need to repeat the data)

Tags


S→C This packet originates on the server.

100% This packet has been completely reversed.


Sample Packet

02 00 
97 B1 DE 70 // ChatRoomList
01 00 00 00 // Numberof_Chatrooms
5D 0A 72 02 // ChatRoom_ID
01 00 00 00 // NumberOf_RoomNames
00          // byte flag
27 00                                  // string count
53 57 47 2E 47 6F 72 61 74 68          // SWG.Gorath
2E 67 72 6F 75 70 2E                   // .group.
31 36 31 34 31 38 33 30 39 32 32 31 2E // 161418309221.   	
47 72 6F 75 70 43 68 61 74             // GroupChat
03 00             // string count
53 57 47          // SWG
06 00	          // string count	
47 6F 72 61 74 68 // Gorath
06 00             // string count
73 79 73 74 65 6D // system
03 00             // string count
53 57 47          // SWG
06 00             // string count
47 6F 72 61 74 68 // Gorath 
06 00             // string count
73 79 73 74 65 6D // system
0C 00 00 00                                  // u-string count
31 00 36 00 31 00 34 00 31 00 38 00 33 00 30 // 161418309221
00 39 00 32 00 32 00 31 00 
01 00 00 00  // moderator count
03 00             // string count
53 57 47          // SWG
06 00             // string count
47 6F 72 61 74 68 // Gorath 
06 00             // string count
73 79 73 74 65 6D // system
02 00 00 00   // user count
03 00             // string count
53 57 47          // SWG
06 00             // string count
47 6F 72 61 74 68 // Gorath
08 00                   // string count
70 61 74 72 69 7A 69 61 // patrizia
03 00             // string count
53 57 47          // SWG
06 00             // string count
47 6F 72 61 74 68 // Gorath
06 00             // string count
73 79 73 74 65 6D // system