public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        var        args  = _params.Values;
        int        objId = args[0];
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            int targetId = npc.GetAiStateInfo().Target;
            if (targetId > 0)
            {
                EntityInfo entity = PluginFramework.Instance.GetEntityById(targetId);
                if (null != entity && !entity.IsDead())
                {
                    m_Proxy.Value = BoxedValue.From(entity);
                }
                else
                {
                    m_Proxy.Value = BoxedValue.NullObject;
                }
            }
            else
            {
                m_Proxy.Value = BoxedValue.NullObject;
            }
        }
    }
Ejemplo n.º 2
0
    public bool ExecCommand(StoryInstance instance, StoryValueParams _params, long delta)
    {
        ArrayList args = _params.Values;

        if (!m_ParamReaded)
        {
            m_ParamReaded = true;

            m_ObjId  = (int)args[0];
            m_Time   = (int)System.Convert.ChangeType(args[1], typeof(int));
            m_Radius = (int)System.Convert.ChangeType(args[2], typeof(int));

            EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);
            if (null != npc && !npc.IsUnderControl())
            {
                SelectTargetPos(npc);
                return(true);
            }
        }
        else
        {
            EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);
            if (null != npc && !npc.IsUnderControl())
            {
                AiStateInfo info = npc.GetAiStateInfo();
                return(RandMoveHandler(npc, info, delta));
            }
        }
        return(false);
    }
Ejemplo n.º 3
0
    public bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params, long delta)
    {
        var args = _params.Values;

        if (!m_ParamReaded)
        {
            m_ParamReaded = true;
            m_ObjId       = args[0];
            if (args.Count > 1)
            {
                m_EnableLearning = args[1].Get <int>() != 0;
            }
        }
        EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);

        if (null != npc && !npc.IsUnderControl())
        {
            AiStateInfo info = npc.GetAiStateInfo();
            switch (info.CurState)
            {
            case (int)PredefinedAiStateId.Idle:
                info.ChangeToState((int)AiStateId.Combat);
                return(true);

            case (int)AiStateId.Combat:
                return(CombatHandler(npc, info, delta));

            case (int)AiStateId.Gohome:
                return(GohomeHandler(npc, info, delta));
            }
        }
        return(false);
    }
    public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        var        args  = _params.Values;
        int        objId = args[0].Get <int>();
        float      dist  = args[1].Get <float>();
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            EntityInfo entity;
            if (dist < Geometry.c_FloatPrecision)
            {
                entity = AiLogicUtility.GetNearstTargetHelper(npc, CharacterRelation.RELATION_ENEMY);
                if (null != entity)
                {
                    npc.GetAiStateInfo().Target = entity.GetId();
                }
            }
            else
            {
                entity = AiLogicUtility.GetNearstTargetHelper(npc, dist, CharacterRelation.RELATION_ENEMY);
                if (null != entity)
                {
                    npc.GetAiStateInfo().Target = entity.GetId();
                }
            }
            m_Proxy.Value = BoxedValue.From(entity);
        }
    }
Ejemplo n.º 5
0
    public void Evaluate(StoryInstance instance, StoryValueParams _params)
    {
        ArrayList  args  = _params.Values;
        int        objId = (int)args[0];
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            int targetId = npc.GetAiStateInfo().Target;
            if (targetId > 0)
            {
                EntityInfo entity = PluginFramework.Instance.GetEntityById(targetId);
                if (null != entity && !entity.IsDead())
                {
                    m_Proxy.Value = entity;
                }
                else
                {
                    m_Proxy.Value = null;
                }
            }
            else
            {
                m_Proxy.Value = null;
            }
        }
    }
    public bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params, long delta)
    {
        var args = _params.Values;

        if (!m_ParamReaded)
        {
            m_ObjId     = args[0];
            m_SkillInfo = args[1].ObjectVal as SkillInfo;
        }
        if (!m_SkillCasted)
        {
            EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);
            if (null != npc && !npc.IsUnderControl())
            {
                int        targetId = npc.GetAiStateInfo().Target;
                EntityInfo target   = PluginFramework.Instance.GetEntityById(targetId);
                if (null != target && !target.IsDead() && Geometry.DistanceSquare(npc.GetMovementStateInfo().GetPosition3D(), target.GetMovementStateInfo().GetPosition3D()) <= m_SkillInfo.Distance * m_SkillInfo.Distance)
                {
                    ScriptRuntime.Vector3 srcPos    = npc.GetMovementStateInfo().GetPosition3D();
                    ScriptRuntime.Vector3 targetPos = target.GetMovementStateInfo().GetPosition3D();
                    float dir    = Geometry.GetYRadian(srcPos, targetPos);
                    float curDir = npc.GetMovementStateInfo().GetFaceDir();
                    if (Mathf.Abs(dir - curDir) > 0.157f)
                    {
                        npc.GetMovementStateInfo().SetWantedFaceDir(dir);
                    }
                    else
                    {
                        m_SkillCasted = true;
                        AiCommand.AiStopPursue(npc);
                        AiCommand.AiSkill(npc, m_SkillInfo.SkillId);
                    }
                    return(true);
                }
                else if (!m_SkillInfo.ConfigData.skillData.needTarget)
                {
                    m_SkillCasted = true;
                    AiCommand.AiStopPursue(npc);
                    AiCommand.AiSkill(npc, m_SkillInfo.SkillId);
                }
            }
        }
        else
        {
            EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);
            if (null != npc)
            {
                AiStateInfo info = npc.GetAiStateInfo();
                if (npc.GetSkillStateInfo().IsSkillActivated())
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
        return(false);
    }
