StringTable Asset: Difference between revisions
No edit summary |
No edit summary |
||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 7: | Line 7: | ||
[[Category:MW3]] | [[Category:MW3]] | ||
[[Category:BO2]] | [[Category:BO2]] | ||
[[Category:BO3]] | |||
[[Category:Ghosts]] | [[Category:Ghosts]] | ||
[[Category:AW]] | |||
StringTable assets are essentially the CoD engine's way of storing Excel tables for different types of data for different usages. This asset has existed on every CoD from the earliest Call of Duty 4 Alpha to Advanced Warfare. The number of values is columnCount * rowCount. To get a particular cell index, follow this... | StringTable assets are essentially the CoD engine's way of storing Excel tables for different types of data for different usages. This asset has existed on every CoD from the earliest Call of Duty 4 Alpha to Advanced Warfare. The number of values is columnCount * rowCount. To get a particular cell index, follow this... | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
| Line 25: | Line 27: | ||
== Modern Warfare 2 & 3 & Ghosts & Advanced Warfare == | == Modern Warfare 2 & 3 & Ghosts & Advanced Warfare == | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
struct | struct StringTableCell | ||
{ | { | ||
const char * | const char *string; | ||
int hash; | |||
}; | }; | ||
| Line 36: | Line 38: | ||
int columnCount; | int columnCount; | ||
int rowCount; | int rowCount; | ||
StringTableCell *strings; | |||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 51: | Line 53: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Black Ops 1 & 2 == | == Black Ops 1 & 2 & 3 == | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
struct | struct StringTableCell | ||
{ | { | ||
const char * | const char *string; | ||
int hash; | |||
}; | }; | ||
| Line 64: | Line 66: | ||
int columnCount; | int columnCount; | ||
int rowCount; | int rowCount; | ||
StringTableCell *values; | |||
__int16 *cellIndex; | |||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 92: | Line 94: | ||
white-space: -o-pre-wrap; | white-space: -o-pre-wrap; | ||
word-wrap: break-word;"> | word-wrap: break-word;"> | ||
#Clan Tag Features,,,,,,,,,,,,,,,, | #Clan Tag Features,,,,,,,,,,,,,,,, | ||
,,,,,,,,,,,,,,,, | ,,,,,,,,,,,,,,,, | ||
| Line 104: | Line 105: | ||
5,cyan,,13,250,tagcolor,5,,,,,,,,,, | 5,cyan,,13,250,tagcolor,5,,,,,,,,,, | ||
6,magenta,,13,250,tagcolor,6,,,,,,,,,, | 6,magenta,,13,250,tagcolor,6,,,,,,,,,, | ||
</pre> | </pre> | ||
Latest revision as of 07:16, 31 October 2015
StringTable assets are essentially the CoD engine's way of storing Excel tables for different types of data for different usages. This asset has existed on every CoD from the earliest Call of Duty 4 Alpha to Advanced Warfare. The number of values is columnCount * rowCount. To get a particular cell index, follow this...
desiredEntry = (columnCount * desiredRow) + desiredColumn;Call of Duty 4 & World at War
This StringTable is about as simple as it gets.
struct StringTable
{
const char *name;
int columnCount;
int rowCount;
const char **values;
};Modern Warfare 2 & 3 & Ghosts & Advanced Warfare
struct StringTableCell
{
const char *string;
int hash;
};
struct StringTable
{
const char *name;
int columnCount;
int rowCount;
StringTableCell *strings;
};The hash in StringEntry can be generated by this function:
unsigned int hash(const char* str)
{
unsigned int hash = 0;
while(*str != 0)
hash = tolower( *str++ ) + (31 * hash);
return hash;
}Black Ops 1 & 2 & 3
struct StringTableCell
{
const char *string;
int hash;
};
struct StringTable
{
const char *name;
int columnCount;
int rowCount;
StringTableCell *values;
__int16 *cellIndex;
};The hash in StringEntry can be generated by this function:
unsigned int hash(const char* str)
{
unsigned int hash = 5381;
while( *str != 0)
hash = ((hash << 5) + hash) + *str++;
return hash;
}Source Format
StringTables are stored in "raw/" at optional paths as comma-seperated Excel tables, similar to below...
entry1,entry2,entry3
entry4,entry5,entry6For example, take a look at "mp/clantagfeatures.csv" from Black Ops 1.
#Clan Tag Features,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,, a0,b1,c2,d3,e4,f5,g6,h7,i8,j9,k10,l11,m12,n13,o14,p15,q16 #INDX,#name,#unlocklvl,#unlockplvl,#cost,#type,#data,#nframes,#phase,#frame1,#frame2,#frame3,#frame4,#frame5,#frame6,#frame7,#frame8 0,none,,,,tagcolor,,,,,,,,,,, 1,red,,13,250,tagcolor,1,,,,,,,,,, 2,green,,13,250,tagcolor,2,,,,,,,,,, 3,yellow,,13,250,tagcolor,3,,,,,,,,,, 4,blue,,13,250,tagcolor,4,,,,,,,,,, 5,cyan,,13,250,tagcolor,5,,,,,,,,,, 6,magenta,,13,250,tagcolor,6,,,,,,,,,,