hzqst hzqst
关注数: 6 粉丝数: 857 发帖数: 32,848 关注贴吧数: 28
【HZ大讲堂】讲解一下引擎中对各种渲染模式(rendermode)的处理 渲染模式就是这个值:给实体设置后由引擎读取,它的键叫rendermode,可取值从0~5,一共6个值 enum { kRenderNormal,// src kRenderTransColor,// c*a+dest*(1-a) kRenderTransTexture,// src*a+dest*(1-a) kRenderGlow,// src*a+dest -- No Z buffer checks kRenderTransAlpha,// src*srca+dest*(1-srca) kRenderTransAdd,// src*a+dest }; 从HLSDK\common\const.h中也可以看到就是这六个 V社给出的注释很清楚的说明了它的颜色混合方式 至于什么是混合?就是当红色玻璃和蓝色玻璃重合在一起的时候重合部分的像素应该是什么颜色的?是紫色(Alpha)还是粉色(add),或者红色/蓝色(完全透明和完全不透明)? rendermode = 0,也就是rendermode=kRenderNormal的情况: 靠近自己的像素完全覆盖后面的像素 比如一个rendermode=0的箱子挡住了背景的一部分,你看到的就是完全不透明的箱子 对于固体和固体实体,他在引擎里渲染时是用 qglColor4f(1, 1, 1, 1); 来设置颜色,也就是说,你设置的rendercolor完全无效,不管怎样他都是完全不透明+保持贴图本来的颜色 对于spr等点实体,渲染kRenderNormal的实体时使用 qglTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); qglColor4ub(color.r, color.g, color.b, 255); qglDisable(GL_BLEND); 其中color.r(g/b) = rendercolor.r(g/b) * 255 / 256 也就是说这个spr是完全不透明的一张纸板,用spr查看工具看到的是黑色背景,游戏里出来的就是黑色背景
hz群内解释金坷垃 我现在心情也非常的复杂 用语言也表 达不出来 从昨天到现在我还没吃过东西 只要闲下来就有一种头脑空白全身发 抖的感觉 依靠着肉松饼撑到现在 中午的时候去睡了两小时 做了非常多 的梦 这事对我的人生 对我的未来的影响 都太大了 今天我一个人来到ACFUN 来澄清这个事情 鼓起了非常大的勇气 大家不明白这事的其因后果 现在我就对大家说下吧 我以前也想过金坷垃 做了几天就感觉做不下去了 群里的小学生一直在看 我也是知道的 他们叫什么我都知道 我是群里的权限,这些我都懂 LOL这个游戏呢大概8个英雄,英雄相对来说的话 ,谁有皮肤谁就比较厉害 这个游戏我不知道有多少人玩过 有什么人机模式啊 排位赛啊 技术不好 认得土豪 就会赢 对于这游戏 我也玩 还认得不少高玩,也为这次事件埋下伏笔 贴吧里说的,大多都是伪造的。但也有真的。我的确是沉迷lol,怪我不注意又给腾讯送钱。 玩lol嘛,大家也知道。英雄不齐皮肤没有是很受人鄙视的。但是要做金坷垃又要把lol落下来。我不肯,就把号给了别人帮忙代练。开始别人还帮忙,后来别人发现我不打,就问我还玩不玩了,我就把做金坷垃的事说了出来。后来我说这个以后就交给你了,他不肯,我们吵了一架,至于说为什么现在也不做,完全是我跟他赌气。他是什么人我最清楚了,平时把我当他爹。还有关于lol的事,群里的小学生都是我带他们打的,我会不知道吗,他们去哪个区我都一清二楚 群里这些小学生还在天天催我做金坷垃,这件事我已经报警了,我t m又卜是s b,我做东西有QB吗?我早就已经放弃了,还有人在群里催那就通通 十循 这事情发生到现在我也没好好的休息过 一直在折腾这个事 在这里感谢下一直支持我的朋友 我知道这个事情不会那么快就过去 大家还是 一直看热闹的人 会一直流传下去 这是我不能控制的 无论你们说什么 我还是懒得做 无论发生什么 我都不会做金坷垃了 以后我也会接着LOL 像这些催更的,我一定会让他付出代价的 我也不知道该怎么样感谢各位支持我的朋友 虽然现在已经很累了 我想现在唯一能给大家带来的 就是LOL了 接下来给大家带来几场LOL的直播吧 顺便支持一下我的淘宝小店,有全新的肉松饼上架 hzqst.taobao.cnm
关于Info_SetValueForStarKey破解ASCII字符限制 刚刚逆的:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodepad.org%2F44isIjBO&urlrefer=a921473a4757b6ecb1fb6433399c1972 //hw.dll ver 3266 addr 1D5EDE0 void Info_SetValueForStarKey(const char *info, const char *key, const char *value, size_t maxlen) ...略过中间部分... while(*p) { if(*p >= ' ' && *p <= '~') { if ( !Q_stricmp(key, "team") ) *p = (char)tolower(*p); *p2++ = *p; } p ++; } 这个if(*p >= ' ' && *p <= '~')条件去掉的话就可以支持非ASCII字符的userinfo 这两句在3266版本的hw.dll中是: .text:01D5EFB3 cmp ebx, 20h .text:01D5EFB6 jl short loc_1D5EFDD .text:01D5EFB8 cmp ebx, 7Eh .text:01D5EFBB jg short loc_1D5EFDD 也就是当ebx的值(ebx也就是*p)小于20h(字符' ')或大于7Eh(字符'~')的时候,跳到 .text:01D5EFDD cmp byte ptr [edi], 0 .text:01D5EFE0 jnz short loc_1D5EFAE 也就是这个while循环的尾部到p++这里 所以你要做的就是把jl和jg指令(每个占2字节)换成nop,也就是这样: .text:01D5EFB3 cmp ebx, 20h .text:01D5EFB6 nop .text:01D5EFB7 nop .text:01D5EFB8 cmp ebx, 7Eh .text:01D5EFBB nop .text:01D5EFBC nop 也就是在01D5EFB6和01D5EFB6这两个地址分别memcpy写入2个字节"\x90\x90“(90代表nop指令) 这样你就干掉了这个检测ASCII字符的条件 记得写入前用VirtualProtect改变内存页的只读属性 当然有metahook的情况下,用g_pMetaHookAPI->WriteMemory((void *)0x01D5EFB6, "\x90\x90", 2);这样是最方便的了~ 当然还有一种比较文艺的方法是 g_pMetaHookAPI->InlineHook直接hook这个函数,然后你照抄我逆出来的整个函数(但是要去掉那个检测ASCII的条件哦),里面需要调用的Info_RemoveKey什么的都用函数指针完成,不过感觉这样更浪费时间
首页 1 2 下一页