??? DBCFields添加對CreatureFamily.dbc的描述,內容如下:
??<File?name="CreatureFamily.dbc"?version="1.0">
????<Note>http://www.madx.dk/wowdev/wiki/index.php?title=CreatureFamily.dbc</Note>
????<Fields>
??????<Field?position="0"?type="integer">ID</Field>
??????<Field?position="1"?type="float">Unkn</Field>
??????<Field?position="2"?type="integer">Pet</Field>
??????<Field?position="3"?type="float">Unkn</Field>
??????<Field?position="4"?type="integer">Unkn</Field>
??????<Field?position="5"?type="integer">SkillLine</Field>
??????<Field?position="6"?type="integer">Unkn</Field>
??????<Field?position="7"?type="bit">PetFood</Field>
??????<Field?position="14"?type="string">Name</Field>
??????<Field?position="27"?type="string">Path</Field>
????</Fields>
??</File>?
??? 新增了一種字段類型bit,用于現在Mask類型。分析此dbc內容,結合ItemPetFood.dbc,可以發現Pet能吃的東東就八類,可憐啊,看看還是熊和豬最好養,啥都吃,嘿嘿~~當然SS的Pet依然是啥都不吃,省啊~
??? 下面是新增類型bit轉換為string的代碼,用于將integer顯示為0/1的形式:
?1?int?CBitField::Data2String(std::string?&str,?CFileBuffer?&fb,?int?offset,?int?strpos)?const
?2?{
?3?????int?data?=?0;
?4?????fb.Seek(offset);
?5?????fb.Read(data);
?6?
?7?????str?=?"";
?8?????int?i?=?0;
?9?????while(data?>?0)
10?????{
11?????????str?+=?((data?%?2?==?1)???'1'?:?'0');
12?????????data?/=?2;
13?????}
14?????while(str.size()?<?8)
15?????{
16?????????str?+=?'0';
17?????}
18?
19?????std::reverse(str.begin(),?str.end());
20?????str?+=?'B';
21?????return?fb.Good()???0?:?-1;
22?}