Ejemplo n.º 7
0
    public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        ArrayList  args      = _params.Values;
        int        objId     = (int)args[0];
        SkillInfo  skillInfo = args[1] as SkillInfo;
        EntityInfo npc       = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc && null != skillInfo)
        {
            int targetId = npc.GetAiStateInfo().Target;
            if (targetId > 0)
            {
                EntityInfo target = PluginFramework.Instance.GetEntityById(targetId);
                if (null != target)
                {
                    float distSqr = Geometry.DistanceSquare(npc.GetMovementStateInfo().GetPosition3D(), target.GetMovementStateInfo().GetPosition3D());
                    if (distSqr > skillInfo.Distance * skillInfo.Distance)
                    {
                        m_Proxy.Value = 1;
                        return;
                    }
                }
            }
        }
        m_Proxy.Value = 0;
    }
    public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        ArrayList  args  = _params.Values;
        int        objId = (int)args[0];
        float      dist  = (float)System.Convert.ChangeType(args[1], typeof(float));
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            EntityInfo entity;
            if (dist < Geometry.c_FloatPrecision)
            {
                entity = AiLogicUtility.GetNearstTargetHelper(npc, CharacterRelation.RELATION_ENEMY);
                if (null != entity)
                {
                    npc.GetAiStateInfo().Target = entity.GetId();
                }
            }
            else
            {
                entity = AiLogicUtility.GetNearstTargetHelper(npc, dist, CharacterRelation.RELATION_ENEMY);
                if (null != entity)
                {
                    npc.GetAiStateInfo().Target = entity.GetId();
                }
            }
            m_Proxy.Value = entity;
        }
    }
Ejemplo n.º 9
0
    public bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params, long delta)
    {
        var args = _params.Values;

        if (!m_ParamReaded)
        {
            m_ParamReaded = true;

            m_ObjId  = args[0].Get <int>();
            m_Time   = args[1].Get <int>();
            m_Radius = args[2].Get <int>();

            EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);
            if (null != npc && !npc.IsUnderControl())
            {
                SelectTargetPos(npc);
                return(true);
            }
        }
        else
        {
            EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);
            if (null != npc && !npc.IsUnderControl())
            {
                AiStateInfo info = npc.GetAiStateInfo();
                return(RandMoveHandler(npc, info, delta));
            }
        }
        return(false);
    }
Ejemplo n.º 10
0
 private bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params, long delta)
 {
     if (null != m_Plugin)
     {
         return(m_Plugin.ExecCommand(instance, handler, _params, delta));
     }
     return(false);
 }
Ejemplo n.º 11
0
    public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        var        args  = _params.Values;
        int        objId = args[0].Get <int>();
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            m_Proxy.Value = BoxedValue.From(npc.GetSkillStateInfo().GetAllSkill());
        }
    }
Ejemplo n.º 12
0
    public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        ArrayList  args  = _params.Values;
        int        objId = (int)args[0];
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            m_Proxy.Value = npc.GetSkillStateInfo().GetAllSkill();
        }
    }
