コード例 #1
0
ファイル: ZSurvival.cpp プロジェクト: MagistrAVSH/node3d
bool ZSurvival::OnPeerNPCAttackRange(MCommand* pCommand)
{
	MUID uidOwner;
	pCommand->GetParameter(&uidOwner,	0, MPT_UID);

	MCommandParameter* pParam = pCommand->GetParameter(1);
	if(pParam->GetType()!=MPT_BLOB) return false;	// 문제가 있다

	ZPACKEDSHOTINFO *pinfo =(ZPACKEDSHOTINFO*)pParam->GetPointer();
	rvector pos = rvector(pinfo->posx,pinfo->posy,pinfo->posz);
	rvector to = rvector(pinfo->tox,pinfo->toy,pinfo->toz);


	// rocket 테스트로 넣어봤다.
	ZObject* pOwner = ZGetGame()->m_ObjectManager.GetObject(uidOwner);
	MMatchItemDesc* pDesc = NULL;

	if(pOwner==NULL) return false; // 보통 치트키를 쓸경우...

	if( pOwner->GetItems() )
		if( pOwner->GetItems()->GetSelectedWeapon() )
			pDesc = pOwner->GetItems()->GetSelectedWeapon()->GetDesc();
	if (pDesc)
	{
		if (pDesc->m_nWeaponType.Ref() == MWT_ROCKET)
		{
			rvector dir = to - pos;
			Normalize(dir);
			ZGetGame()->m_WeaponManager.AddRocket(pos,dir,pOwner);
			ZApplication::GetSoundEngine()->PlaySEFire(pDesc, pos.x, pos.y, pos.z, false);

			return true;
		}
		else if (pDesc->m_nWeaponType.Ref() == MWT_SKILL)
		{
			rvector dir = to - pos;
			Normalize(dir);

			ZSkill skill;
			skill.Init(pDesc->m_nGadgetID.Ref(), pOwner);

			ZApplication::GetSoundEngine()->PlaySEFire(pDesc, pos.x, pos.y, pos.z, false);

			ZGetGame()->m_WeaponManager.AddMagic(&skill, pos, dir, pOwner);
			return true;
		}

	}
	else
		return false;

	ZGetGame()->OnPeerShot_Range((MMatchCharItemParts)pinfo->sel_type,uidOwner,ZGetGame()->GetTime(),pos,to);
	

	return true;
}
コード例 #2
0
// 초기화 할때 저항치를 계산해 둔다
void ZModule_Resistance::InitStatus()
{
	m_nFR = 0;
	m_nCR = 0;
	m_nPR = 0;
	m_nLR = 0;

	// 캐릭터가 아니라면 적절한방법으로 구해놓는다
	ZObject *pThisObj = MStaticCast(ZObject,m_pContainer);
	ZCharacterItem *pItems = pThisObj->GetItems();
	for(int i=0;i<MMCIP_END;i++)
	{
		ZItem *pItem = pItems->GetItem((CCMatchCharItemParts)i);
		if(pItem) {
			CCMatchItemDesc *pDesc = pItem->GetDesc();
			if(pDesc) {
				m_nFR += pDesc->m_nFR.Ref();
				m_nCR += pDesc->m_nCR.Ref();
				m_nLR += pDesc->m_nLR.Ref();
				m_nPR += pDesc->m_nPR.Ref();
			}
		}
	}

	m_nFR = max(min(m_nFR,100),0);
	m_nCR = max(min(m_nCR,100),0);
	m_nPR = max(min(m_nPR,100),0);
	m_nLR = max(min(m_nLR,100),0);
}