Difference between revisions of "MSCO07"

From SWGANH Wiki
Jump to: navigation, search
(Deltas Struct)
(BaseLine Struct)
Line 15: Line 15:
 
Few bytes left to figure out on this one.
 
Few bytes left to figure out on this one.
 
<pre>
 
<pre>
SHORT:         Operand Count
+
SHORT: ObjOpperandCount
//Part 0
+
INT: SlotNameList
INT:           Slot Counter
+
INT: UpdateCounter
INT:           Update Counter
+
 
{
 
{
  A_STRING:       STF File
+
  ASTRING: SlotNameTable
  INT:             String spacer
+
  INT: NotUsed
  A_STRING:       STF Name
+
  ASTRING: SlotName
 
}
 
}
//Part 1
+
INT: SlotContentsList
INT:           Counter 1
+
INT: UpdateCounter
INT:           Update Counter
+
 
{
 
{
  INT:             Unknown, must be 4 if slot is filled
+
    INT: SlotContentType
 
}
 
}
//Part 2
+
INT: IngridientList
INT:           Counter 2
+
INT: UpdateCounter
INT:           Update Counter
+
 
{
 
{
  //here go the ingredient IDs
+
    INT: Counter
  INT:             Counter for IngredientID
+
    {
  {
+
       LONG: IngredientID
       LONG:         ingredient ID
+
    }
  }
+
 
}
 
}
//Part 3
+
INT: QuantityList
INT:           Counter 3
+
INT: UpdateCounter
INT:           Update Counter
+
 
{
 
{
  INT:   Counter for Ingredient Amount
+
    INT: Counter
  {
+
    {
       INT: amount of ingredient filled into slot
+
       INT: IngredientQuantity
  }
+
    }
 
}
 
}
//Part 4
+
INT: SlotQualityList
INT:           Counter 4
+
INT: UpdateCounter
INT:           Update Counter
+
 
{
 
{
  INT:             Unknown
+
    FLOAT: Quality 
 
}
 
}
//Part 5
+
INT: CleanSlotList
INT:           Counter
+
INT: UpdateCounter
INT:           Update Counter
+
 
{
 
{
  INT:             Unknown
+
    INT: Value
 
}
 
}
//Part 6
+
INT: SlotIndexList
INT:           Counter
+
INT: UpdateCounter
INT:           Update Counter * 2
+
 
{
 
{
  INT:             Unknown
+
    INT: SlotIndex
 
}
 
}
 
+
BYTE: IngredientsCounter
//Part 7
+
INT: ExperimentationNameList
BYTE: some sort of stale flag
+
INT: UpdateCounter
      probably not used(usually slot size * 4)
+
 
+
//Part 8 Experimentation Attributes
+
INT:           Counter
+
INT:           Update Counter
+
 
{
 
{
  A_STRING:       dir to look up string (crafting)
+
  ASTRING: ExperimentationTable
  INT:             unknown
+
  INT: NotUsed
  A_STRING:       Areas of Experimentation for the item
+
  ASTRING: ExperimentationName
                    eg expEffectiveness; expRange
+
 
}
 
}
 
+
INT: CurrentExperimentationValueList
//Part 9 Experimentation attributes Values
+
INT: UpdateCounter
INT:           Counter
+
INT:           Update Counter
+
 
{
 
{
  FLOAT:             Experimentation Attribute Value
+
    FLOAT: CurrentExperimentationValue
 
}
 
}
 
+
INT: ExperimentationOffsetList
//Part 10 not tested yet
+
INT: UpdateCounter
INT:           Counter
+
INT:           Update Counter
+
 
{
 
{
  INT:             Unknown
+
    FLOAT: ExperimentationValueOffset
 
}
 
}
 
+
INT: BlueBarSizeList
//Part 11 Assembly Attributes Values -> percentage of assembly succes
+
INT: UpdateCounter
// 100% = highest possible (30%)
+
INT:           Counter
+
INT:           Update Counter
+
 
{
 
{
  FLOAT:             Assembly Attribute Value
+
    FLOAT: Size
 
}
 
}
 
+
INT: MaxExperimentationList
//Part 12 Max reachable Experimentation Attribute Value
+
INT: UpdateCounter
INT:           Counter
+
INT:           Update Counter
+
 
{
 
{
  FLOAT:             Max Experimentation Attribute Value
+
    FLOAT: MaxExperimentationValue
 
}
 
}
 
+
INT: CustomizationNameList
//Part 18 unknown yet
+
INT: UpdateCounter
INT:           Counter
+
INT:           Update Counter
+
 
{
 
{
  FLOAT:             failure probability given as 0.0 to 100.0
+
  ASTRING: CustomizationName
 
}
 
}
 
+
INT: PalleteSelectionList
// unknown
+
INT: UpdateCounter
UINT64
+
{
UINT64
+
    INT: PalleteSelection
UINT64
+
}
UINT64
+
INT: PalleteStartIndexList
UINT64
+
INT: UpdateCounter
UINT32
+
{
UINT8
+
    INT: PalleteStartIndex
UINT8
+
}
 
