コード例 #1
0
    public void Deserialize(byte[] data)
    {
        if (null == data)
        {
            return;
        }

        PETools.Serialize.Import(data, (r) =>
        {
            int readVersion = r.ReadInt32();
            if (readVersion != Version)
            {
                return;
            }
            int count = r.ReadInt32();
            if (count > 0)
            {
                hasEffect = true;
                while (count-- > 0)
                {
                    SkEntity.MountBuff(m_Entity.skEntity, r.ReadInt32(), null, null);
                }
            }
        });
        m_bReqApplyEff = true;
    }
コード例 #2
0
        void OnTriggerEnter(Collider other)
        {
            if (0 != (attackLayer.value & (1 << other.gameObject.layer)))
            {
                SkEntity hitEntity = other.gameObject.GetComponentInParent <SkEntity>();

                if (null == hitEntity || hitEntity == m_SkEntity)
                {
                    return;
                }

                PEDefenceTrigger hitTrigger = other.GetComponent <PEDefenceTrigger>();
                if (null != hitTrigger)
                {
                    if (!m_HitTriggers.Contains(hitTrigger) &&
                        !m_EffectedTriggers.Contains(hitTrigger))
                    {
                        if (CheckHit(hitTrigger))
                        {
                            m_EffectedTriggers.Add(hitTrigger);
                        }
                        else
                        {
                            m_HitTriggers.Add(hitTrigger);
                        }
                    }
                }
                else
                {
                    OnHitCollider(other);
                }
            }
        }
コード例 #3
0
    static void SetHarm(PeEntity entity)                                    //王哥的怪物生成事件触发
    {
        SkEntity skEntity = entity.aliveEntity;

        if (skEntity == null)
        {
            return;
        }
        int protoID    = entity.entityProto.protoId;
        int fixSpawnID = 0;

        foreach (int item in AISpawnPoint.s_spawnPointData.Keys)
        {
            if (SceneEntityCreatorArchiver.Instance.GetEntityByFixedSpId(item) == entity)
            {
                fixSpawnID = item;
                break;
            }
        }
        if (entityHarmRecord.Contains(protoID))
        {
            SkEntity.MountBuff(skEntity, 30200102, new List <int>(), new List <float>());
        }
        if (fixSpawnID == 0)
        {
            return;
        }
        if (entityHarmRecord.Contains(fixMonsBase + fixSpawnID))
        {
            SkEntity.MountBuff(skEntity, 30200102, new List <int>(), new List <float>());
        }
    }
コード例 #4
0
 public void  DispatchTargetSkill(SkEntity caster)
 {
     if (m_PeSkEntity != null)
     {
         m_PeSkEntity.DispatchTargetSkill(caster);
     }
 }
コード例 #5
0
 public void DispatchWeaponAttack(SkEntity caster)
 {
     if (m_PeSkEntity != null)
     {
         m_PeSkEntity.DispatchWeaponAttack(caster);
     }
 }
コード例 #6
0
        protected virtual void Hit(PECapsuleHitResult hitResult, SkEntity skEntity = null)
        {
            PlayEffectHit(hitResult.hitPos, -hitResult.hitDir);

            if (!m_Trigger)
            {
                Delete();
            }

            if (hitResult.hitTrans != null)
            {
                if (null == skEntity)
                {
                    skEntity = hitResult.hitTrans.GetComponentInParent <SkEntity>();
                }
                if (null == skEntity)
                {
                    return;
                }
                PeEntity entity = skEntity.GetComponent <PeEntity>();
                if (null == entity || entity.canInjured)
                {
                    CastSkill(skEntity, hitResult);
                }
            }
        }
コード例 #7
0
        protected virtual void CastSkill(SkEntity skEntity)
        {
            if (PETools.PEUtil.IsVoxelOrBlock45(skEntity))
            {
                if (m_SkillTerrainID > 0)
                {
                    StartSkill(skEntity, m_SkillTerrainID);
                }
            }
            else
            {
                if (m_SkillID > 0)
                {
                    StartSkill(skEntity, m_SkillID);
                }
            }

            if (null != onCastSkill)
            {
                onCastSkill(skEntity);
            }

            if (null != skEntity && null != onHitSkEntity)
            {
                onHitSkEntity(skEntity);
            }
        }
