-
-
12一楼不能放东西
-
87其实我想BB一下原因和解决思路的,天都快亮了废话少说。 注意:这个方法比较临时工 注意:下面的 …… 表示原有的代码,不要动 打开 LoadBlob.cpp 找到 LoadBlobFile 这个函数,修改代码,如下: ………… for ( WORD j = 0; j <= pHeader->m_wSectionCount; j++ ) { DWORD dwProtect; VirtualProtect( (LPVOID)pSection[j].m_dwVirtualAddress, pSection[j].m_dwVirtualSize, PAGE_EXECUTE_READWRITE, &dwProtect ); ………… ………… } ………… 打开 metahook.cpp 在 #define CLIENTDLL_INIT_SIG_NEW (17一楼不能放东西的21181510281986MDL可以由多个Part组成,例如: 并且每个Part里还可以有多个Sub-model,例如: 我们知道实体有一个body变量可以用来决定需要显示的Sub-model, 典型的例子就是武器模型多手臂,我们把实体的body设为0就会显示1号Sub-model了, ==================================== 我们有一个模型,它有2个Part, 这两个Part里分别有2个Sub-model, 假如我们要同时显示“1号Part的2号Sub-model”和“2号Part的1号Sub-model”, 但根据上文介绍,实体只有一个body变量,我们怎么决定每个Part的Sub-model410嘛..吧里的教程基本上都是在HUD上画纹理,今天让我来讲一讲怎么在3D世界中画纹理吧~~ 首先Hook HUD_DrawNormalTriangles函数,方法是在LoadClient里pExportFunc->HUD_DrawNormalTriangles = HUD_DrawNormalTriangles; 接下来一切都可以在HUD_DrawNormalTriangles函数里进行了: 先用gEngfuncs.pfnSPR_Load读取一张纹理,然后gEngfuncs.GetSpritePointer获取纹理指针,写在一行就是model_t *MyTexture = (struct model_s *)gEngfuncs.GetSpritePointer( gEngfuncs.pfnSPR_Load( "sprites/320hud3.spr" ) ); 然而你会发现MetaHook里本26最入门的方法写的API..主要还是借机学习...用的是展鸿大佬的TextureRender 下载地址:http://pan.baidu.com/s/1hsmLczU * 支持32个纹理通道和32个文本通道 * 仅支持TGA( RGB 32bit )和BMP( Indexed 8bit ) * 更多信息请打开压缩包自行查看 提供的API: ------------------------------ /* 生成纹理通道和文本通道 | Channel Generation */ native R_GenTextureChannel(); native R_GenTextChannel(); /* 绘制纹理 | Draw Texture */ native R_DrawTexture( TextureChannel, const Texture[], Rend201675Half-Life\ gldrv\3dfxgl.dll// 3DFX显卡驱动 gldrv\drvmap.txt// platform\// Steam平台组件 valve\// HL主目录 valve\cl_dlls\// 客户端模块目录 valve\cl_dlls\client.dll// 客户端主模块,客户端游戏逻辑以及操作输入等等 valve\cl_dlls\GameUI.dll// 客户端操作界面模块,就是游戏里的主菜单和对话框那些 valve\cl_dlls\particleman.dll// 提供特效处理接口的模块 valve\dlls\// 服务端模块目录 valve\dlls\hl.dll// 服务端单人模式模块 valve\dlls\mp.dll// 服务端多人模式模块 valve\events\// 特效脚本目录,已废弃,10注意:此补丁仅3266引擎可用! 使用方法:在游戏初始化的时候调用PatchLoasSkys函数即可完成补丁 请删除同名BMP格式贴图文件,使用TGA文件。大小必须是1024*1024(24位/32位)非压缩TGA文件。如果想弄成512请修改代码里的bufferSize和imageSize变量。 http://codepad.org/p8Z1YjDK1934https://github.com/hzqst/MetaRenderer3也可以去http://www.moddb.com/mods/chicken-fortress-3/downloads/meta-audi下载 欢迎反馈各种建议264下载地址: http://www.moddb.com/mods/chicken-fortress-3/downloads/meta-audi 介绍: 简而言之就是让你的引擎音质得到质的提升,使用这个插件之后,音质西方的那些mod不知道高到哪里去了。 具体可以自己查看readme.txt444391620先甩代码http://git.oschina.net/hzqst/codes/xcgvspb3hnzld6f9ij28e 原版引擎中玩家在一个visleaf(通俗的说就是一个可见区域)内只能同时绘制512个实体。 这512个实体会被放进visedicts数组并等待绘制,超过的部分即丢弃(包括临时实体TEMPENTITY也会占用这个数组)。 这个代码可以把上限从512提升到1024甚至更高(启动参数-visedicts N) 代码来自Meta Renderer,转载需注明作者101020818首先替换R_DrawEntitiesOnList,把 for (i = 0; i < cl_numvisedicts; i++) { currententity = cl_visedicts[i]; 此处替换掉 还有内层循环 for (j = 0; j < cl_numvisedicts; j++) { if (cl_visedicts[j]->index == currententity->curstate.aiment) { currententity = cl_visedicts[j]; 也要替换。 虽然感觉这种循环并不是很好,时间复杂度有n^2了,既然是查表不然直接GetEntityByIndex(currententity->curstate.aiment) 后面画sprite的循环也要替换 r_blend = 1.0; for (i = 0; i < cl_numvisedicts; i++) { currententity = cl_visedicts[i];19161417如果我们在服务端不用 precache_model 然后直接在客户端缓存 那么就不大会收到 512 资源列表上限 的影响 但是客户端加载模型 即使用 Mod_ForName 加载8codepad.org/mJbKc0Z737[图片] [图片] [图片] [图片] 下载地址:1hq9Ra1u (百度云盘)