Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
GunZ-The-Duel/source/lone222/lone222.cpp
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
651 lines (434 sloc)
13.4 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <windows.h> | |
| #include <stdio.h> | |
| typedef void(__cdecl* ZChatOutputType)(const char*,int,int,DWORD); | |
| ZChatOutputType ZChatOutput = (ZChatOutputType)0x0042B7D0; | |
| typedef void(__cdecl* ZPostShotType)(float*,float*,int,int); | |
| ZPostShotType ZPostShot = (ZPostShotType)0x00481360; | |
| typedef void(__cdecl* ZPostShotMeleeType)(float*,int); | |
| ZPostShotMeleeType ZPostShotMelee = (ZPostShotMeleeType)0x00481440; | |
| typedef DWORD(__cdecl* ZGetGameClientType)(); | |
| ZGetGameClientType ZGetGameClient = (ZGetGameClientType)0x004AD700; | |
| typedef DWORD(__cdecl* ZGetGameInterfaceType)(); | |
| ZGetGameInterfaceType ZGetGameInterface = (ZGetGameInterfaceType)0x004AD720; | |
| typedef DWORD(__cdecl* ZPostPeerChatType)(char*,int); | |
| ZPostPeerChatType ZPostPeerChat = (ZPostPeerChatType)0x0042AD30; | |
| typedef DWORD(__cdecl* ZPostReloadType)(); | |
| ZPostReloadType ZPostReload = (ZPostReloadType)0x00433D30; | |
| char BUFFER[1024]; | |
| typedef void(__cdecl* ZPostSkillType)(int,int); | |
| ZPostSkillType ZPostSkill = (ZPostSkillType)0x00481260; | |
| DWORD SetHPaddr = 0x00476DB0; | |
| DWORD SetAPaddr = 0x00476DC0; | |
| bool roomkill = 0; | |
| struct MUID | |
| { | |
| unsigned long LowID; | |
| unsigned long HighID; | |
| }; | |
| // | |
| typedef DWORD(__cdecl* ZPostStageEnterBattleType)(MUID*,MUID*); | |
| ZPostStageEnterBattleType ZPostStageEnterBattle = (ZPostStageEnterBattleType)0x0051AFE0; | |
| // | |
| typedef DWORD(__cdecl* ZPostStageLeaveBattleType)(MUID*,MUID*); | |
| ZPostStageLeaveBattleType ZPostStageLeaveBattle = (ZPostStageLeaveBattleType)0x00468240; | |
| /* | |
| typedef void(__cdecl* ZPostRequestSpawnType)(MUID*,float*,float*); | |
| ZPostRequestSpawnType ZPostRequestSpawn = (ZPostRequestSpawnType)0x004B4090; | |
| */ | |
| DWORD ZPostRequestSpawnADDR = 0x004B4090; | |
| //Crashes for some reason without assembly <.< | |
| void ZPostRequestSpawn(MUID* uid,float *pos,float *dir) | |
| { | |
| __asm | |
| { | |
| PUSH dir | |
| PUSH pos | |
| PUSH uid | |
| CALL ZPostRequestSpawnADDR | |
| } | |
| } | |
| typedef void(__cdecl* ZPostStageTeamType)(MUID*,MUID*,int); | |
| ZPostStageTeamType ZPostStageTeam = (ZPostStageTeamType)0x0044B2D0; | |
| typedef void(__cdecl* ZPostChannelChatType)(MUID*,MUID*,char*); | |
| ZPostChannelChatType ZPostChannelChat = (ZPostChannelChatType)0x0042AEB0; | |
| typedef void(__cdecl* ZPostSpMotionType)(int); | |
| ZPostSpMotionType ZPostSpMotion = (ZPostSpMotionType)0x004A2CE0; | |
| // | |
| typedef void(__cdecl* ZPostRequestSpawnWorldItemType)(MUID*,int,float*); | |
| ZPostRequestSpawnWorldItemType ZPostRequestSpawnWorldItem = (ZPostRequestSpawnWorldItemType)0x00532130; | |
| typedef void(__cdecl* ZPostCreateMyCharType)(MUID*,int,char*,int,int,int,int); | |
| ZPostCreateMyCharType ZPostCreateMyChar = (ZPostCreateMyCharType)0x0044B490; | |
| MUID *NewCHAR = new MUID(); | |
| MUID *NewSTAG = new MUID(); | |
| MUID *NewCHAN = new MUID(); | |
| DWORD *pGame = (DWORD*)0x006D46B0; | |
| DWORD pChar() | |
| { | |
| if (pGame!=NULL && *pGame!=NULL){return *(DWORD*)(*pGame + 0x50);} | |
| return NULL; | |
| } | |
| void SetHP(int hp) | |
| { | |
| DWORD ZChar = (DWORD)pChar(); | |
| __asm{ | |
| MOV ECX, ZChar | |
| MOV EAX,SetHPaddr | |
| PUSH hp | |
| CALL EAX | |
| } | |
| } | |
| //Created by LONE222 | |
| int NumberOfPeers = 0; | |
| #define minexaust 1 | |
| #define maxexaust 10000001 | |
| MUID Peers[maxexaust]; | |
| MUID GetPeerFromList(int Offset) | |
| { | |
| MUID Empty; | |
| if (Offset>0 && Offset<=NumberOfPeers){return Peers[Offset];}else{return Empty;} | |
| } | |
| int GetPeersInMUIDList() | |
| { | |
| return NumberOfPeers; | |
| } | |
| bool IsPeerInList(MUID ThisPeer) | |
| { | |
| bool RETN = 0; | |
| for(int i = 1;i<=GetPeersInMUIDList();i++) | |
| { | |
| if (GetPeerFromList(i).HighID == ThisPeer.HighID && RETN == 0){RETN = 1;} | |
| } | |
| return RETN; | |
| } | |
| void AddPeerToList(MUID ThisPeer) | |
| { | |
| //if (!IsPeerInList(ThisPeer)){ | |
| NumberOfPeers++; | |
| Peers[NumberOfPeers] = ThisPeer; | |
| //} | |
| } | |
| void RemovePeerFromList(MUID ThisPeer) | |
| { | |
| bool RETN = 0; | |
| for(int i = 1;i<=GetPeersInMUIDList();i++) | |
| { | |
| if (GetPeerFromList(i).HighID == ThisPeer.HighID && RETN == 0){Peers[i].HighID = 0;Peers[i].LowID = 0;RETN = 1;} | |
| } | |
| } | |
| void SetAP(int ap) | |
| { | |
| DWORD ZChar = (DWORD)pChar(); | |
| __asm{ | |
| MOV ECX, ZChar | |
| MOV EAX,SetAPaddr | |
| PUSH ap | |
| CALL EAX | |
| } | |
| } | |
| float Empty[] = {0,0,0,0}; | |
| MUID *NewEMPT = new MUID(); | |
| float *GetPlayerDirection() | |
| { | |
| return (float*)(DWORD)(pChar() + 0x5C); | |
| } | |
| DWORD ZCharacterManagerADDR = 0x004A0D00; | |
| DWORD ZCharacterManagerFindADDR = 0x0047D860; | |
| DWORD GetZChar(MUID charZ) | |
| { | |
| unsigned long LOW = 0; | |
| unsigned long HIGH = charZ.HighID; | |
| DWORD result; | |
| __asm | |
| { | |
| MOV EDX, LOW | |
| MOV EBX, HIGH | |
| MOV EAX, ZCharacterManagerADDR | |
| CALL EAX | |
| MOV ECX,EAX | |
| PUSH EBX | |
| PUSH EDX | |
| MOV EAX, ZCharacterManagerFindADDR | |
| CALL EAX | |
| MOV result,EAX | |
| } | |
| return result; | |
| } | |
| float *GetObjectPosition(DWORD ZChar) | |
| { | |
| DWORD ECX = ZChar; | |
| DWORD EAX = *(DWORD*)(ECX + 0x58); | |
| ECX = *(DWORD*)(EAX + 0x20); | |
| DWORD EDX = *(DWORD*)(EAX + 0xC); | |
| EAX = *(DWORD*)(EDX + ECX * 0x4); | |
| return (float*)EAX; | |
| } | |
| void SetPos(float *POS) | |
| { | |
| float *PointerToPosition = GetObjectPosition(pChar()); | |
| PointerToPosition[0] = POS[0]; | |
| PointerToPosition[1] = POS[1]; | |
| PointerToPosition[2] = POS[2]; | |
| } | |
| void SetPosition(float X,float Y,float Z) | |
| { | |
| float *PointerToPosition = GetObjectPosition(pChar()); | |
| PointerToPosition[0] = X; | |
| PointerToPosition[1] = Y; | |
| PointerToPosition[2] = Z; | |
| } | |
| float GetXPosition() | |
| { | |
| float *PointerToPosition = GetObjectPosition(pChar()); | |
| return PointerToPosition[0]; | |
| } | |
| float GetYPosition() | |
| { | |
| float *PointerToPosition = GetObjectPosition(pChar()); | |
| return PointerToPosition[1]; | |
| } | |
| float GetZPosition() | |
| { | |
| float *PointerToPosition = GetObjectPosition(pChar()); | |
| return PointerToPosition[2]; | |
| } | |
| MUID Attacker() | |
| { | |
| DWORD ZChar = (DWORD)pChar(); | |
| MUID Aa; | |
| Aa.LowID = 0; | |
| DWORD EAX = ZChar; | |
| EAX = *(DWORD*)(EAX + 0x3BC); | |
| EAX = *(DWORD*)(EAX + 0x20); | |
| Aa.HighID = EAX; | |
| return Aa; | |
| } | |
| MUID GetMe() | |
| { | |
| MUID Aa; | |
| Aa.LowID = 0; | |
| Aa.HighID = *(DWORD*)(ZGetGameClient() + 0x1A4); | |
| return Aa; | |
| } | |
| char *LastInput() | |
| { | |
| return (char*)(0x0366DC38); | |
| } | |
| MUID GetStage() | |
| { | |
| MUID Aa; | |
| Aa.LowID = 0; | |
| Aa.HighID = *(DWORD*)(ZGetGameClient() + 0x1B4); | |
| return Aa; | |
| } | |
| MUID GetChannel() | |
| { | |
| MUID Aa; | |
| Aa.LowID = 0; | |
| Aa.HighID = *(DWORD*)(ZGetGameClient() + 0x1AC); | |
| return Aa; | |
| } | |
| int __speed = 20; | |
| bool godmode = 0; | |
| bool flipmower = 0; | |
| bool lawnmower = 0; | |
| bool massives = 0; | |
| bool inv = 0; | |
| int team = -1; | |
| int Slot = 0; | |
| void roomper() | |
| {while(1){ | |
| if (roomkill==1 && Slot!=0 && GetZChar(GetPeerFromList(Slot))!=0) | |
| { | |
| SetPosition(GetObjectPosition(GetZChar(GetPeerFromList(Slot)))[0],GetObjectPosition(GetZChar(GetPeerFromList(Slot)))[1],GetObjectPosition(GetZChar(GetPeerFromList(Slot)))[2]); | |
| ZPostSkill(2,7); | |
| ZPostShot(GetObjectPosition(pChar()),Empty,1,2); | |
| SetHP(9999);SetAP(9999); | |
| } | |
| Sleep(__speed);}} | |
| void roomcheck() | |
| {while(1){ | |
| if (roomkill){ | |
| if (pChar()) | |
| { | |
| Slot = 0; | |
| for(int i=1;i<=GetPeersInMUIDList();i++){ | |
| if (pChar()){Slot = i; | |
| if (GetZChar(GetPeerFromList(Slot))!=0){Sleep(2000);}}} | |
| }} | |
| Sleep(__speed);}} | |
| void addalltolist() | |
| {while(1){ | |
| MUID NewCHAR2; | |
| if (pChar()!=NULL) | |
| { | |
| NumberOfPeers = 0; | |
| for(int b=minexaust;b<=maxexaust;b++) | |
| { | |
| NewCHAR2.LowID = 0; | |
| NewCHAR2.HighID = b; | |
| if (b != GetMe().HighID && GetZChar(NewCHAR2)!=0){ | |
| AddPeerToList(NewCHAR2); | |
| } | |
| } | |
| } | |
| Sleep(10000); | |
| } | |
| } | |
| void CheckKeys() | |
| { | |
| while(1){ | |
| /* | |
| if (GetAsyncKeyState(VK_RETURN)&0x8000){ | |
| //char *lol = (char*)0x0366DC38; | |
| sprintf(BUFFER,"String '%d'",LastInput()[1]); | |
| //sprintf(BUFFER,"String '%X'",ZGetGameInterface()); | |
| //ZChatOutput(BUFFER,2,0,0xFFFFFFFF); | |
| //sprintf(BUFFER,"String '%X'",ZGetGameClient()); | |
| ZChatOutput(BUFFER,2,0,0xFFFFFFFF); Sleep(2000); | |
| if (memcmp(LastInput(),"@male ",6)==0) | |
| { | |
| //Copy our string from offset 12 | |
| char MEMCMPSTR4[12]; | |
| for(int i = 6;i<=18;i++) | |
| { | |
| int Str = 0; | |
| if (LastInput()[i] == ''){MEMCMPSTR4[i-6] = '\n';Str = 1;} //Alt + 0141 ; New Line | |
| if (LastInput()[i] == ' '){MEMCMPSTR4[i-6] = '\t';Str = 1;} //Alt + 0160 ; Tab | |
| //Alt + 255 also = space | |
| if (Str == 0){MEMCMPSTR4[i-6] = LastInput()[i];} | |
| } | |
| NewCHAR->LowID = 0; | |
| NewCHAR->HighID = GetMe().HighID; | |
| for(int a = 0;a<=4;a++)ZPostCreateMyChar(NewCHAR,a,MEMCMPSTR4,0,4,0,1); //female = 1 ; male = 0 ; Male is first :( SEXIST!!!! | |
| Sleep(1200); | |
| } | |
| if (memcmp(LastInput(),"@female ",8)==0) | |
| { | |
| //Copy our string from offset 12 | |
| char MEMCMPSTR5[12]; | |
| for(int i = 8;i<=20;i++) | |
| { | |
| int Str = 0; | |
| if (LastInput()[i] == ''){MEMCMPSTR5[i-8] = '\n';Str = 1;} //Alt + 0141 ; New Line | |
| if (LastInput()[i] == ' '){MEMCMPSTR5[i-8] = '\t';Str = 1;} //Alt + 0160 ; Tab | |
| //Alt + 255 also = space | |
| if (Str == 0){MEMCMPSTR5[i-8] = LastInput()[i];} | |
| } | |
| NewCHAR->LowID = 0; | |
| NewCHAR->HighID = GetMe().HighID; | |
| for(int a = 0;a<=4;a++)ZPostCreateMyChar(NewCHAR,a,MEMCMPSTR5,1,4,0,1); //female = 1 ; male = 0 ; Male is first :( SEXIST!!!! | |
| Sleep(1200); | |
| } | |
| } | |
| */ | |
| if (pChar()) { | |
| if (GetAsyncKeyState(VK_NUMPAD0)&0x8000){SetPosition(GetXPosition(),GetYPosition(),GetZPosition() - 100);} | |
| if (GetAsyncKeyState(VK_NUMPAD1)&0x8000){SetPosition(GetXPosition(),GetYPosition(),GetZPosition() + 100);} | |
| if (GetAsyncKeyState(VK_NUMPAD4)&0x8000){SetPosition(GetXPosition(),GetYPosition() - 100,GetZPosition());} | |
| if (GetAsyncKeyState(VK_NUMPAD6)&0x8000){SetPosition(GetXPosition(),GetYPosition() + 100,GetZPosition());} | |
| if (GetAsyncKeyState(VK_NUMPAD2)&0x8000){SetPosition(GetXPosition() + 100,GetYPosition(),GetZPosition());} | |
| if (GetAsyncKeyState(VK_NUMPAD8)&0x8000){SetPosition(GetXPosition() - 100,GetYPosition(),GetZPosition());} | |
| if (GetAsyncKeyState(0x12)&0x8000 && GetAsyncKeyState('O')&0x8000){inv=!inv;Sleep(500);} | |
| if (GetAsyncKeyState(VK_NUMPAD3)&0x8000){for(int i=1;i<=15;i++)ZPostSpMotion(i);} | |
| if (GetAsyncKeyState(VK_NUMPAD5)&0x8000){roomkill=!roomkill;Sleep(500);} | |
| //if (GetAsyncKeyState(VK_TAB)&0x8000){ZPostReload();} <.< Patched, reloads once | |
| } | |
| if (GetAsyncKeyState(VK_NUMPAD7)&0x8000){ | |
| char name[12]; | |
| FILE * f = fopen("szCharName.txt","r"); | |
| fgets(name,12,f); | |
| fclose(f); | |
| NewCHAR->LowID=0; | |
| NewCHAR->HighID=GetMe().HighID; | |
| for(int i=0;i<=4;i++)ZPostCreateMyChar(NewCHAR,i,name,1,4,0,1); | |
| ;} | |
| if (GetAsyncKeyState(VK_NUMPAD9)&0x8000){ | |
| char name[12]; | |
| FILE * f = fopen("szCharName.txt","r"); | |
| fgets(name,12,f); | |
| fclose(f); | |
| NewCHAR->LowID=0; | |
| NewCHAR->HighID=GetMe().HighID; | |
| for(int i=0;i<=4;i++)ZPostCreateMyChar(NewCHAR,i,name,0,4,0,1); | |
| ;} | |
| if (GetAsyncKeyState(VK_PRIOR)&0x8000){ | |
| char spam[128]; | |
| FILE * f = fopen("spam.txt","r"); | |
| while(!feof(f)){ | |
| NewSTAG->LowID = 0;NewSTAG->HighID = GetStage().HighID; | |
| NewCHAR->LowID = 0;NewCHAR->HighID = Attacker().HighID; | |
| fgets(spam,128,f);ZPostPeerChat(spam,0);/*ZPostChannelChat(NewCHAR,NewSTAG,spam)*/;Sleep(50);} | |
| fclose(f); | |
| ;} | |
| if (GetAsyncKeyState(VK_NUMPAD9)&0x8000){ | |
| char name[12]; | |
| FILE * f = fopen("szCharName.txt","r"); | |
| fgets(name,12,f); | |
| fclose(f); | |
| NewCHAR->LowID=0; | |
| NewCHAR->HighID=GetMe().HighID; | |
| for(int i=0;i<=4;i++)ZPostCreateMyChar(NewCHAR,i,name,0,4,0,1); | |
| ;} | |
| if (GetAsyncKeyState(0x12)&0x8000 && GetAsyncKeyState('G')&0x8000){godmode=!godmode;Sleep(500);} | |
| if (GetAsyncKeyState(0x12)&0x8000 && GetAsyncKeyState('U')&0x8000){flipmower=!flipmower;Sleep(500);} | |
| if (GetAsyncKeyState(0x12)&0x8000 && GetAsyncKeyState('L')&0x8000){lawnmower=!lawnmower;Sleep(500);} | |
| if (GetAsyncKeyState(0x12)&0x8000 && GetAsyncKeyState('M')&0x8000){massives=!massives;Sleep(500);} | |
| if (GetAsyncKeyState(0x12)&0x8000 && GetAsyncKeyState('T')&0x8000){ | |
| //sprintf("UserID:%d ChannelID:%d StageID:%d"); | |
| sprintf(BUFFER,"UserID:%d",GetMe().HighID); | |
| ZChatOutput(BUFFER,1,0,0xBBFFAAFF); | |
| if (pChar()){ | |
| sprintf(BUFFER,"Attacker: %d",Attacker().HighID); | |
| ZChatOutput(BUFFER,1,0,0xBBFFAAFF);} | |
| Sleep(1000); | |
| } | |
| /*USELESS | |
| if (GetAsyncKeyState(VK_TAB)&0x8000){ | |
| NewCHAR->LowID=0; | |
| NewCHAR->HighID=GetMe().HighID; | |
| ZPostRequestSpawnWorldItem(NewCHAR,111,GetObjectPosition(pChar()));} | |
| */ | |
| if (GetAsyncKeyState(0x12)&0x8000 && GetAsyncKeyState('S')&0x8000){ | |
| NewCHAR->LowID=0; | |
| NewCHAR->HighID=GetMe().HighID; | |
| ZPostRequestSpawn(NewCHAR,GetObjectPosition(pChar()),GetPlayerDirection());} //ZPostRequestSpawn(NewEMPT,Empty,Empty) invisible spawn :) | |
| if (GetAsyncKeyState(0x12)&0x8000 && GetAsyncKeyState('X')&0x8000){ | |
| NewCHAR->LowID=0; | |
| NewCHAR->HighID=GetMe().HighID; | |
| NewSTAG->LowID=0; | |
| NewSTAG->HighID=GetStage().HighID; | |
| team++; | |
| if (team>4){team=0;} | |
| ZPostStageTeam(NewCHAR,NewSTAG,team);Sleep(500);} | |
| Sleep(__speed); | |
| } | |
| } | |
| void DLL() | |
| { | |
| while(1){ | |
| if (pChar()){ | |
| if (godmode){SetHP(9999);SetAP(9999);} | |
| if (flipmower){ZPostSkill(1,7);} | |
| if (massives){ZPostSkill(2,7);ZPostShot(GetObjectPosition(pChar()),Empty,1,2);} | |
| if (inv){NewCHAR->LowID=0;NewCHAR->HighID=GetMe().HighID;NewSTAG->LowID=0;NewSTAG->HighID=GetStage().HighID;ZPostStageLeaveBattle(NewCHAR,NewSTAG);ZPostStageEnterBattle(NewCHAR,NewSTAG);Sleep(900);} | |
| if (lawnmower){ZPostShotMelee(GetObjectPosition(pChar()),7);ZPostShot(GetObjectPosition(pChar()),Empty,1,2);} | |
| } | |
| Sleep(__speed); | |
| } | |
| } | |
| extern "C" | |
| { | |
| __declspec(dllexport) BOOL __stdcall DllMain(HINSTANCE hInst,DWORD reason,LPVOID lpv) | |
| { | |
| if (reason == DLL_PROCESS_ATTACH) | |
| { | |
| //MessageBox(NULL,"DLL Successfully Injected!","by lone222",MB_OK); | |
| CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)&roomper,NULL,NULL,NULL); | |
| CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)&roomcheck,NULL,NULL,NULL); | |
| CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)&addalltolist,NULL,NULL,NULL); | |
| CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)&DLL,NULL,NULL,NULL); | |
| CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)&CheckKeys,NULL,NULL,NULL); | |
| } | |
| return true; | |
| } | |
| } |