コード例 #8
0
        public virtual void InitEntity(SkEntity parent = null, bool[] useParentMasks = null)
        {
            if (parent != null && useParentMasks != null)
            {
                Init(OnNumAttribs, OnPutInPak, parent, useParentMasks);
            }
            else if (parent != null || useParentMasks != null)
            {
                Debug.LogError("Invalid Arguments to init skill entity");
            }
            else
            {
                Init(OnNumAttribs, OnPutInPak, AttribsCnt);
            }

            if (null != m_Attrs)
            {
                foreach (Attr attr in m_Attrs)
                {
                    SetAttribute((int)(attr.m_Type), attr.m_Value);
                }
            }

            if (null != m_InitBuffList)
            {
                foreach (int buffID in m_InitBuffList)
                {
                    MountBuff(this, buffID, new System.Collections.Generic.List <int>(), new System.Collections.Generic.List <float>());
                }
            }
        }
コード例 #9
0
 public void DispatchTargetSkill(SkEntity caster)
 {
     if (onSkillEvent != null)
     {
         onSkillEvent(caster);
     }
 }
コード例 #10
0
 void OnHpChange(SkEntity caster, float hpChange)
 {
     if (null != Entity)
     {
         Entity.SendMsg(EMsg.Battle_HPChange, caster, hpChange);
     }
 }
コード例 #11
0
 void OnTargetSkill(SkEntity caster)
 {
     if (null != Entity)
     {
         Entity.SendMsg(EMsg.Battle_TargetSkill, caster);
     }
 }
コード例 #12
0
ファイル: TowerCmpt.cs プロジェクト: shrubba/planetexplorers
 void OnHpChange(SkEntity entity, float damage)
 {
     //for (int i = 0; i < m_TowerEffect.Count; i++)
     //{
     //    m_TowerEffect[i].ActivateEffect(Entity);
     //}
 }
コード例 #13
0
 public void OnTreeCutDown(SkEntity skEntity, GlobalTreeInfo treeInfo)
 {
     if (null != onTreeCutDown)
     {
         onTreeCutDown(skEntity, treeInfo);
     }
 }
コード例 #14
0
 void OnHitEntity(SkEntity entity)
 {
     if (null != entity && entity == m_SkEntity)
     {
         OnHit();
     }
 }
コード例 #15
0
    void OnEntityPickup(SkEntity entity)
    {
        CommonCmpt common = entity.GetComponent <CommonCmpt>();

        if (common != null)
        {
            if (common.entityProto.proto == EEntityProto.RandomNpc || common.entityProto.proto == EEntityProto.Npc)
            {
                if (!ServantLeaderCmpt.Instance.ContainsServant(common.GetComponent <NpcCmpt>()))
                {
                    DestroyEntity(entity);
                }
            }
            else             //if (common.entityProto.proto == EEntityProto.Monster)
            {
                DestroyEntity(entity);

                PeEntity Pentity = entity.GetComponent <PeEntity>();
                if (Pentity != null)
                {
                    LootItemDropPeEntity.RemovePeEntity(Pentity);
                }
            }
        }
    }
コード例 #16
0
 public void DispatchWeaponAttack(SkEntity caster)
 {
     if (onWeaponAttack != null)
     {
         onWeaponAttack(caster);
     }
 }
コード例 #17
0
    internal virtual void InitNetworkLayer(NetworkInterface network, GameObject obj = null)
    {
        if (obj == null)
        {
            obj = gameObject;
        }

        netlayer = network;

        if (null == network)
        {
            return;
        }

        _comMgr[network.Id] = this;

        if (obj != null)
        {
            _skEntity = obj.GetComponent <SkEntity>();
            if (_skEntity != null)
            {
                _skEntity.SetNet(network);
            }
            _skEntityPE = obj.GetComponent <SkAliveEntity>();
        }
    }
コード例 #18
0
 void OnDeath(SkEntity sk1, SkEntity sk2)
 {
     for (int i = 0; i < triggers.Length; i++)
     {
         triggers[i].OnDeath();
     }
 }
