From c875fd698fca8d48ebde1e0000c34d784fa0cf8a Mon Sep 17 00:00:00 2001 From: tomrus88 Date: Mon, 15 Dec 2008 00:33:32 +0300 Subject: [PATCH] Fixed typo in map extractor. Patch provided by andstan. --- contrib/extractor/System.cpp | 13 +++++---- contrib/extractor/ad.exe | Bin 160768 -> 160768 bytes contrib/extractor/adt.cpp | 52 +++++++++++++++++------------------ contrib/extractor/adt.h | 47 +++++++++++++++++-------------- 4 files changed, 60 insertions(+), 52 deletions(-) diff --git a/contrib/extractor/System.cpp b/contrib/extractor/System.cpp index 3b659a4c6..85d06369f 100644 --- a/contrib/extractor/System.cpp +++ b/contrib/extractor/System.cpp @@ -18,9 +18,10 @@ extern ArchiveSet gOpenArchives; bool ConvertADT(char*, char*); -typedef struct{ +typedef struct +{ char name[64]; - unsigned int id; + uint32 id; } map_id; typedef unsigned char uint8; @@ -143,7 +144,7 @@ void ReadAreaTableDBC() size_t area_count = dbc.getRecordCount(); size_t maxid = dbc.getMaxId(); areas = new uint16[maxid + 1]; - memset(areas, 0xff, sizeof(areas)); + memset(areas, 0xff, (maxid + 1) * sizeof(uint16)); for(uint32 x = 0; x < area_count; ++x) areas[dbc.getRecord(x).getUInt(0)] = dbc.getRecord(x).getUInt(3); @@ -199,7 +200,7 @@ void ExtractMapsFromMpq() ConvertADT(mpq_filename, output_filename); done++; } - // draw progess bar + // draw progress bar printf("Processing........................%d%%\r", (100 * done) / total); } } @@ -243,7 +244,7 @@ void ExtractDBCFiles(int locale, bool basicLocale) string filename = path; filename += (iter->c_str() + strlen("DBFilesClient\\")); - FILE *output=fopen(filename.c_str(), "wb"); + FILE *output = fopen(filename.c_str(), "wb"); if(!output) { printf("Can't create the output file '%s'\n", filename.c_str()); @@ -295,7 +296,7 @@ void LoadCommonMPQFiles() if(i > 1) sprintf(ext, "-%i", i); - sprintf(filename,"%s/Data/patch%s.MPQ", input_path, ext); + sprintf(filename, "%s/Data/patch%s.MPQ", input_path, ext); if(FileExists(filename)) new MPQArchive(filename); } diff --git a/contrib/extractor/ad.exe b/contrib/extractor/ad.exe index 30d3f314dafc36ed83575e1d99f9bf07e886e056..f483f3892f9135033e8b6e9e4786d983c5c5b8b1 100755 GIT binary patch delta 14215 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 xag3NqI9v_qabl_GpN*JJ5Y zbNx?Ryc}QbR~}nlDesy}OS-F+OsT%UQ!8DA7p;^Bn5m+NitZydTig2aHhQpsY$gk& z`=`@PWKX0+_e!}Yoh;s5CH|1kEvu}kP11Z&DfiBxZJeG#BY&gvcNr81YzUrfC`kSy zlLmB)#M?&b8H1HHp;dwn{MmG&J8k~OP3+x!+F$G zX7gyMqdY&D>yTaF=A6AT&A$2&m8Oas$yqwW_5WEb`E0GUCC;aBMX(Qikb;p-c#y^* zD}In3M0V*x1eHozpHH7srL83&|1}5=1}~y8UoIJfJwJqrSldjw_{2MKyPUrWbG=u7 zbrB`Nimoi8wP^nL#gv9-A1o%vMWVN?eV8tQ(EczLLT=t8G#if3_Tk@Y4k6qGK1#hs zFB67Xoy3zAo}|hX9;308BCmgpra5zBl}T=UjFJL5xr!(4JwN39RXl0$_F*b7r`i$< z$%Xn&L!~QH^BtA<`|5l-zliqqOIriy?mHj520`8$=WtY7<=-FK?bvQ%@`%T2j2l16 z;5_sxM?CsCO&t{mgmNwk(PAJk3f930S%=}|5QHHp8+-PkJ(4$5K2W)Iw(F16TNKLW z7ipD8KfpbYf6nRwzchM-JXX zheMJ001R!V-PgwNG+v+~479O*QM{0I2)qqGY-*MUq` zk(;`ZX+UOIZ$S+a-6ubS6S;&)6<+~-6;EOg7EX;0;B18x%nAe19=S#K+D7AW8Z>W1 z6x<{~%(D`C<2D-W5rGA652@l=nR|ro_%`ZCpxu-yv~MXk3*-fxElLfZ8MARJ_bi!+ zWveQcW4BXaZwG^CNdRybi;_4COeVPVQu(p%G^kfsdv~*<9RNyM07vAv$Ti!kXKo3~ zRV~nSQC%!z?!xGRKwt_zB;PRPi@uC?I^aMr<>)?DtC2yO?qzAGL$xXkZ`ac9TsHf3 z+3c3`@kh*=1>>agZT9f2{L`}GIXLxjTkdnT-Km)O9_U38RuHqG&`!Zx^R9AH6 z%Xz*qI&ul}B3}>+QLu21$2lb2)j>=F}Ak~1(+F;<#LU=Re zgPx6aNcIP!s24CnD5#SAa~As(KAG(vK&v&21$8bxP=0ME{VRAAZ#1;PS+U|pDZ8xb zPIRP-a#KF&#M){%+5YDRx`~^%y!&N3MisUvU!k*Z)XkP%OCz0!pZ+jj2>&QvSP$3- zxCW@k0o6oNqhq_Si6?o+4&Oi;z^Rm|6 zEb1E_=>VHhIF#`R}|izD^cGm-fDsGmKsB~I(gbx zbf7;+$7uOgt*Dz4iJ7TZF$atCqG#(14bcH!a?~+0hB&Z=-<0_Q#ksu;G)mDEnA>Vz zg@qj~^TR-7b_{1ro!oJZVvvP>jgX?VrGHJ2ian3qvfD4e6Ly#X%c`z??O{}h) z32duU+rLjB9=PtEde>f_w)b+IJiC=fxUTN1?vc0hYD!miiTqhBjUxALCn?SKqbZIi zHraBL9zo3b_#{P;xBT--L`Fp(cnW99z4G)^Kw9OEr)a3hj5O#lzQHV|)uk(wAtv+tMzs=pV`(8EW&(US- zd%cqDf;qu=qu>10*J%8ApiH2eY|kF@%y{>+BIS%z55O2 z(J(W*`t`T=s!1qtj~CtsRK~{(Pa|~w`s-gCFD$T?pCvcZxnqP$c;&e5g>UhH|2^`G zO~R3xcz{Su5FBNjG0Amjy*;P(It9Tg-@K1aeb zKqa6V&{d|RbAGV zukXsYAn&hby|K-O2)X-cv0slPK=EHo7fZ`|d2^&Vw7c$t1Mh{LOZJivL2`Ff7doX2 zog!;Ti=nW}k)y?_L*DG7?(53yyYfTG`CH~uVAK>(Qc-EVAnuaR3e!!^Vh4 z&&rDq9r=XjOiXwt*jF|gMO_bbjtLk+XqbqAi{Fup@(W|cDLpFJ|9<`sZIJJd5&M%M z2SY5C6({!b*g4`p?$r_USjg1Q#jD0bxjs(p z>--jq?~arw@#bC;j_!G1r;W15Sg{X1B@Y=Z_7k6rQ(43Zbh3j3%DPa_>v?%8i#tU_NM?JaQbCGfGb9S+V>mGM5v}?hjAf7k+Dm{3a)_ zl8=rP`)WPb#0vxEYaFv&?rwrM-#qK+X@H!Ls>|k=9PNwa&_ja!3~-1FJae(XabL9a zQzzmD`GoDdN$ly`e|4-$wMcWENj2vq$X8?FLC8(WJ7VRblf1*E(YYN4@ZiUKYg__&6S z`p`!!3A3AhvMATeYEcv{D=ka#Qsku`#fr2P%a8kg&$FoI>(lSkAHVf==5o%NGiPSb zoHH{IR!FWDl51^O*lRC7Fp=x|b#P9^jkt2$Ny2ek9LTNIo7~TD`jCzzJNe1&^b(oE zbNa>y_!h$V9pC7r@FL}(oJ->7)H8lV<>g2f$7M}7X4l_bGLDOGHdv~(I-uq>FuG8s zHK1a!q-p)7D=8coeXXKQ>&w-=t(^dTXf2d<>(Xr z6{{UO6LhDOo_rNj{2R)kx3mc5B0XlOp^#NgFSF6BD-+q!*rYXVXQMM$KxjQ{P^@++ zw<8&nH4G#07*$YBns)SRn`f04ZBS2eYLXXnl5|97WWtO69Wzr5Og%$*T2+Fk<0)29 zOnTRD=eT+CO{Ne*!#eLVhfG7!?q8BPDdJT+$faMoOkoSlRj5^br)T|N5JX61>b{$S znUvS}>TAMK){|w0C#-2KS5u~qTr$&hPr8RCMQzFVsL^X`R5X3ptH!+uJqU7YQ8&r`)wnaeGTT(|!T7n_ zc3rm+yR;mr_Mr8GOhX;jBnM-=?&jYR{bN0Fsw{z(@Q;;VvuT36x@w$B{HPgowAj}vZI(u z`AZo|94GHs&#JjM?e^#&Eu~tW@Spd+Fm-~nV?Bm~M{sAm*y8J%iGAsBke-2A+m$7> z*mY1;1n3a<7Z>9P+-@SQbGWG*cZlP1XBFhntZW`ln_NTlKl$Bmhs&w5l_m-%b|<272m-6IpFH-ES=FV)pAV>(3S}LyCJ5bPY4&Olc^}=4P)Ewpj%;g$wxyvWr#4 zq^N^6xj@JC8qkj^>}joXuEsW>x7t=Z!P9DsSDweNc_LBJoTe4MG=3I&K2-G%-gPoB zqwVSyMyAuxdPR(5on^~jvY2E_eP74CGL%6|+`(pr=>@WmIiL*b<}Rim!(~drpqrb+ zr7vi_+tP$MCC9brY4zF6PifPNi9yN(bA4ptI4;%P92(!XWLt84o9C(pSlevrAvhPo zy$*shq*v(AZUN=Zn7|(IUsI*Ep_V1&tBrz51(CvMHKp39nmp}jY2g@$FVsdFgwLd( z5+P@$$_YNMr~+-UO!^FPW8X<%fYx56-3|0S7(^-58;v^r7&otmvRON$%z+ngw|#TA zz5Fo9zHK|SP?`-y-LBWFPs{%O+m36^%4MoE!4*)qlRwi2lJ99vEoyg2tinjxdG6_jLC4? zt_1PU21!9Q+&!fHFw_G}%rg=Dk9Avon=DmL)i71G2nCN9#KPrfFb?Vc1dIg6+y=+f zzD>&}7{h1T>Qkjdne&IXWtrIq$@?0!RW)qY|zq9t`SE@5&n)Y02s3CfABYImVU_fkJ9FodYpW zHp{E3ZrSZ@v#gWNC;EuAupX0zt%F(Fq;18(Gr_(yp5xX!=3(tRZ40n#H)#(ctFCg? zs1i{tPFyHFY|*7bu**efZQyC@)Cn z3ocG)91Q=Z{S3uz0rYC`FtUwmeEK1c_34i^M=mdw%UgX00@LKvKkRQbnepo#NeW-q zdXSt>@*RruQeP&u&NtRE)Ky&;1y|2vKzkjBv$!J!XGkk(r|)}YJl(1JoIF7v@3YJ2 zS_8(Qw<-`w6sv8fpR%R%jj?{tge-1M@b@F6oK6df(VS(c_x0f#q+1}4%g)G@(&)1R zTYR2p(PoPpxXhY0kzkN4G&L}WjG)T{12kVFA_(gl`ffX2<12w92zi>G?mK{7+!(Z# zd``Cog_216K~N>xM8^gX3Q{1p)~pVKRJbxNLbb4&b(>|#l;$_C3U(vJldcaLNv6?* zA)VwheY4+5;!W3u&i8w7Ju|I@1H#i$=rtn#K$qdvrSS%@ZHA;n4rG1Tb)3>$nka$`=u)sIFMmBx(N`J24$LBBsNueFeslv(nxY~3wD!ILtkSFZ4J7{b=zUYjV%l%eC_eN&%^9?jFOQ*@ z2MzZ5&kIbRm$_V)Hx=@9G(23-|M3)kBs@s-5SCZguBXFPg+V$@pAU~EKJ=^bc=9~; z9$ZYs#dZ z_3YS)%a^gnPZ~o{Mcq%{qHe?QC#z`u@R|1+bD3)D_!iRuL{1eum2T-xdUN=6_m*l7C%q=5S-r8Lt?aTCi*;JzQvb$PnVvd4@58b|6zly2s5RcaHPIC(YYF= zw8l@PTM6-N+!DLOW%9tM8I$UOyqty%DV6@IUd$Cc6>~*4EO5~d>?-Ly*%o~FvI?4* zFGtBfC59Z*WFy^`NJ#|Mjq!zrPajiA%yiF~DFa_F!+fmQ z!csFN6)SIHR+}l^T#oV@X7UE<8#;LGWZ1ZA><@!S3Bn3z7=S9QsjGfBp)k=aNPdO8bsmLN?R&;|7ra^sR9t`yO1#ah1&~^mCv9 z2G8O<>l8Ns8g)t@7F>3h4iektv*4@u;ym@`8w=>3>0 z1x%j+`_P3;pb*VbhP`>L9ou zMQU_v%@(@in;!2aHH$cx%ap{oLBYw|3ukfPPM4l{2|>deSYr72Lys$^E#O{lFIC0M z%%w_cH4U9SzF#8H(YENr!o(n_3I1`oOD$1K;XvA9==DeFn#tk(wTI~L$q$ou8kiP5 zx-D178H;W*U$uLVJeji!gab48D}asq71)2>i!Ef>D*9-eX6PgL(wZ49=U!|#!;YhG zrfJF}@1+&~23ntcvD+DzyBFKWu$N}vqowaPV2}S5EBljo(wDAHAISfj@pQ!#PrHFIsw@PR|%Z>KiLE2q7MHRb~V^OaGlY zhBVM0Gl!6+)ITeP45y>A9wtB1`mA)1<1i0A8p_ktaGc)E(rSa`n!4hTJd?9s$ruC; zOS3bjCWnUuqkdWp38zm^yFjMUS=0TW1$R9u8tW(SdE zx-~n~r%`spIAxUf_WaODQZuFcjX7hz7eTEe4pJ<5!7^q@XQ&}39-C)fPG1s5U(R_l zaG%3}%LKt8V-tta_}nm(LGyF}?KyOoJPnWzUvYCL4V=;6ZI6-R)WrnR zV*HE=s*d?O&aPd3go-n!_8tC+yiTbN>>fS7GbH{$E8+xwBLbu!B{Sp0*MNBlAPuk( zumiv;6bb^sSyQ2KI>J_MADuIEy4%BxFo*>BZs}v%JTsRlX-J+nr~~d3h8by)b|X@n zn}cu-9OYn(q6K-=d;gxvJeEI>r3fMr*8c)Mn5TCOKsyK9GU}T@*6nk6)H}`c6WyM= zQ06ikb$`UWWiwf>ulm|3dCx~#ZLN0K_Fjvfqqgjg8wap z+6%IXhGxx*aSNU*Pek;!hBmr!)&SB*_sklI^z^KL{B;AZcu+%o7Y5-ZczQiJq&=me%73X|cYlbAI-7~p2v5+buS8bF}Xjpr_)W&ce{<*Vesq<=rlH#u~`Iy;-bQ-kmqQdSZu7N$nNULO} z@hVH7de9>}wizwcv`gpQc`cfWY9WkKJq6~8TY_Vk9hoj%HlOdtOdq8mKbYI+@MXJQ z_8jO#SF=r9g>gv7Y1~6m9$8G8GHssR``7e|hlV7uS5v8ve5&z^zUCOvH0@~i8m5;X zX_A%C!GQ40z+R5^(hP?4!dtC-2R-x95OR>JW=HT&-_zLHdUe(xAhzMk5G1wI)wA_v z0R4D&DE43H?2-N2&{g(yr$YvVWu11K0?Xfpp=U@p;2{M~8`aH;Bs#ii&Nz9hGNfgb z9Qb{6viaQasb+45iyT-qN9m%ufg}DBWc(3if^LTxIVM?Rh#X>^5$fXqkV6c8ckV>8 ztkG%SDnbxM=BJP_dSreWd4v8mKb<^C6N+-kXu7%RG?`47JRC!=HNNz)f{-`quHs=h z{GTcgA&=4DiywA%?UJ7~qz4-pE_j}JR$|7nC7BZtK9>g2z(p2vq4DKK7M=`h99a@Y z$Td2D@v`!}0n>b0mG!5f`CiHGpc&lb?bX7qJCTybPzg7AG z7Dg>4p2FO#q&+9>_SL6Mq0(Fs?*`HM8%t>65|==x!}!j6!AWTCJU6RAjxIP|sxDrp zl}lO?*(W{rFgC>7k39{at}oU36`hpLNx|MewJmz>G?)`7ji6ggBY5%yZ7p2@#~NcQ z=fi)X@0ikjI@@G^U&bGURhc8b+vxlF^Mua<{fP{p@4uGm{)|2v^djl)#(<@@JZYq_ zF55sh(1hiINVAtegyZ~s%U>nojdRPw2+mMXt$2)l(fG%TmwDVic2un5qol_0$|9Zw z(GBK3WGwO0CHSL9MoN`Pwv|)Hb%RJFesvuQxuoafy5R9_?i>$r1( z7hXYt2E6{Nj+_3Pj++J83kXH~SirpJbxz#!=NmU}kMWpXC*gE(S&uEVeGpDh>1|ST zJ#237P0o_iX0W91mZqUzRF(>2%5Hymjy3vyUtMo4Y zb@!({S4|JRnS<>e^w!?M%OB}DAzfWVqHVg1yJ5rTxouoa%4vUF<4R2WA3e zI{*x={7OR=%`ao~yxu%L?6`n2nf#??PvhbgBDGqu68JjBNhiahYHocS9dK}DZ^mUm zA+%xJ4l7m{#3}W3!NEt-@2P_^WC!&+X@c)vg9vTG3 zM-B~4-oYpXj;(dBb}=6!O&57{3o+kNEvdfxqFuY0Q7sd>t;nhY6@aCH5Xc+1>)-B%2My&Xz)9hZd(E$=z8>Aay>qBeIpMYQ5Hq6Y~a zjJb9i%1Z&;>9LkjUiTHf+7iyP;MS;ti~;)m3i3^W0#!A@7Z3!{0!DpBm$Xjsb@Xch zA_q_eDEq4Mv(_t4nE9q7VOW@RN8WP50&F>6fb_THc_3tdg(YdM{Aw#!sWJG(ug<{r z{)R16(l;Gg^oh8d#CFkd&psK*5O$MFN=m>n*%=>JjnYUIa~rzol5^qC zjEv&;b0@LB%g@K~`YY7?kY7m7FY=5{yW&{jHdJeikZc0%{e>+s<9zgxHd)VD{&s~K z6*C%-EF2ID@CSGSQ~(ap{R>-RU&bleS%-OmB0$*{I-+Gxe#g~2OI(X0r2V%gK92@i zV#ZwiE6V;T=m2X|odz7M9`9uSNw&V9W$SzEKUZJ83H$4~Dz82=tiG1Dh4f9xwgGkk zb^+c7>;p6dPEhY3Ci*%w>O#F6p!yZo@oVEFKYT{8o{1M%l3k7aF1E0pSk)Phm43bR z2A?ps3?4y;Zx4I(@C~d*p`F7%h0TVuFelz*t|qs%ZxJg<`zldkXKWn6`C`tlxk=Cd zq@5bU%;v zkV$nQ3Ed23`8f|~i%UQ6Ca*Pa?NSq1*~`Ct;3hEz9$JIX;|a9nN}R7hI%o(&Vz9@0 zA+yJ-s~bPKlB*z9jegf(Qk5HOaH)1rW2t5WOM~?+jn%OKoGTh~kXuqz4Rct1bq5|rT9n(N2f@F35PiUkYKw9L zQdb3MYf+|cHV`eT+iW7CNVkxaA2Kr_AS8s ztjk`G#}{tr_(LmPghLICQj8nRxrvz8+=kP190#V5Vui6LmeHh-|3Xj}2j&zUi2mZ; zrHDSA%KFoyCyrgjCXV7stS4JA7Iqfm<;os=+Pa*Fu0ADD=z6M}z5SS`WMx|tR+n1e zaw1n@LgG#(8HntNl32(w>kMad-8JO2FaCI=cM|9Blf*3mSONP1D&R+I#7DizdeULN z3aX&-YUW8_NR&54YOD`l_R+WK0?!6^0HP-;=KhQ0A|x+a!!$!+bL zO^m5-Da^Lp?pbxDTsB+Q$YB4P{h7u4KuB$$U|Ynp_L2`y@b*~7&>+{H@4S+|%NrND}GF&@~DVRR4%1 zA>piQ^0CJ_OUm_NtCz_^&YgV)g|pcfYOrgnF^%9(8cOm=o%Ok)#E*_p$(+g6T&TDuW6VoccGKJ}INB1m{c9OzFY!V())8`5 z7?0pCtHe57aM)MSkY@47I1*IOu<=TUeq3Q*r1GtA2BP5z66R+Zz9x}rGjmqK;RE$Y zQ8Eg#tWkEfJ-*8nW43uMu=&EbvUb_Gdt^Z#FZzmTTjx@cA- zM zGV*Tix5;Gm-CA-QNw{0voJP`JY#Ui%*d<;}Bg3&_`lb`3tBfON3oK>N z;!}L$F0nbC=)k6&B4?>n2qnA3lT%2HFXMVFLuhTfp~R!{_x&sh7Ms|ADk<@nDOo~O zQ@2w11#Z+PHcTb8y=8Qu&}#1J$J(gDo?;+INZ)24Gmu?3KzExMl|hU?OeOY)&Md3O z)FCK7u!+xPkS&a!NrwMP<>E||2<*$5WG9Idr)H4>y(VJXjK%mvx^%HDi%cbY>ya!{ zuYl%{em!>w($iJ09#W&Ld&STIP{a$n5jTd}Q)=LIAk%@P+9 z$3-GQT)mK70Aax*QVO{pi%32^pLNWmWEMfZd9H*6@LmQCv0)lZa#)flwk#oINRH_I z7@6kGi1h}s@G+tfVdQ$2boTj>@z=AYv)6}ttej`v{}^#0{pO(36RO#cD*0=*RFq1| z%l$sBgm>4>!LC7+HzztAl~VfcBfA~jEkS(4L`J!>lMK#7pD@HPCNgzI0ua(UJ6owD<$u^VpZ150^qKV^(!= z*#r8`npa6G zocN**;x|=fHea$qOkPb^vAkt9c@#@KYK?p{nYD)0k`imz8WN;H5Ofzvci#I4a zOE!t8H<8pwHnF+-+8{l#7DqaTw&($N{;2CgKIA~A$;fRz$aElc8+M?EknUR)!-z~m ztc>3dd_7Cz50p-g3ubJk;|&r8(H^@)tldn;k~;C|W<|3&S;d9 zXM#xwcU~u670G>mJ?-5Ml5zkjHNgx~B#BXVq))*nlN^G-eu6W{PD=*?4wGp zo#Z&#ZoRRSeCtNmTHD_u!<~oaeU!xQ1~}W2xH!N{z#hQIfPqa(oEP9}Kouam$vXO7 z(&9$W?>R_Bw)g57la{AVPU z?69u-jCd)Czev9zQQl06rf&Xv8(g<=C_?Ek9{+;u@6XWjN_JB-^^#&SF%2^2fT=Jp zUtOw=3l0_ceo3Ok9oW)uYW#s>+&;w$$@B!Kwt-b)U3Du-F`7P@)rBM1eIk~GpfQ`o0xL~yGms>oj^EnZJm0{Zb{#Ju}eJD zM(%g5?Wyh+HSMV8^i(Uv^ma0W1dA2zB;ED%DULQR;@9ou5yXs?lO%==5SN`qWb77S zJc+YptN0Z|QnA-5GQ^`O9ZIA$8-#RQhBQ+gcZxjZ+MULvyp5h;KZT&USG;fv?W#r1 zX_Edhd(Q6Uqisc@c%W;LAGh6`fva(El~eW{T_eBOO9l9wzTDg2G#sBcx#s=Kro8k4vSR?D}$@?X6iV7@;J^>wi?fq=M>I8 zmER@uS!AD(eLC*b6-hFj2WQL)CPMs1!w2$nPl&&3_$~4!dAqo|5C4S6+OQ-}rys{{ z?w7=R3iRV2?_2Ki5y$!4IIaW!tnLBAm24o~C+7&)4G29?xCwxzfPH}e7YJ7fr~@1Y zIDJpJTtFS56+nIER>!se^}q?+_N( zlPC4$6Ops0%namA&06sl*2*S+HIk1eUyH7z_yMF#96E}R_6+^Op(C5nyouvBglR-w zH1F!2rvrlHnkORM;%E3ld~Os!rFZC4f1SRG)#9yDe1Duy!bbD)WV4t*n(ynq8$xgY znBcu)&1m%8C4PX+dt>ciWmJnKj-TB>6!y;dw7Q+MuET+6d7&h(iNg}rif_j8W1aec zs1qZ`@WD<22OI@*OC0_H-;eAUGmyFPtvV)5^c=$nI6eBgPMpk`-H$n#2jw4=$sDev z>>-=0>d9}{15V3yxw%XJ**{exJMUJ=D`G}G-_Pmct{!FPU)PD9=!pDVe3KDY+>|>G zaLc#rxWxec#BURLjoWl==fwbqU^=>Mv9s9k`_Lq=OH54Q{WPBf^))~z6CBCg;=>92 ze2>cm9Nc-x=ME6RN#OgqeK|0RI|0B?9E(2O7v7h|l>pdptr(Wb-_Q4t5QmK6Lp){< zOS&`m;$h;-L_W|XIO;BLaFjR(GL>iXsPVnnl*spW9x(#1L?gsWta)vWLn@P;7bAL% z;RDGZ;@~lSKR#fL%)RVd*2)5YwtHAD4%Popuqqewf4KY~I7-n9 diff --git a/contrib/extractor/adt.cpp b/contrib/extractor/adt.cpp index f0c3de960..dde87e5fc 100644 --- a/contrib/extractor/adt.cpp +++ b/contrib/extractor/adt.cpp @@ -15,7 +15,7 @@ #include "adt.h" #include "mpq_libmpq.h" -unsigned int iRes = 256; +uint32 iRes = 256; extern uint16 *areas; extern uint16 *LiqType; extern uint32 maxAreaId; @@ -23,7 +23,6 @@ extern uint32 maxAreaId; vec wmoc; Cell *cell; -//uint32 wmo_count; mcell *mcells; int holetab_h[4] = {0x1111, 0x2222, 0x4444, 0x8888}; int holetab_v[4] = {0x000F, 0x00F0, 0x0F00, 0xF000}; @@ -40,26 +39,23 @@ bool LoadADT(char* filename) } MapLiqFlag = new uint8[256]; - for(int j = 0; j < 256; ++j) + for(uint32 j = 0; j < 256; ++j) MapLiqFlag[j] = 0; // no water MapLiqHeight = new float[16384]; - for(int j = 0; j < 16384; ++j) + for(uint32 j = 0; j < 16384; ++j) MapLiqHeight[j] = -999999; // no water - mcells=new mcell; + mcells = new mcell; - wmoc.x =65 * TILESIZE; - wmoc.z =65 * TILESIZE; + wmoc.x = 65 * TILESIZE; + wmoc.z = 65 * TILESIZE; size_t mcnk_offsets[256], mcnk_sizes[256]; - //wmo_count = 0; - //bool found = false; - - MH2O_presence = false; chunk_num = 0; k = 0; + m = 0; while (!mf.isEof()) { uint32 fourcc; @@ -72,7 +68,7 @@ bool LoadADT(char* filename) //if(fourcc==0x4d564552) // MVER if(fourcc == 0x4d43494e) // MCIN { - for (int i = 0; i < 256; ++i) + for (uint32 i = 0; i < 256; ++i) { mf.read(&mcnk_offsets[i], 4); mf.read(&mcnk_sizes[i], 4); @@ -86,24 +82,23 @@ bool LoadADT(char* filename) //if(fourcc == 0x4d574944) // MWID offsets for strings in MWMO //if(fourcc == 0x4d444446) // MDDF //if(fourcc == 0x4d4f4446) // MODF - if(fourcc == 0x4d48324f && size) // MH2O new in WotLK + if(fourcc == 0x4d48324f) // MH2O new in WotLK { - MH2O_presence = true; // здесь надо запомнить базовую позицию в файле тк все смещения будут от него uint32 base_pos = mf.getPos(); uint32 header_pos = 0; - LiqOffsData = new MH2O_offsData; - LiqChunkData1 = new MH2O_Data1; - ChunkLiqHeight = new float[81]; - for(;chunk_num < 256; ++chunk_num) + MH2O_offsData *LiqOffsData = new MH2O_offsData; + MH2O_Data1 *LiqChunkData1 = new MH2O_Data1; + float *ChunkLiqHeight = new float[81]; + for(chunk_num = 0; chunk_num < 256; ++chunk_num) { - mf.read(LiqOffsData, 12); + mf.read(LiqOffsData, 0x0C); header_pos = mf.getPos(); if(LiqOffsData->offsData1 != 0) // если данные в Data1 о воде есть, то их надо конвертировать { // переходим по смещению из offsData1 ОТ НАЧАЛА куска mf.seek(base_pos + LiqOffsData->offsData1); - mf.read(LiqChunkData1, 24); // считываем сами данные в структуру типа MH2O_Data1 + mf.read(LiqChunkData1, 0x18); // считываем сами данные в структуру типа MH2O_Data1 // заносим данные флага для куска if(LiqType[LiqChunkData1->LiquidTypeId] == 0xffff) printf("\nCan't find Liquid type for map %s\nchunk %d\n", filename, chunk_num); @@ -132,6 +127,7 @@ bool LoadADT(char* filename) for(int j = 0; j < 81; ++j) ChunkLiqHeight[j] = -999999; // no liquid/water } + if(!(chunk_num % 16)) m = 1024 * (chunk_num / 16); // смещение по рядам кусков с перекрытием = 1024 k = m + (chunk_num % 16) * 8; // устанавливаемся на начальный индекс для заполнения ряда @@ -160,6 +156,9 @@ bool LoadADT(char* filename) //printf("Loading chunks info\n"); // read individual map chunks + chunk_num = 0; + k = 0; + m = 0; for (int j = 0; j < 16; ++j) { for (int i = 0; i < 16; ++i) @@ -245,14 +244,14 @@ inline void LoadMapChunk(MPQFile &mf, chunk *_chunk) { nextpos = mf.getPos() + 0x1C0; // size fix } - else if(fourcc == 0x4d434c51 && !MH2O_presence) // не будем учитывать если уже были данные в MH2O, перестраховка :) // MCLQ + else if(fourcc == 0x4d434c51) // не будем учитывать если уже были данные в MH2O, перестраховка :) // MCLQ { // liquid / water level char fcc1[5]; mf.read(fcc1, 4); flipcc(fcc1); fcc1[4] = 0; - ChunkLiqHeight = new float[81]; + float *ChunkLiqHeight = new float[81]; if (!strcmp(fcc1, "MCSE")) { @@ -267,9 +266,10 @@ inline void LoadMapChunk(MPQFile &mf, chunk *_chunk) mf.read(&maxheight, 4); for(int j = 0; j < 81; ++j) { - mf.read(&h, 4); - mf.read(&h, 4); - if(h > maxheight) + LiqData liq; + mf.read(&liq, 8); + + if(liq.height > maxheight) ChunkLiqHeight[j] = -999999; else ChunkLiqHeight[j] = h; @@ -283,7 +283,7 @@ inline void LoadMapChunk(MPQFile &mf, chunk *_chunk) // заполнем так же как в MH2O if(!(chunk_num % 16)) m = 1024 * (chunk_num / 16); - k = m +(chunk_num % 16) * 8; + k = m + (chunk_num % 16) * 8; for(int p = 0; p < 72; p += 9) { diff --git a/contrib/extractor/adt.h b/contrib/extractor/adt.h index 7fb8dc078..d56501c90 100644 --- a/contrib/extractor/adt.h +++ b/contrib/extractor/adt.h @@ -9,43 +9,45 @@ typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned int uint32; class Liquid; -typedef struct { +typedef struct +{ float x; float y; float z; } svec; -typedef struct { +typedef struct +{ double x; double y; double z; } vec; -typedef struct{ +typedef struct +{ vec v[3]; } triangle; -typedef struct{ - float v9[16*8+1][16*8+1]; - float v8[16*8][16*8]; +typedef struct +{ + float v9[16 * 8 + 1][16 * 8 + 1]; + float v8[16 * 8][16 * 8]; } Cell; -typedef struct{ +typedef struct +{ double v9[9][9]; double v8[8][8]; uint16 area_id; } chunk; -class WMO; -class WMOManager; -void fixname(std::string &name); - typedef struct { chunk ch[16][16]; } mcell; -struct MapChunkHeader { +struct MapChunkHeader +{ uint32 flags; uint32 ix; uint32 iy; @@ -81,13 +83,15 @@ struct MapChunkHeader { uint32 effectId; }; -typedef struct { +typedef struct +{ uint32 offsData1; uint32 used; uint32 offsData2; } MH2O_offsData; -typedef struct { +typedef struct +{ uint16 LiquidTypeId; uint16 type; float heightLevel1; @@ -100,6 +104,13 @@ typedef struct { uint32 ofsData2b; } MH2O_Data1; +typedef struct +{ + uint16 unk1; + uint16 unk2; + float height; +} LiqData; + enum LiquidType { LIQUID_TYPE_WATER = 0, @@ -110,12 +121,8 @@ enum LiquidType class MPQFile; -bool MH2O_presence; -MH2O_offsData *LiqOffsData; -MH2O_Data1 *LiqChunkData1; -float *ChunkLiqHeight, *MapLiqHeight; -uint8* MapLiqFlag; +float *MapLiqHeight; +uint8 *MapLiqFlag; uint32 k, m, chunk_num; void LoadMapChunk(MPQFile &, chunk*); -bool LoadWMO(char* filename); #endif