Difference between revisions of "ChatRoomList"

From SWGANH Wiki
Jump to: navigation, search
(Variable Descriptions)
 
(34 intermediate revisions by 5 users not shown)
Line 1: Line 1:
__NOTOC__
+
{{PageHeader|Server Packet|CharRoomList (70DEB197)}}
 
+
 
{| border="0" width="90%" cellpadding=6
 
{| border="0" width="90%" cellpadding=6
 
|-
 
|-
Line 6: Line 5:
 
===Struct===
 
===Struct===
 
----
 
----
 +
<pre>
 +
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
 +
  }
 +
}
 +
</pre>
  
{| class="wikitable"
 
|-
 
|{{short}}||'''Operand_Count'''
 
|-
 
|{{int}}||'''Opcode'''
 
|-
 
|{{int}}||'''Numberof_Chatrooms'''
 
|-
 
|{{int}}||'''ChatRoom_ID'''
 
|-
 
|{{int}}||'''NumberOf_RoomNames'''
 
|-
 
|{{byte}}||'''Lookinto'''
 
|-
 
|{{short}}||'''SizeOf_RoomName'''
 
|-
 
|{{a_string}}||'''RoomName'''
 
|-
 
|{{short}}||'''SizeOf_ChannelOwner'''
 
|-
 
|{{a_string}}||'''ChannelOwner'''
 
|-
 
|}
 
 
{| class="wikitable"
 
|-
 
|{{short}}||'''SizeOf_ChannelCreator'''
 
|-
 
|{{a_string}}||'''ChannelCreator'''
 
|-
 
|}
 
 
{| class="wikitable"
 
|-
 
|{{short}}||'''SizeOf_RoomTitle'''
 
|-
 
|{{a_string}}||'''RoomTitle'''
 
|-
 
|}
 
 
 
{| class="wikitable"
 
|-
 
|{{int}}||'''NumberOfRoomModerators'''
 
|-
 
|{{short}}||'''SizeOf_Channel_Moderator'''
 
|-
 
|{{a_string}}||'''ChannelModerator'''
 
|-
 
|}
 
 
 
{| class="wikitable"
 
|-
 
|{{short}}||'''NumberOf_UsersInChatRoom'''
 
|-
 
|{{a_string}}||'''Users'''
 
|-
 
|}
 
 
===Variable Descriptions===
 
===Variable Descriptions===
 
----
 
----
Line 74: Line 44:
 
----
 
----
  
* '''NumberOf_ChatRooms'''
+
* '''RoomListSize''':
:Add 1 to the count, for each chatroom listed in the packet
+
:A list of ChatRoom Objects, this is the count of rooms to display.
  
* '''chatroom_id'''
+
* '''RoomID''':
:Add each chatroom id, for the Number of Chatrooms
+
:The unique ID number assigned to identify this Room. Generated on room creation.
  
* '''NumberOf_RoomNames'''
+
* '''PrivateFlag''':
:Add 1 to the count,for each Roomname Listed in the packet
+
: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
  
* '''ByteFlag'''
+
* '''ModeratedFlag''':
:Needs Looking into, thinking its for Moderated,private or Public
+
: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.
  
* '''SizeOf_RoomName'''
+
* '''RoomPathName''':
:The size of the roomname listed in packet
+
:The full ChatServer path and name for the room including the RoomName specified on creation.
 +
:Example: "SWG.TestCenter.Chat.tcpa"
  
* '''Roomname'''
+
* '''Game''':
:Name of the room, Repeat For each room in above size
+
: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.
  
* '''ChannelOwner'''
+
* '''Server''':
:Add Size and NAme for each Name u add onto the First, Example SWG Add tony to the bottom will make SWG.tony
+
:The name of the server (Galaxy) this player is on. Part of ChatAvatarId object.
  
* '''ChannelCreator '''
+
* '''Owner''':
:Same Rule Applys to Above
+
:The firstname of the player who current owns the chatroom. Must be only firstname and lowercase. Part of ChatAvatarId object.
  
* '''Roomtitle'''
+
* '''Creator''':
:Name of room title In Unicode
+
:The firstname of the player who originally created the chatroom. Must be only firstname and lowercase. Part of ChatAvatarId object.
  
* '''RoomModeratorNumber'''
+
* '''RoomTitle''':
:Add 1 to the list of moderators
+
: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.
  
* '''ChannelModerator'''
+
* '''ModeratorList''':
:Add Size and NAme for each Name u add onto the First, Example SWG Add tony to the bottom will make SWG.tony
+
: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.
  
* '''Users'''
+
* '''UserList''':
:Add size and name and +1 to the NumberOfUsers Int
+
: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|
 +
 
===Tags===
 
===Tags===
 
----
 
----
Line 120: Line 102:
 
|-
 
|-
 
|}
 
|}
 
 
|}
 
|}
  
----
 
  
==Sample Code==
 
----
 
 
<pre>
 
Insert Code Snippet Here...
 
</pre>
 
  
 
==Sample Packet==
 
==Sample Packet==
  
 
<pre>
 
<pre>
Insert Sample Packet Here...
+
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
 
</pre>
 
</pre>
 +
[[Category:Nogard]]

Latest revision as of 02: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