コード例 #19
0
        protected virtual void Hit(Vector3 pos, Vector3 normal, Transform hitTrans)
        {
            PlayEffectHit(pos, normal);

            if (!m_Trigger)
            {
                Delete();
            }

            if (hitTrans != null)
            {
                SkEntity skEntity = hitTrans.GetComponentInParent <SkEntity>();
                if (null == skEntity)
                {
                    return;
                }
                PeEntity entity = skEntity.GetComponent <PeEntity>();
                if (null != skEntity && (null == entity || entity.canInjured))
                {
                    PECapsuleHitResult hitResult = new PECapsuleHitResult();
                    hitResult.selfTrans   = transform;
                    hitResult.hitPos      = pos;
                    hitResult.hitDir      = -normal;
                    hitResult.hitTrans    = hitTrans;
                    hitResult.damageScale = 1f;
                    CastSkill(skEntity, hitResult);
                }
            }
        }
コード例 #20
0
        void AliveEntityDeathEvent(SkEntity arg1, SkEntity arg2)
        {
            FixedSpawnPointInfo info = null;

            if (SceneEntityCreatorArchiver.Instance._fixedSpawnPointInfos.TryGetValue(_fixedId, out info))
            {
                SceneMan.RemoveSceneObj(info._agent);

                if (info._needCD > 0.0f)
                {
                    MissionManager.Instance.PeTimeToDo(delegate(){
                        if (info._bActive)
                        {
                            SceneMan.RemoveSceneObj(info._agent);
                            SceneMan.AddSceneObj(info._agent);
                        }
                    }, info._needCD, _fixedId);
                }
                else
                {
                    SceneEntityCreatorArchiver.Instance.SetFixedSpawnPointActive(_fixedId, false);
                }
                SceneEntityCreatorArchiver.Instance.GetEntityByFixedSpId(_fixedId).aliveEntity.deathEvent -= AliveEntityDeathEvent;
            }
        }
コード例 #21
0
ファイル: TowerCmpt.cs プロジェクト: shrubba/planetexplorers
        void OnDamage(SkEntity entity, float damage)
        {
            if (null == Entity.peSkEntity || null == entity)
            {
                return;
            }

            PeEntity peEntity = entity.GetComponent <PeEntity>();

            if (peEntity == Entity)
            {
                return;
            }

            float tansDis  = peEntity.IsBoss ? 128f : 64f;
            int   playerID = (int)Entity.peSkEntity.GetAttribute((int)AttribType.DefaultPlayerID);

            bool canTrans = false;

            if (GameConfig.IsMultiClient)
            {
                if (ForceSetting.Instance.GetForceType(playerID) == EPlayerType.Human)
                {
                    canTrans = true;
                }

                int tarPlayerId = (int)peEntity.GetAttribute(AttribType.DefaultPlayerID);
                if (ForceSetting.Instance.GetForceType(tarPlayerId) == EPlayerType.Human)
                {
                    List <PeEntity> entities = EntityMgr.Instance.GetEntities(peEntity.position, tansDis, tarPlayerId, false, peEntity);
                    for (int i = 0; i < entities.Count; i++)
                    {
                        if (!entities[i].Equals(Entity) && entities[i].target != null)
                        {
                            entities[i].target.TransferHatred(Entity, damage);
                        }
                    }
                }
            }
            else
            {
                if (ForceSetting.Instance.GetForceID(playerID) == 1)
                {
                    canTrans = true;
                }
            }

            if (canTrans)
            {
                List <PeEntity> entities = EntityMgr.Instance.GetEntities(Entity.peTrans.position, tansDis, playerID, false, Entity);
                for (int i = 0; i < entities.Count; i++)
                {
                    if (!entities[i].Equals(Entity) && entities[i].target != null)
                    {
                        entities[i].target.TransferHatred(peEntity, damage);
                    }
                }
            }
        }
コード例 #22
0
 void OnOwnerAttack(SkEntity enemy, float value)
 {
     if (enemy is SkAliveEntity && !enemy.Equals(null))
     {
         _ownerAttackEntity = enemy as SkAliveEntity;
         _ownerAttackView   = enemy.GetComponent <ViewCmpt>();
     }
 }
