//------------------------------------------------------------------------ void CGameRules::ClientSimpleHit(const SimpleHitInfo &simpleHitInfo) { if (!simpleHitInfo.remote) { if (!gEnv->bServer) GetGameObject()->InvokeRMI(SvRequestSimpleHit(), simpleHitInfo, eRMI_ToServer); else ServerSimpleHit(simpleHitInfo); } }
//------------------------------------------------------------------------ IMPLEMENT_RMI(CGameRules, SvRequestSimpleHit) { int channelId=m_pGameFramework->GetGameChannelId(pNetChannel); IActor *pActor=m_pGameFramework->GetIActorSystem()->GetActorByChannelId(channelId); if(!pActor) return true; // discarding hits that arrived when the client was already dead if (pActor->GetHealth()<=0) return true; ServerSimpleHit(params); return true; }
//------------------------------------------------------------------------ IMPLEMENT_RMI(CGameRules, SvRequestSimpleHit) { ServerSimpleHit(params); return true; }