游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9259|回复: 10

怀疑hl2代码不是最新代码

[复制链接]

15

主题

155

帖子

157

积分

注册会员

Rank: 2

积分
157
发表于 2003-10-22 18:26:00 | 显示全部楼层 |阅读模式
用debug编译源代码后,再将1.3G的资源拷贝到相应目录中。运行hl2.exe,每次都报错。
跟踪hl2,发现每次都在engine初始化时出错。
m_pShells[0] = (model_t *) engine->LoadModel( "models/weapons/shell.mdl" );

在bool Mod_LoadStudioModel (model_t *mod, void *buffer, bool zerostructure )中,函数检查检查链表时发生异常。

这个函数有一个函数
Studio_ConvertStudioHdrToNewVersion( phdr );
将文件的版本从37改为36!

12

主题

42

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2003-10-22 20:16:00 | 显示全部楼层

Re:怀疑hl2代码不是最新代码

1.3G

可直接运行

12

主题

42

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2003-10-22 20:19:00 | 显示全部楼层

Re:怀疑hl2代码不是最新代码

如自己编译160M原码

只考资源即可

如地图等

15

主题

155

帖子

157

积分

注册会员

Rank: 2

积分
157
 楼主| 发表于 2003-10-23 12:06:00 | 显示全部楼层

Re: 怀疑hl2代码不是最新代码

经过昨晚的长时间的奋战,将cs1.5的mdl文件和hl2的mdl用新旧hlmv.exe打开,反复测试,可以肯定mdl文件已经被value公司升级了。
1.3G的资源包中的mdl文件的version是37,cs1.5(or1.4)中的mdl文件的version是10。

但是网上的hl2源代码中mdl文件版本号是36(见public/studio.h).所以用源代码编译出来的hl2不能使用1.3G的modules。

在studio.h中的struct studiohdr_t临时添加了4个int,编译了部分模块,可以load mdl文件了,但是还是只能看到砖墙!郁闷!

下面是public/studio.h中的改动
        int                                        numanim;                        // animations/poses
        int                                        animdescindex;                // animation descriptions
        inline mstudioanimdesc_t *pAnimdesc( int i ) const { return (mstudioanimdesc_t *)(((byte *)this) + animdescindex) + i; };

        int                                        unknown0;//ydq
        int                                        unknown1;//ydq
        int                                        unknown2;//ydq
        int                                        unknown3;//ydq

        int                                        numseq;                                // sequences
        int                                        seqindex;
        inline mstudioseqdesc_t *pSeqdesc( int i ) const { if (i < 0 || i >= numseq) i = 0; return (mstudioseqdesc_t *)(((byte *)this) + seqindex) + i; };
        int                                        sequencesindexed;        // initialization flag - have the sequences been indexed?

//ydq是我添加的代码

6

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2003-10-30 09:12:00 | 显示全部楼层

Re:怀疑hl2代码不是最新代码

干得漂亮

6

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2003-10-31 14:57:00 | 显示全部楼层

继续Desher的研究工作

