void CC_CreatePlayerBall(const CCommand &args) { if (!SDKGameRules()->IsIntermissionState() || SDKGameRules()->IsCeremony()) return; CSDKPlayer *pPl = ToSDKPlayer(UTIL_GetCommandClient()); if (!CSDKPlayer::IsOnField(pPl)) return; if (pPl->GetFlags() & FL_REMOTECONTROLLED) return; trace_t tr; CTraceFilterSkipTwoEntities traceFilter(pPl, pPl->GetPlayerBall(), COLLISION_GROUP_NONE); UTIL_TraceHull( pPl->GetLocalOrigin() + VEC_VIEW, pPl->GetLocalOrigin() + VEC_VIEW + pPl->EyeDirection3D() * 150, -Vector(BALL_PHYS_RADIUS, BALL_PHYS_RADIUS, BALL_PHYS_RADIUS), Vector(BALL_PHYS_RADIUS, BALL_PHYS_RADIUS, BALL_PHYS_RADIUS), MASK_SOLID, &traceFilter, &tr); Vector pos = tr.endpos; if (pPl->GetPlayerBall()) { if (pPl->GetPlayerBall()->GetHoldingPlayer()) { //pPl->GetPlayerBall()->RemoveFromPlayerHands(pPl->GetPlayerBall()->GetHoldingPlayer()); pPl->GetPlayerBall()->State_Transition(BALL_STATE_NORMAL); } if (sv_ball_update_physics.GetBool()) pPl->GetPlayerBall()->CreateVPhysics(); pPl->GetPlayerBall()->SetPos(pos, false); pPl->GetPlayerBall()->RemoveAllTouches(); } else pPl->SetPlayerBall(CreatePlayerBall(pos, pPl)); //pPl->GetPlayerBall()->m_nSkin = pPl->GetPlayerBallSkin() == -1 ? g_IOSRand.RandomInt(0, BALL_SKIN_COUNT - 1) : pPl->GetPlayerBallSkin(); pPl->GetPlayerBall()->SetSkinName(pPl->GetPlayerBallSkinName()); pPl->GetPlayerBall()->SetBallCannonMode(false); pPl->GetPlayerBall()->SaveBallCannonSettings(); pPl->m_Shared.SetStamina(100); }