Sampling Resources (Sequence)

From SWGANH Wiki
Jump to: navigation, search

having surveyed the resources by clicking on the sample resource button the client sends the following packet to the server in which the survey tool ID and the resource to get sampled are lined out.

Packet: Client --> Server

00 09                            Data Channel A 

01 0c                            Server sequence

05 00                            operand count

46 5e ce 80                      Int Packet Opcode

23 00 00 00                      Int 1

16 01 00 00                      Int 2

95 5c 2b 03 18 00 00 00          Player ID

00 00 00 00 00 00 00 00          not used in this case

34 c6 23 92                      Int 3 -> sample resource

3e dc 1f ab 11 00 00 00          ID Resource Template

09 00 00 00                      length Unicode string

52 00 6f 00 63 00 6f 00 6f 00    R.o.c.o.o.l.o.i.m.
6c 00 6f 00 69 00 6d 00 

00                               compression flag

72 35                            CRC


Packet: Server --> Client

this is answered by the following packet which prompts the client to say *you start sampling for xyz*


00 09

wx yz                             server sequence

04 00

13 64 2a 6d

00 00 00 00
00 3d 00 00
00 00 00 01
ff ff ff ff

06 00                              length string "survey"

73 75 72 76 65 79                  "survey"

00 00 00 00

0e 00                              length string "start_sampling"

73 74 61 ....                      "start_sampling"
..... 6e 67               

00 00 00 00 00 00 00               56 times 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00

09 00 00 00                        length unicode string resource

52 00 6f 00 .......

00 00 00 00 00 00 00               9 times 00
00

00 00 00                           CRC etc.


this packet is send by the server to determine that the sampling was unsuccesful

as of yet I have never seen the client ask for an update after some time. That means that the server does not verify if a client who send a sample packet is eligible to sample again, but that the server after say 20 seconds sends a sample packet of his own until the player changes his stance and thus ends sampling.

Packet: Server --> Client
00 09 

04 3e 

00 19 89                            00 19 multi packet Packet with count for the first Packet

04 00                               operand count

13 64 2a 6d                         uint 32 opcode (system message)

00 00 00 00                         ???

00 3d 00 00                         ???

00 01 00 01                         ???

ff ff ff ff                         ???

06 00                               length of string "survey"
73 75 72 76 65 79                   string "survey"

00 00 00 00 

0d 00                               length of string
73 61 6d 70 6c 65 5f 66 61          string "sample_failed"
69 6c 65 64 

00 00 00 00 00 00 00 00             56 times 0
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00  
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00      

09 00 00 00                         length unicode string
52 00 6f 00 63 00 6f 00             unicode string R.o.c.o.o.l.o.i.m = resource name
6f 00 6c 006f 00 69 00 6d 00 

00 00 00 00 00 00 00 00 00 00       10 times 00

(uv wx yz )                         if send as single packet of course with crc and compression flag

// this packet plays the sampling effect

52 09 00 
74 9e 94 02                         Opcode

26 00                               length of string
63 6c 69 65 6e 74 65 66 66 65 63    string "clienteffect/survey_sam
74 2f 73 75 72 76 65 79 5f 73 61    ple_mineral.cef"
6d 70 6c 65 5f 6d 69 6e 65 72 61 
6c 2e 63 65 66 

08 00                               length of string
74 61 74 6f 6f 69 6e 65             string "tatooine"

91 e2 c7 45                         Position X

17 33 3a 43                         Position Y (Z)

d9 54 8e c5                         Position Z (Y)

00 00 00 00                         12 bytes 00 in preCU, 14 in NGE
00 00 00 00 
00 00 00 00 

