Weapon prediction changes. Needs more testing, but this will effectively handle all weapon-animation stuff client-side.
This commit is contained in:
parent
e345e8b321
commit
5276d1f8cc
|
@ -183,6 +183,16 @@ void CSQC_UpdateView(float w, float h, float focus)
|
||||||
setproperty(VF_ANGLES, view_angles + pSeat->vPunchAngle);
|
setproperty(VF_ANGLES, view_angles + pSeat->vPunchAngle);
|
||||||
setproperty(VF_DRAWWORLD, 1);
|
setproperty(VF_DRAWWORLD, 1);
|
||||||
renderscene();
|
renderscene();
|
||||||
|
|
||||||
|
pl.w_attack_next -= clframetime;
|
||||||
|
pl.w_idle_next -= clframetime;
|
||||||
|
|
||||||
|
if (pl.w_attack_next <= 0) {
|
||||||
|
pl.w_attack_next = 0;
|
||||||
|
}
|
||||||
|
if (pl.w_idle_next <= 0) {
|
||||||
|
pl.w_idle_next = 0;
|
||||||
|
}
|
||||||
|
|
||||||
View_DropPunchAngle();
|
View_DropPunchAngle();
|
||||||
Fade_Update((int)video_mins[0],(int)video_mins[1], (int)w, (int)h);
|
Fade_Update((int)video_mins[0],(int)video_mins[1], (int)w, (int)h);
|
||||||
|
@ -336,8 +346,6 @@ void CSQC_Input_Frame(void)
|
||||||
if (pSeat->iInputDuck == TRUE) {
|
if (pSeat->iInputDuck == TRUE) {
|
||||||
input_buttons |= INPUT_BUTTON8;
|
input_buttons |= INPUT_BUTTON8;
|
||||||
}
|
}
|
||||||
|
|
||||||
Game_Input();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -601,6 +609,9 @@ void CSQC_WorldLoaded(void)
|
||||||
precache_pic("{bigshot3", TRUE);
|
precache_pic("{bigshot3", TRUE);
|
||||||
precache_pic("{bigshot4", TRUE);
|
precache_pic("{bigshot4", TRUE);
|
||||||
precache_pic("{bigshot5", TRUE);
|
precache_pic("{bigshot5", TRUE);
|
||||||
|
precache_pic("{scorch1", TRUE);
|
||||||
|
precache_pic("{scorch2", TRUE);
|
||||||
|
precache_pic("{scorch3", TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -21,11 +21,6 @@ void Predict_PreFrame(player pl)
|
||||||
pl.netvelocity = pl.velocity;
|
pl.netvelocity = pl.velocity;
|
||||||
pl.netflags = pl.flags;
|
pl.netflags = pl.flags;
|
||||||
|
|
||||||
#ifdef VALVE
|
|
||||||
pl.net_w_attack_next = pl.w_attack_next;
|
|
||||||
pl.net_w_idle_next = pl.w_idle_next;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//self.netpmove_flags = self.pmove_flags;
|
//self.netpmove_flags = self.pmove_flags;
|
||||||
|
|
||||||
//we want to predict an exact copy of the data in the new packet
|
//we want to predict an exact copy of the data in the new packet
|
||||||
|
@ -64,11 +59,6 @@ void Predict_PostFrame(player pl)
|
||||||
pl.velocity = pl.netvelocity;
|
pl.velocity = pl.netvelocity;
|
||||||
pl.flags = pl.netflags;
|
pl.flags = pl.netflags;
|
||||||
|
|
||||||
#ifdef VALVE
|
|
||||||
pl.w_attack_next = pl.net_w_attack_next;
|
|
||||||
pl.w_idle_next = pl.net_w_idle_next;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//self.pmove_flags = self.netpmove_flags;
|
//self.pmove_flags = self.netpmove_flags;
|
||||||
setorigin(pl, pl.origin);
|
setorigin(pl, pl.origin);
|
||||||
//self.pmove_frame = servercommandframe + 1;
|
//self.pmove_frame = servercommandframe + 1;
|
||||||
|
|
|
@ -40,7 +40,7 @@ void Player_ReadEntity(float flIsNew)
|
||||||
pl.a_ammo1 = readbyte();
|
pl.a_ammo1 = readbyte();
|
||||||
pl.a_ammo2 = readbyte();
|
pl.a_ammo2 = readbyte();
|
||||||
pl.a_ammo3 = readbyte();
|
pl.a_ammo3 = readbyte();
|
||||||
pl.w_attack_next = readfloat();
|
//pl.w_attack_next = readfloat();
|
||||||
pl.w_idle_next = readfloat();
|
//pl.w_idle_next = readfloat();
|
||||||
setorigin( pl, pl.origin );
|
setorigin( pl, pl.origin );
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,8 +110,6 @@ void Ammo_AutoFill(float fWeapon);
|
||||||
void Ammo_BuyPrimary(void);
|
void Ammo_BuyPrimary(void);
|
||||||
void Ammo_BuySecondary(void);
|
void Ammo_BuySecondary(void);
|
||||||
|
|
||||||
void Input_Handle( void );
|
|
||||||
|
|
||||||
void Animation_PlayerTop( float fFrame );
|
void Animation_PlayerTop( float fFrame );
|
||||||
void Animation_PlayerTopTemp( float fFrame, float fTime );
|
void Animation_PlayerTopTemp( float fFrame, float fTime );
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Input_Handle
|
||||||
Handles impulse and whatnot
|
Handles impulse and whatnot
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
void Input_Handle(void)
|
void Game_Input(void)
|
||||||
{
|
{
|
||||||
// Dead, specatator
|
// Dead, specatator
|
||||||
if (self.health <= 0) {
|
if (self.health <= 0) {
|
||||||
|
|
|
@ -16,6 +16,7 @@ void TraceAttack_FireBullets( int iShots, vector vPos, int iDamage);
|
||||||
void Damage_Radius( vector vOrigin, entity eAttacker, float fDamage, float fRadius, int iCheckClip );
|
void Damage_Radius( vector vOrigin, entity eAttacker, float fDamage, float fRadius, int iCheckClip );
|
||||||
void Damage_Apply( entity eTarget, entity eAttacker, float fDamage, vector vHitPos, int iSkipArmor );
|
void Damage_Apply( entity eTarget, entity eAttacker, float fDamage, vector vHitPos, int iSkipArmor );
|
||||||
void Client_TriggerCamera( entity eTarget, vector vPos, vector vEndPos, float fResetTime );
|
void Client_TriggerCamera( entity eTarget, vector vPos, vector vEndPos, float fResetTime );
|
||||||
|
void Game_Input(void);
|
||||||
|
|
||||||
entity eActivator;
|
entity eActivator;
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,6 @@ void PutClientInServer(void)
|
||||||
void PlayerPreThink(void)
|
void PlayerPreThink(void)
|
||||||
{
|
{
|
||||||
Game_PlayerPreThink();
|
Game_PlayerPreThink();
|
||||||
Input_Handle();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerPostThink(void)
|
void PlayerPostThink(void)
|
||||||
|
|
|
@ -28,6 +28,16 @@ void Game_PlayerPreThink(void)
|
||||||
}
|
}
|
||||||
void Game_PlayerPostThink(void)
|
void Game_PlayerPostThink(void)
|
||||||
{
|
{
|
||||||
|
player pl = (player)self;
|
||||||
|
pl.w_attack_next -= input_timelength;
|
||||||
|
pl.w_idle_next -= input_timelength;
|
||||||
|
|
||||||
|
if (pl.w_attack_next <= 0) {
|
||||||
|
pl.w_attack_next = 0;
|
||||||
|
}
|
||||||
|
if (pl.w_idle_next <= 0) {
|
||||||
|
pl.w_idle_next = 0;
|
||||||
|
}
|
||||||
self.SendFlags = 1;
|
self.SendFlags = 1;
|
||||||
}
|
}
|
||||||
void Game_RunClientCommand(void)
|
void Game_RunClientCommand(void)
|
||||||
|
|
|
@ -13,7 +13,7 @@ Input_Handle
|
||||||
Handles impulse and whatnot
|
Handles impulse and whatnot
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
void Input_Handle(void)
|
void Game_Input(void)
|
||||||
{
|
{
|
||||||
if (self.button0) {
|
if (self.button0) {
|
||||||
Weapons_Primary();
|
Weapons_Primary();
|
||||||
|
@ -49,6 +49,15 @@ void Input_Handle(void)
|
||||||
Weapons_AddItem(pl, WEAPON_TRIPMINE);
|
Weapons_AddItem(pl, WEAPON_TRIPMINE);
|
||||||
Weapons_AddItem(pl, WEAPON_SNARK);
|
Weapons_AddItem(pl, WEAPON_SNARK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (self.impulse == 102) {
|
||||||
|
// Respawn all the entities
|
||||||
|
for (entity a = world; (a = findfloat(a, gflags, GF_CANRESPAWN));) {
|
||||||
|
CBaseEntity caw = (CBaseEntity)a;
|
||||||
|
caw.Respawn();
|
||||||
|
}
|
||||||
|
bprint(PRINT_HIGH, "Respawning all map entities...\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.impulse = 0;
|
self.impulse = 0;
|
||||||
|
|
|
@ -111,8 +111,8 @@ float Player_SendEntity(entity ePEnt, float fChanged)
|
||||||
WriteByte(MSG_ENTITY, pl.a_ammo1);
|
WriteByte(MSG_ENTITY, pl.a_ammo1);
|
||||||
WriteByte(MSG_ENTITY, pl.a_ammo2);
|
WriteByte(MSG_ENTITY, pl.a_ammo2);
|
||||||
WriteByte(MSG_ENTITY, pl.a_ammo3);
|
WriteByte(MSG_ENTITY, pl.a_ammo3);
|
||||||
WriteFloat(MSG_ENTITY, pl.w_attack_next);
|
//WriteFloat(MSG_ENTITY, pl.w_attack_next);
|
||||||
WriteFloat(MSG_ENTITY, pl.w_idle_next);
|
//WriteFloat(MSG_ENTITY, pl.w_idle_next);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,3 +52,15 @@ void Decals_PlaceBig(vector pos)
|
||||||
decal.nextthink = time /*+ 0.1f*/;
|
decal.nextthink = time /*+ 0.1f*/;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
void Decals_PlaceScorch(vector pos)
|
||||||
|
{
|
||||||
|
#ifdef CSQC
|
||||||
|
// TODO
|
||||||
|
#else
|
||||||
|
entity decal = Decals_Next();
|
||||||
|
setorigin(decal, pos);
|
||||||
|
decal.texture = sprintf("{scorch%d", floor(random(1,3)));
|
||||||
|
decal.think = infodecal;
|
||||||
|
decal.nextthink = time /*+ 0.1f*/;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ void Effect_CreateExplosion( vector vPos ) {
|
||||||
eExplosion.nextthink = time + 0.05f;
|
eExplosion.nextthink = time + 0.05f;
|
||||||
|
|
||||||
te_explosion( vPos );
|
te_explosion( vPos );
|
||||||
|
Decals_PlaceScorch(vPos);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -675,20 +675,10 @@ void PMove_Run(void)
|
||||||
if (input_buttons & INPUT_BUTTON5) {
|
if (input_buttons & INPUT_BUTTON5) {
|
||||||
input_movevalues *= 0.50;
|
input_movevalues *= 0.50;
|
||||||
}
|
}
|
||||||
|
|
||||||
player pl = (player)self;
|
|
||||||
|
|
||||||
pl.w_attack_next -= input_timelength;
|
|
||||||
pl.w_idle_next -= input_timelength;
|
|
||||||
|
|
||||||
if (pl.w_attack_next <= 0) {
|
|
||||||
pl.w_attack_next = 0;
|
|
||||||
}
|
|
||||||
if (pl.w_idle_next <= 0) {
|
|
||||||
pl.w_idle_next = 0;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Game_Input();
|
||||||
|
|
||||||
PMove_WaterMove();
|
PMove_WaterMove();
|
||||||
|
|
||||||
if (self.waterlevel >= 2) {
|
if (self.waterlevel >= 2) {
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
valve/progs.dat
BIN
valve/progs.dat
Binary file not shown.
Loading…
Reference in New Issue