Ejemplo n.º 13
0
 private bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params, long delta)
 {
     if (null != m_ExecCommand)
     {
         var ret = m_ExecCommand.call(m_Self, instance, handler, _params, delta);
         if (null != ret)
         {
             return((bool)ret);
         }
     }
     return(false);
 }
    public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        var        args  = _params.Values;
        int        objId = args[0];
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            SkillInfo skillInfo = AiLogicUtility.NpcFindCanUseSkill(npc);
            m_Proxy.Value = BoxedValue.From(skillInfo);
        }
    }
Ejemplo n.º 15
0
    public void Evaluate(StoryInstance instance, StoryValueParams _params)
    {
        ArrayList  args  = _params.Values;
        int        objId = (int)args[0];
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            SkillInfo skillInfo = AiLogicUtility.NpcFindCanUseSkill(npc);
            m_Proxy.Value = skillInfo;
        }
    }
Ejemplo n.º 16
0
    public void Evaluate(StoryInstance instance, StoryValueParams _params)
    {
        ArrayList  args  = _params.Values;
        int        objId = (int)args[0];
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            int targetId = npc.GetAiStateInfo().Target;
            if (targetId > 0)
            {
                EntityInfo target = PluginFramework.Instance.GetEntityById(targetId);
                if (null != target)
                {
                    float     distToTarget    = Geometry.Distance(npc.GetMovementStateInfo().GetPosition3D(), target.GetMovementStateInfo().GetPosition3D());
                    float     curDist         = 0;
                    SkillInfo maxSkillInfo    = null;
                    float     diffDist        = float.MaxValue;
                    SkillInfo targetSkillInfo = null;
                    for (int i = 0; i < npc.AutoSkillIds.Count; ++i)
                    {
                        int       skillId = npc.AutoSkillIds[i];
                        SkillInfo temp    = npc.GetSkillStateInfo().GetSkillInfoById(skillId);
                        if (null != temp)
                        {
                            float dist    = temp.Distance;
                            float absDist = Mathf.Abs(distToTarget - dist);
                            if (diffDist > absDist)
                            {
                                diffDist        = absDist;
                                targetSkillInfo = temp;
                            }
                        }
                    }
                    if (null != targetSkillInfo)
                    {
                        m_Proxy.Value = targetSkillInfo;
                    }
                    else
                    {
                        m_Proxy.Value = maxSkillInfo;
                    }
                    return;
                }
            }
        }
        m_Proxy.Value = null;
    }
Ejemplo n.º 17
0
    public bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params, long delta)
    {
        ArrayList args = _params.Values;

        if (!m_ParamReaded)
        {
            m_ParamReaded = true;
            m_ObjId       = (int)args[0];
        }
        EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);

        if (null != npc)
        {
            AiStateInfo info = npc.GetAiStateInfo();
            return(GohomeHandler(npc, info, delta));
        }
        return(false);
    }
Ejemplo n.º 18
0
    public bool ExecCommand(StoryInstance instance, StoryValueParams _params, long delta)
    {
        ArrayList args = _params.Values;

        if (!m_KeepAwayStarted)
        {
            m_KeepAwayStarted = true;

            m_ObjId     = (int)args[0];
            m_SkillInfo = args[1] as SkillInfo;
            m_Ratio     = (float)System.Convert.ChangeType(args[2], typeof(float));
        }
        EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);

        if (null != npc && !npc.IsUnderControl())
        {
            AiStateInfo info   = npc.GetAiStateInfo();
            EntityInfo  target = PluginFramework.Instance.GetEntityById(info.Target);
            if (null != target && null != m_SkillInfo)
            {
                info.Time += delta;
                if (info.Time > 100)
                {
                    info.Time = 0;
                }
                else
                {
                    return(true);
                }
                ScriptRuntime.Vector3 srcPos    = npc.GetMovementStateInfo().GetPosition3D();
                ScriptRuntime.Vector3 targetPos = target.GetMovementStateInfo().GetPosition3D();
                float distSqr             = Geometry.DistanceSquare(srcPos, targetPos);
                ScriptRuntime.Vector3 dir = srcPos - targetPos;
                dir.Normalize();
                targetPos = targetPos + dir * m_Ratio * m_SkillInfo.Distance;
                if (distSqr < m_Ratio * m_Ratio * m_SkillInfo.Distance * m_SkillInfo.Distance)
                {
                    AiCommand.AiPursue(npc, targetPos);
                    return(true);
                }
            }
        }
        return(false);
    }
