Jump to content
GIGN Forum

War3 Plugin Help


Recommended Posts

// ****************************************
// Night Elf's Entangle
// ****************************************

public searchtarget(parm[2]){
    #if ADVANCED_DEBUG
        writeDebugInfo("searchtarget",parm[0])
    #endif

    new id = parm[0]

    if(!p_data_b[id][PB_ISCONNECTED])
        return PLUGIN_CONTINUE

    if(!is_user_alive(id)){
        p_data_b[id][PB_ISSEARCHING] = false
        return PLUGIN_CONTINUE
    }

    new enemy, body
    get_user_aiming(id,enemy,body)

    if ( 0<enemy<=MAXPLAYERS &&!p_data_b[enemy][PB_STUNNED] && get_user_team(id)!=get_user_team(enemy) && p_data[enemy][P_ITEM]!=ITEM_NECKLACE && !p_data_b[enemy][PB_WARDENBLINK] && is_user_alive(id) && is_user_alive(enemy)){
        p_data_b[id][PB_ISSEARCHING]=false
        p_data_b[id][PB_ULTIMATEUSED]=true
        Ultimate_Icon(id,ICON_HIDE)

        if(!g_mapDisabled)
            Create_TE_BEAMFOLLOW(enemy, g_siTrail, 10, 5, 10, 108, 23, 255)

//        emit_sound(id,CHAN_STATIC, SOUND_ENTANGLING, 1.0, ATTN_NORM, 0, PITCH_NORM)

        new waitparm[6]
        waitparm[0]=enemy
        waitparm[1]=100
        waitparm[5]=floatround(get_user_maxspeed(enemy))
        set_user_maxspeed(enemy,1.0)            
        waitstop(waitparm)
        
        if( iCvar[FT_ENTANGLE_DROP] ){
            new ammo, clip
            new weapon = get_user_weapon(enemy, ammo, clip)

            if(isPrimary(weapon))
                client_cmd(enemy, "drop")
        }

        p_data_b[enemy][PB_STUNNED]=true
        new cooldownparm[2]
        cooldownparm[0]=id

        p_data[id][P_ULTIMATEDELAY] = iCvar[FT_ULTIMATE_COOLDOWN]
        _Ultimate_Delay(cooldownparm)    
    }
    else{
        p_data_b[id][PB_ISSEARCHING]=true
        Ultimate_Icon(id,ICON_FLASH)
        new counter = parm[1]
        while (counter >= 0){
            counter -= 10
            if (counter==0){
                emit_sound(id,CHAN_STATIC, SOUND_ULTIMATESCAN, 1.0, ATTN_NORM, 0, PITCH_NORM)
            }
        }            
        --parm[1]
        if(!p_data_b[id][PB_ULTIMATEUSED]){
            if (parm[1]>0 && get_user_health(id)>0){
                set_task(0.1,"searchtarget",TASK_SEARCHTARGET+id,parm,2)
            }else{
                p_data_b[id][PB_ISSEARCHING]=false
                Ultimate_Icon(id,ICON_SHOW)
            }
        }
        else{
            Ultimate_Icon(id,ICON_HIDE)
        }
    }
    return PLUGIN_CONTINUE
}

public waitstop(parm[6]){
    #if ADVANCED_DEBUG
        writeDebugInfo("waitstop",parm[0])
    #endif

    new id=parm[0]

    if(!p_data_b[id][PB_ISCONNECTED])
        return PLUGIN_CONTINUE

    new origin[3]
    get_user_origin(id, origin)
    if (origin[0]==parm[2] && origin[1]==parm[3] && origin[2]==parm[4]){
        new normalspeed = parm[5]
        new resetparm[2]
        resetparm[0]=id
        resetparm[1]=normalspeed
        set_task(float(parm[1]/10),"reset_maxspeed",TASK_RESETSPEED+id,resetparm,2)
        new entangleparm[2]
        entangleparm[0]=parm[0]
        entangleparm[1]=parm[1]
        entangle(entangleparm)
    }
    else{
        parm[2]=origin[0]
        parm[3]=origin[1]
        parm[4]=origin[2]
        set_task(0.1,"waitstop",TASK_WAITSTOP+id,parm,6)
    }
    return PLUGIN_CONTINUE
}

public entangle(parm[2]){
    #if ADVANCED_DEBUG
        writeDebugInfo("entangle",parm[0])
    #endif

    new id=parm[0]

    if(!p_data_b[id][PB_ISCONNECTED])
        return PLUGIN_CONTINUE

    new life=parm[1]
    new radius = 20
    new counter = 0
    new origin[3]
    new x1
    new y1
    new x2
    new y2
    get_user_origin(id,origin)

    emit_sound(id,CHAN_STATIC, SOUND_ENTANGLING, 1.0, ATTN_NORM, 0, PITCH_NORM)

    while (counter<=7){
        if (counter==0 || counter==8)
            x1= -radius
        else if (counter==1 || counter==7)
            x1= -radius*100/141
        else if (counter==2 || counter==6)
            x1= 0
        else if (counter==3 || counter==5)
            x1= radius*100/141
        else if (counter==4)
            x1= radius
        if (counter<=4)
            y1 = sqroot(radius*radius-x1*x1)
        else
            y1 = -sqroot(radius*radius-x1*x1)
        ++counter
        if (counter==0 || counter==8)
            x2= -radius
        else if (counter==1 || counter==7)
            x2= -radius*100/141
        else if (counter==2 || counter==6)
            x2= 0
        else if (counter==3 || counter==5)
            x2= radius*100/141
        else if (counter==4)
            x2= radius
        if (counter<=4)
            y2 = sqroot(radius*radius-x2*x2)
        else
            y2 = -sqroot(radius*radius-x2*x2)
        new height=16+2*counter
        new start[3], end[3]
        if(!g_mapDisabled){
            while (height > -40){
                
                start[0] = origin[0] + x1
                start[1] = origin[1]+y1
                start[2] = origin[2]+height
                end[0] = origin[0]+x2
                end[1] = origin[1]+y2
                end[2] = origin[2]+height+2
                
                Create_TE_BEAMPOINTS(start, end, g_siBeam4, 0, 0, life, 10, 5, 10, 108, 23, 255, 0)

                height -= 16
            }
        }
    }
    return PLUGIN_CONTINUE
}

Palidziet, ka lai izdara taa, kad liek shito ultimate, tev no rokam izkrit ierocis, tur itka irr.. bet nestrada... :?

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...