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; }
// 초기화 할때 저항치를 계산해 둔다 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); }