+
INT: PalleteEndIndexList
 +
INT: UpdateCounter
 +
{
 +
    INT: PalleteEndIndex
 +
}
 +
BYTE: CustomizationCounter
 +
FLOAT: RiskFactor
 +
INT: ObjectTemplateCustomizationList
 +
INT: UpdateCounter
 +
{
 +
  ASTRING: ObjectTemplateIFF
 +
}
 +
BYTE: ReadyFlag
 
</pre>
 
</pre>
  

Revision as of 20:31, 15 June 2008

Baseline - MSCO 07

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

MSCO Packet Type QuickNav
MSCO03 - MSCO06 - MSCO07 - MSCO08 - MSCO09


BaseLine Struct


Few bytes left to figure out on this one.

SHORT:		ObjOpperandCount
INT:		SlotNameList
INT:		UpdateCounter
{
  ASTRING:	SlotNameTable
  INT:		NotUsed
  ASTRING:	SlotName
}
INT:		SlotContentsList
INT:		UpdateCounter
{
    INT:	SlotContentType
}
INT:		IngridientList
INT:		UpdateCounter
{
    INT:	Counter
    {
      LONG:	IngredientID
    }
}
INT:		QuantityList
INT:		UpdateCounter
{
    INT:	Counter
    {
      INT:	IngredientQuantity
    }
}
INT:		SlotQualityList
INT:		UpdateCounter
{
    FLOAT:	Quality  
}
INT:		CleanSlotList 
INT:		UpdateCounter
{
    INT:	Value 
}
INT:		SlotIndexList
INT:		UpdateCounter
{
    INT:	SlotIndex
}
BYTE:		IngredientsCounter
INT:		ExperimentationNameList
INT:		UpdateCounter
{
  ASTRING:	ExperimentationTable
  INT:		NotUsed
  ASTRING:	ExperimentationName
}
INT:		CurrentExperimentationValueList 
INT:		UpdateCounter
{
    FLOAT:	CurrentExperimentationValue
}
INT:		ExperimentationOffsetList
INT:		UpdateCounter 
{
    FLOAT:	ExperimentationValueOffset
}
INT:		BlueBarSizeList
INT:		UpdateCounter
{
    FLOAT:	Size
}
INT:		MaxExperimentationList
INT:		UpdateCounter
{
    FLOAT:	MaxExperimentationValue
}
INT:		CustomizationNameList
INT:		UpdateCounter
{
  ASTRING:	CustomizationName
}
INT:		PalleteSelectionList
INT:		UpdateCounter
{
    INT:	PalleteSelection
}
INT:		PalleteStartIndexList
INT:		UpdateCounter
{
    INT:	PalleteStartIndex
}
INT:		PalleteEndIndexList
INT:		UpdateCounter
{
    INT:	PalleteEndIndex 
}
BYTE:		CustomizationCounter
FLOAT:		RiskFactor
INT:		ObjectTemplateCustomizationList
INT:		UpdateCounter
{
  ASTRING:	ObjectTemplateIFF
}
BYTE:		ReadyFlag

Deltas Struct


I've written the deltas part numbers in the baseline above. This Packet is to huge that one could make sense of it without structure. Thus the Delta parts themselves are further divided into - lets call them - slotspots.

For every slot there is a 3 Byte slotspot in the Deltapart, save part 7, where the byte stale flag (??) is. So that every slotspot can be modified on its own and the monster gets more palateable the slotspots must be inserted. Think of it as a kind of FlowControl.

So to set the amount of resource that got filled into the first slot :

