男魔法师普通攻击nut 翻译

// state”刻在这里,您将第一次进入。配置各种资源
function onSetState_Attack(obj, state, datas, isResetTimer)
{   
    if (!obj)
        return;
        //得到技能等级
    local skillLevel = obj.sq_GetSkillLevel(SKILL_ICE_ELEMENTAL_ATTACK);
 
    // 学会了转职
    if (skillLevel > 0)
    {
        // 常规攻击时前进处理
             //攻击速度250
        obj.setAttackXVelocity(250);
             //加速度-1000
        obj.setAttackXAccel(-1000);
             //攻击速率 400
        obj.setAttackXVelocityFast(400);
             //渐块-1000
        obj.setAttackXAccelFast(-1000);
         
        // 使用基本技能   
        //申请攻击向上
        obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),obj.getState());        
        sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj));
    }
    else
    {
        // 如果你还没有学会转职
        obj.setAttackXVelocity(0);
        obj.setAttackXAccel(0);
        obj.setAttackXVelocityFast(0);
        obj.setAttackXAccelFast(0);
        local element = obj.getThrowElement();
        local attackIndex = obj.getAttackIndex();
        playSoundForAtmageAttack(obj, element, attackIndex);
    }
}
 
 
function onAfterSetState_Attack(obj, state, datas, isResetTimer)
{
    if (!obj) return;
 
    // 一种修身艺术
    // 不发射魔球.
    local iceElementalAttackSkillLevel = obj.sq_GetSkillLevel(SKILL_ICE_ELEMENTAL_ATTACK);
 
 
    if (state == STATE_ATTACK && iceElementalAttackSkillLevel <= 0)
    {
        // 将发挥平打效果
        // 按悬停的按钮索引和发球台显示的效果不同(按属性粘贴的效果不同)
        local element = obj.getThrowElement();
        local attackIndex = obj.getAttackIndex();
         
        // 检查是否挂在属性启动appendage上。
        // 如果没有被属性启动,则发射了无属性平打
        local appendage = obj.GetSquirrelAppendage("Character/ATMage/ElementalChange/ap_ATMage_Elemental_Change.nut");
        if (!appendage || !appendage.isValid())
            element = ENUM_ELEMENT_NONE;
 
        if (attackIndex == 0)
        {
            if (element == ENUM_ELEMENT_FIRE)
            {   // 火属性
                       // 创建CNRD ani数据库 添加到ani状态层
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack1_fire_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack1_fire_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_WATER)
            {   //水属性
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack1_water_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack1_water_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_DARK)
            {   // 暗属性
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack1_dark_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack1_dark_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_LIGHT)
            {   // 光属性
                obj.光q_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack1_light_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack1_light_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_NONE)
            {   // 无属性
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack1_none_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack1_none_dodge.ani"), 0, 0);
            }
        }
        else if (attackIndex == 1)
        {
            if (element == ENUM_ELEMENT_FIRE)
            {   // 火
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack2_fire_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack2_fire_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_WATER)
            {   // 水
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack2_water_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack2_water_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_DARK)
            {   // 暗
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack2_dark_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack2_dark_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_LIGHT)
            {   // 光
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack2_light_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack2_light_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_NONE)
            {   // ???
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack2_none_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack2_none_dodge.ani"), 0, 0);
            }
        }
        else if (attackIndex == 2)
        {
            if (element == ENUM_ELEMENT_FIRE)
            {   //火
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack3_fire_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack3_fire_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_WATER)
            {   // 水
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack3_water_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack3_water_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_DARK)
            {   // 暗
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack3_dark_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack3_dark_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_LIGHT)
            {   // 暗
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack3_light_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack3_light_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_NONE)
            {   // 光
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack3_none_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack3_none_dodge.ani"), 0, 0);
            }
        }
        else if (attackIndex == 3)
        {
            if (element == ENUM_ELEMENT_FIRE)
            {   // 火
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack4_fire_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack4_fire_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_WATER)
            {   // 水
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack4_water_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack4_water_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_DARK)
            {   // 暗
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack4_dark_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack4_dark_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_LIGHT)
            {   // 光
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack4_light_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack4_light_dodge.ani"), 0, 0);
            }
            else if (element == ENUM_ELEMENT_NONE)
            {
                obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack4_none_normal.ani"), 0, 0);
                obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack4_none_dodge.ani"), 0, 0);
            }
        }
    }   
}
 
