Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- //REMEMBER TO INJECT WITHOUT POLYMORPHIC!!!!!!!!!!!
- #define MEMCPYHOOK 0x00F16608
- #define EVENTHOOK 0x009C99C8
- #define LogFile "d:\\avalog.txt"
- //??? DirectX SDK
- #include "..\..\..\..\Common\Injection\StealthInjection2.h "
- #include "..\..\..\..\Common\MenuSystem\MenuSystem_UT3.h"
- #include "..\..\..\..\Common\MenuSystem\MenuSystem_Extern.h"
- //Generated from Editor!!!
- #include "MenuBuild.h"
- #include "MenuVars.h"
- //------------------------
- #include "..\..\..\..\Common\MenuSystem\Winamp.h"
- CWinamp winamp;
- //Functions we need to Link to Menu Buttons
- void waBack() {winamp.PreviousTrack();}
- void waPlay() {winamp.Play();}
- void waPause() {winamp.Pause();}
- void waStop() {winamp.Stop();}
- void waNext() {winamp.NextTrack();}
- void butBoneClear(){for (int i=0; i < BONE_MAX; i++)Bones[i] = -1;}
- CUE3Canvas Canvas;
- char* HackPath = NULL;
- cbClock Clock(0,0,100,28);
- struct PlayerInfo
- {
- wstring Name;
- FVector Location;
- bool bSameTeam;
- bool bVisible;
- INT Health;
- FVector bones[75];
- APawn* pPawn;
- };
- vector<PlayerInfo> Players;
- FVector LocalPosition;
- FRotator LocalRotation;
- FVector TargetPosition;
- FVector WorldToScreen(UCanvas* pUCanvas, FVector* WorldLocation)
- {
- UCanvas_execProject_parms parms;
- parms.Location = *WorldLocation;
- pUCanvas->Project(&parms);
- return parms.ReturnValue;
- }
- void Draw2DLine(UCanvas* pUCanvas,FVector* V1,FVector* V2,DWORD Color)
- {
- FVector Pos1 = WorldToScreen(pUCanvas,V1);
- if (Pos1.Z >= 1.0f) return;
- FVector Pos2 = WorldToScreen(pUCanvas,V2);
- if (Pos2.Z >= 1.0f) return;
- pCanvas->Line(Pos1.X,Pos1.Y,Pos2.X,Pos2.Y,Color);
- }
- bool bHackDisabled = false;
- void ViewportPostRender ( UCanvas* pUCanvas)
- {
- if (GetAsyncKeyState(GetMenuValue(_keyMaster))&1) bHackDisabled = !bHackDisabled;
- if (bHackDisabled) return;
- if (!pUCanvas) return;
- pCanvas->Init((void*)pUCanvas);
- pCanvas->Begin();
- static bool bMenu = false;
- if (GetAsyncKeyState(VK_DELETE)&1) bMenu = !bMenu;
- Clock.Visible = bClock;
- DragWindow0.Visible = bMenu;
- POINT pos;GetCursorPos(&pos);
- UpdateWindows(bMenu,pos.x,pos.y,1024,768);
- pCanvas->End();
- }
- void DrawSkeleton(UCanvas* pUCanvas, int i,DWORD color)
- {
- Draw2DLine(pUCanvas,&Players[i].bones[7],&Players[i].bones[6],color);
- Draw2DLine(pUCanvas,&Players[i].bones[6],&Players[i].bones[4],color);
- Draw2DLine(pUCanvas,&Players[i].bones[4],&Players[i].bones[1],color);
- Draw2DLine(pUCanvas,&Players[i].bones[6],&Players[i].bones[9],color);
- Draw2DLine(pUCanvas,&Players[i].bones[9],&Players[i].bones[10],color);
- Draw2DLine(pUCanvas,&Players[i].bones[10],&Players[i].bones[11],color);
- Draw2DLine(pUCanvas,&Players[i].bones[6],&Players[i].bones[32],color);
- Draw2DLine(pUCanvas,&Players[i].bones[32],&Players[i].bones[33],color);
- Draw2DLine(pUCanvas,&Players[i].bones[33],&Players[i].bones[34],color);
- Draw2DLine(pUCanvas,&Players[i].bones[1],&Players[i].bones[54],color);
- Draw2DLine(pUCanvas,&Players[i].bones[54],&Players[i].bones[55],color);
- Draw2DLine(pUCanvas,&Players[i].bones[55],&Players[i].bones[56],color);
- Draw2DLine(pUCanvas,&Players[i].bones[56],&Players[i].bones[57],color);
- Draw2DLine(pUCanvas,&Players[i].bones[1],&Players[i].bones[60],color);
- Draw2DLine(pUCanvas,&Players[i].bones[60],&Players[i].bones[61],color);
- Draw2DLine(pUCanvas,&Players[i].bones[61],&Players[i].bones[62],color);
- Draw2DLine(pUCanvas,&Players[i].bones[62],&Players[i].bones[63],color);
- }
- void Update2DRect(UCanvas* pUCanvas,RECT &rect,FVector &pos)
- {
- FVector screenPos = WorldToScreen(pUCanvas,&pos);
- if(screenPos.Z < 1.0)
- {
- if (screenPos.X > rect.right) rect.right = screenPos.X;
- if (screenPos.X < rect.left) rect.left = screenPos.X;
- if (screenPos.Y > rect.bottom) rect.bottom = screenPos.Y;
- if (screenPos.Y < rect.top) rect.top = screenPos.Y;
- }
- }
- void Draw2DBox(UCanvas* pUCanvas, int i,DWORD color1, DWORD color2)
- {
- RECT rect;
- SetRect(&rect,10000,10000,-10000,-10000);
- Update2DRect(pUCanvas,rect,Players[i].bones[7]);
- Update2DRect(pUCanvas,rect,Players[i].bones[9]);
- Update2DRect(pUCanvas,rect,Players[i].bones[10]);
- Update2DRect(pUCanvas,rect,Players[i].bones[11]);
- Update2DRect(pUCanvas,rect,Players[i].bones[32]);
- Update2DRect(pUCanvas,rect,Players[i].bones[33]);
- Update2DRect(pUCanvas,rect,Players[i].bones[34]);
- Update2DRect(pUCanvas,rect,Players[i].bones[57]);
- Update2DRect(pUCanvas,rect,Players[i].bones[63]);
- if (rect.left != 10000)pCanvas->Box(rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,Players[i].bVisible?color1:color2);
- }
- void DrawPlayerLine(UCanvas* pUCanvas, int i,DWORD color1, DWORD color2)
- {
- FVector Pos = WorldToScreen(pUCanvas,&Players[i].bones[7]);
- if (Pos.Z >= 1.0f) return;
- pCanvas->Line(pUCanvas->SizeX/2,pUCanvas->SizeY,Pos.X,Pos.Y,Players[i].bVisible?color1:color2);
- }
- void DrawNametag(UCanvas* pUCanvas, int i, DWORD color)
- {
- FVector pos = WorldToScreen(pUCanvas,&Players[i].bones[7]);
- if (pos.Z < 1.0f) pCanvas->Textf(pos.X,pos.Y-35,color,"%ls",Players[i].Name.c_str());
- }
- void DrawHealth(UCanvas* pUCanvas, int i)
- {
- FVector pos = WorldToScreen(pUCanvas,&Players[i].bones[7]);
- if (pos.Z < 1.0f)
- {
- //Health
- int Health = Players[i].Health;
- if (Health > 100) Health = 100;
- DWORD HealthColor = 0xFF00FF00;
- if (Health <= 60 ) HealthColor = 0xFFFFFF00;
- if (Health <= 30 ) HealthColor = 0xFFFF0000;
- pCanvas->Fill(pos.X,pos.Y-20,50,3,0xFF000000);
- pCanvas->Fill(pos.X,pos.Y-20,Health/2,3,HealthColor);
- }
- }
- void HUDPostRender ( UCanvas* pUCanvas)
- {
- if (bHackDisabled) return;
- if (!pUCanvas) return;
- pCanvas->Init((void*)pUCanvas);
- pCanvas->Begin();
- for (UINT i=0; i < Players.size();i++)
- {
- if (bNameTags)
- {
- if (bFriendName && Players[i].bSameTeam) DrawNametag(pUCanvas,i,cFriendlyName);
- if (bEnemyName && !Players[i].bSameTeam) DrawNametag(pUCanvas,i,cEnemyName);
- }
- if (bHealth)
- {
- if (bFriendHealth && Players[i].bSameTeam) DrawHealth(pUCanvas,i);
- if (bEnemyHealth && !Players[i].bSameTeam) DrawHealth(pUCanvas,i);
- }
- if (bSkeleton)
- {
- if (bFriendSkeleton && Players[i].bSameTeam) DrawSkeleton(pUCanvas,i,cFriendSkeleton);
- if (bEnemySkeleton && !Players[i].bSameTeam) DrawSkeleton(pUCanvas,i,cEnemySkeleton);
- }
- if (bLines)
- {
- if (bFriendLine && Players[i].bSameTeam) DrawPlayerLine(pUCanvas,i,cFriendFront,cFriendBack);
- if (bEnemyLine && !Players[i].bSameTeam) DrawPlayerLine(pUCanvas,i,cEnemyFront, cEnemyBack);
- }
- if (b2DBox)
- {
- if (bFriendBox && Players[i].bSameTeam) Draw2DBox(pUCanvas,i,cFriendFront,cFriendBack);
- if (bEnemyBox && !Players[i].bSameTeam) Draw2DBox(pUCanvas,i,cEnemyFront, cEnemyBack);
- }
- if (bCrosshair)
- {
- pCanvas->Line(pUCanvas->SizeX/2, pUCanvas->SizeY/2-10, pUCanvas->SizeX/2, pUCanvas->SizeY/2+10 ,cCrosshair);
- pCanvas->Line(pUCanvas->SizeX/2-10, pUCanvas->SizeY/2, pUCanvas->SizeX/2+10, pUCanvas->SizeY/2 ,cCrosshair);
- }
- }
- pCanvas->End();
- }
- wstring TargetName;
- bool bHaveTarget = false;
- bool bTargetVisible = false;
- bool IsValidTarget(int i)
- {
- if (bVisibleOnly && !Players[i].bVisible) return false;
- if (!bFriendly && Players[i].bSameTeam) return false;
- return true;
- }
- void inline GetAxes (FRotator R, FVector &X, FVector &Y, FVector &Z)
- {
- X = R.Vector();
- X.Normalize();
- R.Yaw += 16384;
- FRotator R2 = R;
- R2.Pitch = 0.f;
- Y = R2.Vector();
- Y.Normalize();
- Y.Z = 0.f;
- R.Yaw -= 16384;
- R.Pitch += 16384;
- Z = R.Vector();
- Z.Normalize();
- }
- float inline Dot (const FVector& V1,const FVector& V2)
- {
- return( V1.X*V2.X + V1.Y*V2.Y + V1.Z*V2.Z );
- };
- void PlayerPreRender(AavaPlayerController* pPC)
- {
- Players.clear();
- if (bHackDisabled) return;
- if (!pPC->Pawn) return;
- int bone = 7;
- if (rbBone == 0) bone = 7;
- if (rbBone == 1) bone = 5;
- APawn_execGetPawnViewLocation_parms pv;
- pPC->Pawn->GetPawnViewLocation(&pv);
- LocalPosition = pv.ReturnValue;
- LocalRotation = pPC->Pawn->Rotation;
- if (bNoRecoil)
- {
- AavaPawn* pPawn = (AavaPawn*)pPC->Pawn;
- pPawn->PunchAngle = FVector(0,0,0);
- pPawn->PunchAngleVel = FVector(0,0,0);
- }
- if (pPC->WorldInfo)
- {
- if (pPC->WorldInfo->PawnList)
- {
- APawn* pPawn = pPC->WorldInfo->PawnList;
- while(pPawn)
- {
- if (pPawn->Mesh && pPawn->PlayerReplicationInfo && (pPawn->PlayerReplicationInfo != pPC->PlayerReplicationInfo) )
- {
- PlayerInfo pi;
- ZeroMemory(&pi,sizeof(pi));
- pi.pPawn = pPawn;
- pi.Name = pPawn->PlayerReplicationInfo->PlayerName.Data;
- pi.Location = pPawn->Location;
- pi.Health = pPawn->Health;
- pi.bSameTeam = pPawn->PlayerReplicationInfo->Team == pPC->PlayerReplicationInfo->Team;
- //if (pPawn->Mesh)
- {
- for (int i=0; i < 66;i++)
- {
- USkeletalMeshComponent_execGetBoneNameByIndex_parms pbn;
- pbn.Index = i;
- pPawn->Mesh->GetBoneNameByIndex(&pbn);
- USkeletalMeshComponent_execGetBoneLocation_parms pbl;
- pbl.BoneName = pbn.ReturnValue;
- pbl.Space = 0;
- pPawn->Mesh->GetBoneLocation(&pbl);
- pi.bones[i] = pbl.ReturnValue;
- }
- }
- AActor_execFastTrace_parms pft;
- ZeroMemory(&pft,sizeof(pft));
- pft.TraceStart = LocalPosition;
- pft.TraceEnd = pi.bones[bone];
- pPC->FastTrace(&pft);
- pi.bVisible = pft.ReturnValue;
- Players.push_back(pi);
- }
- pPawn = pPawn->NextPawn;
- }
- }
- }
- if (!bTargetLock) bHaveTarget = false;
- if (GetKeyState(GetMenuValue(_keyAimbot))&0x8000)
- {
- FVector AxisX,AxisY,AxisZ;
- GetAxes(LocalRotation,AxisX,AxisY,AxisZ);
- if (bHaveTarget)
- {
- bool bStillValidTarget = false;
- for (UINT i=0; i < Players.size();i++)
- {
- if (Players[i].Name == TargetName && IsValidTarget(i))
- {
- bStillValidTarget = true;
- TargetPosition = Players[i].bones[bone];
- bTargetVisible = Players[i].bVisible;
- break;
- }
- }
- bHaveTarget = bStillValidTarget;
- }
- if (!bHaveTarget)
- {
- float BestDistance = 1000000;
- for (UINT i=0; i < Players.size();i++)
- {
- if (!IsValidTarget(i)) continue;
- if (rbTarget == 0)//Distance
- {
- float TargetDist = (Players[i].bones[bone] - LocalPosition).Size();
- if (TargetDist < BestDistance)
- {
- BestDistance = TargetDist;
- TargetName = Players[i].Name;
- TargetPosition = Players[i].bones[bone];
- bTargetVisible = Players[i].bVisible;
- bHaveTarget = true;
- }
- }
- if (rbTarget == 1)//XHair
- {
- FVector AxisD = (Players[i].bones[bone] - LocalPosition);
- AxisD /= AxisD.Size();
- float TargetAngle = acos(Dot(AxisD,AxisX));
- if (TargetAngle < BestDistance)
- {
- BestDistance = TargetAngle;
- TargetName = Players[i].Name;
- TargetPosition = Players[i].bones[bone];
- bTargetVisible = Players[i].bVisible;
- bHaveTarget = true;
- }
- }
- //if (rbTarget == 2)//FOV
- //{
- // FVector AxisD = (Players[i].bones[bone] - LocalPosition);
- // AxisD /= AxisD.Size();
- // float TargetAngle = acos(Dot(AxisD,AxisX));
- // float MaxAngle = (float)iFOV * 0.0174532925;
- // if (TargetAngle < MaxAngle && TargetAngle < BestDistance)
- // {
- // BestDistance = TargetAngle;
- // TargetName = Players[i].Name;
- // TargetPosition = Players[i].bones[bone];
- // bTargetVisible = Players[i].bVisible;
- // bHaveTarget = true;
- // }
- //}
- }
- }
- if (bHaveTarget)
- {
- FRotator Final = (TargetPosition - LocalPosition).Rotation();
- NormalizeRotation(Final);
- AActor_execSetRotation_parms pr;
- ZeroMemory(&pr,sizeof(pr));
- pr.NewRotation = Final;
- pPC->SetRotation(&pr);
- if (bAutoFire && bTargetVisible)
- {
- mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,NULL);
- mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,NULL);
- }
- }
- }
- else
- bHaveTarget = false;
- }
- UObject* pCallObject = NULL;
- UFunction* pFunction = NULL;
- void* pParms = NULL;
- void HandleEvents()
- {
- static UFunction* pfnViewportPostRender = NULL;
- if (!pfnViewportPostRender) pfnViewportPostRender = (UFunction*)UObject::FindObject(L"Function avaGame.avaGameViewportClient.PostRender");
- if ( pFunction == pfnViewportPostRender)
- {
- UavaGameViewportClient_execPostRender_parms* pGVPParms = (UavaGameViewportClient_execPostRender_parms*)pParms;
- ViewportPostRender(pGVPParms->Canvas);
- return;
- }
- static UFunction* pfnHUDPostRender = NULL;
- if (!pfnHUDPostRender) pfnHUDPostRender = (UFunction*)UObject::FindObject(L"Function avaGame.avaHUD.PostRender");
- if ( pFunction == pfnHUDPostRender)
- {
- AavaHUD* pHud = (AavaHUD*)pCallObject;
- HUDPostRender(pHud->Canvas);
- return;
- }
- static UFunction* pfnPlayerPreRender = NULL;
- if (!pfnPlayerPreRender) pfnPlayerPreRender = (UFunction*)UObject::FindObject(L"Function avaGame.avaPlayerController.PreRender");
- if ( pFunction == pfnPlayerPreRender )
- {
- AavaPlayerController* pPC = (AavaPlayerController*)pCallObject;
- PlayerPreRender(pPC);
- return;
- }
- }
- DWORD _memcpy = NULL;
- void __declspec(naked) MyHook()
- {
- static DWORD _ret = NULL;
- static DWORD _EAX = NULL;
- static bool bInHandleEvents = false;
- _asm
- {
- mov _EAX,eax;
- mov eax, [esp];
- mov _ret, eax;
- mov eax, _EAX;
- }
- __asm pushad;
- if (!bInHandleEvents && _ret == EVENTHOOK)//Called from ProcessEvent?
- {
- _asm mov eax,[ebp-0x14];
- _asm mov pCallObject,eax;
- _asm mov eax,[ebp+8];
- _asm mov pFunction,eax;
- _asm mov eax,[ebp+12];
- _asm mov pParms,eax;
- bInHandleEvents = true;
- if ( pCallObject && pFunction) HandleEvents();
- bInHandleEvents = false;
- }
- _asm popad;
- __asm jmp [_memcpy];
- }
- BOOL WINAPI DllMain ( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )
- {
- if ( dwReason == DLL_PROCESS_ATTACH )
- {
- DeleteFileA(LogFile);
- DWORD _hook = (DWORD)&MyHook;
- PATCH_ReadMemory((void*)MEMCPYHOOK,(void*)&_memcpy,4);
- PATCH_WriteMemory((void*)MEMCPYHOOK,(void*)&_hook,4);
- HackPath = (char*)lpReserved;
- sprintf(SettingsFile,_CXR(sSettings),HackPath);
- sprintf(SettingsFileDefault,_CXR(sDefaultSettings),HackPath);
- InitMenu();
- strcpy(DragWindow0.VarName,sMenu);
- strcpy(Clock.VarName,sClock);
- Windows.push_back(&Clock);
- ctrls.push_back(&Clock);
- Load();
- pCanvas = &Canvas;
- winamp.InitWinamp();
- }
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement