/* ============== CL_FinishMove ============== */ void CL_FinishMove (usercmd_t *cmd) { int i; int ms; // // allways dump the first two message, because it may contain leftover inputs // from the last level // if (++cl.movemessages <= 2) return; // // figure button bits // if ( in_attack.state & 3 ) cmd->buttons |= 1; in_attack.state &= ~2; if (in_jump.state & 3) cmd->buttons |= 2; in_jump.state &= ~2; if (in_crouch.state & 1) cmd->buttons |= 4; // send milliseconds of time to apply the move ms = host_frametime * 1000; if (ms > 250) ms = 100; // time was unreasonable cmd->msec = ms; VectorCopy (cl.viewangles, cmd->angles); cmd->impulse = in_impulse; in_impulse = 0; // // chop down so no extra bits are kept that the server wouldn't get // if ((int)cl.v.artifact_active & ARTFLAG_FROZEN) { cmd->forwardmove = 0; cmd->sidemove = 0; cmd->upmove = 0; } else { cmd->forwardmove = MakeChar (cmd->forwardmove); cmd->sidemove = MakeChar (cmd->sidemove); cmd->upmove = MakeChar (cmd->upmove); } for (i=0 ; i<3 ; i++) cmd->angles[i] = ((int)(cmd->angles[i]*65536.0/360)&65535) * (360.0/65536.0); }
void Misc::Make8Bit(char *pSrc, char *pDest, int length) { int byteLen = length / 2; int srcIndex = 0; for (int i=0; i<byteLen; ++i) { char c1 = pSrc[srcIndex++]; char c2 = pSrc[srcIndex++]; pDest[i] = MakeChar(c1, c2); } }
void CL_FinishMove (usercmd_t *cmd) { int i, ms; float frametime; static double extramsec = 0; extern cvar_t allow_scripts; if (Movie_IsCapturing() && movie_steadycam.value) frametime = movie_fps.value > 0 ? 1.0 / movie_fps.value : 1 / 30.0; else frametime = cls.trueframetime; // figure button bits if ( in_attack.state & 3 ) cmd->buttons |= 1; in_attack.state &= ~2; if (in_jump.state & 3) cmd->buttons |= 2; in_jump.state &= ~2; if (in_use.state & 3) cmd->buttons |= 4; in_use.state &= ~2; if (in_attack2.state & 3) cmd->buttons |= 8; in_attack2.state &= ~2; // send milliseconds of time to apply the move //#fps extramsec += cls.frametime * 1000; extramsec += (cl_independentPhysics.value == 0 ? frametime : physframetime) * 1000; //#fps ms = extramsec; extramsec -= ms; if (ms > 250) ms = 100; // time was unreasonable cmd->msec = ms; VectorCopy (cl.viewangles, cmd->angles); // shaman RFE 1030281 { // KTPro's KFJump == impulse 156 // KTPro's KRJump == impulse 164 if ( *Info_ValueForKey(cl.serverinfo, "kmod") && ( ((in_impulse == 156) && (cl.fpd & FPD_LIMIT_YAW || allow_scripts.value < 2)) || ((in_impulse == 164) && (cl.fpd & FPD_LIMIT_PITCH || allow_scripts.value == 0)) ) ) { cmd->impulse = 0; } else { cmd->impulse = in_impulse; } // } shaman RFE 1030281 in_impulse = 0; // chop down so no extra bits are kept that the server wouldn't get cmd->forwardmove = MakeChar (cmd->forwardmove); cmd->sidemove = MakeChar (cmd->sidemove); cmd->upmove = MakeChar (cmd->upmove); for (i = 0; i < 3; i++) cmd->angles[i] = (Q_rint(cmd->angles[i] * 65536.0 / 360.0) & 65535) * (360.0 / 65536.0); }