protected void DoTrigger(int nLogicCount, int nTargetCount, int[] paTargetIDs) { SetLogicCount(nLogicCount); if (GetSpecialObjData() != null && GetSpecialObjData().m_lpszEffect_Active != null && GetSpecialObjData().m_lpszEffect_Active.Length > 0) { CObject_Effect pEffectObj = (CObject_Effect)(CObjectManager.Instance.NewEffect(-1)); if (pEffectObj != null) { SObject_EffectInit initEffect = new SObject_EffectInit(); initEffect.m_fvPos = GetPosition(); initEffect.m_fvRot = new UnityEngine.Vector3(0.0f, 0.0f, 0.0f); initEffect.m_pszEffectName = GetSpecialObjData().m_lpszEffect_Active; initEffect.m_bLoopEffect = false; pEffectObj.Initial(initEffect); } } // 有子弹 if (GetSpecialObjData() != null && GetSpecialObjData().m_nBulletID != MacroDefine.INVALID_ID) { SObject_BulletInit initBullet = new SObject_BulletInit(); initBullet.m_fvPos = GetPosition(); UnityEngine.Vector3 fvRot = UnityEngine.Vector3.zero; fvRot.y = GetFaceDir(); initBullet.m_fvRot = fvRot; initBullet.m_idSend = (uint)ServerID; initBullet.m_nSendLogicCount = GetLogicCount(); initBullet.m_nBulletID = m_pSpecialObjData.m_nBulletID; initBullet.m_bSingleTarget = true; initBullet.m_fvTargetPos = new UnityEngine.Vector3(-1.0f, -1.0f, -1.0f); for (int i = 0; i < nTargetCount; i++) { initBullet.m_idTarget = paTargetIDs[i]; CObject_Bullet pBullet = (CObject_Bullet)CObjectManager.Instance.NewBullet(-1); pBullet.Initial(initBullet); } } else { CObject_Character pCharacter = null; for (int i = 0; i < nTargetCount; i++) { int idCharacter = paTargetIDs[i]; pCharacter = (CObject_Character)(CObjectManager.Instance.FindServerObject(idCharacter)); if (pCharacter != null) { pCharacter.ShowLogicEvent(ServerID, nLogicCount, true); } } } }
public override void Initial(object pInit) { SObject_EffectInit pEffectInit = (SObject_EffectInit)(pInit); if (pEffectInit != null) { if (pEffectInit.m_pszEffectName.Length != 0) { ChangEffect(pEffectInit.m_pszEffectName, pEffectInit.m_bLoopEffect); } } m_fEffectTime = 0; base.Initial(pInit); }
private void DoLogicEvent_Damage(_LOGIC_EVENT pLogicEvent) { _DAMAGE_INFO pDamageInfo = pLogicEvent.m_damage; switch (pDamageInfo.m_nType) { case _DAMAGE_INFO.DAMAGETYPE.TYPE_INVALID: break; case _DAMAGE_INFO.DAMAGETYPE.TYPE_EFFECT: { LogManager.Log("_DAMAGE_INFO.DAMAGETYPE.TYPE_EFFECT " + m_Character.ServerID); if (pDamageInfo.m_nImpactID != MacroDefine.INVALID_ID) { _DBC_DIRECT_IMPACT pDirectImpact = CDirectlyImpactMgr.Instance.GetDirectlyImpact((uint)pDamageInfo.m_nImpactID); if (pDirectImpact != null) { Vector3 fvPos = new Vector3(); if (m_Character.GetRenderInterface() != null && pDirectImpact.m_pszEffectLocator.Length != 0) { m_Character.GetRenderInterface().GetLocator(pDirectImpact.m_pszEffectLocator, ref fvPos); } else { fvPos = m_Character.GetPosition(); } if (pDirectImpact.m_pszEffect.Length > 0) { CObject_Effect pObjEffect = CObjectManager.Instance.NewEffect(-1); if (pObjEffect != null) { SObject_EffectInit initEffect = new SObject_EffectInit(); initEffect.m_fvPos = fvPos; initEffect.m_fvRot = new Vector3(0.0f, 0.0f, 0.0f); initEffect.m_pszEffectName = pDirectImpact.m_pszEffect; initEffect.m_bLoopEffect = false; pObjEffect.Initial(initEffect); } } if (pDirectImpact.m_pszSound.Length > 0) { fvPos = m_Character.GetPosition(); // Vector3 fvGame = new Vector3(); //if(!CGameProcedure::s_pGfxSystem.Axis_Trans(CRenderSystem::AX_GAME, fvPos, // CRenderSystem::AX_GFX, fvGame)) //{ // return; //} //CSoundSystemFMod::_PlaySoundFunc( pDirectlyImpact.m_pszSound, &fvGame.x, false ); } } } } break; case _DAMAGE_INFO.DAMAGETYPE.TYPE_HEAL_AND_DAMAGE: { LogManager.Log("_DAMAGE_INFO.DAMAGETYPE.TYPE_HEAL_AND_DAMAGE " + this.m_Character.ServerID + " pDamageInfo.m_nHealthIncrement " + pDamageInfo.m_nHealthIncrement); if (pDamageInfo.m_nHealthIncrement < 0) { this.m_Character.SetFightState(true); LogManager.Log("pDamageInfo.m_nHealthIncrement " + this.m_Character.ServerID + " CharacterLogic_Get " + m_Character.CharacterLogic_Get()); if (m_Character.CharacterLogic_Get() == ENUM_CHARACTER_LOGIC.CHARACTER_LOGIC_IDLE) { LogManager.Log("pDamageInfo.BASE_ACTION_F_BE_HIT " + this.m_Character.ServerID); m_Character.ChangeAction((int)ENUM_BASE_ACTION.BASE_ACTION_F_BE_HIT, 1.0f, false, CObject_Character.sDefaultActionFuseTime); } } // 显示伤血信息 DisplayDamageBoard(pDamageInfo); } break; case _DAMAGE_INFO.DAMAGETYPE.TYPE_DROP_BOX: { uint ObjID = (uint)pDamageInfo.m_aAttachedParams[0]; int idOwner = pDamageInfo.m_aAttachedParams[1]; float fX = pDamageInfo.m_aAttachedParams[2] / 1000.0f; float fZ = pDamageInfo.m_aAttachedParams[3] / 1000.0f; //创建ItemBox CTripperObject_ItemBox pBox = CObjectManager.Instance.NewTripperItemBox((int)ObjID); pBox.Initial(null); //设置位置 pBox.SetMapPosition(fX, fZ); //设置掉落箱的归属 pBox.SetOwnerGUID((uint)idOwner); } break; case _DAMAGE_INFO.DAMAGETYPE.TYPE_SKILL_TEXT: { // 显示未击中和免疫信息 DisplayMissImmuAndSoOn(pDamageInfo); } break; case _DAMAGE_INFO.DAMAGETYPE.TYPE_DIE: { m_Character.OnDead(true); } break; default: break; } }