Ejemplo n.º 19
0
    public bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params, long delta)
    {
        ArrayList args = _params.Values;

        if (!m_ChaseStarted)
        {
            m_ChaseStarted = true;

            m_ObjId     = (int)args[0];
            m_SkillInfo = args[1] as SkillInfo;
        }
        EntityInfo npc = PluginFramework.Instance.GetEntityById(m_ObjId);

        if (null != npc && !npc.IsUnderControl())
        {
            AiStateInfo info   = npc.GetAiStateInfo();
            EntityInfo  target = PluginFramework.Instance.GetEntityById(info.Target);
            if (null != target && null != m_SkillInfo)
            {
                info.Time += delta;
                if (info.Time > 100)
                {
                    info.Time = 0;
                }
                else
                {
                    return(true);
                }
                ScriptRuntime.Vector3 srcPos    = npc.GetMovementStateInfo().GetPosition3D();
                ScriptRuntime.Vector3 targetPos = target.GetMovementStateInfo().GetPosition3D();
                float distSqr = Geometry.DistanceSquare(srcPos, targetPos);
                if (distSqr > m_SkillInfo.Distance * m_SkillInfo.Distance)
                {
                    AiCommand.AiPursue(npc, targetPos);
                    return(true);
                }
            }
        }
        return(false);
    }
Ejemplo n.º 20
0
 public void Evaluate(StoryInstance instance, StoryValueParams _params)
 {
     m_Proxy.Value = PluginFramework.Instance.EntityManager.Entities.Values;
 }
    public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        var        args  = _params.Values;
        int        objId = args[0];
        int        index = args[1].Get <int>();
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            int skillId = 0;
            switch (index)
            {
            case 0:
                skillId = npc.ConfigData.skill0;
                break;

            case 1:
                skillId = npc.ConfigData.skill1;
                break;

            case 2:
                skillId = npc.ConfigData.skill2;
                break;

            case 3:
                skillId = npc.ConfigData.skill3;
                break;

            case 4:
                skillId = npc.ConfigData.skill4;
                break;

            case 5:
                skillId = npc.ConfigData.skill5;
                break;

            case 6:
                skillId = npc.ConfigData.skill6;
                break;

            case 7:
                skillId = npc.ConfigData.skill7;
                break;

            case 8:
                skillId = npc.ConfigData.skill8;
                break;

            default:
                skillId = 0;
                break;
            }
            if (skillId > 0)
            {
                SkillInfo skillInfo = npc.GetSkillStateInfo().GetSkillInfoById(skillId);
                if (null == skillInfo)
                {
                    skillInfo = new SkillInfo(skillId);
                    npc.GetSkillStateInfo().AddSkill(skillInfo);
                }
                m_Proxy.Value = BoxedValue.From(skillInfo);
            }
            else
            {
                m_Proxy.Value = BoxedValue.NullObject;
            }
        }
    }
 public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
 {
     m_Proxy.Value = BoxedValue.From(PluginFramework.Instance.EntityManager.Entities.Values);
 }
Ejemplo n.º 23
0
    public void Evaluate(StoryInstance instance, StoryMessageHandler handler, StoryValueParams _params)
    {
        ArrayList  args  = _params.Values;
        int        objId = (int)args[0];
        int        index = (int)System.Convert.ChangeType(args[1], typeof(int));
        EntityInfo npc   = PluginFramework.Instance.GetEntityById(objId);

        if (null != npc)
        {
            int skillId = 0;
            switch (index)
            {
            case 0:
                skillId = npc.ConfigData.skill0;
                break;

            case 1:
                skillId = npc.ConfigData.skill1;
                break;

            case 2:
                skillId = npc.ConfigData.skill2;
                break;

            case 3:
                skillId = npc.ConfigData.skill3;
                break;

            case 4:
                skillId = npc.ConfigData.skill4;
                break;

            case 5:
                skillId = npc.ConfigData.skill5;
                break;

            case 6:
                skillId = npc.ConfigData.skill6;
                break;

            case 7:
                skillId = npc.ConfigData.skill7;
                break;

            case 8:
                skillId = npc.ConfigData.skill8;
                break;

            default:
                skillId = 0;
                break;
            }
            if (skillId > 0)
            {
                SkillInfo skillInfo = npc.GetSkillStateInfo().GetSkillInfoById(skillId);
                if (null == skillInfo)
                {
                    skillInfo = new SkillInfo(skillId);
                    npc.GetSkillStateInfo().AddSkill(skillInfo);
                }
                m_Proxy.Value = skillInfo;
            }
            else
            {
                m_Proxy.Value = null;
            }
        }
    }