The structs are the same, the addresses changes.
hey i need the structs for alteriwnet, because the ones i use are a peice of crap
thanks in advanced!Code:typedef struct {//0x8EC2C8 int infoValid; //0x0000 int infoValid2; //0x0004 int clientNum; //0x0008 char name[16]; //0x000C team_t team; //0x001C team_t team2; //0x0020 int rank; //0x0024 char unknown40[984]; //0x0028 float ViewAngleX; //0x0400 float ViewAngleY; //0x0404 char unknown1032[124]; //0x0408 int State; //0x0484 char unknown1160[12]; //0x0488 int IsShooting; //0x0494 char unknown1176[4]; //0x0498 int IsZoomed; //0x049C char unknown1184[68]; //0x04A0 int WeaponID; //0x04E4 char unknown1256[68]; //0x04E8 }clientinfo_t;//Size=0x052C(1324) typedef struct {//0x8F3CA8 short currentValid; //0x0000 short grenadeValid; //0x0002 char unknown4[20]; //0x0004 vec3_t lerpOrigin; vec3_t lerpAngles; char unknown48[60]; //0x0030 int IsZooming; //0x006C char unknown112[12]; //0x0070 vec3_t lerpOrigin2; char unknown136[84]; //0x0088 int clientNUm; //0x00DC int eType; //0x00E0 int eFlags; //0x00E4 char unknown232[12]; //0x00E8 vec3_t lerpOrigin3; char unknown256[112]; //0x0100 int clientNum2; //0x0170 char unknown372[52]; //0x0174 short WeaponID; //0x01A8 char unknown426[2]; //0x01AA short WeaponID2; //0x01AC char unknown430[46]; //0x01AE int IsAlive; //0x01DC char unknown480[32]; //0x01E0 int clientNum3; //0x0200 }centity_t;//Size=0x0204(516) typedef struct { int x; //0x0000 int y; //0x0004 int width; //0x0008 int height; //0x000C float fov_x; //0x0010 float fov_y; //0x0014 vec3_t viewOrg; //0x0018 - 0x0020 vec3_t viewAxis[3]; //0x0024 - 0x0044 } refdef_t; typedef struct {//0x7F58B8 int time; char _p00[28]; //0x0004 snapshot_t *snap; //0x0020 snapshot_t *nextSnap; //0x0024 char _p01[13096]; //0x0028 int clientNum; //0x3350 char _p02[422948]; //0x3354 refdef_t refdef; //0x6A778 char _p03[16152]; vec3_t refdefViewAngles; //0x6E6DC char _p04[18700]; //0x6E6E4 int crosshairClientNum; //0x72FF0 int crosshairClientTime; //0x72FF4 } cg_t; typedef struct { char _p00[8]; int Screen_Width; int Screen_Height; float ScreenXBias; int serverCommandSequence; int processedSnapshotNum; int LocalServer; char GameType[4]; char unknown36[28]; char ServerName[64]; char unknown320[192]; int Max_Clients; char MapName[64]; char unknown388[4]; int Active_Vote; } cgs_t;
sig?
The structs are the same, the addresses changes.
i know but these structs are... how can i say this.. fucked up. They work but they dont work correctly. There we go!
sig?
ok, so basically when i'm ingame, the clientinfo[i].team keeps reading the teams incorectly then correctly then incorectly and so on. so if there is a person on my team, it will say they are on my team and then say they're on the oposing team and back on my team and its hard to read who's an enemy or not
EDIT: also when i try to make it list your clientname, it lists somebody elses!
EDIT #2: ok now i found out that every time i shoot a bullet, the client number goes up by 1!
Last edited by jdslashv2; 06-14-2011 at 03:25 PM.
sig?
You're obviously not reading the structs from memory properly. But you can try using these structs (well, classes), thanks to Big Dave for them:
Code:class ClientInfo { public: char Unknown1[12]; char Name[16]; //0x0000 __int32 Team; //0x0010 __int32 Team2; //0x0014 char unknown24[28]; //0x0018 char BodyModel[64]; //0x0034 char HeadModel[64]; //0x0074 char WeaponModel[64]; //0x00B4 char WeaponModel2[64]; //0x00F4 char WeaponExplosive[64]; //0x0134 char unknown372[552]; //0x0174 __int32 pose; //0x039C char unknown936[96]; //0x03A0 __int32 pose2; //0x0400 }; class Entity { public: char unknown0[2]; //0x0000 __int8 Valid; //0x0002 char unknown4[21]; //0x0003 D3DVector Origin; //0x0018 char unknown36[72]; //0x0024 __int32 Pose; //0x006C char unknown109[12]; //0x0070 float fPitch; //0x007C float fYaw; //0x0080 float fRoll; //0x0084 char unknown136[84]; //0x0088 __int32 ClientNumber; //0x00DC __int32 EntityType; //0x00E0 __int8 PlayerPose; //0x00E4 __int8 Shooting; //0x00E5 __int8 Zoomed; //0x00E6 char unknown231[193]; //0x00E7 __int16 WeaponNum; //0x01A8 char unknown426[50]; //0x01AA __int32 IsAlive; //0x01DC }; class Refdef { public: char unknown1[8]; __int32 ScreenX; //0x0000 __int32 ScreenY; //0x0004 float fov_x; //0x0008 float fov_y; //0x000C D3DVector Origin; //0x0010 D3DVector ViewAxis[3]; //0x0014 char unknown24[16200]; //0x0018 D3DVector rdViewAngles; //0x3F60 }; class CG_t { public: __int32 ClientNumber;//0x0000 char unknown4[72]; //0x0004 __int32 Health; //0x004C }; class CGS_t { public: char unknown0[8]; //0x0000 __int32 ScreenX; //0x0008 __int32 ScreenY; //0x000C char unknown16[12]; //0x0010 __int32 LocalServer; //0x001C char GameType[4]; //0x0020 char unknown36[28]; //0x0024 char ServerName[64]; //0x0040 };
Last edited by master131backup; 06-15-2011 at 12:10 AM.
when you do:
[highlight=c++]for(int i = 0; i<18;i++)
{
//code here....
}[/highlight]
It will obv. change the team, cause it will get each player's team one by one. So if you want to read only your team, you must do:
[highlight=c++]DWORD GetPlayerTeam(char *playerName)
{
for(int i = 0; i<18;i++)
{
if(cInfo[i].Name == playerName)
return cInfo[i].Team;
}
}[/highlight]
no i did
andCode:cg->clientNum
without usingCode:clientinfo[cg->clientNum].Name
EDIT: also i'm not trying to get the team i'm trying to get my playername/client number but somethings wrong with the source code that everytime i shoot a bullet the clientNum goes up by 1.Code:for(int i;i!=18;i++) { //code }
@master131backup
thanks for that i will try it!
Last edited by jdslashv2; 06-15-2011 at 07:16 AM.
sig?
Get the LocalClientNum, it is your actual client number. then to get the name do:
[highlight=c++]typedef struct Player{
DWORD Team;
char *cName;
};
Player GetLocalPlayerNameAndTeam( int pLocalNum )
{
char *cName = cInfo[pLocalNum].Name;
DWORD team = cInfo[pLocalNum].ClientNum;
Player static_player = { team, cName };
return Player;
}[/highlight]
Give me a second to give you the LocalClientNum address....
EDIT:
Here's the local client num (for alterIWnet):
[highlight=c++]int LocalClientNum = *(int*)0x633AEEC; //or iw4mp.dat+5F3AEEC[/highlight]
Last edited by ♪~ ᕕ(ᐛ)ᕗ; 06-15-2011 at 07:53 AM.
well the thing is, everytime i shoot, my client number value goes up. then it thinks that i'm a different player, making it so that i see what that person would see with my hack. also it goes way past 18 (e.g. if i use a RPD and a g18 and shoot all my ammo i would be client number 299)
sig?
That's not your client number. The Client number address is the LocalClientNum, so you use my method above you are going to get your info.
OH ok now i see!
EDIT:
so is int 0x5F3AEEC the offset for alteriwnet or 0x633AEEC?
Last edited by jdslashv2; 06-15-2011 at 09:47 AM.
sig?
They're both offests for the LocalClientNum, but 0x633AEEC is a "direct" offset, 0x5F3AEEC + The Base Address ("iw4mp.dat") = LocalClientNum. I recommend using this method to get the address:
[highlight=c++]DWORD GetLocalClientNumAddress( )
{
DWORD baseAddress = (DWORD)GetProcAddress(GetModuleHandleA("iw4mp.dat" ), NULL);
DWORD ClNum = (baseAddress + 0x5F3AEEC);
return ClNum;
}[/highlight]
well when i use that function u gave me all my visuals dont show (i guess because they dont hook and when i use the direct address, it stays at clientnumber 0
sig?
. TBH I didn't checked the address if it's the right one. Are you using D3D or the game engine?
EDIT: What do you mean with "they doesn't hook"?
Are you sure you are Detouring the right address?
Edit:
Try this addie:
iw4mp.dat+3F493C
Last edited by ♪~ ᕕ(ᐛ)ᕗ; 06-15-2011 at 11:10 AM.