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】
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用的 主要技术有: 1、大面积山脉渲染,使用Heightmap构造地形,7级 LOD 细节精度,地形无限重复循环 。 2、清晰、自然的地表贴图。 3、读取.MD2 、.MS3D 格式的3D模型文件。 4、粒子系统,产生爆炸、炊烟等特效。 5、太阳光晕。 6、使用Blend模拟Brightness/contrast调节图象亮度。 操作控制 可以在GameSetting菜单中设定: 1.视频属性 ( Video Setting ) 1).屏幕分辨率( Resolution ) 游戏率默认为800*600,在任务执行前可改变分辨率,但不会立即生效,只有在初始化任务时才改变分辨率。 2).屏幕亮度( Brigthness ) 在不同的硬件配置上,屏幕亮度往往表现出较大差异,通过该项可将亮度调节到最佳。 3).视野范围 ( Visible Distance ) 调节地形绘制的距离。对于配置较低的硬件,适当降低视野距离可提高帧速率,但由于远处地形网格较粗,对帧速率提高贡献并不大。 4).雾浓度 ( Fog Density ) 2.音频属性 ( Audio Setting ) 1).背景音乐(music) 可以打开或关闭背景音乐,可以调节音量。 音乐播放 audio/music/menu.mp3 ,如果你有自己喜爱的mp3音乐文件可以将它替换 menu.mp3 文件。 2).音效( sound ) 可以打开或关闭音效,可以调节音量。游戏中的枪声与人物的发声具有3D效果。 3.键盘操作 ( Keyboard Setting ) 以下操作可以更改 Up、Down、Left、Right设定移动操作。 Fire 射击 Jump 跳跃 Zoom 放大远处景物 Help 弹出帮助 修改方法:用鼠标点击选项,然后输入新的按键。 另外,游戏保留了几个开发模式下的操作: Page Up 提升视点高度 Page Down 降低视点高度 (可以看到地形绘制区域) L 线框模式 F 冻结所有敌人 V 隐身 N 敌人攻击力为零 I 隐藏房子 O 隐藏敌人 P 隐藏树木 在游戏运行中,按 Help 项的按键获得帮助。 4.鼠标操作 鼠标的移动可改变视角,默认设定左键为射击,右键为放大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值