function createMiniMagicCircle(obj, xPos, zPos, shotDirection, bonusDamage) // direction 0:??  1:???  2:??)
{   
    if(!obj)
        return;
    if (obj.sq_IsMyControlObject()) {
     
        // 魔法具体生成的位置
        local direction = sq_GetDirection(obj);
        local x = sq_GetDistancePos(obj.getXPos(), direction, xPos);
        local y = sq_GetDistancePos(obj.getYPos(), ENUM_DIRECTION_DOWN, 1);
        local z = sq_GetDistancePos(obj.getZPos(), ENUM_DIRECTION_UP, zPos);
        // 有一点诱导功能。
        // 进攻者
        // 发射位置(x,y,z)
        // 垂直发射角(0向前发射,30右30度发射)
        // 垂直发射角(0向前发射,-30向下发射30度)
        // 横向最大校正角(单向)
        // 垂直最大校正角(单向)
        // 与敌人的最大距离。是-无限制
        // x轴最大射程
        // 攻击框的x轴大小
        // 攻击框的y轴大小
        // 攻击框的y轴大小
         
        local activeObject;
        local searchAngleH = 0;
        local searchAngleV = 0;
        local passiveObjectIndex = 0;       
         
        if(shotDirection == 0)
        {   // 正面
                                   //查找射击目标
            //activeObject = sq_FindShootingTarget(obj, x, y, z, 0, 0, 10, 10, -1, 1000, 1000, 250, 100);   
            local distance = 1000;
            local angle = 20;
            activeObject = findAngleTarget(obj, distance, angle, 100); // 扇形样子攻击敌人  (好像是)       
            searchAngleH = 30;
            searchAngleV = 15;
            passiveObjectIndex = 24202;
         
            // 连续发射的外形相同,但对象却不同(因为受变换的影响)
            if (obj.getState() == STATE_MULTI_SHOT)
                passiveObjectIndex = 24266;
        }
        else if(shotDirection == 1) {// 对角线
            activeObject = sq_FindShootingTarget(obj, x, y, z, 0, 0, 4, 4, -1, 300, 100, 50, 100);
            searchAngleH = 5;
            searchAngleV = 5;           
            passiveObjectIndex = 24207;
             
            // 连续发射的外形相同,但对象却不同(因为受变换的影响)
            if (obj.getState() == STATE_MULTI_SHOT)
                passiveObjectIndex = 24271;
        }
        else if(shotDirection == 2) { // ??
            activeObject = sq_FindShootingTarget(obj, x, y, z, 0, 0, 4, 4, -1, 300, 100, 50, 100);          
            searchAngleH = 5;
            searchAngleV = 5;   
            passiveObjectIndex = 24228;
             
            // 连续发射的外形相同,但对象却不同(因为受变换的影响)
            if (obj.getState() == STATE_MULTI_SHOT)
                passiveObjectIndex = 24276;
        }               
        else {
            printc("error! magic ball create shotDirection error");
            return;
        }
         
        // 检查是否挂在属性启动appendage上。
        // 如果没有被属性启动,则发射了无属性平打
        local horizonAngle = 0.0;
        local verticalAngle = 0.0;  
        if (activeObject != NULL) {     
            local maxDistance = abs(activeObject.getXPos() - x);
            //锐角射击视野
            horizonAngle = sq_GetShootingHorizonAngle(activeObject, y, 0, searchAngleH, maxDistance);
            //垂直角射击视野
            verticalAngle = sq_GetShootingVerticalAngle(activeObject, z, 0, searchAngleV, maxDistance, 300);
        }
             
        local appendage = obj.GetSquirrelAppendage("Character/ATMage/ElementalChange/ap_ATMage_Elemental_Change.nut");
        if (appendage && appendage.isValid()) { 
            local element = obj.getThrowElement();
            passiveObjectIndex = passiveObjectIndex + 1 + element;
        }
         
        obj.sq_StartWrite();
        obj.sq_WriteFloat(horizonAngle);
        obj.sq_WriteFloat(verticalAngle);
        obj.sq_WriteDword(bonusDamage);     
        obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndex, 0, xPos, 1, zPos);
    }
}
 
// 攻击时生成魔法体。
function onKeyFrameFlag_Attack(obj, flagIndex)
{
    if(!obj)
        return false;
    local isMyControlObject = obj.sq_IsMyControlObject();
 
    // 每次攻击时会产生魔法球体。
    // 要根据悬浮的黄蜂而生成的“被动对象”有所不同(属性)
    // 
    local xPos = 0, zPos = 0;
 
    local attackIndex = obj.getAttackIndex();
    if (attackIndex == 0)
    {
        xPos = 65, zPos = 59;
    }
    else if (attackIndex == 1)
    {
        xPos = 60, zPos = 71;
    }
    else if (attackIndex == 2)
    {
        xPos = 55, zPos = 58;
    }
    else if (attackIndex == 3)
    {
        xPos = 65, zPos = 36;
    }
 
    if (flagIndex == 1)
    {
        // 产生魔法球。
        createMiniMagicCircle(obj, xPos, zPos, 0, 0); // 方向 0:正面1:对角线2:下端
    }
 
 
    return true;
}
 
function playSoundForAtmageAttack(obj, elementalType, attackCount)
{   
    if(!obj)
        return;
 
    local elementalName = "MWSHOT_0";
    if (elementalType == ENUM_ELEMENT_FIRE)
        elementalName = "FIRESHOT_0";
    else if (elementalType == ENUM_ELEMENT_WATER)
        elementalName = "ICESHOT_0";
    else if (elementalType == ENUM_ELEMENT_DARK)
        elementalName = "DARKSHOT_0";
    else if (elementalType == ENUM_ELEMENT_LIGHT)
        elementalName = "LIGHTSHOT_0";
     
    obj.sq_PlaySound(elementalName + (attackCount+1));
}
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容