(00 00 )                            NGE only dont know about CU though :(

(uv wx yz)                          compression flag and crc if needed


However should the sampling prove succesfull the server sends a ONCR (RCNO)Packet structure which is actually quite similar to the TANO (ONAT) packet structures to create a stackable resource item in the players Inventory.

As of yet the client parses the packets up to the ONCR 3 packet, which creates an item in the inventory with some kind of graphic that is displayed far to big and the number of items we have given. The name which is displayed for this item is "[resource\resource_names] vegetable_fungi" which is provided by the ONCR 3 to describe the kind of resource.

As I can see out of the NGE packet structs the actual name, amount and other descriptions are given in the ONCR 6 packet, which in the NGE is quite similiar to the TANO 6 Packet.

Sadly as of yet I have found no way of sending that packet without crashing the client. So if someone is bored or wants to polish/show off his l33t reversing skills - your welcome :P

Packet: Server --> Client

00 09                                Data Channel A

04 70                                server sequence

04 00                                operand count

13 64 2a 6d                          Opcode 2 system message

00 00 00 00 

00 3d 00 00 

00 00 00 01 

ff ff ff ff 

06 00                               length string
73 75 72 76 65 79 	            string "survey"

00 00 00 00 

0e 00                              length string
73 61 6d 70 6c 65 5f 6c        	   sample_located
6f 63 61 74 65 64 				


00 00 00 00 00 00 00 00           56 times 00
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 

09 00 00 00                       length string
52 00 6f 00 63 00 6f 00           unicode string resource name
6f 00 6c 00 6f 00 69 00           "R.o.c.o.o.l.o.i.m."
6d 00 

02 00 00 00                       amount of the gathered resources

00 00 00 00                       ??
00                                ??

(UV WX YZ )                       CRC and compression Flag
Packet: Server --> Client


00 09                             Data Channel A
04 71                             Server sequence
00 19                             Multi Packet
2f                                length of first Packet
05 00                             operand count
ea dd 89 fe                       Opcode SMSG_OBJ_INIT
ea b7 e9 33 18 00 00 00           I believe this to be the ID of the newly created Item / resource

00 00 00 00                       dunno
00 00 00 00 
00 00 00 00 

00 00                             dunno see notes below
80 3f                             dunno 70 dez ??

91 e2 c7 45                       Position X                  Ok to tell the truth I have doubts if these have to be send.
17 33 3a 43                       Position Z (Y)              In NGE Logs when logging in and creating resis in the backpack 
d9 54 8e c5                       Position Y (Z)              (the same princip really) theire 00 00 00 00 ....lol

6d 5e ce 88                       CRC resource container 
                                  // please note that the container is not displayed correct
                                  // Im not sure if Im missing something there or if that would be
                                  // fixed with that ONCR 6 packet that crashes the client
                                  // I personally believe theres something missing though

00                                one single 00

1a 


04 00 

9e de cb 56                       SMSG_OBJ_LINK

ea b7 e9 33 18 00 00 00           ID of the created Item / resource

96 5c 2b 03 18 00 00 00           Player ID Should be inventory ID!!! or hopper ID or backpack ID

ff ff ff ff                       dunno





7d                                length

05 00                             operand count

0c 5f a7 68                       SMSG_OBJ_UPDATE

ea b7 e9 33 18 00 00 00           ITEM / resource ID

4f 4e 43 52 03                    ONCR 3 Packet


66 00 00 00                       the length of the Packet following this dword

0d 00                             perhaps the number of object operands

00 00 80 3f                       //dunno same as the above value is also found in 
                                  //the nge creo packets I have seen see notes below

17 00                             length string
72 65 73 6f 75 72 63 65           string "resource/resource_names"
2f 72 65 73 6f 75 72 63 
65 5f 6e 61 6d 65 73 				    

00 00 00 00                       dunno

12 00                             length string
67 65 6d 73 74 6f 6e 65 5f 61     string"gemstone_armophous"
72 6d 6f 70 68 6f 75 73  

00 00 00 00                       // dunno
01 00 00 00 

00 00 00 00 
00 00 00 00      
00 00 00 00 

00 00 00 00 
00 00 00 00 

00 00 64 00        
00 00 01 02 
00 00 00 5f
74 6a 02 18 
00 00 00 



84        ......._tj/...

05 00 

0c 5f a7 68 							sms obj update

ea b7 e9 33 18 00 00 00 					object ID

4f 4e 43 52 06 							ONCR 6

6d 00 00 00 							size rest

06 00 								item operand count

5e 00 00 00 							(!!??!!)

14 00                                                           length string
72 65 73 6f 75 72 63 65 5f 63 6f 6e 74 61 69 6e 	        string "resource_container_d"
65 72 5f 64 							 

00 00 00 00 

18 00                                                           length string
69 6e 6f 72 67 61 6e 69 63 5f 6d 69 6e 65 	 	        string "anorganic_minerals_small"
72 61 6c 73 5f 73 6d 61 6c 6c 

a0 86 01 00                                                     dezimal 100.000 its the max stack size

0f 00                                                           length string
61 72 6d 6f 70 68 6f 75 73       				armophous_rudic
5f 72 75 64 69 63 						 

09 00 00 00                                                     length unicode string
52 00 6f 00 63 00 6f 00 6f 00 
6c 00 6f 00 69 00 6d 00                                         string"R.o.c.o.o.l.o.i.m."


00 00 00 00        
00 00 00 00 

19                                                              // length next Packet

05 00                                                           // operand count

0c 5f a7 68                                                     // SMSG_OBJ_UPDATE

ea b7 e9 33 18 00 00 00                                         // Obj ID

4f 4e 43 52 08                                                  // ONCR 8

02 00 

00 00 00 00 

19                                                              // length next packet

05 00 

0c 5f a7 68                                                     //SMSG_OBJ_UPDATE

ea b7 e9 33 18 00 00 00                                         //OBJ ID

4f 4e 43 52 09                                                  // ONCR 9

02 00 

00 00 00 00 

0e                                                              // length next packet

02 00 

37 60 43 2c                                                     // SMSG_OBJ_FINISH

ea b7 e9 33 18 00 00 00                                         // OBJ ID

(UV WX YZ)                                                      // as usual

about the 00 00 80 3f

I believe this structure is quite similar to the creo tano structures seen in the game. Incidently the selfsame dword (0000803f) is seen in other creo 3 and creo 6 packets, too.

One example for that are two different sets of creo structures sent for one and the self mob in the NGE, in the log I have a cu-pa. In the first set of creos the server sends

4f 45 52 43 03         //creo 3
69 00 00 00            // packet length
11 00                  // operand count ??
00 00 

80 3f

12 00                  // string length
string "mob/creature_names"

00 00 00 00

05 00                 // string length

string "cu_pa"
00 00 00 00
01 00 00 00
...........

while in the second the server sends

4f 45 52 43 03        // creo 3

3a 00 00 00 

04 00 

01 00 

12 00                // string length

string "mob/creature_names"

00 00 00 00

05 00                // string length

string "cu_pa"

04 00 07 00
02 01 02 1b
..........
</pe>

So this is pesumably some kind of indicator for the layout and content of the packet??

CREO TANO ONCR --Schmunzel 17:55, 22 August 2006 (EDT) corrected some errors