Difference between revisions of "MSCO07"
(→Deltas Struct) |
|||
| Line 143: | Line 143: | ||
<pre> | <pre> | ||
| − | + | SHORT: UpdateCount | |
| − | + | SHORT: UpdateType | |
| − | + | { | |
| − | + | 00: | |
| − | + | INT: SlotNameList | |
| − | + | INT: UpdateCounter | |
| − | + | { | |
| − | 01 00 00 00 | + | BYTE: SubType |
| − | + | { | |
| − | + | 00:(remove) | |
| − | 01 00 00 00 | + | SHORT: Index |
| − | + | 01:(add) | |
| − | + | SHORT: Index | |
| − | + | ASTRING: SlotNameTable | |
| − | 02 | + | INT: NotUsed |
| − | + | ASTRING: SlotName | |
| − | 00 00 | + | 02:(change) |
| − | + | SHORT: Index | |
| − | + | ASTRING: SlotNameTable | |
| − | 01 00 00 00 | + | 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 | ||
| + | } | ||
</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.
|
BaseLine StructFew bytes left to figure out on this one.
SHORT: Operand Count
//Part 0
INT: Slot Counter
INT: Update Counter
{
A_STRING: STF File
INT: String spacer
A_STRING: STF Name
}
//Part 1
INT: Counter 1
INT: Update Counter
{
INT: Unknown, must be 4 if slot is filled
}
//Part 2
INT: Counter 2
INT: Update Counter
{
//here go the ingredient IDs
INT: Counter for IngredientID
{
LONG: ingredient ID
}
}
//Part 3
INT: Counter 3
INT: Update Counter
{
INT: Counter for Ingredient Amount
{
INT: amount of ingredient filled into slot
}
}
//Part 4
INT: Counter 4
INT: Update Counter
{
INT: Unknown
}
//Part 5
INT: Counter
INT: Update Counter
{
INT: Unknown
}
//Part 6
INT: Counter
INT: Update Counter * 2
{
INT: Unknown
}
//Part 7
BYTE: some sort of stale flag
probably not used(usually slot size * 4)
//Part 8 Experimentation Attributes
INT: Counter
INT: Update Counter
{
A_STRING: dir to look up string (crafting)
INT: unknown
A_STRING: Areas of Experimentation for the item
eg expEffectiveness; expRange
}
//Part 9 Experimentation attributes Values
INT: Counter
INT: Update Counter
{
FLOAT: Experimentation Attribute Value
}
//Part 10 not tested yet
INT: Counter
INT: Update Counter
{
INT: Unknown
}
//Part 11 Assembly Attributes Values -> percentage of assembly succes
// 100% = highest possible (30%)
INT: Counter
INT: Update Counter
{
FLOAT: Assembly Attribute Value
}
//Part 12 Max reachable Experimentation Attribute Value
INT: Counter
INT: Update Counter
{
FLOAT: Max Experimentation Attribute Value
}
//Part 18 unknown yet
INT: Counter
INT: Update Counter
{
FLOAT: failure probability given as 0.0 to 100.0
}
// unknown
UINT64
UINT64
UINT64
UINT64
UINT64
UINT32
UINT8
UINT8
Deltas StructI'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 DescriptionsObj_OperandCount = Tags
|