Advertisement
Guest User

Untitled

a guest
Feb 1st, 2012
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.16 KB | None | 0 0
  1. #include "stdafx.h"
  2.  
  3. //REMEMBER TO INJECT WITHOUT POLYMORPHIC!!!!!!!!!!!
  4.  
  5. #define MEMCPYHOOK 0x00F16608
  6. #define EVENTHOOK 0x009C99C8
  7.  
  8.  
  9. #define LogFile "d:\\avalog.txt"
  10.  
  11. //??? DirectX SDK
  12. #include "..\..\..\..\Common\Injection\StealthInjection2.h "
  13. #include "..\..\..\..\Common\MenuSystem\MenuSystem_UT3.h"
  14. #include "..\..\..\..\Common\MenuSystem\MenuSystem_Extern.h"
  15. //Generated from Editor!!!
  16. #include "MenuBuild.h"
  17. #include "MenuVars.h"
  18. //------------------------
  19. #include "..\..\..\..\Common\MenuSystem\Winamp.h"
  20. CWinamp winamp;
  21. //Functions we need to Link to Menu Buttons
  22. void waBack() {winamp.PreviousTrack();}
  23. void waPlay() {winamp.Play();}
  24. void waPause() {winamp.Pause();}
  25. void waStop() {winamp.Stop();}
  26. void waNext() {winamp.NextTrack();}
  27.  
  28. void butBoneClear(){for (int i=0; i < BONE_MAX; i++)Bones[i] = -1;}
  29.  
  30. CUE3Canvas Canvas;
  31. char* HackPath = NULL;
  32. cbClock Clock(0,0,100,28);
  33.  
  34.  
  35. struct PlayerInfo
  36. {
  37. wstring Name;
  38. FVector Location;
  39. bool bSameTeam;
  40. bool bVisible;
  41. INT Health;
  42. FVector bones[75];
  43. APawn* pPawn;
  44. };
  45. vector<PlayerInfo> Players;
  46.  
  47. FVector LocalPosition;
  48. FRotator LocalRotation;
  49. FVector TargetPosition;
  50.  
  51. FVector WorldToScreen(UCanvas* pUCanvas, FVector* WorldLocation)
  52. {
  53. UCanvas_execProject_parms parms;
  54. parms.Location = *WorldLocation;
  55. pUCanvas->Project(&parms);
  56. return parms.ReturnValue;
  57. }
  58.  
  59. void Draw2DLine(UCanvas* pUCanvas,FVector* V1,FVector* V2,DWORD Color)
  60. {
  61. FVector Pos1 = WorldToScreen(pUCanvas,V1);
  62. if (Pos1.Z >= 1.0f) return;
  63.  
  64. FVector Pos2 = WorldToScreen(pUCanvas,V2);
  65. if (Pos2.Z >= 1.0f) return;
  66.  
  67. pCanvas->Line(Pos1.X,Pos1.Y,Pos2.X,Pos2.Y,Color);
  68. }
  69. bool bHackDisabled = false;
  70.  
  71. void ViewportPostRender ( UCanvas* pUCanvas)
  72. {
  73. if (GetAsyncKeyState(GetMenuValue(_keyMaster))&1) bHackDisabled = !bHackDisabled;
  74. if (bHackDisabled) return;
  75. if (!pUCanvas) return;
  76.  
  77. pCanvas->Init((void*)pUCanvas);
  78. pCanvas->Begin();
  79.  
  80. static bool bMenu = false;
  81. if (GetAsyncKeyState(VK_DELETE)&1) bMenu = !bMenu;
  82. Clock.Visible = bClock;
  83. DragWindow0.Visible = bMenu;
  84. POINT pos;GetCursorPos(&pos);
  85. UpdateWindows(bMenu,pos.x,pos.y,1024,768);
  86.  
  87. pCanvas->End();
  88. }
  89.  
  90. void DrawSkeleton(UCanvas* pUCanvas, int i,DWORD color)
  91. {
  92. Draw2DLine(pUCanvas,&Players[i].bones[7],&Players[i].bones[6],color);
  93. Draw2DLine(pUCanvas,&Players[i].bones[6],&Players[i].bones[4],color);
  94. Draw2DLine(pUCanvas,&Players[i].bones[4],&Players[i].bones[1],color);
  95.  
  96. Draw2DLine(pUCanvas,&Players[i].bones[6],&Players[i].bones[9],color);
  97. Draw2DLine(pUCanvas,&Players[i].bones[9],&Players[i].bones[10],color);
  98. Draw2DLine(pUCanvas,&Players[i].bones[10],&Players[i].bones[11],color);
  99.  
  100. Draw2DLine(pUCanvas,&Players[i].bones[6],&Players[i].bones[32],color);
  101. Draw2DLine(pUCanvas,&Players[i].bones[32],&Players[i].bones[33],color);
  102. Draw2DLine(pUCanvas,&Players[i].bones[33],&Players[i].bones[34],color);
  103.  
  104. Draw2DLine(pUCanvas,&Players[i].bones[1],&Players[i].bones[54],color);
  105. Draw2DLine(pUCanvas,&Players[i].bones[54],&Players[i].bones[55],color);
  106. Draw2DLine(pUCanvas,&Players[i].bones[55],&Players[i].bones[56],color);
  107. Draw2DLine(pUCanvas,&Players[i].bones[56],&Players[i].bones[57],color);
  108.  
  109. Draw2DLine(pUCanvas,&Players[i].bones[1],&Players[i].bones[60],color);
  110. Draw2DLine(pUCanvas,&Players[i].bones[60],&Players[i].bones[61],color);
  111. Draw2DLine(pUCanvas,&Players[i].bones[61],&Players[i].bones[62],color);
  112. Draw2DLine(pUCanvas,&Players[i].bones[62],&Players[i].bones[63],color);
  113. }
  114. void Update2DRect(UCanvas* pUCanvas,RECT &rect,FVector &pos)
  115. {
  116. FVector screenPos = WorldToScreen(pUCanvas,&pos);
  117. if(screenPos.Z < 1.0)
  118. {
  119. if (screenPos.X > rect.right) rect.right = screenPos.X;
  120. if (screenPos.X < rect.left) rect.left = screenPos.X;
  121. if (screenPos.Y > rect.bottom) rect.bottom = screenPos.Y;
  122. if (screenPos.Y < rect.top) rect.top = screenPos.Y;
  123. }
  124. }
  125. void Draw2DBox(UCanvas* pUCanvas, int i,DWORD color1, DWORD color2)
  126. {
  127. RECT rect;
  128. SetRect(&rect,10000,10000,-10000,-10000);
  129.  
  130. Update2DRect(pUCanvas,rect,Players[i].bones[7]);
  131. Update2DRect(pUCanvas,rect,Players[i].bones[9]);
  132. Update2DRect(pUCanvas,rect,Players[i].bones[10]);
  133. Update2DRect(pUCanvas,rect,Players[i].bones[11]);
  134. Update2DRect(pUCanvas,rect,Players[i].bones[32]);
  135. Update2DRect(pUCanvas,rect,Players[i].bones[33]);
  136. Update2DRect(pUCanvas,rect,Players[i].bones[34]);
  137. Update2DRect(pUCanvas,rect,Players[i].bones[57]);
  138. Update2DRect(pUCanvas,rect,Players[i].bones[63]);
  139.  
  140. if (rect.left != 10000)pCanvas->Box(rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,Players[i].bVisible?color1:color2);
  141. }
  142. void DrawPlayerLine(UCanvas* pUCanvas, int i,DWORD color1, DWORD color2)
  143. {
  144. FVector Pos = WorldToScreen(pUCanvas,&Players[i].bones[7]);
  145. if (Pos.Z >= 1.0f) return;
  146. pCanvas->Line(pUCanvas->SizeX/2,pUCanvas->SizeY,Pos.X,Pos.Y,Players[i].bVisible?color1:color2);
  147. }
  148.  
  149. void DrawNametag(UCanvas* pUCanvas, int i, DWORD color)
  150. {
  151. FVector pos = WorldToScreen(pUCanvas,&Players[i].bones[7]);
  152. if (pos.Z < 1.0f) pCanvas->Textf(pos.X,pos.Y-35,color,"%ls",Players[i].Name.c_str());
  153. }
  154. void DrawHealth(UCanvas* pUCanvas, int i)
  155. {
  156. FVector pos = WorldToScreen(pUCanvas,&Players[i].bones[7]);
  157. if (pos.Z < 1.0f)
  158. {
  159. //Health
  160. int Health = Players[i].Health;
  161. if (Health > 100) Health = 100;
  162.  
  163. DWORD HealthColor = 0xFF00FF00;
  164. if (Health <= 60 ) HealthColor = 0xFFFFFF00;
  165. if (Health <= 30 ) HealthColor = 0xFFFF0000;
  166. pCanvas->Fill(pos.X,pos.Y-20,50,3,0xFF000000);
  167. pCanvas->Fill(pos.X,pos.Y-20,Health/2,3,HealthColor);
  168. }
  169. }
  170.  
  171. void HUDPostRender ( UCanvas* pUCanvas)
  172. {
  173. if (bHackDisabled) return;
  174. if (!pUCanvas) return;
  175.  
  176. pCanvas->Init((void*)pUCanvas);
  177. pCanvas->Begin();
  178.  
  179. for (UINT i=0; i < Players.size();i++)
  180. {
  181. if (bNameTags)
  182. {
  183. if (bFriendName && Players[i].bSameTeam) DrawNametag(pUCanvas,i,cFriendlyName);
  184. if (bEnemyName && !Players[i].bSameTeam) DrawNametag(pUCanvas,i,cEnemyName);
  185. }
  186. if (bHealth)
  187. {
  188. if (bFriendHealth && Players[i].bSameTeam) DrawHealth(pUCanvas,i);
  189. if (bEnemyHealth && !Players[i].bSameTeam) DrawHealth(pUCanvas,i);
  190. }
  191. if (bSkeleton)
  192. {
  193. if (bFriendSkeleton && Players[i].bSameTeam) DrawSkeleton(pUCanvas,i,cFriendSkeleton);
  194. if (bEnemySkeleton && !Players[i].bSameTeam) DrawSkeleton(pUCanvas,i,cEnemySkeleton);
  195. }
  196. if (bLines)
  197. {
  198. if (bFriendLine && Players[i].bSameTeam) DrawPlayerLine(pUCanvas,i,cFriendFront,cFriendBack);
  199. if (bEnemyLine && !Players[i].bSameTeam) DrawPlayerLine(pUCanvas,i,cEnemyFront, cEnemyBack);
  200. }
  201. if (b2DBox)
  202. {
  203. if (bFriendBox && Players[i].bSameTeam) Draw2DBox(pUCanvas,i,cFriendFront,cFriendBack);
  204. if (bEnemyBox && !Players[i].bSameTeam) Draw2DBox(pUCanvas,i,cEnemyFront, cEnemyBack);
  205. }
  206. if (bCrosshair)
  207. {
  208. pCanvas->Line(pUCanvas->SizeX/2, pUCanvas->SizeY/2-10, pUCanvas->SizeX/2, pUCanvas->SizeY/2+10 ,cCrosshair);
  209. pCanvas->Line(pUCanvas->SizeX/2-10, pUCanvas->SizeY/2, pUCanvas->SizeX/2+10, pUCanvas->SizeY/2 ,cCrosshair);
  210. }
  211. }
  212. pCanvas->End();
  213. }
  214.  
  215. wstring TargetName;
  216. bool bHaveTarget = false;
  217. bool bTargetVisible = false;
  218.  
  219. bool IsValidTarget(int i)
  220. {
  221. if (bVisibleOnly && !Players[i].bVisible) return false;
  222. if (!bFriendly && Players[i].bSameTeam) return false;
  223. return true;
  224. }
  225.  
  226. void inline GetAxes (FRotator R, FVector &X, FVector &Y, FVector &Z)
  227. {
  228. X = R.Vector();
  229. X.Normalize();
  230. R.Yaw += 16384;
  231.  
  232. FRotator R2 = R;
  233. R2.Pitch = 0.f;
  234.  
  235. Y = R2.Vector();
  236. Y.Normalize();
  237. Y.Z = 0.f;
  238. R.Yaw -= 16384;
  239. R.Pitch += 16384;
  240. Z = R.Vector();
  241. Z.Normalize();
  242. }
  243. float inline Dot (const FVector& V1,const FVector& V2)
  244. {
  245. return( V1.X*V2.X + V1.Y*V2.Y + V1.Z*V2.Z );
  246. };
  247.  
  248. void PlayerPreRender(AavaPlayerController* pPC)
  249. {
  250. Players.clear();
  251. if (bHackDisabled) return;
  252. if (!pPC->Pawn) return;
  253.  
  254. int bone = 7;
  255. if (rbBone == 0) bone = 7;
  256. if (rbBone == 1) bone = 5;
  257.  
  258. APawn_execGetPawnViewLocation_parms pv;
  259. pPC->Pawn->GetPawnViewLocation(&pv);
  260. LocalPosition = pv.ReturnValue;
  261. LocalRotation = pPC->Pawn->Rotation;
  262.  
  263. if (bNoRecoil)
  264. {
  265. AavaPawn* pPawn = (AavaPawn*)pPC->Pawn;
  266. pPawn->PunchAngle = FVector(0,0,0);
  267. pPawn->PunchAngleVel = FVector(0,0,0);
  268. }
  269.  
  270. if (pPC->WorldInfo)
  271. {
  272. if (pPC->WorldInfo->PawnList)
  273. {
  274. APawn* pPawn = pPC->WorldInfo->PawnList;
  275. while(pPawn)
  276. {
  277. if (pPawn->Mesh && pPawn->PlayerReplicationInfo && (pPawn->PlayerReplicationInfo != pPC->PlayerReplicationInfo) )
  278. {
  279. PlayerInfo pi;
  280. ZeroMemory(&pi,sizeof(pi));
  281.  
  282. pi.pPawn = pPawn;
  283. pi.Name = pPawn->PlayerReplicationInfo->PlayerName.Data;
  284. pi.Location = pPawn->Location;
  285. pi.Health = pPawn->Health;
  286. pi.bSameTeam = pPawn->PlayerReplicationInfo->Team == pPC->PlayerReplicationInfo->Team;
  287. //if (pPawn->Mesh)
  288. {
  289. for (int i=0; i < 66;i++)
  290. {
  291. USkeletalMeshComponent_execGetBoneNameByIndex_parms pbn;
  292. pbn.Index = i;
  293. pPawn->Mesh->GetBoneNameByIndex(&pbn);
  294.  
  295. USkeletalMeshComponent_execGetBoneLocation_parms pbl;
  296. pbl.BoneName = pbn.ReturnValue;
  297. pbl.Space = 0;
  298. pPawn->Mesh->GetBoneLocation(&pbl);
  299. pi.bones[i] = pbl.ReturnValue;
  300. }
  301. }
  302.  
  303. AActor_execFastTrace_parms pft;
  304. ZeroMemory(&pft,sizeof(pft));
  305. pft.TraceStart = LocalPosition;
  306. pft.TraceEnd = pi.bones[bone];
  307. pPC->FastTrace(&pft);
  308. pi.bVisible = pft.ReturnValue;
  309.  
  310. Players.push_back(pi);
  311. }
  312. pPawn = pPawn->NextPawn;
  313. }
  314. }
  315. }
  316.  
  317. if (!bTargetLock) bHaveTarget = false;
  318.  
  319. if (GetKeyState(GetMenuValue(_keyAimbot))&0x8000)
  320. {
  321. FVector AxisX,AxisY,AxisZ;
  322. GetAxes(LocalRotation,AxisX,AxisY,AxisZ);
  323.  
  324. if (bHaveTarget)
  325. {
  326. bool bStillValidTarget = false;
  327. for (UINT i=0; i < Players.size();i++)
  328. {
  329. if (Players[i].Name == TargetName && IsValidTarget(i))
  330. {
  331. bStillValidTarget = true;
  332. TargetPosition = Players[i].bones[bone];
  333. bTargetVisible = Players[i].bVisible;
  334. break;
  335. }
  336. }
  337. bHaveTarget = bStillValidTarget;
  338. }
  339. if (!bHaveTarget)
  340. {
  341. float BestDistance = 1000000;
  342.  
  343. for (UINT i=0; i < Players.size();i++)
  344. {
  345. if (!IsValidTarget(i)) continue;
  346.  
  347. if (rbTarget == 0)//Distance
  348. {
  349. float TargetDist = (Players[i].bones[bone] - LocalPosition).Size();
  350. if (TargetDist < BestDistance)
  351. {
  352. BestDistance = TargetDist;
  353. TargetName = Players[i].Name;
  354. TargetPosition = Players[i].bones[bone];
  355. bTargetVisible = Players[i].bVisible;
  356. bHaveTarget = true;
  357. }
  358. }
  359. if (rbTarget == 1)//XHair
  360. {
  361. FVector AxisD = (Players[i].bones[bone] - LocalPosition);
  362. AxisD /= AxisD.Size();
  363. float TargetAngle = acos(Dot(AxisD,AxisX));
  364. if (TargetAngle < BestDistance)
  365. {
  366. BestDistance = TargetAngle;
  367. TargetName = Players[i].Name;
  368. TargetPosition = Players[i].bones[bone];
  369. bTargetVisible = Players[i].bVisible;
  370. bHaveTarget = true;
  371. }
  372. }
  373. //if (rbTarget == 2)//FOV
  374. //{
  375. // FVector AxisD = (Players[i].bones[bone] - LocalPosition);
  376. // AxisD /= AxisD.Size();
  377. // float TargetAngle = acos(Dot(AxisD,AxisX));
  378. // float MaxAngle = (float)iFOV * 0.0174532925;
  379. // if (TargetAngle < MaxAngle && TargetAngle < BestDistance)
  380. // {
  381. // BestDistance = TargetAngle;
  382. // TargetName = Players[i].Name;
  383. // TargetPosition = Players[i].bones[bone];
  384. // bTargetVisible = Players[i].bVisible;
  385. // bHaveTarget = true;
  386. // }
  387. //}
  388. }
  389. }
  390. if (bHaveTarget)
  391. {
  392. FRotator Final = (TargetPosition - LocalPosition).Rotation();
  393. NormalizeRotation(Final);
  394.  
  395. AActor_execSetRotation_parms pr;
  396. ZeroMemory(&pr,sizeof(pr));
  397. pr.NewRotation = Final;
  398. pPC->SetRotation(&pr);
  399.  
  400. if (bAutoFire && bTargetVisible)
  401. {
  402. mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,NULL);
  403. mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,NULL);
  404. }
  405. }
  406. }
  407. else
  408. bHaveTarget = false;
  409. }
  410.  
  411. UObject* pCallObject = NULL;
  412. UFunction* pFunction = NULL;
  413. void* pParms = NULL;
  414. void HandleEvents()
  415. {
  416. static UFunction* pfnViewportPostRender = NULL;
  417. if (!pfnViewportPostRender) pfnViewportPostRender = (UFunction*)UObject::FindObject(L"Function avaGame.avaGameViewportClient.PostRender");
  418. if ( pFunction == pfnViewportPostRender)
  419. {
  420. UavaGameViewportClient_execPostRender_parms* pGVPParms = (UavaGameViewportClient_execPostRender_parms*)pParms;
  421. ViewportPostRender(pGVPParms->Canvas);
  422. return;
  423. }
  424.  
  425. static UFunction* pfnHUDPostRender = NULL;
  426. if (!pfnHUDPostRender) pfnHUDPostRender = (UFunction*)UObject::FindObject(L"Function avaGame.avaHUD.PostRender");
  427. if ( pFunction == pfnHUDPostRender)
  428. {
  429. AavaHUD* pHud = (AavaHUD*)pCallObject;
  430. HUDPostRender(pHud->Canvas);
  431. return;
  432. }
  433.  
  434. static UFunction* pfnPlayerPreRender = NULL;
  435. if (!pfnPlayerPreRender) pfnPlayerPreRender = (UFunction*)UObject::FindObject(L"Function avaGame.avaPlayerController.PreRender");
  436. if ( pFunction == pfnPlayerPreRender )
  437. {
  438. AavaPlayerController* pPC = (AavaPlayerController*)pCallObject;
  439. PlayerPreRender(pPC);
  440. return;
  441. }
  442. }
  443.  
  444. DWORD _memcpy = NULL;
  445. void __declspec(naked) MyHook()
  446. {
  447. static DWORD _ret = NULL;
  448. static DWORD _EAX = NULL;
  449. static bool bInHandleEvents = false;
  450. _asm
  451. {
  452. mov _EAX,eax;
  453. mov eax, [esp];
  454. mov _ret, eax;
  455. mov eax, _EAX;
  456. }
  457. __asm pushad;
  458. if (!bInHandleEvents && _ret == EVENTHOOK)//Called from ProcessEvent?
  459. {
  460. _asm mov eax,[ebp-0x14];
  461. _asm mov pCallObject,eax;
  462. _asm mov eax,[ebp+8];
  463. _asm mov pFunction,eax;
  464. _asm mov eax,[ebp+12];
  465. _asm mov pParms,eax;
  466.  
  467. bInHandleEvents = true;
  468. if ( pCallObject && pFunction) HandleEvents();
  469. bInHandleEvents = false;
  470. }
  471. _asm popad;
  472. __asm jmp [_memcpy];
  473. }
  474.  
  475. BOOL WINAPI DllMain ( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )
  476. {
  477. if ( dwReason == DLL_PROCESS_ATTACH )
  478. {
  479. DeleteFileA(LogFile);
  480.  
  481. DWORD _hook = (DWORD)&MyHook;
  482. PATCH_ReadMemory((void*)MEMCPYHOOK,(void*)&_memcpy,4);
  483. PATCH_WriteMemory((void*)MEMCPYHOOK,(void*)&_hook,4);
  484.  
  485. HackPath = (char*)lpReserved;
  486. sprintf(SettingsFile,_CXR(sSettings),HackPath);
  487. sprintf(SettingsFileDefault,_CXR(sDefaultSettings),HackPath);
  488. InitMenu();
  489. strcpy(DragWindow0.VarName,sMenu);
  490. strcpy(Clock.VarName,sClock);
  491. Windows.push_back(&Clock);
  492. ctrls.push_back(&Clock);
  493. Load();
  494. pCanvas = &Canvas;
  495. winamp.InitWinamp();
  496. }
  497.  
  498. return TRUE;
  499. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement