Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Battlegrounds Chams - Delphi
#1

Potrzebne:   1. https://github.com/CMCHTPC/DelphiDX12/tree/master/Units 2. https://github.com/MahdiSafsafi/delphi-detours-library 3. Obejście       Kod:   biblioteka esp; używa Windows, DDetours, DX12. D3D11, DX12. DXGI, DX12. D3DCommon, DX12. D3DCompiler, DX12. D3D10, DX12. D3DX10; {$ R *. res} var RunOnce: Boolean; ThreadID: DWord; SwapChainDesc: TDXGI_SWAP_CHAIN_DESC; pDevice: ID3D11Device; pContext: ID3D11DeviceContext; pFeature: TD3D_FEATURE_LEVEL; pSwapChain: IDXGISwapChain; psRed: ID3D11PixelShader; StencilDesc: TD3D11_DEPTH_STENCIL_DESC; FDepthStencilState: ID3D11DepthStencilState; var OriginalPresent: function (pSwapChain: IDXGISwapChain; SyncInterval: UInt; Flagi: UInt): HResult; stdcall = nil; OriginalDrawIndexed: procedure (pContext: ID3D11DeviceContext; IndexCount: UInt; StartIndexLocation: UInt; BaseVertexLocation: Integer); stdcall; OriginalDraw: procedure (pContext: ID3D11DeviceContext; VertexCount: UInt; StartVertexLocation: UInt); stdcall; funkcja InitialiseShader (pDevice: ID3D11Device; pShader: ID3D11PixelShader): HResult; var pBlob, pErrorMsgs: ID3DBlob; begin Wynik: = D3DCompileFromFile (PWideChar (WideString ('D: \ PixelShader.ps')), zero, zero, 'PSEntry', 'ps_4_0', 0, 0, pBlob, pErrorMsgs); jeśli nie powiodło się (Wynik), a następnie rozpocząć // Dziennik ("Błąd: Nie można skompilowaćFromFile."); wyjście ; koniec ; Wynik: = pDevice. CreatePixelShader (pBlob. GetBufferPointer, pBlob. GetBufferSize, nil, psRed); jeśli nie powiodło się (Wynik), a następnie rozpocząć // Dziennik ("Błąd: CreatePixelShader nie powiodło się."); wyjście ; koniec ; koniec ; funkcja hkPresent (pSwapChain: IDXGISwapChain; SyncInterval: UInt; Flagi: UInt): HResult; stdcall; rozpocząć jeśli RunOnce następnie rozpocząć pSwapChain. GetDevice (TGUID (ID3D11Device), Wskaźnik (pDevice)); pDevice. GetImmediateContext (pContext); z StencilDesc zaczynamy DepthEnable: = True; DepthWriteMask: = D3D11_DEPTH_WRITE_MASK_ALL; DepthFunc: = D3D11_COMPARISON_LESS; StencilEnable: = True; StencilReadMask: = $ FF; StencilWriteMask: = $ FF; Przód twarzy . StencilFailOp: = D3D11_STENCIL_OP_KEEP; Przód twarzy . StencilDepthFailOp: = D3D11_STENCIL_OP_INCR; Przód twarzy . StencilPassOp: = D3D11_STENCIL_OP_KEEP; Przód twarzy . StencilFunc: = D3D11_COMPARISON_ALWAYS; Tylna strona . StencilFailOp: = D3D11_STENCIL_OP_KEEP; Tylna strona . StencilDepthFailOp: = D3D11_STENCIL_OP_DECR; Tylna strona . StencilPassOp: = D3D11_STENCIL_OP_KEEP; Tylna strona . StencilFunc: = D3D11_COMPARISON_ALWAYS; koniec ; pDevice. CreateDepthStencilState (StencilDesc, FDepthStencilState); StencilDesc. DepthEnable: = false; StencilDesc. DepthWriteMask: = D3D11_DEPTH_WRITE_MASK_ALL; pDevice. CreateDepthStencilState (StencilDesc, FDepthStencilState); // Log ("hkPresent: First Run."); RunOnce: = Fałsz; koniec ; InitialiseShader (pDevice, psRed); Wynik: = OriginalPresent (pSwapChain, SyncInterval, Flagi); koniec ; procedura hkDraw (pContext: ID3D11DeviceContext; VertexCount: UInt; StartVertexLocation: UInt); stdcall; begin // Log ('hkDraw: First Run.'); OriginalDraw (pContext, VertexCount, StartVertexLocation); koniec ; procedure hkDrawIndexed (pContext: ID3D11DeviceContext; IndexCount: UInt; StartIndexLocation: UInt; BaseVertexLocation: Integer); stdcall; var Stride, BufferOffset: UInt; vBuffer: ID3D11Buffer; vDesc: TD3D11_BUFFER_DESC; rozpocznij pContext. IAGetVertexBuffers (0, 1, vBuffer, Stride, BufferOffset); vBuffer. GetDesc (vDesc); jeśli Stride = 36, następnie rozpocznij pContext. OMSetDepthStencilState (FDepthStencilState, 1); pContext. PSSetShader (psRed, zero, 0); OriginalDrawIndexed (pContext, IndexCount, StartIndexLocation, BaseVertexLocation); // Log ("IndexCount:" + IntToStr (IndexCount) + "StartIndexLocation:" + IntToStr (StartIndexLocation) + "BaseVertexLocation:" + IntToStr (BaseVertexLocation) + 'Krok:' + IntToStr (krok) + "BufferOffest:" + IntToStr (BufferOffset)); koniec ; OriginalDrawIndexed (pContext, IndexCount, StartIndexLocation, BaseVertexLocation); koniec ; funkcja InitialiseHook: HResult; var Uchwyt: THandle; FeatureLevel: Array [0.. 0] z TD3D_FEATURE_LEVEL; begin Handle: = GetForegroundWindow; FillChar (SwapChainDesc, SizeOf (SwapChainDesc), 0); z SwapChainDesc zaczynamy BufferCount
Reply
#2

jak używać, jak obejść pls mi pomóc
Reply
#3

@ Broly7 Pomóż mi bro, jak korzystać z programu szachy
Reply
#4

Czy nie opublikował tego w kwietniu?
Reply




Users browsing this thread: 1 Guest(s)