FPS游戏透视源码!
- 博客分类:
- 技术杂绘
FPS游戏透视源码!
2011年10月03日
需要的自己拿 ,部分插件需要自己给路径!~你懂的 C语言编译环境哈!#include
#include
#pragma comment(lib, "d3d9.lib")
#include
#pragma comment(lib, "d3dx9.lib")
#include
#include
#include
#include
#include
#include
#include
#include
#include
...................\....\d3d8.h
...................\....\d3d8dev.cpp
...................\....\d3d8dev.h
...................\....\d3d8int.cpp
...................\....\d3d8int.h
...................\....\d3d8tex.cpp
...................\....\d3d8tex.h
...................\....\main.cpp
...................\....\main.h
...................\....\old_workspace\TatniumD3D.dsp
...................\....\.............\TatniumD3D.dsw
...................\....\TatniumD3D.sln
...................\....\TatniumD3D.suo
...................\....\TatniumD3D.vcproj
...................\...9\d3d9.cpp
...................\....\d3d9.h
...................\....\d3d9dev.cpp
...................\....\d3d9dev.h
...................\....\d3d9int.cpp
...................\....\d3d9int.h
...................\....\d3d9tex.cpp
...................\....\d3d9tex.h
...................\....\main.cpp
...................\....\main.h
...................\....\old_workspace\TatniumD3D.dsp
...................\....\.............\TatniumD3D.dsw
...................\....\TatniumD3D.sln
...................\....\TatniumD3D.suo
...................\....\TatniumD3D.vcproj
...................\D3D_Starterkit_v3.0b\d3d8\d3d8.cpp
...................\....................\....\d3d8.h
...................\....................\....\d3d8dev.cpp
...................\....................\....\d3d8dev.h
...................\....................\....\d3d8int.cpp
...................\....................\....\d3d8int.h
...................\....................\....\d3d8tex.cpp
...................\....................\....\d3d8tex.h
...................\....................\....\main.cpp
...................\....................\....\main.h
...................\....................\....\old_workspace\TatniumD3D.dsp
...................\....................\....\.............\TatniumD3D.dsw
...................\....................\....\TatniumD3D.sln
...................\....................\....\TatniumD3D.suo
...................\....................\....\TatniumD3D.vcproj
...................\....................\...9\d3d9.cpp
...................\....................\....\d3d9.h
...................\....................\....\d3d9dev.cpp
...................\....................\....\d3d9dev.h
...................\....................\....\d3d9int.cpp
...................\....................\....\d3d9int.h
...................\....................\....\d3d9tex.cpp
...................\....................\....\d3d9tex.h
...................\....................\....\main.cpp
...................\....................\....\main.h
...................\....................\....\old_workspace\TatniumD3D.dsp
...................\....................\....\.............\TatniumD3D.dsw
...................\....................\....\TatniumD3D.sln
...................\....................\....\TatniumD3D.suo
...................\....................\....\TatniumD3D.vcproj
...................\....................\Injector\forcelib\ForceLib.h
...................\....................\........\........\ForceLibrary.cpp
...................\....................\........\........\TH32.cpp
...................\....................\........\........\TH32.h
...................\....................\........\main.cpp
...................\....................\........\old_workspace\TatniumInjector.dsp
...................\....................\........\.............\TatniumInjector.dsw
...................\....................\........\resource.aps
...................\....................\........\resource.h
...................\....................\........\resource.rc
...................\....................\........\TatniumInjector.ncb
...................\....................\........\TatniumInjector.sln
...................\....................\........\TatniumInjector.suo
...................\....................\........\TatniumInjector.vcproj
...................\....................\........\TatniumLoader.ico
...................\....................\ReadMe.rtf
...................\....................\Wrapper\D3D8\d3d8.def
...................\....................\.......\....\main.cpp
...................\....................\.......\...9\d3d9.def
...................\....................\.......\....\main.cpp
...................\Injector\forcelib\ForceLib.h
...................\........\........\ForceLibrary.cpp
...................\........\........\TH32.cpp
...................\........\........\TH32.h
...................\........\main.cpp
...................\........\old_workspace\TatniumInjector.dsp
...................\........\.............\TatniumInjector.dsw
...................\........\resource.aps
...................\........\resource.h
...................\........\resource.rc
...................\........\TatniumInjector.ncb
...................\........\TatniumInjector.sln
...................\........\TatniumInjector.suo
...................\........\TatniumInjector.vcproj
...................\........\TatniumLoader.ico
...................\ReadMe.rtf
...................\Wrapper\D3D8\d3d8.def
...................\.......\....\main.cpp
...................\.......\...9\d3d9.def
...................\.......\....\main.cpp
#pragma warning(disable:4996)
//-----------//
bool fCall = true;
bool Chams = true;
IDirect3DPixelShader9 *Front,
*Back;
//----------//
HRESULT CreateMyShader(IDirect3DPixelShader9 **pShader, IDirect3DDevice9 *Device, float red, float green, float blue, float alpha )
{
ID3DXBuffer *MyBuffer = NULL;
char MyShader[ 256 ];
sprintf( MyShader, "w21k3r.10.01.13\ndef c0, %f, %f, %f, %f\nmov r0,c0", red/255, green/255, blue/255, alpha/255 );
D3DXAssembleShader( MyShader, sizeof( MyShader ), NULL, NULL, 0, &MyBuffer , NULL );
if( FAILED( Device->CreatePixelShader((const DWORD*)MyBuffer ->GetBufferPointer(), pShader)) )return E_FAIL;
return S_OK;
}
//=====================================================================================
typedef HRESULT (WINAPI* CreateDevice_Prototype) (LPDIRECT3D9, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS*, LPDIRECT3DDEVICE9*);
typedef HRESULT (WINAPI* Reset_Prototype) (LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
typedef HRESULT (WINAPI* EndScene_Prototype) (LPDIRECT3DDEVICE9);
typedef HRESULT (WINAPI* DrawIndexedPrimitive_Prototype)(LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, INT, UINT, UINT, UINT, UINT);
CreateDevice_Prototype CreateDevice_Pointer = NULL;
Reset_Prototype Reset_Pointer = NULL;
EndScene_Prototype EndScene_Pointer = NULL;
DrawIndexedPrimitive_Prototype DrawIndexedPrimitive_Pointer = NULL;
HRESULT WINAPI Direct3DCreate9_VMTable (VOID);
HRESULT WINAPI CreateDevice_Detour (LPDIRECT3D9, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS*, LPDIRECT3DDEVICE9*);
HRESULT WINAPI Reset_Detour (LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
HRESULT WINAPI EndScene_Detour (LPDIRECT3DDEVICE9);
HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, INT, UINT, UINT, UINT, UINT);
DWORD WINAPI VirtualMethodTableRepatchingLoopToCounterExtensionRepatching(LPVOID);
PDWORD Direct3D_VMTable = NULL;
//=====================================================================================
BOOL WINAPI DllMain(HINSTANCE hinstModule, DWORD dwReason, LPVOID lpvReserved)
{
if(dwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hinstModule);
if(Direct3DCreate9_VMTable() == D3D_OK)
return TRUE;
}
return FALSE;
}
//=====================================================================================
HRESULT WINAPI Direct3DCreate9_VMTable(VOID)
{
LPDIRECT3D9 Direct3D_Object = Direct3DCreate9(D3D_SDK_VERSION);
if(Direct3D_Object == NULL)
return D3DERR_INVALIDCALL;
Direct3D_VMTable = (PDWORD)*(PDWORD)Direct3D_Object;
Direct3D_Object->Release();
DWORD dwProtect;
if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), PAGE_READWRITE, &dwProtect) != 0)
{
*(PDWORD)&CreateDevice_Pointer = Direct3D_VMTable[16];
*(PDWORD)&Direct3D_VMTable[16] = (DWORD)CreateDevice_Detour;
if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), dwProtect, &dwProtect) == 0)
return D3DERR_INVALIDCALL;
}
else
return D3DERR_INVALIDCALL;
return D3D_OK;
}
//=====================================================================================
HRESULT WINAPI CreateDevice_Detour(LPDIRECT3D9 Direct3D_Object, UINT Adapter, D3DDEVTYPE DeviceType, HWND FocusWindow,
DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* PresentationParameters,
LPDIRECT3DDEVICE9* Returned_Device_Interface)
{
HRESULT Returned_Result = CreateDevice_Pointer(Direct3D_Object, Adapter, DeviceType, FocusWindow, BehaviorFlags,
PresentationParameters, Returned_Device_Interface);
DWORD dwProtect;
if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), PAGE_READWRITE, &dwProtect) != 0)
{
*(PDWORD)&Direct3D_VMTable[16] = *(PDWORD)&CreateDevice_Pointer;
CreateDevice_Pointer = NULL;
if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), dwProtect, &dwProtect) == 0)
return D3DERR_INVALIDCALL;
}
else
return D3DERR_INVALIDCALL;
if(Returned_Result == D3D_OK)
{
Direct3D_VMTable = (PDWORD)*(PDWORD)*Returned_Device_Interface;
*(PDWORD)&Reset_Pointer = (DWORD)Direct3D_VMTable[16];
*(PDWORD)&EndScene_Pointer = (DWORD)Direct3D_VMTable[42];
*(PDWORD)&DrawIndexedPrimitive_Pointer = (DWORD)Direct3D_VMTable[82];
if(CreateThread(NULL, 0, VirtualMethodTableRepatchingLoopToCounterExtensionRepatching, NULL, 0, NULL) == NULL)
return D3DERR_INVALIDCALL;
}
return Returned_Result;
}
//=====================================================================================
HRESULT WINAPI Reset_Detour(LPDIRECT3DDEVICE9 Device_Interface, D3DPRESENT_PARAMETERS* PresentationParameters)
{
return Reset_Pointer(Device_Interface, PresentationParameters);
}
//=====================================================================================
HRESULT WINAPI EndScene_Detour(LPDIRECT3DDEVICE9 Device_Interface)
{
return EndScene_Pointer(Device_Interface);
}
//=====================================================================================
HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE9 Device_Interface, D3DPRIMITIVETYPE Type, INT BaseIndex,
UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount)
{
LPDIRECT3DVERTEXBUFFER9 Stream_Data;
UINT Offset = 0;
UINT Stride = 0;
if(Device_Interface->GetStreamSource(0, &Stream_Data, &Offset, &Stride) == D3D_OK)
Stream_Data->Release();
if(fCall)
{
CreateMyShader( &Front, Device_Interface, 255, 0, 0, 255 );
CreateMyShader( &Back, Device_Interface, 255, 255, 0, 255 );
fCall = false;
}
if ( GetAsyncKeyState ( VK_NUMPAD1 ) &1 )
{
Chams = !Chams;
}
if(Chams && (Stride == 32 && StartIndex == 0))
{
DWORD dwOldZEnable = D3DZB_TRUE;
Device_Interface->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
Device_Interface->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
Device_Interface->SetPixelShader( Front );
DrawIndexedPrimitive_Pointer(Device_Interface, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);
Device_Interface->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
Device_Interface->SetPixelShader( Back );
}
return DrawIndexedPrimitive_Pointer(Device_Interface, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);
}
//=====================================================================================
DWORD WINAPI VirtualMethodTableRepatchingLoopToCounterExtensionRepatching(LPVOID Param)
{
UNREFERENCED_PARAMETER(Param);
while(1)
{
Sleep(100);
*(PDWORD)&Direct3D_VMTable[42] = (DWORD)EndScene_Detour;
*(PDWORD)&Direct3D_VMTable[82] = (DWORD)DrawIndexedPrimitive_Detour;
*(PDWORD)&Direct3D_VMTable[16] = (DWORD)Reset_Detour;
}
return 1;
【本人QQ632437657】
发表评论
-
QTP的2种脚本调用方法是什么
2012-01-20 02:14 917QTP的2种脚本调用方法是什么 2011年06月14日 ... -
让windows批处理脚本在后台运行
2012-01-20 02:14 707让windows批处理脚本在后台运行 2010年12月24日 ... -
VBS学习笔记(2): Call造成的麻烦
2012-01-20 02:14 593VBS学习笔记(2): Call造成的麻烦 2011年02月 ... -
用vbs实现文本循环读取
2012-01-20 02:14 533用vbs实现文本循环读取 2010年06月16日 因为测 ... -
VBS启动Process
2012-01-20 02:14 595VBS启动Process 2010年06月09日 Run ... -
小学语文毕业知识整理与复习题
2012-01-19 10:04 574小学语文毕业知识整理 ... -
总体上说,是c++ builder胜于VC++,DELPHI是最好
2012-01-19 10:04 764总体上说,是c++ builder胜 ... -
PE文件格式详解③
2012-01-19 10:03 918PE文件格式详解③ 2010年12月04日 PE可选头部 ... -
创建一个新的服务
2012-01-19 10:03 568创建一个新的服务 2010年11月23日 创建一个新的服 ... -
android最新的SDK安装方法+ 离线安装方法
2012-01-17 02:45 685android最新的SDK安装方法+ 离线安装方法 2010 ... -
Eclipse+Android SDK+ADT(@XP)搭建时候的几个小问题
2012-01-17 02:45 751Eclipse+Android SDK+ADT(@XP)搭 ... -
Android SDK2.1开发环境的搭建
2012-01-17 02:45 694Android SDK2.1开发环境的搭建 2010年11月 ... -
通过QQ旋风离线下载Android SDK,速度超快
2012-01-17 02:44 748通过QQ旋风离线下载Android SDK,速度超快 201 ... -
Qt 学习笔记 --Qt SDK 的下载安装与配置
2012-01-17 02:44 624Qt 学习笔记 --Qt SDK 的下 ... -
flex各种用法
2012-01-15 22:21 467flex各种用法 2010年02月22日 //获得屏幕的 ... -
Flex开发实例――个人学习心得
2012-01-15 22:21 561Flex开发实例――个人学习心得 2009年10月15日 ... -
Flex 的一些整理
2012-01-15 22:21 559Flex 的一些整理 2010年11月16日 你常用的 ... -
自动根据内容调整列宽advanceddatagrid autoresize
2012-01-15 22:21 813自动根据内容调整列宽advanceddatagrid auto ... -
AdvancedDataGrid的使用,动态插入组列
2012-01-15 22:20 496AdvancedDataGrid的使用,动态插入组列 201 ...
相关推荐
unity次世代FPS射击游戏源码Next-Gen FPS,Unity精品FPS游戏源码 Unity精品小游戏源码 , Unity完整项目源码 是Unitypackage包 , 新建空项目直接导入到项目里面就可以运行了,无需其他操作。 适合二次开发和学习使用,...
unity5 FPS射击游戏FPSE源码0.95f ...Unity游戏代码 ,Unity经典游戏源码 , Unity休闲游戏源码, Unity容易上手的游戏源码,Unity小游戏源码,Unity新手练习源码,Unity个人开发源码,Unity优秀项目,Unity商店优秀作品。
基于Qt和OpenGL开发的一款FPS游戏+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于Qt和OpenGL开发的一款FPS游戏+源码,适合毕业设计、课程设计、项目...
基于深度学习的FPS游戏角色检测源码+项目说明+游戏角色数据集.zip 基于深度学习的FPS游戏角色检测源码+项目说明+游戏角色数据集.zip 基于深度学习的FPS游戏角色检测源码+项目说明+游戏角色数据集.zip 基于深度学习的...
(2019.3)多角色fps射击游戏unity源码MultiplayerFPSGame.zip
课程设计基于C#和Unity引擎开发的3D FPS多人游戏源码.zip课程设计基于C#和Unity引擎开发的3D FPS多人游戏源码.zip课程设计基于C#和Unity引擎开发的3D FPS多人游戏源码.zip课程设计基于C#和Unity引擎开发的3D FPS多人...
lowpol FPS 游戏unity源码.rar
FPS 的ESP绘图绘制源码,适用任何FPS游戏。此档案为CSGO 源码,可以修改的sln文件,开发环境为C++。主要有方框+射线的ESP代码。
unity射击游戏源码,RPG和FPS游戏粒子特效,包含爆炸 Unity精品小游戏源码 , Unity完整项目源码 是Unitypackage包 , 新建空项目直接导入到项目里面就可以运行了,无需其他操作。 适合二次开发和学习使用,都是经典游戏,...
Unity精品小游戏源码 , Unity完整项目源码 是Unitypackage包 , 新建空项目直接导入到项目里面就可以运行了,无需其他操作,适合二次开发和学习使用,都是经典游戏,需要其他游戏源码包可以看我主页 直接可以运行 , 如果...
unity射击游戏源码,FPS游戏项目Realistic FPS Unity精品小游戏源码 , Unity完整项目源码 是Unitypackage包 , 新建空项目直接导入到项目里面就可以运行了,无需其他操作,适合二次开发和学习使用,都是经典游戏,需要...
unity5 FPS第一人称3D射击游戏源码 unity5 FPS第一人称3D射击游戏源码,精品demo类源码,带小地图功能,多种枪支武器,项目结构和代码结构质量都比较高,适合二次开发,unity5.3无错运行,解压后1.29G
基于unity引擎,FPS第一人称视角射击游戏源码
(2018-2019)FPS游戏unity源码FPSSample-master.zip
unity FPS射击游戏项目MFPS 2.0 v1.2f Unity射击游戏源码 Unity精品小游戏源码 , Unity完整项目源码 是Unitypackage包 , 新建空项目直接导入到项目里面就可以运行了,无需其他操作,适合二次开发和学习使用,都是经典...
源码参考 欢迎下载
Unity游戏源码分享-多角色fps射击游戏
unity联网fps简单demo 源码+程序
Zombie Killer Attack 僵尸杀手攻击多枪Unity FPS射击游戏项目源码C# 支持Unity版本5.5.1f1及以上 描述 关于游戏:僵尸杀手攻击是一款 FPS 射击游戏,在游戏中找到僵尸并射击它们。在您的游戏中重复使用它来制作大型...
UNITY开发的FPS游戏,包括小地图等,比较全面的学习demo