//QUAKEGUN BY LANCEVORGIN
float GetGunOffset(cl_entity_s* vm){
if(!vm->model)
return 0;
char* gunname = vm->model->name;
if(!gunname || !gunname[0])
return 0;
gunname += 9;
#define CHECKGUNOFFSET(a,b) if(!strcmp(a,gunname)) return b;
CHECKGUNOFFSET("glock18.mdl", -4.55f);
CHECKGUNOFFSET("usp.mdl", -4.64f);
CHECKGUNOFFSET("p228.mdl", -4.65f);
CHECKGUNOFFSET("deagle.mdl", -4.71f);
CHECKGUNOFFSET("fiveseven.mdl", -4.84f);
CHECKGUNOFFSET("m3.mdl", -5.03f);
CHECKGUNOFFSET("xm1014.mdl", -5.82f);
CHECKGUNOFFSET("mac10.mdl", -5.05f);
CHECKGUNOFFSET("tmp.mdl", -6.47f);
CHECKGUNOFFSET("mp5.mdl", -5.53f);
CHECKGUNOFFSET("ump45.mdl", -6.07f);
CHECKGUNOFFSET("p90.mdl", -4.32f);
CHECKGUNOFFSET("scout.mdl", -5.14f);
CHECKGUNOFFSET("awp.mdl", -6.02f);
CHECKGUNOFFSET("famas.mdl", -4.84f);
//CHECKGUNOFFSET("aug.mdl", -6.22f);
//CHECKGUNOFFSET("m4a1.mdl", -6.74f);
CHECKGUNOFFSET("sg550.mdl", -7.11f);
CHECKGUNOFFSET("ak47.mdl", -6.79f);
CHECKGUNOFFSET("g3sg1.mdl", -6.19f);
CHECKGUNOFFSET("sg552.mdl", -5.27f);
CHECKGUNOFFSET("galil.mdl", -4.78f);
CHECKGUNOFFSET("m249.mdl", -5.13f);
return 0;
}
void QuakeGuns(){
cl_entity_s* vm = gEngfuncs.GetViewModel();
if(!vm)
return;
float gunoffsetr = GetGunOffset(vm);
if(gunoffsetr == 0)
return;
float* org = vm->origin;
float* ang = vm->angles;
VectorCopy(mainViewAngles, ang);
vec3_t forward, right, up;
gEngfuncs.pfnAngleVectors(mainViewAngles, forward, right, up);
org[0] += forward[0] + up[0] + right[0]*gunoffsetr;
org[1] += forward[1] + up[1] + right[1]*gunoffsetr;
org[2] += forward[2] + up[2] + right[2]*gunoffsetr;
}
Posted: Mon Jul 26, 2004 11:00 pm Post subject: QUAKEGUNS C+P
--------------------------------------------------------------------------------
OK this is very easy to do. The quake guns look very nice in CS.
Anywhere in your client.cpp put this Code:
//QUAKEGUN BY LANCEVORGIN
float GetGunOffset(cl_entity_s* vm){
if(!vm->model)
return 0;
char* gunname = vm->model->name;
if(!gunname || !gunname[0])
return 0;
gunname += 9;
#define CHECKGUNOFFSET(a,b) if(!strcmp(a,gunname)) return b;
CHECKGUNOFFSET("glock18.mdl", -4.55f);
CHECKGUNOFFSET("usp.mdl", -4.64f);
CHECKGUNOFFSET("p228.mdl", -4.65f);
CHECKGUNOFFSET("deagle.mdl", -4.71f);
CHECKGUNOFFSET("fiveseven.mdl", -4.84f);
CHECKGUNOFFSET("m3.mdl", -5.03f);
CHECKGUNOFFSET("xm1014.mdl", -5.82f);
CHECKGUNOFFSET("mac10.mdl", -5.05f);
CHECKGUNOFFSET("tmp.mdl", -6.47f);
CHECKGUNOFFSET("mp5.mdl", -5.53f);
CHECKGUNOFFSET("ump45.mdl", -6.07f);
CHECKGUNOFFSET("p90.mdl", -4.32f);
CHECKGUNOFFSET("scout.mdl", -5.14f);
CHECKGUNOFFSET("awp.mdl", -6.02f);
CHECKGUNOFFSET("famas.mdl", -4.84f);
//CHECKGUNOFFSET("aug.mdl", -6.22f);
//CHECKGUNOFFSET("m4a1.mdl", -6.74f);
CHECKGUNOFFSET("sg550.mdl", -7.11f);
CHECKGUNOFFSET("ak47.mdl", -6.79f);
CHECKGUNOFFSET("g3sg1.mdl", -6.19f);
CHECKGUNOFFSET("sg552.mdl", -5.27f);
CHECKGUNOFFSET("galil.mdl", -4.78f);
CHECKGUNOFFSET("m249.mdl", -5.13f);
return 0;
}
void QuakeGuns(){
cl_entity_s* vm = gEngfuncs.GetViewModel();
if(!vm)
return;
float gunoffsetr = GetGunOffset(vm);
if(gunoffsetr == 0)
return;
float* org = vm->origin;
float* ang = vm->angles;
VectorCopy(mainViewAngles, ang);
vec3_t forward, right, up;
gEngfuncs.pfnAngleVectors(mainViewAngles, forward, right, up);
org[0] += forward[0] + up[0] + right[0]*gunoffsetr;
org[1] += forward[1] + up[1] + right[1]*gunoffsetr;
org[2] += forward[2] + up[2] + right[2]*gunoffsetr;
}
Then my very first line in void PostV_CalcRefdef (struct ref_params_s *pparams) is :
Code:
QuakeGuns();
if (cvar.quake_guns) { QuakeGuns(); }