- Sponsored Advertisement -
Welcome to the UnKnoWnCheaTs - Multiplayer Game Hacks and Cheats.
You have to register before you can post and see and access any of the advanced forum features, please click the register link to proceed to the registration form. To start viewing threads or posts, select a forum that you want to visit from the selection below.
Battlefield Bad Company 2 hacks cheats tutorials source code
You are Unregistered, please register to gain Full access.
BFBC2 esp
03-14-2010, 04:19 AM
#1 Level 3
Join Date: Dec 2006
Posts: 436
Reputation: 8917 Rep Power: 159
BFBC2 esp
I am currently working on esp and I am having a problem I can't quite figure out. When I am aiming directly at players my tags are correctly placed over the player but when I move in the x-axis, the tags move in the opposite direction. Y-Axis is working correctly though...Can someone post their viewAngles so I can make sure I am using the correct ones?
bigass pic:
Last edited by silverfish; 03-14-2010 at 04:22 AM .
silverfish is online now
03-14-2010, 04:24 AM
#2 Retired Admin Join Date: Sep 2006
Posts: 5,249
Reputation: 93628 Rep Power: 1106
erm, just reverse the x component?
learn_more is offline
03-14-2010, 04:56 AM
#3 Level 3
Threadstarter Join Date: Dec 2006
Posts: 436
Reputation: 8917 Rep Power: 159
Quote:
Originally Posted by
learn_more erm, just reverse the x component?
Yeah...I did that by re-writing my world2screen(). I just wanted to see what other people had for viewAngles to compare with. I didn't think the messed with the viewMatrix in this current interation of BF games.....but it looks like they did.
silverfish is online now
03-14-2010, 05:35 AM
#4 Join Date: Feb 2005
Posts: 5,028
Reputation: 92245 Rep Power: 1107
Here is my WorldToScreen function that I was using in the beta, I don't care to mess with this game anymore and it worked fine for myself. Code:
D3DXVECTOR3 WorldToScreen(CPlayer* LocalPlayer, D3DXVECTOR3* EnemyPosition)
{
static UINT ScreenWidthCenter;
static UINT ScreenHeightCenter;
if(ScreenWidthCenter == 0 || ScreenHeightCenter == 0)
{
D3DVIEWPORT9 Viewport;
Renderer->Direct3DDevice->GetViewport(&Viewport);
ScreenWidthCenter = Viewport.Width / 2;
ScreenHeightCenter = Viewport.Height / 2;
}
D3DXVECTOR3 ViewPoint;
ViewPoint.x = LocalPlayer->View_Matrix._41;
ViewPoint.y = LocalPlayer->View_Matrix._42;
ViewPoint.z = LocalPlayer->View_Matrix._43;
D3DXVECTOR3 Distance;
D3DXVec3Normalize(&Distance, D3DXVec3Subtract(&Distance, &ViewPoint, EnemyPosition));
D3DXVECTOR3 Right;
Right.x = LocalPlayer->View_Matrix._11;
Right.y = LocalPlayer->View_Matrix._12;
Right.z = LocalPlayer->View_Matrix._13;
D3DXVECTOR3 Up;
Up.x = LocalPlayer->View_Matrix._21;
Up.y = LocalPlayer->View_Matrix._22;
Up.z = LocalPlayer->View_Matrix._23;
D3DXVECTOR3 Forward;
Forward.x = LocalPlayer->View_Matrix._31;
Forward.y = LocalPlayer->View_Matrix._32;
Forward.z = LocalPlayer->View_Matrix._33;
D3DXVECTOR3 DotProduct;
DotProduct.x = D3DXVec3Dot(&Distance, &Right);
DotProduct.y = D3DXVec3Dot(&Distance, &Up);
DotProduct.z = D3DXVec3Dot(&Distance, &Forward);
FLOAT AspectRatio = 1.333f;
FLOAT fovX = LocalPlayer->WeaponData->ZoomData->fovX;
FLOAT X = ScreenWidthCenter / DotProduct.z * ((AspectRatio + (0.3f / ( (fovX / 60.0f) * 10))) / (fovX / 60.0f));
FLOAT Y = ScreenHeightCenter / DotProduct.z * ((AspectRatio + (0.3f / ( (fovX / 60.0f) * 10))) / ((fovX / 60.0f) / AspectRatio ));
D3DXVECTOR3 ScreenPosition;
ScreenPosition.x = ScreenWidthCenter + X * -DotProduct.x;
ScreenPosition.y = ScreenHeightCenter - Y * DotProduct.y;
ScreenPosition.z = DotProduct.z;
return ScreenPosition;
}
__________________
I've learned that something constructive comes from every defeat.
Sometimes i say things i shouldn't, and sometimes i say what other people are thinking.
Real programmer's don't document, if it was hard to write, it should be hard to understand.
First learn computer science and all the theory, next develop a programming style, then forget all that and just hack. Roverturbo is online now
03-17-2010, 01:24 PM
#5 My household appliance is on drugs. Horrible.
Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70179 Rep Power: 794
This is something related, just for reference purposes
PHP Code:
v49 = MatrixFunction_001 ((int)& v131 , (int)& v154 , _ESI + 0x50 ); Matrix4_Multiply_Vector ((int) v113 , (int)& v148 , v49 ); v109 = atan2 ( v113 [ 1 ], - v113 [ 0 ]); ScaleScreenValues ((int) v113 , (int)& v113 [ 1 ], 0.800000011920929 ); if ( sub_CF6190 ( v50 ) ) { if ( *( _DWORD *)( sub_CF6190 (*( _DWORD *) _ESI ) + 0xC ) ) { v51 = *( _DWORD *) _ESI ; *( float *)& v114 = ( v113 [ 0 ] + 1.0 ) * 0.5 * *( float *)(*( _DWORD *) _ESI + 0x273B4 ); Outvector = v114 ; *( float *)& v115 = 0.5 * ( 1.0 - v113 [ 1 ]) * *( float *)( v51 + 0x273B8 ); LODWORD ( ScreenY ) = v115 ; } }
s0beit is offline
03-17-2010, 09:42 PM
#6 Super l337 Join Date: Mar 2010
Posts: 214
Reputation: 17317 Rep Power: 200
Points: 10,948, Level: 12
Last Achievements reloaded nodvd 1.0.1.0 - same as s0beit uses?
[0x1534540]
0x20-fovX
0x24-fovY
0x34-a/r
0x60-matrix
and you'll have w2s
sig to locate this ptr: Code:
.text:005B1016 39 5E 38 cmp [esi+38h], ebx
.text:005B1019 74 6F jz short loc_5B108A
.text:005B101B 8B 0D 40 45 53 01 mov ecx, rend_1534540
.text:005B1021 8B 11 mov edx, [ecx]
.text:005B1023 8B 82 AC 00 00 00 mov eax, [edx+0ACh]
.text:005B1029 6A 02 push 2
.text:005B102B FF D0 call eax
.text:005B102D 8B 0D 40 45 53 01 mov ecx, rend_1534540
.text:005B1033 8B 11 mov edx, [ecx]
.text:005B1035 8B 82 AC 00 00 00 mov eax, [edx+0ACh]
.text:005B103B 6A 04 push 4
.text:005B103D FF D0 call eax
.text:005B103F 8B 0D 40 45 53 01 mov ecx, rend_1534540
.text:005B1045 8B 11 mov edx, [ecx]
.text:005B1047 8B 82 AC 00 00 00 mov eax, [edx+0ACh]
.text:005B104D 6A 03 push 3
.text:005B104F FF D0 call eax
.text:005B1051 8B 0D 40 45 53 01 mov ecx, rend_1534540
.text:005B1057 8B 11 mov edx, [ecx]
.text:005B1059 8B 82 AC 00 00 00 mov eax, [edx+0ACh]
.text:005B105F 53 push ebx
.text:005B1060 FF D0 call eax
.text:005B1062 8B 46 38 mov eax, [esi+38h]
.text:005B1065 3B C3 cmp eax, ebx
Last edited by dogmatt; 03-17-2010 at 09:55 PM .
dogmatt is online now
03-17-2010, 10:50 PM
#7 Level 3
Join Date: Sep 2007
Posts: 753
Reputation: 14616 Rep Power: 214
Thx for the info MattDog, Looks like you on the steam version as am i, We should have a update either late tonight or early tomorrow morning, I checked out your info's but it didnt seem to be Fov if u wanna piss with this with me just add me to msn bro
KanavelHacks@Hotmail.com .
__________________
K@N@VEL is offline
03-17-2010, 10:51 PM
#8 My household appliance is on drugs. Horrible.
Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70179 Rep Power: 794
no, im using the steam version, but ill try the sig thanks.
I've been trying to make use of the engine WTS function, but it is confusing :S
edit: btw the spoiler plugin has a common bug i discovered on my forums, because it uses a static variable to control the flow of the spoilers, only one spoiler is visible per page.
can't see your spoiler
s0beit is offline
03-17-2010, 10:57 PM
#9 Level 3
Join Date: Jan 2006
Posts: 106
Reputation: 1447 Rep Power: 90
Last Achievements silverfish try <0 for z and also > 1.3 for y
Last edited by kath; 03-17-2010 at 11:15 PM .
kath is offline
03-17-2010, 10:58 PM
#10 My household appliance is on drugs. Horrible.
Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70179 Rep Power: 794
the worldtoscreen for bfbc2 is truly different, i wouldn't yell "c/p" just yet, because there is a lot of people without this information.
s0beit is offline
03-17-2010, 11:24 PM
#11 Level 3
Join Date: Jan 2006
Posts: 106
Reputation: 1447 Rep Power: 90
Last Achievements totally understand
InverseWorldTransform
Last edited by kath; 03-17-2010 at 11:27 PM .
kath is offline
03-18-2010, 12:45 AM
#12 My household appliance is on drugs. Horrible.
Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70179 Rep Power: 794
mattdog, i already had some info on that pointer myself.
i didnt reverse the members, but it is used in the wts calc and it does something like this
PHP Code:
class IRef
{
public:
unsigned char Unknown001 [ 0x220 ]; //0000
FMatrix Matrix001 ; //0220
FMatrix Matrix002 ; //0260
FMatrix Matrix003 ; //02A0
unsigned char Unknown002 [ 0xC0 ]; //02E0
FMatrix Matrix004 ; //03A0
FMatrix Matrix005 ; //03E0
FMatrix Matrix006 ; //0420
};
class IGameRender
{
public:
virtual void Unknown001 () = 0 ; //0000
virtual void Unknown002 () = 0 ; //0004
virtual void Unknown003 () = 0 ; //0008
virtual void Unknown005 () = 0 ; //000C
virtual void Unknown006 () = 0 ; //0010
virtual void Unknown007 () = 0 ; //0014
virtual void Unknown008 () = 0 ; //0018
virtual void Unknown009 () = 0 ; //001C
virtual void Unknown010 () = 0 ; //0020
virtual void Unknown011 () = 0 ; //0024
virtual void Unknown012 () = 0 ; //0028
virtual IRef * GetRef () = 0 ; //002C
//
__forceinline static IGameRender * Get ()
{
return reinterpret_cast < IGameRender * >( * reinterpret_cast < unsigned long * >( 0x01534540 ) );
}
};
220 and 3A0 are used in the engine calculation.
I'll try messing with your info
s0beit is offline
03-18-2010, 04:28 AM
#13 Super l337 Join Date: Mar 2010
Posts: 214
Reputation: 17317 Rep Power: 200
Points: 10,948, Level: 12
Last Achievements screen matrix: 0x3B0
SIG: (0x3A0 add matrixes base 0x10 = 0x3B0)
so final w2s PHP Code:
class CRendererPtr { public: CRenderer * Ptr ; //0x0000 }; class CRenderer { public: char unknown0 [ 32 ]; //0x0000 float fovx ; //0x0020 float fovy ; //0x0024 float a ; //0x0028 float zn ; //0x002C float zf ; //0x0030 float aspect ; //0x0034 char unknown56 [ 40 ]; //0x0038 float view ; //0x0060 char unknown100 [ 844 ]; //0x0064 float screen ; //0x03B0 }; CRendererPtr * m_Render = 0x1534540 bool CBF :: ScreenProjectPoint (const Vector & in , PINT out ) { const _MATRIX & m_Screen = *( _MATRIX *) & gEngine . m_Render -> Ptr -> screen ; Vector Origin = Vector ( in . x , in . z , in . y ); // backward set to XZY FLOAT w = m_Screen . m [ 0 ][ 3 ] * Origin . x + m_Screen . m [ 1 ][ 3 ] * Origin . y + m_Screen . m [ 2 ][ 3 ] * Origin . z + m_Screen . m [ 3 ][ 3 ]; if( w < 0.0001f ) return FALSE ; FLOAT x = m_Screen . m [ 0 ][ 0 ] * Origin . x + m_Screen . m [ 1 ][ 0 ] * Origin . y + m_Screen . m [ 2 ][ 0 ] * Origin . z + m_Screen . m [ 3 ][ 0 ]; FLOAT y = m_Screen . m [ 0 ][ 1 ] * Origin . x + m_Screen . m [ 1 ][ 1 ] * Origin . y + m_Screen . m [ 2 ][ 1 ] * Origin . z + m_Screen . m [ 3 ][ 1 ]; out [ 0 ] = g_Interface -> Screen . CenterX . f + g_Interface -> Screen . CenterX . f * x / w ; out [ 1 ] = g_Interface -> Screen . CenterY . f - g_Interface -> Screen . CenterY . f * y / w ; return TRUE ; }
[Auto Merged - 3:30:10 UTC] Quote:
220 and 3A0 are used in the engine calculation.
dogmatt is online now
03-18-2010, 10:38 AM
#14 Affiliate VIP
Join Date: Aug 2007
Posts: 2,471
Reputation: 73725 Rep Power: 840
Quote:
Originally Posted by
s0beit no, im using the steam version, but ill try the sig thanks.
I've been trying to make use of the engine WTS function, but it is confusing :S
edit: btw the spoiler plugin has a common bug i discovered on my forums, because it uses a static variable to control the flow of the spoilers, only one spoiler is visible per page.
can't see your spoiler
I was working on using the engine w2s as well, the args not created local prior to call are located in the below. Maybe you have this already...
Code:
class CRenderClassC
{
public:
char zUnknown1[144];
D3DXMATRIX Matrix1; //w2s_arg;
D3DXMATRIX Matrix2; //w2s_arg
};
class CRenderData
{
public:
char zUnknown1[160832];
CRenderData* ObjectRoot;
CRenderClassC* RenderClassC;
char zUnknown3[72];
D3DXMATRIX RenderMatrix; //not sure if this is used.
char zUnknown4[32];
D3DXVECTOR3 Position;
};
class CGameBase
{
public:
virtual void function0(); //
char z_cUnknown0[40]; //0x0004
CEntityManager* EntityManager; //0x002C
char zUnknown2[540]; //0x0034
CRenderData* RenderingData;
};
Maybe that will help some, but yes it is confusing the way they shuffle the entries around.
__________________
I'm like a virus, you can delete me but I am never really gone.
Links die, searching does not. (Fravia : searchlores.org)
Solving problems requires effort not a college degree.
Tom M: Its a pity, if I place any more posts in my sig it will look like a thread...
zoomgod is offline
03-18-2010, 10:41 AM
#15 My household appliance is on drugs. Horrible.
Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70179 Rep Power: 794
dogmatt: i is your _MATRIX struct reversed in a sense as well? or is that "stock",
i tried it your way, didn't seem to work completely for me.
Z ended up being a screen value, Y looked something like Z and X was 0 all the time, lol.
if not, ill probably figure this out eventually on my own, thanks for your contributions
edit: solved, i didnt have to fux with the origin like you did
good job kind sir
Final product:
PHP Code:
BOOL CBFBC2Engine:: WorldToScreen ( Engine :: FVector4 * From , Engine :: FVector4 * To ) { if( From == NULL || To == NULL ) return FALSE ; if( Engine :: IGameRender :: Get () == NULL ) return FALSE ; if( Engine :: IGameRender :: Get ()-> GetRef () == NULL ) return FALSE ; float CX = static_cast < float >( Engine :: IRender :: Get ()-> ScreenW_1 ) / 2.f ; float CY = static_cast < float >( Engine :: IRender :: Get ()-> ScreenH_1 ) / 2.f ; Engine :: FMatrix ScreenTransform = Engine :: IGameRender :: Get ()-> WorldTransform ; D3DXMATRIX ScreenTransformMatrix ( ScreenTransform . One . x , ScreenTransform . One . y , ScreenTransform . One . z , ScreenTransform . One . w , ScreenTransform . Two . x , ScreenTransform . Two . y , ScreenTransform . Two . z , ScreenTransform . Two . w , ScreenTransform . Three . x , ScreenTransform . Three . y , ScreenTransform . Three . z , ScreenTransform . Three . w , ScreenTransform . Four . x , ScreenTransform . Four . y , ScreenTransform . Four . z , ScreenTransform . Four . w ); // Engine::FVector4 Origin( From->x, From->z, From->y, 1.0f ); Engine :: FVector4 Origin = (* From ); float W = ScreenTransformMatrix . m [ 0 ][ 3 ] * Origin . x + ScreenTransformMatrix . m [ 1 ][ 3 ] * Origin . y + ScreenTransformMatrix . m [ 2 ][ 3 ] * Origin . z + ScreenTransformMatrix . m [ 3 ][ 3 ]; if( W < 0.0001f ) { To -> z = W ; return FALSE ; } float X = ScreenTransformMatrix . m [ 0 ][ 0 ] * Origin . x + ScreenTransformMatrix . m [ 1 ][ 0 ] * Origin . y + ScreenTransformMatrix . m [ 2 ][ 0 ] * Origin . z + ScreenTransformMatrix . m [ 3 ][ 0 ]; float Y = ScreenTransformMatrix . m [ 0 ][ 1 ] * Origin . x + ScreenTransformMatrix . m [ 1 ][ 1 ] * Origin . y + ScreenTransformMatrix . m [ 2 ][ 1 ] * Origin . z + ScreenTransformMatrix . m [ 3 ][ 1 ]; To -> x = CX + CX * X / W ; To -> y = CY - CY * Y / W ; To -> z = W ; return TRUE ; }
tested on wide, works, etc, credit mattdog (DOGMATT!)
Last edited by s0beit; 03-18-2010 at 01:40 PM .
s0beit is offline
03-18-2010, 04:59 PM
#16 Super l337 Join Date: Mar 2010
Posts: 214
Reputation: 17317 Rep Power: 200
Points: 10,948, Level: 12
Last Achievements PHP Code:
typedef struct MATRIX { union { struct { float _11 , _12 , _13 , _14 ; float _21 , _22 , _23 , _24 ; float _31 , _32 , _33 , _34 ; float _41 , _42 , _43 , _44 ; }; struct { float M00 , M01 , M02 , M03 ; float M10 , M11 , M12 , M13 ; float M20 , M21 , M22 , M23 ; float M30 , M31 , M32 , M33 ; }; float m [ 4 ][ 4 ]; float mm [ 16 ]; }; inline friend Vector operator * (const MATRIX & m , const Vector & v ) { return Vector ( m . M00 * v . x + m . M01 * v . y + m . M02 * v . z , m . M10 * v . x + m . M11 * v . y + m . M12 * v . z , m . M20 * v . x + m . M21 * v . y + m . M22 * v . z ); } inline void SetIdentity () { M00 = 1 ; M01 = 0 ; M02 = 0 ; M03 = 0 ; M10 = 0 ; M11 = 1 ; M12 = 0 ; M13 = 0 ; M20 = 0 ; M21 = 0 ; M22 = 1 ; M23 = 0 ; M30 = 0 ; M31 = 0 ; M32 = 0 ; M33 = 1 ; } inline float * operator [] ( int index ) { return & mm [ index * 4 ]; } inline const float * operator [] ( int index ) const { return & mm [ index * 4 ]; } } _MATRIX ;
now need to find weapon data
like bullet speed / dmg & player bones
Last edited by dogmatt; 03-18-2010 at 05:04 PM .
dogmatt is online now
03-18-2010, 07:30 PM
#17 Level 3
Threadstarter Join Date: Dec 2006
Posts: 436
Reputation: 8917 Rep Power: 159
Quote:
Originally Posted by
s0beit dogmatt: i is your _MATRIX struct reversed in a sense as well? or is that "stock",
i tried it your way, didn't seem to work completely for me.
Z ended up being a screen value, Y looked something like Z and X was 0 all the time, lol.
if not, ill probably figure this out eventually on my own, thanks for your contributions
edit: solved, i didnt have to fux with the origin like you did
good job kind sir
Final product:
PHP Code:
BOOL CBFBC2Engine:: WorldToScreen ( Engine :: FVector4 * From , Engine :: FVector4 * To ) { if( From == NULL || To == NULL ) return FALSE ; if( Engine :: IGameRender :: Get () == NULL ) return FALSE ; if( Engine :: IGameRender :: Get ()-> GetRef () == NULL ) return FALSE ; float CX = static_cast < float >( Engine :: IRender :: Get ()-> ScreenW_1 ) / 2.f ; float CY = static_cast < float >( Engine :: IRender :: Get ()-> ScreenH_1 ) / 2.f ; Engine :: FMatrix ScreenTransform = Engine :: IGameRender :: Get ()-> WorldTransform ; D3DXMATRIX ScreenTransformMatrix ( ScreenTransform . One . x , ScreenTransform . One . y , ScreenTransform . One . z , ScreenTransform . One . w , ScreenTransform . Two . x , ScreenTransform . Two . y , ScreenTransform . Two . z , ScreenTransform . Two . w , ScreenTransform . Three . x , ScreenTransform . Three . y , ScreenTransform . Three . z , ScreenTransform . Three . w , ScreenTransform . Four . x , ScreenTransform . Four . y , ScreenTransform . Four . z , ScreenTransform . Four . w ); // Engine::FVector4 Origin( From->x, From->z, From->y, 1.0f ); Engine :: FVector4 Origin = (* From ); float W = ScreenTransformMatrix . m [ 0 ][ 3 ] * Origin . x + ScreenTransformMatrix . m [ 1 ][ 3 ] * Origin . y + ScreenTransformMatrix . m [ 2 ][ 3 ] * Origin . z + ScreenTransformMatrix . m [ 3 ][ 3 ]; if( W < 0.0001f ) { To -> z = W ; return FALSE ; } float X = ScreenTransformMatrix . m [ 0 ][ 0 ] * Origin . x + ScreenTransformMatrix . m [ 1 ][ 0 ] * Origin . y + ScreenTransformMatrix . m [ 2 ][ 0 ] * Origin . z + ScreenTransformMatrix . m [ 3 ][ 0 ]; float Y = ScreenTransformMatrix . m [ 0 ][ 1 ] * Origin . x + ScreenTransformMatrix . m [ 1 ][ 1 ] * Origin . y + ScreenTransformMatrix . m [ 2 ][ 1 ] * Origin . z + ScreenTransformMatrix . m [ 3 ][ 1 ]; To -> x = CX + CX * X / W ; To -> y = CY - CY * Y / W ; To -> z = W ; return TRUE ; }
tested on wide, works, etc, credit mattdog (DOGMATT!)
@s0biet - Can't give you any more rep my man....So a "GJ!" will have to do.
@dogmatt - +1 internets!
silverfish is online now
03-18-2010, 07:36 PM
#18 Join Date: Dec 2009
Posts: 348
Reputation: 2788 Rep Power: 59
Last Achievements I would say esp is kind of useless in this game as most of the maps are wide open and you can see the enemy from the distance anyway.
Anddos is online now
03-18-2010, 07:47 PM
#19 Follow me children
Join Date: Aug 2003
Posts: 3,255
Reputation: 42353 Rep Power: 591
Quote:
Originally Posted by
Anddos I would say esp is kind of useless in this game as most of the maps are wide open and you can see the enemy from the distance anyway.
lol ur fucking retarded. I don't understand how an esp would be useless in any way at all. It easier to see something inside a damn red box then nothing at all last time i checked.
__________________ Nigga who is UH. IPancakes.
Jesus. is offline
03-18-2010, 07:57 PM
#20 Join Date: Dec 2009
Posts: 348
Reputation: 2788 Rep Power: 59
Last Achievements well i can see the enemys clear enough in the distance without using an esp altho it might come in handy when there aproaching behind tree's and stuff
, i am not saying its a bad idea just only needed on certain points of the map.
Anddos is online now
Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
All times are GMT +1. The time now is 12:45 PM .