SHORT:			UpdateCount
SHORT:			UpdateType
{
  00:
    INT:		SlotNameList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          ASTRING:	SlotNameTable
          INT:		NotUsed
          ASTRING:	SlotName 
        02:(change)
          SHORT:	Index
          ASTRING:	SlotNameTable
          INT:		NotUsed
          ASTRING:	SlotName 
        03:(resetall)
          SHORT:	NewListSize
          {
            ASTRING:	SlotNameTable
            INT:	NotUsed
            ASTRING:	SlotName 
          }
        04:(clear)
      }
    }
  01:
    INT:		SlotContentsList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          INT:		SlotContentType
        02:(change)
          SHORT:	Index
          INT:		SlotContentType
        03:(resetall)
          SHORT:	NewListSize
          {
            INT:	SlotContentType
          }
        04:(clear)
      }
    }
  02:
    INT:		IngridientList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:
        01:(add)
          SHORT:	Index
          INT:		Counter
          {
            LONG:	IngredientID
          }
        02:(change)
          SHORT:	Index
          INT:		Counter
          {
            LONG:	IngredientID
          }
        03:(resetall)
          SHORT:	NewListSize
          {
            INT:	Counter
            {
              LONG:	IngredientID
            }
          }
        04:(clear)
      }
    }
  03:
    INT:		QuantityList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          INT:		Counter
          {
            INT:	IngredientQuantity
          }
        02:(change)
          SHORT:	Index
          INT:		Counter
          {
            INT:	IngredientQuantity
          }
        03:(resetall)
          SHORT:	NewListSize
          {
            INT:	Counter
            {
              INT:	IngredientQuantity
            }
          }
        04:(clear)
      }
    }
  04:
    INT:		SlotQualityList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          FLOAT:	Quality  
        02:(change)
          SHORT:	Index
          FLOAT:	Quality  
        03:(resetall)
          SHORT:	NewListSize
          {
            FLOAT:	Quality  
          }
        04:(clear)
      }
    }
  05:
    INT:		CleanSlotList 
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          INT:		Value 
        02:(change)
          SHORT:	Index
          INT:		Value 
        03:(resetall)
          SHORT:	NewListSize
          {
            INT:	Value  
          }
        04:(clear)
      }
    }
  06:
    INT:		SlotIndexList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          INT:		SlotIndex
        02:(change)
          SHORT:	Index
          INT:		SlotIndex
        03:(resetall)
          SHORT:	NewListSize
          {
            INT:	SlotIndex
          }
        04:(clear)
      }
    }
  07:
    BYTE:		IngredientsCounter
  08:
    INT:		ExperimentationNameList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          ASTRING:	ExperimentationTable
          INT:		NotUsed
          ASTRING:	ExperimentationName
        02:(change)
          SHORT:	Index
          ASTRING:	ExperimentationTable
          INT:		NotUsed
          ASTRING:	ExperimentationName
        03:(resetall)
          SHORT:	NewListSize
          {
            ASTRING:	ExperimentationTable
            INT:	NotUsed
            ASTRING:	ExperimentationName
          }
        04:(clear)
      }
    }
  09:
    INT:		CurrentExperimentationValueList 
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          FLOAT:	CurrentExperimentationValue
        02:(change)
          SHORT:	Index
          FLOAT:	CurrentExperimentationValue
        03:(resetall)
          SHORT:	NewListSize
          {
            FLOAT:	CurrentExperimentationValue
          }
        04:(clear)
      }
    }
  0A:
    INT:		ExperimentationOffsetList
    INT:		UpdateCounter 
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          FLOAT:	ExperimentationValueOffset
        02:(change)
          SHORT:	Index
          FLOAT:	ExperimentationValueOffset
        03:(resetall)
          SHORT:	NewListSize
          {
            FLOAT:	ExperimentationValueOffset
          }
        04:(clear)
      }
    }
  0B:
    INT:		BlueBarSizeList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          FLOAT:	Size
        02:(change)
          SHORT:	Index
          FLOAT:	Size
        03:(resetall)
          SHORT:	NewListSize
          {
            FLOAT:	Size
          }
        04:(clear)
      }
    }
  0C:
    INT:		MaxExperimentationList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          FLOAT:	MaxExperimentationValue
        02:(change)
          SHORT:	Index
          FLOAT:	MaxExperimentationValue
        03:(resetall)
          SHORT:	NewListSize
          {
            FLOAT:	MaxExperimentationValue
          }
        04:(clear)
      }
    }
  0D:
    INT:		CustomizationNameList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          ASTRING:	CustomizationName
        02:(change)
          SHORT:	Index
          ASTRING:	CustomizationName
        03:(resetall)
          SHORT:	NewListSize
          {
            ASTRING:	CustomizationName 
          }
        04:(clear)
      }
    }
  0E:
    INT:		PalleteSelectionList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          INT:		PalleteSelection
        02:(change)
          SHORT:	Index
          INT:		PalleteSelection
        03:(resetall)
          SHORT:	NewListSize
          {
            INT:	PalleteSelection
          }
        04:(clear)
      }
    }
  0F:
    INT:		PalleteStartIndexList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          INT:    	PalleteStartIndex
        02:(change)
          SHORT:	Index
          INT:		PalleteStartIndex 
        03:(resetall)
          SHORT:	NewListSize
          {
            INT:	PalleteStartIndex
          }
        04:(clear)
      }
    }
  10:
    INT:		PalleteEndIndexList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          INT:		PalleteEndIndex
        02:(change)
          SHORT:	Index
          INT:		PalleteEndIndex
        03:(resetall)
          SHORT:	NewListSize
          {
            INT:	PalleteEndIndex
          }
        04:(clear)
      }
    }
  11:
    BYTE:		CustomizationCounter
  12:
    FLOAT:		RiskFactor
  13:
    INT:		ObjectTemplateCustomizationList
    INT:		UpdateCounter
    {
      BYTE:		SubType
      {
        00:(remove)
          SHORT:	Index
        01:(add)
          SHORT:	Index
          ASTRING:	ObjectTemplateIFF 
        02:(change)
          SHORT:	Index
          ASTRING:	ObjectTemplateIFF
        03:(resetall)
          SHORT:	NewListSize
          {
            ASTRING:	ObjectTemplateIFF
          }
        04:(clear)
      }
    }
  14:
    BYTE:		ReadyFlag
}

Variable Descriptions


Obj_OperandCount =


Tags


75% This packet has been partially reversed.

S→C This packet originates on the server.

Sample Packet