コード例 #1
0
void game_cl_Deathmatch::OnSpawn(CObject* pObj)
{
	inherited::OnSpawn(pObj);
	if (!pObj) return;
	CActor* pActor = smart_cast<CActor*>(pObj);
	if (pActor)
	{
		if (xr_strlen(Actor_Spawn_Effect))
			PlayParticleEffect(Actor_Spawn_Effect.c_str(), pObj->Position());
		game_PlayerState *ps = GetPlayerByGameID(pActor->ID());
		
		if (ps && m_reward_generator)
		{
			m_reward_generator->OnPlayerSpawned(ps);
			m_reward_generator->init_bone_groups(pActor);
		}
	};
	if (smart_cast<CWeapon*>(pObj))
	{
		if (pObj->H_Parent())
		{
			game_PlayerState *ps = GetPlayerByGameID(pObj->H_Parent()->ID());
			if (ps)
			{
				m_WeaponUsageStatistic->OnWeaponBought(ps, pObj->cNameSect().c_str());
			}
		}
	}
}
コード例 #2
0
void game_cl_ArtefactHunt::OnSpawn(CObject* pObj)
{
	inherited::OnSpawn(pObj);
	if (!pObj) return;
	CArtefact* pArtefact = smart_cast<CArtefact*>(pObj);
	if (pArtefact)
	{
		if (xr_strlen(m_Eff_Af_Spawn))
			PlayParticleEffect(m_Eff_Af_Spawn.c_str(), pObj->Position());
	};	
}
コード例 #3
0
ファイル: game_cl_deathmatch.cpp プロジェクト: 2asoft/xray
void game_cl_Deathmatch::OnSpawn(CObject* pObj)
{
	inherited::OnSpawn(pObj);
	if (!pObj) return;
	if (smart_cast<CActor*>(pObj))
	{
		if (xr_strlen(Actor_Spawn_Effect))
			PlayParticleEffect(Actor_Spawn_Effect.c_str(), pObj->Position());
	};
	if (smart_cast<CWeapon*>(pObj))
	{
		if (pObj->H_Parent())
		{
			game_PlayerState *ps = GetPlayerByGameID(pObj->H_Parent()->ID());
			if (ps)
			{
				m_WeaponUsageStatistic->OnWeaponBought(ps, pObj->cNameSect().c_str());
			}
		}
	}
}
コード例 #4
0
void game_cl_ArtefactHunt::TranslateGameMessage	(u32 msg, NET_Packet& P)
{
	CStringTable st;
	string512 Text;
	string512 tmp;
//	LPSTR	Color_Teams[3]		= {"%c[255,255,255,255]", "%c[255,64,255,64]", "%c[255,64,64,255]"};
	char	Color_Main[]		= "%c[255,192,192,192]";
	char	Color_Artefact[]	= "%c[255,255,255,0]";
//	LPSTR	TeamsNames[3]		= {"Zero Team", "Team Green", "Team Blue"};

	switch(msg)	{
//-------------------UI MESSAGES
	case GAME_EVENT_ARTEFACT_TAKEN: //ahunt
		{
			u16 PlayerID, Team;
			P.r_u16 (PlayerID);
			P.r_u16 (Team);

			game_PlayerState* pPlayer = GetPlayerByGameID(PlayerID);
			if (!pPlayer) break;

			if (m_reward_generator)
				m_reward_generator->OnPlayerTakeArtefact(pPlayer);

			xr_sprintf(tmp, "%s%s", "%s%s %s", *st.translate("mp_has_tak_art"));

			xr_sprintf(Text, tmp, 
				CTeamInfo::GetTeam_color_tag(int(Team)), 
				pPlayer->getName(), 
				Color_Main,
				Color_Artefact);
			
			if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text);

			if (!Game().local_player) break;
			if (Game().local_player->GameID == PlayerID)
				PlaySndMessage(ID_AF_TEAM1_TAKE + ModifyTeam(Game().local_player->team));
			else
				if (Game().local_player->team == Team)
					PlaySndMessage(ID_AF_TEAM1_TAKE_R + ModifyTeam(Game().local_player->team));
				else
					PlaySndMessage(ID_AF_TEAM1_TAKE_ENEMY + ModifyTeam(Game().local_player->team));
		}break;
	case GAME_EVENT_ARTEFACT_DROPPED: //ahunt
		{
			u16 PlayerID, Team;
			P.r_u16 (PlayerID);
			P.r_u16 (Team);

			game_PlayerState* pPlayer = GetPlayerByGameID(PlayerID);
			if (!pPlayer) break;
			
			if (m_reward_generator)
				m_reward_generator->OnPlayerDropArtefact(pPlayer);

            xr_sprintf(tmp, "%s%s", "%s%s %s", *st.translate("mp_has_drop_art"));

			xr_sprintf(Text, tmp, 
				CTeamInfo::GetTeam_color_tag(int(Team)), 
				pPlayer->getName(), 
				Color_Main,
				Color_Artefact);
			if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text);

//			pMessageSounds[0].play_at_pos(NULL, Fvector().set(0,0,0), sm_2D, 0);
			PlaySndMessage(ID_AF_LOST);
		}break;
	case GAME_EVENT_ARTEFACT_ONBASE: //ahunt
		{
			u16 PlayerID, Team;
			P.r_u16 (PlayerID);
			P.r_u16 (Team);

			game_PlayerState* pPlayer = GetPlayerByGameID(PlayerID);
			if (!pPlayer) break;

			if (m_reward_generator)
				m_reward_generator->OnPlayerBringArtefact(pPlayer);

			xr_sprintf(tmp, "%s%s", "%s%s %s", *st.translate("mp_scores"));

			xr_sprintf(Text, tmp, 
				CTeamInfo::GetTeam_color_tag(int(Team)), 
				CTeamInfo::GetTeam_name(int(Team)),
				Color_Main);
			if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text);
			
			if (!Game().local_player) break;
			if (Game().local_player->GameID == PlayerID)
				PlaySndMessage(ID_AF_TEAM1_ONBASE + ModifyTeam(Game().local_player->team));
			else
				if (Game().local_player->team == Team)
					PlaySndMessage(ID_AF_TEAM1_ONBASE_R + ModifyTeam(Game().local_player->team));
				else
					PlaySndMessage(ID_AF_TEAM1_ONBASE_ENEMY + ModifyTeam(Game().local_player->team));
		}break;
	case GAME_EVENT_ARTEFACT_SPAWNED: //ahunt
		{
			xr_sprintf(Text, "%s%s", 
				Color_Main, *st.translate("mp_art_spowned"));
			if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text);
			if (m_reward_generator)
				m_reward_generator->OnArtefactSpawned();

			PlaySndMessage(ID_NEW_AF);
		}break;
	case GAME_EVENT_ARTEFACT_DESTROYED:  //ahunt
		{
			xr_sprintf(Text, "%s%s", 
				Color_Main, *st.translate("mp_art_destroyed"));
			u16 ArtefactID = P.r_u16();
			//-------------------------------------------
			CObject* pObj = Level().Objects.net_Find(ArtefactID);
			if (pObj && xr_strlen(m_Eff_Af_Disappear))
				PlayParticleEffect(m_Eff_Af_Disappear.c_str(), pObj->Position());
			//-------------------------------------------
			if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text);
		}break;
	default:
		inherited::TranslateGameMessage(msg,P);
	}
}