Scriptable Asset: Difference between revisions

From COD Engine Research
No edit summary
No edit summary
Line 5: Line 5:
The scriptable asset is used in Ghost and Advanced Warfare. It appears to be a format used to hold some scripting information for models and the collision map. Since it is so new, there is virtually nothing known about it.
The scriptable asset is used in Ghost and Advanced Warfare. It appears to be a format used to hold some scripting information for models and the collision map. Since it is so new, there is virtually nothing known about it.
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
struct unknownScriptTableStruct1Internal1Internal1UnionStruct6
struct unknownScriptableStruct1Internal1Internal1UnionStruct6
{
{
   char * unknownString;
   char * unknownString;
Line 11: Line 11:
};
};


struct unknownScriptTableStruct1Internal1Internal1UnionStruct5
struct unknownScriptableStruct1Internal1Internal1UnionStruct5
{
{
   char unknown1[0x10];
   char unknown1[0x10];
Line 18: Line 18:
};
};


struct unknownScriptTableStruct1Internal1Internal1UnionStruct4
struct unknownScriptableStruct1Internal1Internal1UnionStruct4
{
{
   XModel * unknownModel;
   XModel * unknownModel;
Line 24: Line 24:
};
};


struct unknownScriptTableStruct1Internal1Internal1UnionStruct3
struct unknownScriptableStruct1Internal1Internal1UnionStruct3
{
{
   char * unknownString;
   char * unknownString;
Line 30: Line 30:
};
};


struct unknownScriptTableStruct1Internal1Internal1UnionStruct2
struct unknownScriptableStruct1Internal1Internal1UnionStruct2
{
{
   snd_alias_list_name unknownSound;
   snd_alias_list_name unknownSound;
Line 36: Line 36:
};
};


struct unknownScriptTableStruct1Internal1Internal1UnionStruct1
struct unknownScriptableStruct1Internal1Internal1UnionStruct1
{
{
   FxEffectDef * unknownFx;
   FxEffectDef * unknownFx;
Line 43: Line 43:
};
};


union unknownScriptTableStruct1Internal1Internal1Union
union unknownScriptableStruct1Internal1Internal1Union
{
{
   char (*unknown1)[6];  //If parent->type == 0xA
   char (*unknown1)[6];  //If parent->type == 0xA
   XModel * unknownModel;//else if == 0
   XModel * unknownModel;//else if == 0
   unknownScriptTableStruct1Internal1Internal1UnionStruct1 * unknownStruct1; //else if == 1
   unknownScriptableStruct1Internal1Internal1UnionStruct1 * unknownStruct1; //else if == 1
   unknownScriptTableStruct1Internal1Internal1UnionStruct2 * unknownStruct2; //else if == 2
   unknownScriptableStruct1Internal1Internal1UnionStruct2 * unknownStruct2; //else if == 2
   unknownScriptTableStruct1Internal1Internal1UnionStruct3 * unknownStruct3; //else if == 3
   unknownScriptableStruct1Internal1Internal1UnionStruct3 * unknownStruct3; //else if == 3
   char (*unknown2)[0xC];  //else if == 4
   char (*unknown2)[0xC];  //else if == 4
   char (*unknown3)[8];  //else if == 5
   char (*unknown3)[8];  //else if == 5
   unknownScriptTableStruct1Internal1Internal1UnionStruct4 * unknownStruct4; //else if == 6
   unknownScriptableStruct1Internal1Internal1UnionStruct4 * unknownStruct4; //else if == 6
   unknownScriptTableStruct1Internal1Internal1UnionStruct5 * unknownStruct5; //else if == 7
   unknownScriptableStruct1Internal1Internal1UnionStruct5 * unknownStruct5; //else if == 7
   char (*unknown4)[0x16]; //else if == 8
   char (*unknown4)[0x16]; //else if == 8
   unknownScriptTableStruct1Internal1Internal1UnionStruct6 * unknownStruct6; //else if == 9
   unknownScriptableStruct1Internal1Internal1UnionStruct6 * unknownStruct6; //else if == 9


};
};


struct unknownScriptTableStruct1Internal1Internal1
struct unknownScriptableStruct1Internal1Internal1
{
{
   int type;
   int type;
   unknownScriptTableStruct1Internal1Internal1Union unknownUnion;
   unknownScriptableStruct1Internal1Internal1Union unknownUnion;
};
};


struct unknownScriptTableStruct1Internal1
struct unknownScriptableStruct1Internal1
{
{
   ScriptString unknownScriptString1;
   ScriptString unknownScriptString1;
   ScriptString unknownScriptString2;
   ScriptString unknownScriptString2;
   unknownScriptTableStruct1Internal1Internal1 * unknownStructArray; //Count = unknownCount1;
   unknownScriptableStruct1Internal1Internal1 * unknownStructArray; //Count = unknownCount1;
   byte unknownCount1;
   byte unknownCount1;
   char unknown[7];
   char unknown[7];
};
};


struct unknownScriptTableStruct1
struct unknownScriptableStruct1
{
{
   unknownScriptTableStruct1Internal1 * unkownStructArray; //Count = unknownCount
   unknownScriptableStruct1Internal1 * unkownStructArray; //Count = unknownCount
   ScriptString unknownScriptString;
   ScriptString unknownScriptString;
   unsigned short unknownCount;
   unsigned short unknownCount;
Line 82: Line 82:
};
};