コード例 #23
0
 public void DestroyEntity(SkEntity entity, float delayTime = 0.0f, float fadeoutTime = 3.0f)
 {
     //Debug.Log("Destroy entity : " + entity.name);
     if (delayTime >= 0)
     {
         StartCoroutine(DestroyEnumerator(entity, delayTime, fadeoutTime));
     }
 }
コード例 #24
0
 void OnOwnerHpReduce(SkEntity enemy, float value)
 {
     enemy = PETools.PEUtil.GetCaster(enemy);
     if (enemy is SkAliveEntity && !enemy.Equals(null))
     {
         _attackOwnerEntity = enemy as SkAliveEntity;
         _attackOwnerView   = enemy.GetComponent <ViewCmpt>();
     }
 }
コード例 #25
0
 public void SetTarget(SkEntity skEntity)
 {
     m_SwordAttack.targetEntity         = skEntity;
     m_TwoHandWeaponAttack.targetEntity = skEntity;
     m_BowShoot.targetEntity            = skEntity;
     m_ThrowGrenade.targetEntity        = skEntity;
     m_GunFire.targetEntity             = skEntity;
     m_GunMelee.targetEntity            = skEntity;
 }
コード例 #26
0
        void OnAttack(SkEntity skEntity, float damage)
        {
            PeEntity tarEntity = skEntity.GetComponent <PeEntity>();

            if (tarEntity != null && tarEntity != Entity)
            {
                NpcHatreTargets.Instance.TryAddInTarget(Entity, tarEntity, damage);
            }
        }
コード例 #27
0
 // infrom target
 public void WeaponAtttck(IWeapon weapon, SkEntity caster)
 {
     if (m_SkEntity != null)
     {
         if (m_PeSkEntity != null)
         {
             m_PeSkEntity.DispatchWeaponAttack(m_SkEntity);
         }
     }
 }
コード例 #28
0
    void OnEntityDestroy(SkEntity entity)
    {
        PeEntity peEntity = entity.GetComponent <PeEntity>();

        if (peEntity != null)
        {
            LootItemDropPeEntity.RemovePeEntity(peEntity);
            PeCreature.Instance.Destory(peEntity.Id);
        }
    }
コード例 #29
0
        protected Transform GetCasterTrans()
        {
            SkEntity skEntity = GetSkEntityCaster();

            if (null != skEntity)
            {
                return(skEntity.transform);
            }
            return(null);
        }
コード例 #30
0
    void OnMonsterDeath(SkEntity cur, SkEntity caster)
    {
        if (_data.m_mustByPlayer == true && caster is Pathea.Projectile.SkProjectile)
        {
            GameObject go = ((Pathea.Projectile.SkProjectile)caster).Caster();
            if (go != null)
            {
                CommonCmpt cc = go.GetComponent <CommonCmpt>();
                if (cc != null && cc.entityProto.proto != EEntityProto.Player)
                {
                    return;
                }
            }
        }
        SkAliveEntity skAlive = cur as SkAliveEntity;

        if (skAlive != null && _data != null)
        {
            CommonCmpt cc = skAlive.Entity.commonCmpt;
            if (cc == null)
            {
                return;
            }

            int  protoId = cc.entityProto.protoId;
            bool bFin    = true;
            for (int m = 0; m < _data.m_MonsterList.Count; m++)
            {
                int      idx     = _idxTarId * 10 + m;
                string   tmp     = PlayerMission.MissionFlagMonster + idx;
                string   value   = playerMission.GetQuestVariable(MissionId, tmp);
                string[] tmplist = value.Split('_');
                if (tmplist.Length < 2)
                {
                    Debug.LogError("[TaskMonsterKill]:Wrong Quest Var:" + value);
                }
                int num = tmplist.Length >= 2 ? Convert.ToInt32(tmplist[1]) : 0;
                if (_data.m_MonsterList[m].npcs.Contains(protoId))
                {
                    num  += 1;
                    value = tmplist[0] + "_" + num.ToString();
                    playerMission.ModifyQuestVariable(MissionId, tmp, value);
                }
                if (num < _data.m_MonsterList[m].type)
                {
                    bFin = false;
                }
            }

            if (bFin)
            {
                MissionManager.Instance.CompleteTarget(TargetId, MissionId, true);
            }
        }
    }