Creating Resources (Sequence)

From SWGANH Wiki
Jump to: navigation, search

Resources in the inventory are created through sending a set of Packets that is very similiar to those which are send for creating other items in the Inventory. The main difference is that resources are not created through CREO Packets but that for Resource Creation ONCR Packets are used.

The creation process begins with an Object Init Packet and an Object Link packet, the main data is send through an ONCR 3 and an ONCR 6 packet and the creation process is ended through an ONCR8, ONCR9, an object finish and an Posture update Packet.

there are still some parts of the ONCR 3 and 6 Packets which are not figured out yet, though as far as I can see they are hopefully not that important.

Please note that -like with everything- these packets can be send standalone in an 00 09 or in the pack as an 00 19. to make this a bit clearer I seperate them as single packets. I did not include the headers though (00 09 wx yz and crc at the end) because thats getting redundant.

The object init Packet contains the ID of the newly created -(resource) Item, the crc of the item to be displayed and its location and orientation in the world should it not happen to be in the inventory / backpack.

Packet: SceneCreateObjectByCrc Server --> Client


05 00                             operand count
ea dd 89 fe                       Opcode SceneCreateObjectByCrc
[UINT64]                          This is the ID of the newly created 
                                  Item / resource

[FLOAT]                           This is probably the orientation the item 
[FLOAT]                           is displayed in when in the world
[FLOAT]                           it has no significance here

[FLOAT]                           this is probably the scale but it has no impact here

[FLOAT]                           Position X                  They probably dont have to be send
[FLOAT]                           Position Z (Y)              When the resource is created in the 
[FLOAT]                           Position Y (Z)              Inventory or backpack

[UINT32] 6d 5e ce 88              CRC resource container 

[UINT8]                           one single 00

The SMSG_OBJ_LINK packet links the item to the container where its to be created in. This is either a backpack, an inventory, and probably a hopper or house, too.

Packet: UpdateContainmentMessage Server --> Client
04 00 

9e de cb 56                       UpdateContainmentMessage

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

96 5c 2b 03 18 00 00 00           ID of the players Inventory / or the backpack, or the hopper.......

ff ff ff ff                       ???? in the creos the value is 4 in the NGE Logs Ive seen ff ff ff ff .....

This is the ONCR 3 Packet. here we give the client the info about how many resources we have, and what to display as resource name

Packet: SMSG_OBJ_UPDATE - ONCR 3 Server --> Client

[UINT16] 05 00                   operand 

[UINT32] OPCODE                  SMSG_OBJ_UPDATE

[UINT64] ID                      ITEM / resource ID

[UINT32] ONCR                    ONCR 3 Packet
[UINT8]  3

[UINT32] PACKETLENGTH             the length of the Packet following this dword

[UINT16] Operand d                perhaps the number of object operands???? highly doubt that

[UINT32] evtl float?????
00 00 80 3f                       //dunno same as the above value is also found in 
                                  //the nge creo packets I have

[UINT16] length String            length string and string - This string contains the directoryname  
[String]                          where the stringtable is found in which the name of the resource type 
                                  is stored that will be displayed. WITHOUT @!!!!!!
                                  I found this for our Pub 13 client to be : "kb/kb_resources_n"

[UINT32] 00 00 00 00                       

[UINT16]length String             length string and string - this is the selector for the resourcetype name
[String]                          eg "fungi" look it up in the patch12-TRE  for further info


[UINT32] 00 00 00 00                       
[UINT32] 01 00 00 00 

[UINT32] 00 00 00 00 
[UINT32] 00 00 00 00      
[UINT32] 00 00 00 00 

[UINT32] 00 00 00 00 
[UINT32] 00 00 00 00 

[UINT16] 00 00 

[UINT32] 64 00 00 00 

[UINT8]  01 

[UINT32] AMOUNT                     this is the amount of the resource 

[UINT64] TEMPLATE-ID                this is the ID of the resource template the resource is based upon
Packet: BaselinesMessage - ONCR 6 Server --> Client

[UINT16] 05 00 

[UINT32] 0c 5f a7 68 			BaselinesMessage

[UINT64]                 					object ID

[UINT32] 4f 4e 43 52 						ONCR 6

[UINT8]  6

[UINT32] size							size of the remaining packet

[UINT16] 6 							item operand count ???? doubt that.....

[UINT32] 5e 00 00 00						(!!??!!) different values in the NGE
                                                                depending on resource

CAVECAVECAVECAVECAVE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111oneelevenCAVECAVECAVECAVE
have to be an empty string and zero string length in our pub13 client!!!!!!

[UINT16] length                                                 length of string
[STRING]                                         	        string "resource_container_d" cave zero length 
                                                                and empty string for pub 13 client
							 
[UINT32] 00 00 00 00 

CAVECAVECAVECAVECAVE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111oneelevenCAVECAVECAVECAVE
have to be an empty string and zero string length in our pub13 client!!!!!!

[UINT16] length                                                 length of string
[STRING]                                         	        string "anorganic_minerals_small" cave zero length 
                                                                and empty string for pub 13 client


[UINT32] a0 86 01 00                                             dezimal 100.000 its the max stack size but 
                                                                has somehow no effect.....??????

[UINT16] length                                                 length string
[STRING]                                                        "armophous_rudic"
                                    				
[UINT32] length                                                  UNICODE string
[STRING]                                                        [Resource Name]

[UINT32] 00 00 00 00        
[UINT32] 00 00 00 00

Packet: BaselinesMessage - ONCR 8 Server --> Client


[UINT16] 05 00                                                  operand count

[UINT32] 0c 5f a7 68                   BaselinesMessage

[UINT64]                                                        Obj ID

[UINT32] 4f 4e 43 52 08                                         ONCR 8

[UINT8]  8

[UINT16] 02 00 

[UINT32] 00 00 00 00 
Packet: BaselinesMessage - ONCR 9 Server --> Client

[UINT16] 05 00 

[UINT32] 0c 5f a7 68                  BaselinesMessage

[UINT64]                                                        OBJ ID

[UINT32] 4f 4e 43 52                                            ONCR 9

[UINT8]  9

[UINT16] 02 00 

[UINT32] 00 00 00 00 
Packet: SceneEndBaselines - ONCR 6 Server --> Client

[UINT16] 02 00 

[UINT32] 37 60 43 2c                  SceneEndBaselines

[UINT64]                                                        OBJ ID