struct unknownScriptTableStruct2Internal1
struct unknownScriptableStruct2Internal1
{
{
   FxEffectDef * unknownFx;
   FxEffectDef * unknownFx;
Line 88: Line 88:
};
};


struct unknownScriptTableStruct2
struct unknownScriptableStruct2
{
{
   ScriptString unknownScriptString;
   ScriptString unknownScriptString;
Line 94: Line 94:
   union {
   union {
       snd_alias_list_name unknownSound; //if type == 0
       snd_alias_list_name unknownSound; //if type == 0
       unknownScriptTableSTruct2Internal1 unknownStruct; //else if == 1
       unknownScriptableSTruct2Internal1 unknownStruct; //else if == 1
   };
   };
};
};


struct ScriptTable
struct Scriptable
{
{
   const char * name;
   const char * name;
Line 104: Line 104:
   char * unknownString1;
   char * unknownString1;
   char * unknownString2;
   char * unknownString2;
   unknownScriptTableStruct1 * unknownStructArray1; //count = unknownCount1
   unknownScriptableStruct1 * unknownStructArray1; //count = unknownCount1
   unknownScriptTableStruct2 * unknownStructArray2; //count = unknownCount2
   unknownScriptableStruct2 * unknownStructArray2; //count = unknownCount2
   char unknown2[5];
   char unknown2[5];
   byte unknownCount1;
   byte unknownCount1;

Revision as of 00:30, 13 November 2014

The scriptable asset is used in Ghost and Advanced Warfare. It appears to be a format used to hold some scripting information for models and the collision map. Since it is so new, there is virtually nothing known about it.

struct unknownScriptableStruct1Internal1Internal1UnionStruct6
{
  char * unknownString;
  char unknown[0x14];
};

struct unknownScriptableStruct1Internal1Internal1UnionStruct5
{
  char unknown1[0x10];
  char * unknownString;
  char unknown2[4];
};

struct unknownScriptableStruct1Internal1Internal1UnionStruct4
{
  XModel * unknownModel;
  char unknown[8];
};

struct unknownScriptableStruct1Internal1Internal1UnionStruct3
{
  char * unknownString;
  char unknown[0x10];
};

struct unknownScriptableStruct1Internal1Internal1UnionStruct2
{
  snd_alias_list_name unknownSound;
  char unknown[4];
};

struct unknownScriptableStruct1Internal1Internal1UnionStruct1
{
  FxEffectDef * unknownFx;
  ScriptString unknownString;
  char unknown[6];
};

union unknownScriptableStruct1Internal1Internal1Union
{
  char (*unknown1)[6];  //If parent->type == 0xA
  XModel * unknownModel;//else if == 0
  unknownScriptableStruct1Internal1Internal1UnionStruct1 * unknownStruct1; //else if == 1
  unknownScriptableStruct1Internal1Internal1UnionStruct2 * unknownStruct2; //else if == 2
  unknownScriptableStruct1Internal1Internal1UnionStruct3 * unknownStruct3; //else if == 3
  char (*unknown2)[0xC];  //else if == 4
  char (*unknown3)[8];  //else if == 5
  unknownScriptableStruct1Internal1Internal1UnionStruct4 * unknownStruct4; //else if == 6
  unknownScriptableStruct1Internal1Internal1UnionStruct5 * unknownStruct5; //else if == 7
  char (*unknown4)[0x16]; //else if == 8
  unknownScriptableStruct1Internal1Internal1UnionStruct6 * unknownStruct6; //else if == 9

};

struct unknownScriptableStruct1Internal1Internal1
{
  int type;
  unknownScriptableStruct1Internal1Internal1Union unknownUnion;
};

struct unknownScriptableStruct1Internal1
{
  ScriptString unknownScriptString1;
  ScriptString unknownScriptString2;
  unknownScriptableStruct1Internal1Internal1 * unknownStructArray; //Count = unknownCount1;
  byte unknownCount1;
  char unknown[7];
};

struct unknownScriptableStruct1
{
  unknownScriptableStruct1Internal1 * unkownStructArray; //Count = unknownCount
  ScriptString unknownScriptString;
  unsigned short unknownCount;
  int unknown;
};

struct unknownScriptableStruct2Internal1
{
  FxEffectDef * unknownFx;
  ScriptString unknownScriptString;
};

struct unknownScriptableStruct2
{
  ScriptString unknownScriptString;
  int type;
  union {
       snd_alias_list_name unknownSound; //if type == 0
       unknownScriptableSTruct2Internal1 unknownStruct; //else if == 1
  };
};

struct Scriptable
{
  const char * name;
  XModel * unknownModel1;
  char * unknownString1;
  char * unknownString2;
  unknownScriptableStruct1 * unknownStructArray1; //count = unknownCount1
  unknownScriptableStruct2 * unknownStructArray2; //count = unknownCount2
  char unknown2[5];
  byte unknownCount1;
  char unknown1[2];
  byte unknownCount2;
};