Advisor.mdl's version is: 37
airboat.mdl's version is: 37
airboat_temp.mdl's version is: 36
AirExTruck.mdl's version is: 37
airpunch.mdl's version is: 37
alyx.mdl's version is: 37
ANIMAL.mdl's version is: 37
AntLion.mdl's version is: 37
antlion_grub.mdl's version is: 37
antlion_grub_squashed.mdl's version is: 37
antlion_guard.mdl's version is: 37
APC.mdl's version is: 37
Assassin.mdl's version is: 35
Attack_Helicopter.mdl's version is: 37
Banners.mdl's version is: 35
Barnacle.mdl's version is: 37
Barnacle_Crater.mdl's version is: 37
Barney.mdl's version is: 37
BarneyHelmet.mdl's version is: 37
Birther.mdl's version is: 32
bluering.mdl's version is: 37
borealisworker.mdl's version is: 35
breen.mdl's version is: 37
brokenglass_01.mdl's version is: 37
brokenglass_piece.mdl's version is: 37
brokenglass_solid.mdl's version is: 37
buggy.mdl's version is: 37
buggy001.mdl's version is: 35
bullsquid.mdl's version is: 37
Car01.mdl's version is: 37
child_worker_f1.mdl's version is: 35
child_worker_m1.mdl's version is: 35
citadelfar.mdl's version is: 37
citadelfarnode.mdl's version is: 29
cohrt.mdl's version is: 35
combine1a_turret.mdl's version is: 29
combine1b_turret.mdl's version is: 29
combine_apc.mdl's version is: 37
Combine_barricade.mdl's version is: 37
Combine_BMPod.mdl's version is: 37
Combine_citadel.mdl's version is: 37
Combine_dropship.mdl's version is: 37
Combine_Elite.mdl's version is: 32
Combine_gate.mdl's version is: 37
Combine_Guard.mdl's version is: 37
Combine_Scanner.mdl's version is: 37
Combine_Soldier.mdl's version is: 37
Combine_Strider.mdl's version is: 37
Combine_wall.mdl's version is: 37
Combot.mdl's version is: 37
Conscript.mdl's version is: 37
Conscriptdemo.mdl's version is: 37
Conscriptdemo2.mdl's version is: 37
consul.mdl's version is: 35
Consul_Statue.mdl's version is: 37
cremator.mdl's version is: 37
cremator_body.mdl's version is: 37
cremator_head.mdl's version is: 37
Crow.mdl's version is: 37
DeadBorealisWorker.mdl's version is: 35
digger.mdl's version is: 37
dog.mdl's version is: 37
DropShip.mdl's version is: 35
DropShipDeckHull.mdl's version is: 35
E3hydra.mdl's version is: 37
E3hydra_seer.mdl's version is: 37
E3hydra_smacker.mdl's version is: 37
Eli.mdl's version is: 37
error.mdl's version is: 37
fassassin.mdl's version is: 37
gman.mdl's version is: 37
gmanhl1.mdl's version is: 35
gunship.mdl's version is: 37
gunship_projectile.mdl's version is: 37
HC_squashed01.mdl's version is: 37
HC_squashed02.mdl's version is: 37
headcrab.mdl's version is: 37
headcrabblack.mdl's version is: 37
headcrabclassic.mdl's version is: 37
healthvial.mdl's version is: 37
hl2_logo1.mdl's version is: 35
hl2_title1.mdl's version is: 35
houndeye.mdl's version is: -52
hydra.mdl's version is: 37
Ichthyosaur.mdl's version is: 37
ihvtest.mdl's version is: 35
ihvtest_noflex.mdl's version is: 35
ihvtest_static.mdl's version is: 35
ihvtest_static_singlemat.mdl's version is: 35
ihvtest_tree.mdl's version is: 37
jetski001.mdl's version is: 37
Kleiner.mdl's version is: 37
Lightstalk.mdl's version is: 37
manhack.mdl's version is: 37
manhack_sphere.mdl's version is: 35
Missile_Defense.mdl's version is: 37
monk.mdl's version is: 37
MortarSynth.mdl's version is: 37
mossman.mdl's version is: 37
Odell.mdl's version is: 37
pigeon.mdl's version is: 37
PLAYER.MDL's version is: 37
Plaza_door.mdl's version is: 37
Police.mdl's version is: 37
Police_Cheaple.mdl's version is: 37
rat.mdl's version is: 37
Roller.mdl's version is: 37
Roller_Spikes.mdl's version is: 37
Samuel.mdl's version is: 35
sandbarnacle.mdl's version is: 37
Scanner_Shield.mdl's version is: 37
Shield_Scanner.mdl's version is: 37
shiplight.mdl's version is: 37
Soldier_E3Under.mdl's version is: 37
soldier_stripped.mdl's version is: 37
spitball_large.mdl's version is: 37
spitball_medium.mdl's version is: 37
spitball_small.mdl's version is: 37
spore.mdl's version is: 35
stalker.mdl's version is: 37
Synth.mdl's version is: 31
Truck01.mdl's version is: 37
vortigaunt.mdl's version is: 37
vortigaunt_cheaple.mdl's version is: 37
wasteland_scanner.mdl's version is: 37
watercraft.mdl's version is: 37
Worker.mdl's version is: 35
WScanner_Pair.mdl's version is: 32
WScanner_Single.mdl's version is: 32
WScanner_Tri.mdl's version is: 32
W_stalker.mdl's version is: 37
zombie_assassin.mdl's version is: 37

6

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2003-10-31 14:59:00 | 显示全部楼层

Re:怀疑hl2代码不是最新代码

编了一个小程序检查anon-hl2的models目录,可以看到mdl的版本是向下兼容的。

6

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2003-10-31 23:25:00 | 显示全部楼层

Re: 小程序附送

小程序的小错误,已订正

sf_20031031232539.zip

51.16 KB, 下载次数:

15

主题

155

帖子

157

积分

注册会员

Rank: 2

积分
157
 楼主| 发表于 2003-11-12 19:57:00 | 显示全部楼层

Re: 怀疑hl2代码不是最新代码

现以查明studiohdr_t结构37版比36版多了4个int。mstudioseqdesc_t比36版少了anim[32][32],个别位置也有改变。

附件是我修改后的代码,可以正常打开只有一个seq group的mdl文件。
由于不明白一个seq group单独写一个文件,走了不少弯路,浪费了N多时间。

sf_2003111219570.rar

27.82 KB, 下载次数:

15

主题

155

帖子

157

积分

注册会员

Rank: 2

积分
157
 楼主| 发表于 2003-11-12 19:58:00 | 显示全部楼层

Re: 怀疑hl2代码不是最新代码

下面这张图是用hlmv(用源代码编译的)打开md文件截屏l
sf_20031112195844.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-20 09:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表